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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD1602顯示總是出現空兩格,比如字母P變成字母R的現象

[復制鏈接]
跳轉到指定樓層
樓主
ID:834529 發表于 2020-10-26 00:45 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32f103c8t6控制讀取溫濕度在LCD1602顯示
LCD1602顯示總是出現空兩格,比如字母P變成字母R的現象,請問各位大神這是什么原因造成的呢
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:420836 發表于 2020-10-26 04:40 | 只看該作者
這可能不是由硬件引起的。
回復

使用道具 舉報

板凳
ID:230442 發表于 2020-10-26 09:41 | 只看該作者
數據線接觸不良
回復

使用道具 舉報

地板
ID:387641 發表于 2020-10-26 11:47 | 只看該作者
MCU或1602模塊通信不成功!
回復

使用道具 舉報

5#
ID:834529 發表于 2020-10-26 12:03 來自手機 | 只看該作者
謝謝大家回復,我想知道是因為我的顯示地址出問題了嗎
回復

使用道具 舉報

6#
ID:834529 發表于 2020-10-26 12:05 來自手機 | 只看該作者
luzhongyi86 發表于 2020-10-26 11:47
MCU或1602模塊通信不成功!

我用的a0-a7接的1602的d0到d7,rs,en,rw接的pc13-15,通信不成功指的什么意思呢
回復

使用道具 舉報

7#
ID:834664 發表于 2020-10-26 13:24 來自手機 | 只看該作者
代碼有沒有
回復

使用道具 舉報

8#
ID:387641 發表于 2020-10-26 13:59 來自手機 | 只看該作者
本帖最后由 luzhongyi86 于 2020-10-26 14:05 編輯
ybxdn 發表于 2020-10-26 12:05
我用的a0-a7接的1602的d0到d7,rs,en,rw接的pc13-15,通信不成功指的什么意思呢

1602只有11條指命用法你對下手冊,AO-A7口要接上拉電阻
回復

使用道具 舉報

9#
ID:834529 發表于 2020-10-26 16:53 來自手機 | 只看該作者
1qaz2wsx.. 發表于 2020-10-26 13:24
代碼有沒有

有有有,馬上就貼出來
回復

使用道具 舉報

10#
ID:834529 發表于 2020-10-26 19:00 | 只看該作者
ybxdn 發表于 2020-10-26 16:53
有有有,馬上就貼出來

