找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5350|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

STC15W4K32S4單片機DHT11多功能數(shù)顯溫濕度計源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:296123 發(fā)表于 2018-3-23 21:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
該設(shè)計采用的是LCD1602顯示,DHT11溫濕度傳感器采集環(huán)境中的溫濕度,同時采用DS1302時鐘模塊顯示當(dāng)前日期和時間。

單片機源程序如下:
  1. #include "lcd1602.h"
  2. #include "dht11.h"
  3. #include "ds1302.h"

  4. unsigned char Table_LCD[]="0123456789";

  5. void IO_Init()
  6. {
  7.         /////////////////////////////////////////////////
  8.         //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關(guān)的IO口均為
  9.         //      高阻態(tài),需將這些口設(shè)置為準(zhǔn)雙向口或強推挽模式方可正常使用
  10.         //相關(guān)IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
  11.         //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5
  12.         /////////////////////////////////////////////////
  13.         P0M1 = 0;        P0M0 = 0;        //設(shè)置P0.0~P0.7為準(zhǔn)雙向口
  14.         P1M1 = 0;        P1M0 = 0;        //設(shè)置P1.0~P1.7為準(zhǔn)雙向口
  15.         P2M1 = 0;        P2M0 = 0;        //設(shè)置P2.0~P2.7為準(zhǔn)雙向口
  16.         P3M1 = 0;        P3M0 = 0;        //設(shè)置P3.0~P3.7為準(zhǔn)雙向口
  17.         P4M1 = 0;        P4M0 = 0;        //設(shè)置P4.0~P4.7為準(zhǔn)雙向口
  18.         P5M1 = 0;        P5M0 = 0;        //設(shè)置P5.0~P5.7為準(zhǔn)雙向口
  19. }

  20. void main()
  21. {
  22.         unsigned char val;
  23.         IO_Init();
  24.         LCD_Init();
  25.         init_ds1302();
  26.         while(1)
  27.         {
  28.                 GetDHT11_Data();
  29.                 val=(tempH+tempL+humyH+humyL)&0xff;
  30.                 if(val==CheckData)
  31.                 {
  32.                         //顯示濕度
  33.                         Write_ComLCD1602(0x80+13);
  34.                         Write_DatLCD1602(Table_LCD[humyH/10]);
  35.                         Write_ComLCD1602(0x80+14);
  36.                         Write_DatLCD1602(Table_LCD[humyH%10]);
  37.                         Write_ComLCD1602(0x80+15);
  38.                         Write_DatLCD1602('%');
  39.                        
  40.                         //顯示溫度
  41.                         Write_ComLCD1602(0x80+0x40+13);
  42.                         Write_DatLCD1602(Table_LCD[tempH/10]);
  43.                         Write_ComLCD1602(0x80+0x40+14);
  44.                         Write_DatLCD1602(Table_LCD[tempH%10]);
  45.                         Write_ComLCD1602(0x80+0x40+15);
  46.                         Write_DatLCD1602('C');
  47.                 }
  48.                 read_ds1302();
  49.                 //顯示年
  50.                 Write_ComLCD1602(0x80);
  51.                 Write_DatLCD1602('2');
  52.                 Write_ComLCD1602(0x81);
  53.                 Write_DatLCD1602('0');
  54.                 Write_ComLCD1602(0x82);
  55.                 Write_DatLCD1602(Table_LCD[time_shi[6]]);
  56.                 Write_ComLCD1602(0x83);
  57.                 Write_DatLCD1602(Table_LCD[time_ge[6]]);
  58.                
  59.                 Write_ComLCD1602(0x84);
  60.                 Write_DatLCD1602('/');
  61.                
  62.                 //顯示月
  63.                 Write_ComLCD1602(0x85);
  64.                 Write_DatLCD1602(Table_LCD[time_shi[4]]);
  65.                 Write_ComLCD1602(0x86);
  66.                 Write_DatLCD1602(Table_LCD[time_ge[4]]);
  67.                
  68.                 Write_ComLCD1602(0x87);
  69.                 Write_DatLCD1602('/');
  70.                
  71.                 //顯示日
  72.                 Write_ComLCD1602(0x88);
  73.                 Write_DatLCD1602(Table_LCD[time_shi[3]]);
  74.                 Write_ComLCD1602(0x89);
  75.                 Write_DatLCD1602(Table_LCD[time_ge[3]]);
  76.                
  77.                 //顯示星期
  78.                 Write_ComLCD1602(0x80+11);
  79.                 Write_DatLCD1602(Table_LCD[time_ge[5]]);
  80.                
  81.                 //顯示時
  82.                 Write_ComLCD1602(0x80+0x40);
  83.                 Write_DatLCD1602(Table_LCD[time_shi[2]]);
  84.                 Write_ComLCD1602(0x80+0x41);
  85.                 Write_DatLCD1602(Table_LCD[time_ge[2]]);
  86.                
  87.                 Write_ComLCD1602(0x80+0x42);
  88.                 Write_DatLCD1602(':');
  89.                
  90.                 //顯示分
  91.                 Write_ComLCD1602(0x80+0x43);
  92.                 Write_DatLCD1602(Table_LCD[time_shi[1]]);
  93.                 Write_ComLCD1602(0x80+0x44);
  94.                 Write_DatLCD1602(Table_LCD[time_ge[1]]);
  95.                
  96.                 Write_ComLCD1602(0x80+0x45);
  97.                 Write_DatLCD1602(':');
  98.                
  99.                 //顯示秒
  100.                 Write_ComLCD1602(0x80+0x46);
  101.                 Write_DatLCD1602(Table_LCD[time_shi[0]]);
  102.                 Write_ComLCD1602(0x80+0x47);
  103.                 Write_DatLCD1602(Table_LCD[time_ge[0]]);
  104.         }
  105. }
復(fù)制代碼

所有資料51hei提供下載:
多功能數(shù)顯溫濕度計.zip (48.31 KB, 下載次數(shù): 172)


評分

參與人數(shù) 2黑幣 +55 收起 理由
秋水長天 + 5 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:243748 發(fā)表于 2018-3-24 18:06 來自手機 | 只看該作者
好資料,謝謝分享
回復(fù)

使用道具 舉報

板凳
ID:296886 發(fā)表于 2018-3-25 21:39 | 只看該作者
學(xué)習(xí)一下,挺好的
回復(fù)

使用道具 舉報

地板
ID:933070 發(fā)表于 2021-6-7 20:42 | 只看該作者
有原理圖嗎
回復(fù)

使用道具 舉報

5#
ID:982170 發(fā)表于 2021-12-6 15:36 | 只看該作者
我使用oled12864單獨只顯示溫濕度,需要刪除那些程序?

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表