|
本帖最后由 yinnan128 于 2021-7-1 14:23 編輯
用洞洞焊的測試電路,LCD顯示正常,然后焊在板子上,不是顯示亂碼了,要不就不顯示。是不是LCD程序寫的時序不對呢
PCB是燒錄器5V升壓12V,然后12V經7805降壓給單片機供電,是不是有電磁干擾?洞洞板是直接燒錄器供電?碢CB單片機引腳沒有虛焊,排除焊接問題
- 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);
復制代碼
|
|