|
本帖最后由 yinnan128 于 2021-7-1 14:23 编辑
用洞洞焊的测试电路,LCD显示正常,然后焊在板子上,不是显示乱码了,要不就不显示。是不是LCD程序写的时序不对呢
PCB是烧录器5V升压12V,然后12V经7805降压给单片机供电,是不是有电磁干扰?洞洞板是直接烧录器供电。看PCB单片机引脚没有虚焊,排除焊接问题
- void write_nibble_lcd(unsigned char Val) //使用的是4位数据传输
- {
- LCDEN = 1; //写入时序
- D0 = D1 = D2 = D3 = 0;
- if(Val & 0x01)
- D0 = 1;
- if(Val & 0x02)
- D1 = 1;
- if(Val & 0x04)
- D2 = 1;
- if(Val & 0x08)
- D3 = 1;
- LCDEN = 0; //使能清零
- }
- void write_lcd(unsigned char Val) //发送一个字符
- {
- write_nibble_lcd(Val >> 4);
- write_nibble_lcd(Val);
- delay_ms(1);
- }
- /******************************初始化LCD************************************/
- void lcd_init(void)
- {
- LCDRS = 0; //写入命令 0 选择发送命令 1 选择发送数据
- write_nibble_lcd(0x03);
- delay_ms(1);
- write_nibble_lcd(0x02);
- delay_ms(1);
- write_lcd(0x28); //在四位线下的初始化
- write_lcd(0x06); //光标右移,显示不移
- write_lcd(0x0E); //显示开,光标开,光标不闪烁
- write_lcd(0x01); //清屏
- }
- /*******************************写命令************************************/
- void write_com(u8 com)
- {
- LCDRS = 0;
- write_lcd(com);
- delay_ms(2);
-
- }
- /*******************************写数据***********************************/
- void write_data(u8 date)
- {
- LCDRS = 1; //写入数据 0 选择发送命令 1 选择发送数据
- write_lcd(date);
- delay_ms(2);
复制代码
|
|