久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: LCD1602首地址數(shù)字顯示異常 附單片機(jī)代碼 [打印本頁]

作者: iccoyy    時(shí)間: 2023-3-29 23:54
標(biāo)題: LCD1602首地址數(shù)字顯示異常 附單片機(jī)代碼

#1:同樣的代碼,仿真顯示正常
#2:只要首地址寫入數(shù)字,就顯示不對(duì);比如首地址寫入1,那么硬件上顯示的為q;若首地址寫入0,那么硬件上顯示的為p;
#3:請(qǐng)大哥們幫忙分析一下,抱拳謝過!

  1. --發(fā)送數(shù)據(jù)
  2. void LCD_dis_char(uchar x, uchar y, uchar dat)
  3. {
  4.     uchar address;

  5.     if (y == 1)
  6.         {
  7.             address = 0x80 + x;
  8.         }
  9.     else
  10.         {
  11.             address = 0xc0 + x;
  12.         }

  13.     LCD_Write_command(address);
  14.                                 Lcd1602_Delay1ms(1);
  15.     LCD_Write_data(dat);
  16. }

  17. ------------------初始化---------------------------
  18. void LCD_Init()
  19. {     //LCD_Write_command(0x33);
  20.    
  21.    //LCD_Write_command(0x32);//復(fù)位后LCD默認(rèn)是8線的;需將最后四位改成0010;也就是說低字節(jié)只要是0010就能改為4線
  22.         
  23.     LCD_Write_command(0x02);//同上;只要最后4位是0010即可;這一行和上一行任選其一即可;
  24.         LCD_Write_command(0x28);//在四位線下的初始化
  25.     LCD_Write_command(0x0C);//開顯示,不顯示光標(biāo)
  26.     LCD_Write_command(0x06);    //寫一個(gè)指針加1
  27.     LCD_Write_command(0x01);    //清屏
  28.     Lcd1602_Delay1ms(5);
  29.     LCD_Write_command(0x80);    //設(shè)置數(shù)據(jù)指針起點(diǎn)
  30.    
  31.   
  32. }
  33. -----------main--------------
  34. void main()
  35. {
  36.    
  37.     uchar i = 0;
  38.     //n = n + 0x30; //轉(zhuǎn)為ASCII
  39.     Lcd1602_Delay1ms(15);
  40.     LCD_Init();
  41.     for (i = 0; i < sizeof(dis_a)-1; i++)
  42.         {
  43.             LCD_dis_char(i, 1, dis_a[i]);Lcd1602_Delay1ms(1);
  44.         }
  45.     for (i = 0; i < sizeof(dis_b)-1; i++)
  46.         {
  47.             LCD_dis_char(i, 2, dis_b[i]);Lcd1602_Delay1ms(1);
  48.         }


  49.     while (1);
  50. }

復(fù)制代碼




Snipaste_2023-03-29_23-39-52.jpg (70.22 KB, 下載次數(shù): 30)

Snipaste_2023-03-29_23-39-52.jpg

1.jpg (88.98 KB, 下載次數(shù): 27)

1.jpg

作者: rayin    時(shí)間: 2023-3-30 07:47
清屏指令0x01 之后的延時(shí)5ms加大到20ms試試.
作者: iccoyy    時(shí)間: 2023-3-30 07:53
反復(fù)琢磨,發(fā)現(xiàn)有這么一個(gè)規(guī)律;寫入的值與實(shí)際顯示值相差40H
PS:如果寫入的第一個(gè)值的十六進(jìn)制>=40H,則顯示正常;比如寫入@(40H)A(41H)
        寫入值                           實(shí)際顯示值
hex     ascii                     hex          ascii
2f         /                         6f             o
30        0                         70             p
31        1                         71             q
32        2                         72             r
作者: iccoyy    時(shí)間: 2023-3-30 07:58
如果寫入的值>=40H;顯示正常
如果寫入的值<=40H;顯示關(guān)系如下:
30H  0---------->70H    p(相差40H)
31H  1---------->71H    q
.
.
.
40H  @---------->40H   @(正常)
作者: iccoyy    時(shí)間: 2023-3-30 09:19
rayin 發(fā)表于 2023-3-30 07:47
清屏指令0x01 之后的延時(shí)5ms加大到20ms試試.

好的;晚上我試試,tks
作者: lkc8210    時(shí)間: 2023-3-30 16:43
LCD_Write_command(); 和 LCD_Write_data(); 的代碼呢?
作者: zhuls    時(shí)間: 2023-3-30 17:16
樓主你確定:仿真是8位并口的,實(shí)物是串行SPI的。。兩個(gè)不同的東東,代碼能一樣?
PS :可能我看錯(cuò)了,你這是4位并口的?

