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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C51單片機:Proteus仿真DHT11溫度/濕度傳感器、LCD1602顯示溫度/濕度值

[復制鏈接]
跳轉到指定樓層
樓主
一、實驗內容
用一個DHT11溫度/濕度傳感器與單片機相連,測量環境溫度與濕度,并在LCD1602顯示溫度、濕度值,確保調節DHT11的溫度與濕度值時,其值會相應變化。

如:T=43°C
  H=75%

DHT11中一次完整的數據為40 bit,即“8 bit濕度整數”+“8 bit濕度小數”+“8 bit溫度整數”+“8 bit溫度小數”+“8 bit校驗和”,從高位開始輸出。

DHT11的測量范圍:溫度0~50 °C,精度為±2 °C,濕度20%~90%,精度為±5%。在實際應用中,溫度、濕度一般取整數部分就可以了。

二、軟件
1、Keil μVision5
2、Proteus 8.12

三、Proteus 虛擬仿真
(1)在Proteus環境中完成電路圖的設計文件。
(2)在Keil μVision下編寫C51程序,經過調試、編譯,最終生成“.hex”可執行文件。
(3)在Proteus中,將“.hex”文件加載到虛擬單片機中。
(4)在Proteus中,進行軟硬件調試仿真。

具體步驟:
1.在Proteus中創建項目
2.設計原理圖
3.源代碼編輯(在Keil C51完成)
4.系統仿真調試
5.電路與源代碼聯

Proteus中用到的元件:AT89C52、DHT11、LM016L、RESPACK-8


四、Keil C51編程

Keil μVision5創建項目(Project)步驟:
1.建立項目文件
2.選擇單片機型號
3.添加源程序文件到項目中
4.設置項目配置選項
5.編譯項目,生成hex文件

C51代碼:

  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. sbit rs = P2 ^ 0;
  4. sbit rw = P2 ^ 1;
  5. sbit en = P2 ^ 2;
  6. sbit io = P2 ^ 3;
  7. uchar t, h;
  8. unsigned long int temp;

  9. //延時約xms
  10. void delay(unsigned int x) {
  11.         uchar i;
  12.         while (x--)
  13.                 for (i = 0; i < 125; i++);
  14. }

  15. //檢查LCD忙狀態
  16. void lcdbusy() {
  17.         rs = 0;
  18.         rw = 1;
  19.         do {
  20.                 en = 0;
  21.                 P0 = 0xff;
  22.                 en = 1;
  23.                 delay(1);
  24.         } while (P0 & 0x80);
  25.         en = 0;
  26. }

  27. //寫LCD命令或數據
  28. void w_lcd( bit cd, uchar dat) {
  29.         lcdbusy();
  30.         rs = cd;
  31.         rw = 0;
  32.         delay(1);
  33.         P0 = dat;
  34.         en = 1;
  35.         delay(1);
  36.         en = 0;
  37. }

  38. //顯示字符串
  39. void w_str(uchar *s) {
  40.         while (*s)
  41.                 w_lcd(1, *s++);
  42. }

  43. //初始化LCD
  44. void init() {
  45.         w_lcd(0, 0x38);
  46.         w_lcd(0, 6);
  47.         w_lcd(0, 0xc);
  48.         w_lcd(0, 1);
  49. }

  50. //讀DHT11的32 位濕度和溫度
  51. void r_dht11() {
  52.         uchar i;
  53.         temp = 0;
  54.         io = 0;
  55.         delay(60);
  56.         io = 1;
  57.         while (io);
  58.         while (~io);
  59.         while (io);
  60. //讀32位數據(8位濕度整數+8位濕度小數+8位溫度整數+8位溫度小數)
  61.         for (i = 0; i < 32; i++) {
  62.                 while (~io);
  63.                 TL0 = 0;
  64.                 TR0 = 1;
  65.                 while (io);
  66.                 TR0 = 0;
  67.                 if (TL0 > 40)
  68.                         temp = (temp << 1) | 1; //讀出的數據為1
  69.                 else
  70.                         temp = temp << 1; //讀出的數據為0
  71.         }
  72. }

  73. void main() {
  74.         delay(500);//延時使DHT11 工作穩定
  75.         init();
  76.         w_lcd(0, 0x85);
  77.         w_str("T=");
  78.         w_lcd(0, 0xC5);
  79.         w_str("H=");

  80.         TMOD = 1; //定時器T0方式1,根據定時時間判斷從DHT11讀出的是0或1
  81.         TH0 = 0;
  82.         while (1) {
  83.                 r_dht11();//讀溫度和濕度
  84.                 t = temp >> 8; //取溫度的整數值
  85.                 h = temp >> 24; //取濕度的整數值
  86.                 w_lcd(0, 0x87);
  87.                 w_lcd(1, t / 10 | 0x30); //顯示溫度
  88.                 w_lcd(1, t % 10 | 0x30);
  89.                 w_lcd(1, 0xdf);
  90.                 w_lcd(1, 'C');
  91.                 w_lcd(0, 0xc7);
  92.                 w_lcd(1, h / 10 | 0x30); //顯示濕度
  93.                 w_lcd(1, h % 10 | 0x30);
  94.                 w_lcd(1, '%');
  95.                 delay(200);//實物可能需要更長的延時時間
  96.         }
  97. }
復制代碼



五、實驗結果


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

使用道具 舉報

沙發
ID:332444 發表于 2023-6-19 17:18 | 只看該作者
controller received command whilst busy
回復

使用道具 舉報

板凳
ID:166284 發表于 2023-8-22 13:34 | 只看該作者
為什么我的STC8A8K64 的OLED數字  顯示  沒反應?  之前的OLED的顯示測試的沒問題
回復

使用道具 舉報

地板
ID:1064915 發表于 2023-8-22 14:15 | 只看該作者
RESPACK-8是作什么用途
回復

使用道具 舉報

5#
ID:1052915 發表于 2023-8-30 16:09 | 只看該作者
謝謝大佬的分析
回復

使用道具 舉報

6#
ID:438586 發表于 2023-11-23 15:08 | 只看該作者
joyb 發表于 2023-8-22 14:15
RESPACK-8是作什么用途

RESPACK-8那個是九腳的排阻
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片久久久 | 精品99久久| 亚洲电影在线播放 | 久久av一区二区三区 | 欧美精品一区二区免费 | 久在线 | www.色.com| 在线免费观看黄网 | 国产欧美精品一区二区三区 | 国产乱xxav | 狠狠干在线 | 国产精品久久久久久吹潮日韩动画 | 久久网站免费视频 | 精品中文视频 | 国产99久久精品一区二区300 | 91视频一区 | 中文字幕亚洲精品 | 国产欧美三区 | 播放一级毛片 | 日韩av免费在线观看 | 亚洲男人的天堂网站 | 欧美精品三区 | 资源首页二三区 | 成人乱人乱一区二区三区软件 | 国产在线二区 | 日韩免费激情视频 | h片在线看 | 在线观看中文字幕 | 国产不卡在线 | 欧美一二区 | 国产h在线| 久久伊人精品 | 午夜视频网站 | 中文字幕一区二区三区四区 | 亚洲 欧美 日韩 精品 | 国产一区二区三区不卡av | 日本精品一区二区三区在线观看 | 中文字幕久久久 | 激情av在线 | 色婷婷久久久久swag精品 | 欧美精品在线播放 |