求助!!lpc2378 GPIO模拟8080总线时序驱动sed1335 只有几条白线
小弟这板子和液晶的接口没用总线方式,而是用gpio模拟8080时序,程序如下,比较简单,调试只出现几条白线,不知哪里出了错误,向大家求助!啊 谢谢 !#include "config.h"
const uint8 SystemTab[]={0x30,0x87,0x07,0x27,0x42,0xF0,0x28,0x00}; //参数P1-P8
const uint8 ScrollTab[]={0x00,0x00,0xF0,0x00,0x10,0xF0,0x00,0x70,0x00,0x00}; //参数P1-P10
#define LCD_A0 (1<<26)
#define LCD_CS (1<<25)
#define LCD_RD (1<<24)
#define LCD_WR (1<<23)
#define SYSTEM_SET 0x40
#define SLEEP_IN 0x53
#define DISP_ON 0x59
#define DISP_OFF 0x58
#define SCROLL 0x44
#define OVLAY 0x5B
#define CGRAM_ADR0x5C
#define HDOT_SCR 0x5A
#define CSRFORM 0x5D
#define CSRDIR_R 0x4C
#define CSRDIR_L 0x4D
#define CSRDIR_U 0x4E
#define CSRDIR_D 0x4F
#define CSRW 0x46
#define CSRR 0x47
#define MWIRTE 0x42
#define MREAD 0x43
/*********************************************************************************
void ReadBState(void) //读忙状态0x40忙 0x00不忙
{
uint8 temp;
FIO3CLR=LCD_CS;
FIO3CLR=LCD_A0;
FIO3SET=LCD_WR;
FIO3CLR=LCD_RD;
temp=0x40;
while( (temp & 0x40)==0x40 )
{
temp=FIO3PIN;
}
}
*********************************************************************************/
voidWriteCmd(uint8 dat) //写命令
{
uint8 i;
//ReadBState(); //忙判断
FIO3CLR=LCD_CS; //片选
FIO3SET=LCD_A0; //A0=1,写命令
FIO3CLR=0xff; //数据输出
FIO3SET=dat;
FIO3SET=LCD_RD; //RD=1
FIO3CLR=LCD_WR; //WR=0
for(i=0;i<10;i++); //delay
FIO3SET=LCD_WR; //WR=1
FIO3SET=LCD_CS; //CS=1
FIO3CLR=LCD_WR; //WR=0
}
/*********************************************************************************/
voidWriteData( uint8 dat) //写数据
{
uint8 i;
// ReadBState(); //忙判断
FIO3CLR=LCD_CS; //CS=0,片选
FIO3CLR=LCD_A0; //A0=0,写数据
FIO3CLR=0xff; //数据输出
FIO3SET=dat;
FIO3SET=LCD_RD; //RD=1
FIO3CLR=LCD_WR; //WR=0
for(i=0;i<10;i++) //delay
FIO3SET=LCD_WR; //WR=1
FIO3SET=LCD_CS; //CS=1
FIO3CLR=LCD_WR; //WR=0
}
/**********************************************************************************/
uint8 ReadData(void) //读数据
{
uint8 data;
FIO3CLR=LCD_CS;
FIO3CLR=LCD_A0;
FIO3SET=LCD_WR;
FIO3CLR=LCD_RD;
// ReadBState();
data=FIO3PIN;
return(data);
}
/***********************************************************************************/
void LcdInit(void) //初始化函数
{
uint8 i;
PINSEL6=0; //P3.0-P3.7设为GPIO
PINSEL7=0; //P3.23-P3.26设为GPIO
FIO3DIR=FIO3DIR|0x078000FF; //设P3.0-P3.7和P3.23-P3.26为输出
WriteCmd(0x40); // SYSTEM SET 代码,写入指令代码
for(i=0;i<20;i++)
WriteData(SystemTab); //写入System Set 参数
i=0;
WriteCmd(0x44); // SCROLL SET 代码,写入指令代码
for(i=0;i<20;i++)
WriteData(ScrollTab); //写入SCROLL SET 参数
WriteCmd(0x5a); //写入HDOT SCR 代码和参数
WriteData(0x0);
WriteCmd(0x5b); //写入OVLAY 代码和参数
WriteData(0x0); //设置参数:一三区为文本属性
WriteCmd(0x59); // 写入DISP ON/OFF 代码和参数
WriteData(0x54); //设置参数:显示一~四区开显示,光标闪
}
/**********************************************************************************/
void LcdClear(void) //清屏函数
{
uint32 i;
WriteCmd(CSRW); // 写入CSRW 代码和参数
WriteData(0x00); //光标地址 0x00
WriteData(0x00);
WriteCmd(CSRDIR_R); // 写入CSRDIR代码
WriteCmd(MWIRTE); //写入MWRITE 代码和参数
for(i=0;i<240*41;i++)
{
WriteData(0x0);
}
WriteCmd(CSRW); //重置光标地址
WriteData(0x00);
WriteData(0x00);
}
/***********************************************************************************/
int main()
{
LcdInit();
LcdClear();
}
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_541057.JPG
(原文件名:P1030160.JPG) 帮帮忙啦 DX们 LZ你的lpc2378用的谁的开发板 是自己做的啦 ,不是ZLG的,你也用过吗 不知道这个液晶板子上的8080时序该如何设置呢? 我看有些液晶的数据手册上写着:http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_541482.png
(原文件名:QQ截图未命名.png)
也是320240的 外形应该都差不多 不知道控制板是不是相同的我看我这板子的R24 和R25就什么都没接 想焊个0欧姆电阻在R24上 不知道液晶会不会over 帮帮忙啊 我的程序和的差不多,情况很相似,不知楼主解决了没?希望大侠们多多指点!谢谢
页:
[1]