No.29997 作者:blackfire531 邮件:blackfire531@yahoo.com.cn ID:76849 登陆:2次 文章数:4篇 最后登陆IP:61.190.70.20 最后登陆:2007/9/2 22:02:33 注册:2007/5/4 13:30:24 财富:101 发帖时间:2008/3/21 23:17:15 发贴者IP:58.242.211.46 标题:blackfire531:关于青云公司LCM320240zk驱动的问题[求助] 摘要:No.29997关于青云公司LCM320240zk驱动的问题[求助] 我使用的是MSP430的cpu,P4连接LCD数据口,P5连接控制口,烧录进去后屏幕却什么都没有显示,麻烦哪位大哥帮忙看看程序哪里有问题,谢谢了。 //qylcd.h //#include <msp430x14x.h> //LCD引脚定义 P4-> 数据口 P5-> 控制口 #define LCD_DATA_IN P4IN #define LCD_DATA_OUT P4OUT #define LCD_DATA_DIR P4DIR //--------------------------------------------------------------- #define LCD_RS BIT7 //LCD_DI(RS) -> P5.7 #define LCD_RS_DIR P5DIR #define LCD_RS_LO P5OUT &= ~LCD_RS #define LCD_RS_HI P5OUT |= LCD_RS #define LCD_RW BIT6 //LCD_RW -> P5.6 #define LCD_RW_DIR P5DIR #define LCD_RW_LO P5OUT &= ~LCD_RW #define LCD_RW_HI P5OUT |= LCD_RW #define LCD_EN BIT5 //LCD_EN -> P5.5 #define LCD_EN_DIR P5DIR #define LCD_EN_LO P5OUT &= ~LCD_EN #define LCD_EN_HI P5OUT |= LCD_EN #define LCD_CS1 BIT4 //LCD_CS1 -> P5.4 #define LCD_CS1_DIR P5DIR #define LCD_CS1_LO P5OUT &= ~LCD_CS1 #define LCD_CS1_HI P5OUT |= LCD_CS1 #define LCD_BUSY P5OUT & BIT3 //LCD_BUSY -> P5.3 #define LCD_RST BIT1 //LCD_RST -> P5.1 #define LCD_RST_DIR P5DIR #define LCD_RST_LO P5OUT &= ~LCD_RST #define LCD_RST_HI P5OUT |= LCD_RST #define SCREEN_WIDTH (320) // pixels #define SCREEN_HIGHT (240) // pixels /////////////////////////////////////////////////////////// //使用RA8802液晶控制芯片 //mian.c ///////////////////////////////////////////////////////////// #include "msp430x14x.h" #include "qylcd.h" // RA8802的寄存器 #define LCR (0x00) #define MIR (0x08) #define CCR (0x10) #define CSCR (0x18) #define AWRR (0x20) #define DWRR (0x28) #define AWBR (0x30) #define DWBR (0x38) #define AWLR (0x40) #define DWLR (0x48) #define AWTR (0x50) #define DWTR (0x58) #define CPXR (0x60) #define CPYR (0x70) #define BTR (0x80) #define SCCR (0x90) #define INTR (0xA0) #define INTX (0xB0) #define INTY (0xB8) #define TPCR (0xC0) #define TPDR (0xC8) #define LCCR (0xD0) #define PDR (0xE0) #define FCR (0xF0) // 屏幕中,每行可显示的ASC字符数 #define AP (40) //---------------------------------------------------------------------- //外部函数 extern void IniCpu(void); //---------------------------------------------------------------------- //函数声明 void LCD_Init(void); //初始化屏幕 void LCD_CheckBusy(void); void LCD_WriteComm(unsigned char wdata); //写控制寄存器 void LCD_WriteData(unsigned char wdata); //写资料寄存器 void LCD_SetXY(unsigned char X, unsigned char Y); //设置光标位置 static void ClearMemory(void); //清除内存和显示 int DrawDot(unsigned int x, unsigned int y, unsigned int color);//画点程序 void Delay_ns(unsigned char nvalue); //延时 void Delay_ms(unsigned char nvalue); //延时 unsigned char LCD_RegRead(unsigned char REG_Addr);//读取控制寄存器内容 //----------------------------------------------------------------------主函数 int main( void ) { // Stop watchdog timer to prevent time out reset //WDTCTL = WDTPW + WDTHOLD; IniCpu(); LCD_Init(); int a,b; for(a=100;a <200;a++) for(b=100;b <200;b++) DrawDot(a,b,1); return 0; } //----------------------------------------------------------------------延时函数 void Delay_ms(unsigned char nvalue) { unsigned long count,j; int i; count=2667; for(i=nvalue;i> 0;i--) for(j=count;j> 0;j--); } void Delay_ns(unsigned char nvalue) { unsigned int count,j; int i; count=3; for(i=nvalue;i> 0;i--) for(j=count;j> 0;j--); } //初始化LCD--------------------------------------------------------------- void LCD_Init(void) { // int i=0; //LCD复位 LCD_RST_DIR |= LCD_RST; //RST -> 复位输出 LCD_RST_HI; Delay_ms(1); LCD_RST_LO; Delay_ms(120); LCD_RST_HI; LCD_CS1_DIR |= LCD_CS1; //CS1-> 输出方向 LCD_CS1_HI; LCD_RS_DIR |= LCD_RS; //RS,EN,R/W置低电平 LCD_RS_LO; LCD_RW_DIR |= LCD_RW; LCD_RW_LO; LCD_EN_DIR |= LCD_EN; LCD_EN_LO; //初始化屏幕 LCD_WriteComm(LCR); LCD_WriteComm(0xCE); // 电源设置(关键) LCD_WriteComm(MIR); LCD_WriteComm(0x73);// 视窗设置时钟频率设置(关键) LCD_WriteComm(CCR); LCD_WriteComm(0xEE); // 光标 ......
>>返回讨论的主题
|