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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2107|回復: 13
打印 上一主題 下一主題
收起左側

LCD1602首地址數字顯示異常 附單片機代碼

[復制鏈接]
跳轉到指定樓層
樓主

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

  1. --發送數據
  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);//復位后LCD默認是8線的;需將最后四位改成0010;也就是說低字節只要是0010就能改為4線
  22.         
  23.     LCD_Write_command(0x02);//同上;只要最后4位是0010即可;這一行和上一行任選其一即可;
  24.         LCD_Write_command(0x28);//在四位線下的初始化
  25.     LCD_Write_command(0x0C);//開顯示,不顯示光標
  26.     LCD_Write_command(0x06);    //寫一個指針加1
  27.     LCD_Write_command(0x01);    //清屏
  28.     Lcd1602_Delay1ms(5);
  29.     LCD_Write_command(0x80);    //設置數據指針起點
  30.    
  31.   
  32. }
  33. -----------main--------------
  34. void main()
  35. {
  36.    
  37.     uchar i = 0;
  38.     //n = n + 0x30; //轉為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. }

復制代碼




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

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

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

1.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:517951 發表于 2023-3-30 07:47 | 只看該作者
清屏指令0x01 之后的延時5ms加大到20ms試試.
回復

使用道具 舉報

板凳
ID:577162 發表于 2023-3-30 07:53 | 只看該作者
反復琢磨,發現有這么一個規律;寫入的值與實際顯示值相差40H
PS:如果寫入的第一個值的十六進制>=40H,則顯示正常;比如寫入@(40H)A(41H)
        寫入值                           實際顯示值
hex     ascii                     hex          ascii
2f         /                         6f             o
30        0                         70             p
31        1                         71             q
32        2                         72             r
回復

使用道具 舉報

地板
ID:577162 發表于 2023-3-30 07:58 | 只看該作者
如果寫入的值>=40H;顯示正常
如果寫入的值<=40H;顯示關系如下:
30H  0---------->70H    p(相差40H)
31H  1---------->71H    q
.
.
.
40H  @---------->40H   @(正常)
回復

使用道具 舉報

5#
ID:577162 發表于 2023-3-30 09:19 | 只看該作者
rayin 發表于 2023-3-30 07:47
清屏指令0x01 之后的延時5ms加大到20ms試試.

好的;晚上我試試,tks
回復

使用道具 舉報

6#
ID:161164 發表于 2023-3-30 16:43 | 只看該作者
LCD_Write_command(); 和 LCD_Write_data(); 的代碼呢?
回復

使用道具 舉報

7#
ID:69038 發表于 2023-3-30 17:16 | 只看該作者
樓主你確定:仿真是8位并口的,實物是串行SPI的。。兩個不同的東東,代碼能一樣?
PS :可能我看錯了,你這是4位并口的?
回復

使用道具 舉報

8#
ID:577162 發表于 2023-3-30 18:10 | 只看該作者
zhuls 發表于 2023-3-30 17:16
樓主你確定:仿真是8位并口的,實物是串行SPI的。。兩個不同的東東,代碼能一樣?
PS :可能我看錯了,你這 ...

我這是4口的;仿真也是用的P0口高四位
回復

使用道具 舉報

9#
ID:577162 發表于 2023-3-30 19:26 | 只看該作者
lkc8210 發表于 2023-3-30 16:43
LCD_Write_command(); 和 LCD_Write_data(); 的代碼呢?

疏忽了,這就補齊;麻煩幫我分析一下
  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數據
  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. }
復制代碼
回復

使用道具 舉報

10#
ID:384109 發表于 2023-3-30 19:54 | 只看該作者
應該是查忙而不是延時
回復

使用道具 舉報

11#
ID:577162 發表于 2023-3-30 20:48 | 只看該作者


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

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






回復

使用道具 舉報

12#
ID:577162 發表于 2023-3-30 21:07 | 只看該作者
感覺要被這個1602玩壞了
回復

使用道具 舉報

13#
ID:69038 發表于 2023-3-31 00:49 | 只看該作者
按你這個說法是字庫壞了,不過一般 來說,很少壞成這樣。如果只是壞了一個字符,倒可以補救:用自定義字符的方式補上就是麻煩了點
回復

使用道具 舉報

14#
ID:577162 發表于 2023-3-31 01:00 | 只看該作者
zhuls 發表于 2023-3-31 00:49
按你這個說法是字庫壞了,不過一般 來說,很少壞成這樣。如果只是壞了一個字符,倒可以補救:用自定義字符 ...

只有80H的地址壞了;其他都是好的。我從80H開始寫,就沒一點問題;不折騰了,感謝評論!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人一区二区三区 | 中文字幕视频一区 | 91最新视频 | 久久久久久久久淑女av国产精品 | 99精品99| 91国在线视频 | 国产高清自拍视频在线观看 | 好姑娘影视在线观看高清 | 成人在线视频网 | 亚洲一区精品在线 | 国产精品一区二区三区久久 | 久久久成人免费一区二区 | 日韩电影免费在线观看中文字幕 | 欧美精品一区二区蜜桃 | av久久 | 久久99精品久久久久子伦 | 久久久久久久av麻豆果冻 | 精品日韩一区 | 无码一区二区三区视频 | 欧美男人亚洲天堂 | 香蕉视频91 | 精品久久久网站 | 中国一级毛片免费 | 正在播放一区二区 | 91成人午夜性a一级毛片 | 爱爱视频在线观看 | 日韩欧美在线一区 | 亚洲视频在线看 | 久久在线 | 大久| 日韩成人在线视频 | 国产美女精品视频免费观看 | 欧美成人高清视频 | 一级黄色录像片子 | 超碰在线人人 | 国精产品一品二品国精在线观看 | 日本淫视频| 国产成人免费视频网站视频社区 | 亚洲国产精品久久 | 国产99视频精品免费播放照片 | 麻豆一区一区三区四区 |