程序如下,急需高手指点!为什么程序下载到1602上无任何显示?
//LCD
#define LOW_RS() GPIOD->BRR =GPIO_Pin_6 #define LOW_RW() GPIOD->BRR =GPIO_Pin_5 #define LOW_E() GPIOD->BRR =GPIO_Pin_4 //端口位清除寄存器 #define HI_RS() GPIOD->BSRR=GPIO_Pin_6 //PE.0--(LCD)RS //端口位设置/清除寄存器 #define HI_RW() GPIOD->BSRR=GPIO_Pin_5 //PE.1--(LCD)RW #define HI_E() GPIOD->BSRR=GPIO_Pin_4 //PE.2--(LCD)E #define DATAOUT GPIOG->ODR //端口输出数据寄存器 //端口输入数据寄存器 unsigned char LINE; unsigned char ROW; int LCD_DATA[12]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2E,0x56};//要显示的ASC码,0x30为0的ASC码 int i=0;
//判断液晶屏忙 void LCD_WAIT() { /* GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure); //PD口输入*/
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOG, &GPIO_InitStructure); //PG口输入 LOW_RS(); //命令 HI_RW(); //读取 do{ HI_E(); Delay(1); LOW_E(); Delay(1); }while(GPIOG->IDR & 0x80); LOW_E(); /*GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); //PD口OD输出*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; GPIO_Init(GPIOG, &GPIO_InitStructure); //PG口OD输出
}
void LCD_ENABLE(unsigned char a) { LCD_WAIT(); LOW_RS(); LOW_RW(); LOW_E(); DATAOUT=a; HI_E(); Delay(1); LOW_E(); Delay(1); }
void LCD_init() { LCD_ENABLE(0x01); //清屏 LCD_ENABLE(0x38); //2行8位数据(显示模式) LCD_ENABLE(0x0F); //显示功能开,显示光标 LCD_ENABLE(0x06); //写入新数据后光标右移 LCD_ENABLE(0x0C); //显示开 LCD_ENABLE(0x80); LCD_ENABLE(0x18); //屏幕整体左移一格,用于滚动显示 //LCD_ENABLE(0xC0); }
void LCD_DISPLAY_INIT() { LINE=1; ROW=1; if(LINE==1) { LCD_ENABLE(0x80);//第一行,若为第二行,则为:LCD_ENABLE(0xc0); } else { LCD_ENABLE(0xC0); } }
void LCD_DISPLAY() { while(1) { LCD_WAIT(); HI_RS(); LOW_RW(); DATAOUT=0x30;//ASC码输出到端口 HI_E(); Delay(1); LOW_E(); Delay(1); } LCD_ENABLE(0x0C);//关闭光标,显示 LCD_ENABLE(0x01); Delay(1); }
|