LCD1602.C文件
  1. #include "LCD1602.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. //8位數按位逆序
  5. u8 BitReversed(u8 x)
  6. {
  7.         u8 temp[8];
  8.         u8 i = 0;
  9.         u8 j = 7;
  10.         u8 result = 0;
  11.         for(i = 0;i<8;i++)
  12.         {
  13.                 temp[i] = (x>>i)&0x01;
  14.         }
  15.         for(i = 0;i<8;i++)
  16.         {
  17.                 result = result|(temp[j]<<(i));
  18.                 j--;
  19.         }        
  20.         return result;
  21.         
  22. }

  23. void  LCD_Check_Busy(void)

  24. {
  25.   LCD1602_RS0;        //RS????
  26.         delay_us(1000);
  27.   LCD1602_RW1;    //RW????
  28.         delay_us(1000);
  29.   LCD1602_EN0;//EN????
  30.         delay_us(1000);
  31.   GPIO_Write(GPIOC,0Xff);   
  32.         delay_ms(1000);
  33.   LCD1602_EN1;    //EN????
  34.         delay_us(1000);
  35. }

  36. /*------------------------------------------------
  37.             寫命令
  38. ------------------------------------------------*/
  39. void LCD_Write_Com(unsigned char com)
  40. {                               //????
  41.   LCD1602_RS0;         //RS???????
  42.         delay_us(1000);
  43.   LCD1602_RW0;
  44.   delay_us(1000);        //RW????
  45.   LCD1602_EN1;                    //EN????
  46.         delay_us(1000);
  47.         com = BitReversed(com);
  48.   GPIO_Write(GPIOA,com&0x00ff);//|(GPIO_ReadOutputData(GPIOA)&0XFF00));                    //????????
  49.         delay_us(1000);
  50.   LCD1602_EN0;
  51. }

  52. /*------------------------------------------------
  53.               寫數據
  54. ------------------------------------------------*/
  55. void LCD_Write_Data(unsigned char Data)
  56. {                                    //????  
  57.   LCD1602_RS1;                    //RS?????????
  58.         delay_us(1000);
  59.   LCD1602_RW0;
  60.   delay_us(1000);        
  61.   LCD1602_EN1;                    //EN????
  62.         delay_us(1000);
  63.         Data = BitReversed(Data);
  64.   GPIO_Write(GPIOA,Data&0x00ff);//|(GPIO_ReadOutputData(GPIOA)&0XFF00));
  65.         delay_us(1000);
  66.   LCD1602_EN0;
  67. }
  68. /*------------------------------------------------
  69.               寫字符串
  70. ------------------------------------------------*/
  71. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  72. {     
  73. if (y == 0)
  74.          {     
  75.          LCD_Write_Com(0x80 + x);   delay_ms(5);  
  76.          }
  77. else
  78.          {     
  79.          LCD_Write_Com(0xC0 + x);     delay_ms(5);
  80.          }        
  81. while (*s)
  82.          {     
  83. LCD_Write_Data( *s);  delay_ms(5);   
  84. s ++;     
  85.          }
  86. }
  87. /*------------------------------------------------
  88.               寫字符
  89. ------------------------------------------------*/
  90. void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
  91. {     
  92. if (y == 0)
  93.          {     
  94.          LCD_Write_Com(0x80 + x);  delay_ms(5);   
  95.          }   
  96. else
  97.          {     
  98.          LCD_Write_Com(0xC0 + x);   delay_ms(5);  
  99.          }        
  100. LCD_Write_Data( Data);
  101. delay_ms(5);        
  102. }


  103. void LCD1602_write_long(unsigned char x,unsigned char y,u32 data,unsigned char num)
  104. {
  105.     unsigned char temp[12],i = 12;
  106.     while(i--)
  107.     {
  108.          temp[i] = ' ';
  109.     }
  110.     temp[num] = '\0';
  111.     while(num--)
  112.     {
  113.       if(data || data%10)
  114.          temp[num] = data % 10 + 0x30;
  115.       data = data/10;
  116.     }
  117.    LCD_Write_String(x,y,temp);   delay_ms(5);
  118. }

  119. /*------------------------------------------------
  120.                 清屏
  121. ------------------------------------------------*/
  122. void LCD_Clear(void)
  123. {
  124. LCD_Write_Com(0x01);
  125. delay_ms(5);
  126. }

  127. /*------------------------------------------------*/
  128. void LCD_Init(void)
  129. {
  130.           GPIO_InitTypeDef GPIO_InitStructure;
  131.          
  132.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);  
  133.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
  134.     GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  135.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  136.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  137.     GPIO_Init(GPIOA, &GPIO_InitStructure);
  138.         
  139.         
  140.           GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14|GPIO_Pin_15;  
  141.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
  142.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  143.     GPIO_Init(GPIOC, &GPIO_InitStructure);   //GPIOC
  144.         
  145.          delay_ms(15);
  146.          LCD_Write_Com(0x38);
  147.          delay_ms(5);
  148.          LCD_Write_Com(0x38);
  149.          delay_ms(5);
  150.          LCD_Write_Com(0x38);
  151.          //delay_ms(5);
  152.         
  153.    LCD_Write_Com(0x38);
  154.    
  155.          LCD_Write_Com(0x0C);    /*ÏÔ꾿a¼°1a±êéèÖÃ*/
  156.          delay_ms(5);
  157.          LCD_Write_Com(0x06);    /*ÏÔê¾1a±êòƶˉéèÖÃ*/
  158.          delay_ms(5);
  159.    //LCD_Write_Com(0x08);    /*ÏÔê¾1رÕ*/
  160.    //delay_ms(5);         
  161.    LCD_Write_Com(0x01);    /*ÏÔê¾ÇåÆá*/
  162.    delay_ms(5);         
  163.    
  164.     //LCD_Write_Com(0x80);
  165.                 //delay_ms(5);         
  166.                
  167. }

  168. 主函數
  169. int main(void)
  170. {        
  171.   u16 test=0;
  172.         u8 temperature=0;
  173.         u8 humidity=0;
  174.         
  175.         delay_init();                              
  176.         NVIC_Configuration();                                                                                 
  177.         delay_ms(400);
  178.         LCD_Init();        
  179.         USART3_Init(2400);
  180.         DHT11_Init();
  181.         delay_ms(100);
  182.         LCD_Write_String(0,0,"Pm2.5: 000ug/m3");delay_ms(5);
  183.         LCD_Write_String(0,1,"Tem:00C  Hum:00%");delay_ms(5);
  184.   while(1)
  185.         {
  186.                   if(test++ > 200)
  187.                         {
  188.                                 //LCD_Write_Com(0x80);
  189.                                   test = 0;
  190.                                         Get_PM();
  191.                                   if(PM25_Value > 999)PM25_Value=999;
  192.                                  
  193.                                   LCD_Write_Char(7,0,PM25_Value/100+0x30);
  194.                                   LCD_Write_Char(8,0,PM25_Value%100/10+0x30);
  195.                                   LCD_Write_Char(9,0,PM25_Value%10+0x30);
  196.                                 
  197.                                 //LCD_Write_Com(0xC0);
  198.                                   DHT11_Read_Data(&temperature,&humidity);
  199.                                   LCD_Write_Char(4,1,temperature%100/10+0x30);
  200.                                   LCD_Write_Char(5,1,temperature%10+0x30);
  201.                                   LCD_Write_Char(13,1,humidity%100/10+0x30);
  202.                                   LCD_Write_Char(14,1,humidity%10+0x30);
  203.                         }
  204.                         delay_ms(5);
  205.   }
  206. }
