3.5寸ST7796屏I8080-16bit接口,P2=D8-D15,P0=D0-D7,使用STC32G12K128的LCM接口刷屏未能成功,用I/O口驱动可以正常显示。参考了例程没能找到原因请高手帮忙看看啥问题。 
 
下述程序中被用被注释掉的代码驱动是正常的,用没有注释掉的代码没反应,代码如下: 
			
			
			- sbit LCD_RS  = P4^5;
 - sbit LCD_RD  = P4^4;
 - sbit LCD_WR  = P4^2;
 - 
 - sbit LCD_CS  = P1^1;
 - sbit LCD_RST = P1^0;
 - 
 - sfr  LCD_BUS_H = 0xA0;        //P0--0x80,P1=0x90,P2=0xA0,P3=0x0B0, P6= 0xE8
 - sfr  LCD_BUS_L = 0x80;        //P0--0x80,P1=0x90,P2=0xA0,P3=0x0B0, P6= 0xE8
 
  复制代码
  
- /***
 - //----写指令函数-------------------------------------------
 - void LCD_WR_REG(u8 cmd)
 - {
 -  LCD_RS_CLR();                        //point to ID register
 -  LCD_CS_CLR();
 -  LCD_BUS_H = 0;
 -  LCD_BUS_L = cmd;
 -  LCD_WR_PULSE();
 -  LCD_RS_SET();                        //point to GRAM
 -  LCD_CS_SET();
 - }
 - //----写8bit数据函数---------------------------------------
 - void  LCD_WR_DATA(u8 dat)
 - {
 -  LCD_CS_CLR();
 -  LCD_BUS_H = 0;
 -  LCD_BUS_L = dat;
 -  LCD_WR_PULSE();
 -  LCD_CS_SET();
 - }
 - //----写入16bit显示数据函数--------------------------------
 - //输出R-5BIT,G-6BIT,B-5BIT
 - void LCD_RGB_DATA(u16 dat)
 - {
 - LCD_CS_CLR();
 - LCD_BUS_H = (u8)(dat >> 8);
 - LCD_BUS_L = (u8)(dat & 0xFF);
 - LCD_WR_PULSE();
 - LCD_CS_SET();
 - }
 - ***/
 - //----16BIT-8080-LCM总线初始化-----------------------------
 - void LCM_Config(void)
 - {
 - LCMIFCFG = 0x82;//BD7=1 (使能LCM接口中断),B3、B2=00 (16bit总线时P2=高8位、P0=低8位),B1=1 (16bit接口),B0=0 (I8080接口模式)
 - LCMIFCFG2 = 0x09;        //RS:P45,RD:P44,WR:P42; Setup Time=2,HOLD Time=1
 - LCMIFSTA = 0x00;//清除LCM中断标志
 - }
 - //----写指令函数-------------------------------------------
 - void LCD_WR_REG(u8 cmd)
 - {
 - LCMIFDATL = cmd;  //(低8位=cmd) 
 - LCD_CS_CLR();
 - LCMIFCR = 0x84;  //使能LCM接口、发送"写命令"脉冲
 - LCD_CS_SET();
 - } 
 - //----写8bit数据函数---------------------------------------
 - void  LCD_WR_DATA(u8 dat)
 - {
 - LCMIFDATL = dat;  //(低8位=dat)
 - LCD_CS_CLR();
 - LCMIFCR = 0x85;  //使能LCM接口、发送"写数据"脉冲
 - LCD_CS_SET();
 - }
 - //----写入16bit颜色数据函数--------------------------------
 - //输出R-5BIT,G-6BIT,B-5BIT
 - void LCD_RGB_DATA(u16 dat)
 - {
 - LCD_WR_DATA((u8)(dat>>8));
 - LCD_WR_DATA((u8)dat);
 - }
 
  复制代码
  
 
 |