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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機濕度計 無法顯示濕度傳感器的數據

[復制鏈接]
跳轉到指定樓層
樓主
要求:上電或案件復位后自動顯示"P",進入測量準備階段;按測量開始鍵開始測量,當前環境的濕度在顯示器上穩定顯示;按測量結束鍵停止測量并返回"P"狀態。問題:LCD無法顯示"P";在按下“開始建”后,只顯示個別字符(如圖)且10秒(左右)后就消失了;無法顯示濕度傳感器的數據;按下“結束鍵”任何反應。

求各位大佬指點指點,在此謝過了
  1. /******************************
  2. 基于51單片機的濕度計
  3. 主代碼
  4. ********************************/
  5. #include <reg52.h>
  6. #include <intrins.h>
  7. #include <absacc.h>
  8. #include <math.h>
  9. #include "DHT11.h"
  10. #include "LCD.h"
  11. #include "delay.h"
  12.         
  13. sbit Key_Begin = P2^0;
  14. sbit Key_Over = P2^1;

  15. unsigned char humiH,humiL;

  16. void main()
  17. {
  18.         while(1)
  19.         {
  20.                 LCD1602_Init();//LCD1602初始化
  21.                 LCD1602_Write_Cmd(0x82);//確定顯示位置
  22.                 LCD1602_Write_Data('P');//確定顯示"P"
  23.         
  24.                 while(Key_Begin == 0)
  25.                 {
  26.                         LCD1602_Init();//LCD1602初始化
  27.                         LCD1602_Come();//顯示字符
  28.                         
  29.                         DHT11_Rst();//DHT11初始化
  30.                         DHT11_Check();//DHT11校驗
  31.                         DHT11_Read_Byte();//DHT11讀取數據
  32.                         DHT11_Read_Date(&humiH,&humiL);
  33.                         Delay1000ms();
  34.                         
  35.                         LCD1602_Write_Cmd(0x87);//確定顯示地址
  36.                         LCD1602_Write_Data(humiH);//確定顯示內容 humiH
  37.                         LCD1602_Write_Cmd(0x88);//地址
  38.                         LCD1602_Write_Data(humiL);//內容 humiL
  39.                 }
  40.                 if(Key_Over ==0)
  41.                 {
  42.                         LCD1602_Init();//LCD1602初始化
  43.                         LCD1602_Write_Cmd(0x82);//確定顯示位置:第一行第一個
  44.                         LCD1602_Write_Data('P');//確定顯示"P"
  45.                 }
  46.         }
  47. }

  48. /************************************
  49. 函數名稱:LCD1602_Write_Cmd
  50. 輸入參數:cmd-指令
  51. 輸出參數:無
  52. 函數功能:LCD1602寫指令
  53. *********************************/
  54. void LCD1602_Write_Cmd(char cmd)//接收數據
  55. {
  56.         RS = 0;
  57.         RW = 0;
  58.         EN = 0;
  59.         //配置DB0-DB7的電平
  60.         Lcd_DataPort = cmd;
  61.         _nop_();
  62.         //延時tsp+tsp2的時間
  63.         EN = 1;
  64.         //EN變為高電平,讓Lcd1602開始讀取DB0-DB7的引腳電平
  65.         _nop_();
  66.         //延時tpm一段時間
  67.         EN = 0;
  68.         _nop_();
  69.         //延時tc-tpw時間
  70. }

  71. void LCD1602_Write_Data(char cmd)//讀取數據
  72. {
  73.         RS = 1;
  74.         RW = 0;
  75.         EN = 0;
  76.         //配置DB0-DB7的電平
  77.         Lcd_DataPort = cmd;
  78.         _nop_();
  79.         //延時tsp+tsp2的時間
  80.         EN = 1;
  81.         //EN變為高電平,讓Lcd1602開始讀取DB0-DB7的引腳電平
  82.         _nop_();
  83.         //延時tpm一段時間
  84.         EN = 0;
  85.         _nop_();
  86.         //延時tc-tpw時間
  87. }

  88. void LCD1602_Init(void)//初始化
  89. {
  90.         //Delay15ms();
  91.         LCD1602_Write_Cmd(0x38);//寫指令38H
  92. //        Delay5ms();
  93.         LCD1602_Write_Cmd(0x38);//顯示模式設置
  94.         //Delay5ms();
  95.         LCD1602_Write_Cmd(0x38);//顯示模式設置
  96.         LCD1602_Busy_Check();
  97.         LCD1602_Write_Cmd(0x38);
  98.         LCD1602_Busy_Check();
  99.         LCD1602_Write_Cmd(0x08);//顯示關閉
  100.         LCD1602_Busy_Check();
  101.         LCD1602_Write_Cmd(0x01);//顯示清屏
  102.         LCD1602_Busy_Check();
  103.         LCD1602_Write_Cmd(0x06);//顯示光標移動設置
  104.         LCD1602_Busy_Check();
  105.         LCD1602_Write_Cmd(0x0c);//顯示開及光標設置
  106. }

  107. void LCD1602_Busy_Check(void)//LCD1602忙信號檢測
  108. {
  109.         char tmp;//用來保存Lcd_date的電平狀態
  110.         Lcd_DataPort = 0xff;//一開始的時候,Lcd_date設置成輸入狀態
  111.         do{
  112.                 RS = 0;
  113.                 RW = 1;
  114.                 EN = 1;
  115.                 _nop_();
  116.                 //延時CP
  117.                 tmp = Lcd_DataPort;
  118.                 _nop_();
  119.                 //延時PQ
  120.                  EN = 0;
  121.                 }while(tmp&0x80);//判斷最高位是否為1
  122. }

  123. void LCD1602_Come(void)//LCD1602的讀取主函數之字符顯示
  124. {
  125.         LCD1602_Write_Cmd(0x83);//確定顯示位置
  126.         LCD1602_Write_Data('H');//確定顯示內容
  127.         LCD1602_Write_Cmd(0x84);//地址
  128.         LCD1602_Write_Data('u');//內容,H
  129.         LCD1602_Write_Cmd(0x85);//地址
  130.         LCD1602_Write_Data('m');//內容,H
  131.         LCD1602_Write_Cmd(0x86);//地址
  132.         LCD1602_Write_Data(0x3A);//內容,:
  133.         LCD1602_Write_Cmd(0x89);//地址
  134.         LCD1602_Write_Data(0x25);//內容,%
  135.         while(1);
  136. }


  137. /**************************************************
復制代碼



51hei圖片仿真.png (89.97 KB, 下載次數: 27)

51hei圖片仿真.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:619259 發表于 2024-5-15 22:26 | 只看該作者
第22行,初始化請放到 while(1) 的前面

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:161164 發表于 2024-5-16 09:00 | 只看該作者
LCD1602無需頻繁刷寫
更無需頻繁初始化
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线国产精品一区 | 精产国产伦理一二三区 | 国产精品综合色区在线观看 | 颜色网站在线观看 | 国产.com| 国产精品乱码一区二区三区 | 国产一级片免费视频 | 成人亚洲网站 | 久久黄色网 | 国产精品久久久久婷婷二区次 | 蜜桃视频在线观看免费视频网站www | 看羞羞视频免费 | 国产精品久久久久久久久久三级 | 日韩在线精品强乱中文字幕 | 亚洲精品久久久久中文字幕二区 | 成人性生交大片 | 久久精品国产99国产精品 | 国产成人精品高清久久 | 国产精品中文字幕一区二区三区 | 中文字幕免费在线 | 日本淫视频 | 午夜视频在线免费观看 | 91福利在线观看 | 91亚洲一区 | 国产第二页 | 久久久国产精品网站 | 欧美精品久久久久久久久老牛影院 | 亚洲精品乱码8久久久久久日本 | 成人三级网址 | 成人欧美一区二区三区黑人孕妇 | 欧美日韩在线精品 | 亚洲风情在线观看 | 草草视频在线播放 | 在线观看视频h | 免费小视频在线观看 | 日韩成人在线观看 | 中文一级片 | 亚洲日日夜夜 | 东方伊人免费在线观看 | 成人午夜激情 | 国产美女福利在线观看 |