復制代碼

回復

使用道具 舉報

11#
ID:834529 發表于 2020-10-27 21:15 來自手機 | 只看該作者
還有人嗎,沒解決這個問題
回復

使用道具 舉報

12#
ID:592807 發表于 2020-10-28 18:39 | 只看該作者
ybxdn 發表于 2020-10-27 21:15
還有人嗎,沒解決這個問題

這種事一般是你的顯示地址有問題,在線調試幾次就出結論了
回復

使用道具 舉報

13#
ID:834529 發表于 2020-10-28 20:04 來自手機 | 只看該作者
黃youhui 發表于 2020-10-28 18:39
這種事一般是你的顯示地址有問題,在線調試幾次就出結論了

顯示地址我是從0x80和0xc0開始的,但就是不從第一個格開始顯示
回復

使用道具 舉報

14#
ID:592807 發表于 2020-10-30 08:52 | 只看該作者
ybxdn 發表于 2020-10-28 20:04
顯示地址我是從0x80和0xc0開始的,但就是不從第一個格開始顯示

我有個帖子"用uc1617s驅動128*128的液晶屏,移位操作程序出錯",看一下對你有用嗎?在我主頁
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品免费 | 亚洲一区二区三区免费视频 | 日韩精品福利 | 久久国产精品一区二区三区 | 天天射天天干 | 狠狠操狠狠搞 | 国产美女h视频 | 午夜影院在线视频 | 男女午夜免费视频 | 91精品一区二区三区久久久久久 | 成人黄色网址大全 | 一区二区三区精品 | 欧美激情欧美激情在线五月 | 毛片免费观看视频 | 在线一区二区国产 | 日本午夜免费福利视频 | 激情欧美一区二区三区中文字幕 | 精品欧美乱码久久久久久 | 毛片综合| 九九九国产 | 国产精品污www一区二区三区 | 99视频在线免费观看 | 日韩午夜影院 | 一区二区三区欧美 | 欧美日韩高清免费 | 国产电影一区二区三区爱妃记 | 欧美激情久久久 | 久久久久久久久久性 | 蜜桃色网| 久久久久91| 夜夜夜夜草| 国产激情91久久精品导航 | 祝你幸福电影在线观看 | 99热首页| 精品国产一区二区三区久久久蜜月 | 久久涩涩| 在线精品亚洲欧美日韩国产 | 日韩高清国产一区在线 | 免费成人高清在线视频 | h视频在线免费 | 久久视频免费看 |