作者: iccoyy    時(shí)間: 2023-3-30 18:10
zhuls 發(fā)表于 2023-3-30 17:16
樓主你確定:仿真是8位并口的,實(shí)物是串行SPI的。。兩個(gè)不同的東東,代碼能一樣?
PS :可能我看錯(cuò)了,你這 ...

我這是4口的;仿真也是用的P0口高四位
作者: iccoyy    時(shí)間: 2023-3-30 19:26
lkc8210 發(fā)表于 2023-3-30 16:43
LCD_Write_command(); 和 LCD_Write_data(); 的代碼呢?

疏忽了,這就補(bǔ)齊;麻煩幫我分析一下
  1. void LCD_Write_data(uchar dat)
  2. {
  3.     LCD_E = 0;
  4.     LCD_RS = 1;
  5.     LCD_RW = 0;
  6.     LCD_DATA = dat;//4線接P0口高四位
  7.     //delay_n40us(5);
  8.     Lcd1602_Delay1ms(1);
  9.     LCD_E = 1;
  10. //delay_n40us(10);
  11.     Lcd1602_Delay1ms(5);
  12.     LCD_E = 0;
  13.                 LCD_DATA=dat<<4;//寫入低四位
  14.             Lcd1602_Delay1ms(1);

  15.             LCD_E = 1;
  16. //delay_n40us(10);
  17.     Lcd1602_Delay1ms(5);
  18.     LCD_E = 0;
  19.        
  20. }
  21. void LCD_Write_command(uchar cmd)
  22. {
  23.     LCD_E = 0;
  24.     LCD_RS = 0; //0指令 1數(shù)據(jù)
  25.     LCD_RW = 0; //0寫入 1讀出
  26.     LCD_DATA = cmd;
  27.    
  28.     Lcd1602_Delay1ms(1);
  29.        
  30.     LCD_E = 1; //允許

  31.     Lcd1602_Delay1ms(5);
  32.     LCD_E = 0; //1->0寫命令
  33.         LCD_DATA=cmd<<4;
  34.         Lcd1602_Delay1ms(1);
  35.             LCD_E = 1; //允許

  36.     Lcd1602_Delay1ms(5);
  37.     LCD_E = 0; //1->0寫命令
  38.        
  39. }
復(fù)制代碼

作者: 人中狼    時(shí)間: 2023-3-30 19:54
應(yīng)該是查忙而不是延時(shí)
作者: iccoyy    時(shí)間: 2023-3-30 20:48


而且初始化,清屏之后,首地址顯示的是CGROM中0X60的值丶;
But

只要我首地址寫入的的值是大于0x40,一切正常!如圖:
其解在哪呢。。。。







作者: iccoyy    時(shí)間: 2023-3-30 21:07
感覺要被這個(gè)1602玩壞了

作者: zhuls    時(shí)間: 2023-3-31 00:49
按你這個(gè)說法是字庫壞了,不過一般 來說,很少壞成這樣。如果只是壞了一個(gè)字符,倒可以補(bǔ)救:用自定義字符的方式補(bǔ)上就是麻煩了點(diǎn)
作者: iccoyy    時(shí)間: 2023-3-31 01:00
zhuls 發(fā)表于 2023-3-31 00:49
按你這個(gè)說法是字庫壞了,不過一般 來說,很少壞成這樣。如果只是壞了一個(gè)字符,倒可以補(bǔ)救:用自定義字符 ...

只有80H的地址壞了;其他都是好的。我從80H開始寫,就沒一點(diǎn)問題;不折騰了,感謝評(píng)論!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 一级黄色播放 | 精品日韩一区二区 | 黄色在线免费观看视频网站 | 欧美亚洲另类在线 | 成人午夜精品 | 亚洲男人的天堂网站 | 国产成人在线视频免费观看 | 亚洲一区二区三区四区五区中文 | 久久久久久久久久久久久久久久久久久久 | 久久久不卡网国产精品一区 | 毛片网站在线观看 | 久久精品99国产精品 | 久久这里只有精品首页 | 久久乐国产精品 | 婷婷综合| 天天碰日日操 | 精品一区二区久久 | 97精品超碰一区二区三区 | 免费在线黄色av | 综合色在线 | 中文字幕在线视频免费视频 | 国产黄色电影 | 黄色一级免费观看 | 亚洲婷婷六月天 | 黄色大片在线免费观看 | 日韩欧美1区2区 | 亚洲自拍偷拍视频 | 久久精品一区二区三区四区 | 91亚洲精品国偷拍自产在线观看 | 精品一区二区在线视频 | 一区二区三区在线观看视频 | 欧美一级久久 | 久久国产精品亚洲 | 亚洲伊人久久综合 | 中文字幕高清 | 午夜电影一区二区 | 国产精品视频网 | 国产一区二区日韩 | 国产精品区一区二区三区 | 蜜桃黄网 | 国产成人免费网站 |