找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 76819|回復(fù): 331
收起左側(cè)

基于DHT11的溫濕計(jì)設(shè)計(jì) OLED12864顯示

  [復(fù)制鏈接]
ID:362076 發(fā)表于 2018-7-12 14:33 | 顯示全部樓層 |閱讀模式
本作品采用STC15F104W單片機(jī)和OLED12864(IIC)設(shè)計(jì),配合B站上傳的視頻更佳。
B站搜索基于DHT11的溫濕計(jì)(UP凌凈清河)即可查到相關(guān)視頻(預(yù)計(jì)2018年7月13日前會(huì)審核完畢)。

主要亮點(diǎn):
1.自定義的顯示函數(shù)以滿足顯示需求
2.簡(jiǎn)化的字庫(kù)以滿足單片機(jī)4K Flash的容量需求
次要亮點(diǎn):
1.使用小巧的STC15F104W單片機(jī)

請(qǐng)注意!為防止低成本盜用(雖然寫的不怎么樣),僅展示主程序文件源碼,在附件中有完整版。
圖片.jpg
  1. #include<STC15.H>
  2. #include "intrins.h"
  3. #include "OLED_Contrul_Hygrothermograph.c"
  4. sbit YLED=P3^1;
  5. sbit RLED=P3^0;
  6. sbit DHT=P3^5;
  7. unsigned int Temperature[3]={1,1,1};
  8. unsigned int Humidity[2]={1,1};
  9. unsigned char Data_Receive[5];
  10. /*#################################################################################
  11. 設(shè)計(jì)名稱:基于DHT11的溫濕度計(jì)(Hygrothermograph)
  12. 設(shè)計(jì)者:清河

  13. 平臺(tái):STC15F104W
  14. 硬件部分
  15. 顯示:采用OLED12864顯示溫度和濕度
  16. 測(cè)量,采用DHT11模塊,模塊信息如下:
  17. ASATR
  18. -----
  19. NA:DHT11
  20. OC:3.3-5.5V
  21. U1:5-95%RH
  22. U2:-20-60℃
  23. U3:±5%RH±2℃
  24. SN:A1712882A

  25. 為保證延時(shí)準(zhǔn)確,晶振設(shè)置為12MHz

  26. 借用了<a href="http://www.torrancerestoration.com/bbs/dpj-38067-1.html" target="_blank">http://www.torrancerestoration.com/bbs/dpj-38067-1.html</a>上的部分程序,在此表示感謝
  27. #################################################################################*/
  28. void Delay30us()
  29. {unsigned char i;i=87;while(--i);}

  30. void Delay20ms()
  31. {unsigned char i,j,k;i=1;j=234;k=113;do{do{while(--k);}while(--j);}while(--i);}

  32. void Delay1s()
  33. {unsigned char i,j,k;i=46;j=153;k=245;do{do{while(--k);}while(--j);}while(--i);}

  34. void OLED_Display()
  35. {OLED_DataDisplay_T(56,4,Temperature);OLED_DataDisplay_H(56,6,Humidity);}

  36. void DHT_Collect()
  37. {unsigned char i,j;unsigned char t;unsigned char dat8=0;unsigned int CheckValue=0;
  38. DHT=0;Delay20ms();DHT=1;Delay30us();
  39. t=80;while(DHT&&t--);if(t==0){DHT=1;}t=250;while(!DHT&&t--);
  40. if(t==0){DHT=1;}t=250;while(DHT&&t--);if(t==0){DHT=1;}
  41. for(j=0;j<5;j++)
  42. {for(i=0;i<8;i++){t=150;while(!DHT&&t--);if(t==0){DHT=1;}t=0;
  43. while(DHT&&++t);dat8<<=1;if(t>30)dat8+=1;}Data_Receive[j]=dat8;}
  44. Delay30us();Delay30us();DHT=1;
  45. for(i=0;i<4;i++){CheckValue+=Data_Receive[i];}
  46. if((unsigned char)CheckValue==Data_Receive[4])
  47. {Temperature[0]=Data_Receive[2]/10;Temperature[1]=Data_Receive[2]%10;Temperature[2]=Data_Receive[3]%10;
  48. Humidity[0]=Data_Receive[0]/10;Humidity[1]=Data_Receive[0]%10;}}

  49. void sys_init()
  50. {YLED=1;RLED=1;OLED_Init();OLED_CLS();
  51. OLED_FormTitle(0,0);OLED_FormName(0,2);OLED_FormLine(0,3);OLED_FormTemp(8,4);OLED_FormHumi(16,6);
  52. OLED_AnyChar_16X16(96,4,TempChar);OLED_AnyChar_8X16(88,6,HumiChar);OLED_AnyChar_8X16(72,4,PointChar);}

  53. void main()
  54. {sys_init();while(1){DHT_Collect();YLED=1;RLED=0;OLED_Display();RLED=1;YLED=0;Delay1s();Delay1s();}}
復(fù)制代碼
帶注釋版以及OLED控制文件、字庫(kù)文件、底層通信文件在附件中,上面的為主程序文件無(wú)注釋緊縮版。
所有代碼排版嚴(yán)謹(jǐn),分級(jí)之間使用TAB件,無(wú)多余空格,使用Notpad++以c文件形式打開即可正常觀看。

新礦城學(xué)習(xí)基地 凌凈清河

Keil代碼下載: 基于DHT11的溫濕計(jì) 凌凈清河.zip (45.51 KB, 下載次數(shù): 581)

評(píng)分

參與人數(shù) 3黑幣 +87 收起 理由
aiober + 30 很給力!
hbnpmw + 7
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:60663 發(fā)表于 2018-8-15 21:58 | 顯示全部樓層
樓主,我仿制了一個(gè),我想把數(shù)字的字體加大到16*32,程序怎么改,我試了多次,提示void OLED_Set_Pos(unsigned char x, unsigned char y) 這里出錯(cuò),請(qǐng)樓主幫忙,謝謝了。 旋轉(zhuǎn) QQ圖片20180815215345.jpg

評(píng)分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-8-27 09:25 | 顯示全部樓層
kodak0818 發(fā)表于 2018-8-26 17:51
樓主,感謝分享,順便問一下,怎么鑒定oled12864是不是壞的,我燒你的hex,oled不顯示啊

確定連線都是按照程序中位定義連接的么?OLED的初始化操作正確執(zhí)行了么?這兩步完成程序應(yīng)該會(huì)有顯示了。OLED對(duì)延時(shí)要求不是很高呀。和DHT相關(guān)的部分倒是要改一下精準(zhǔn)延時(shí)函數(shù)。
回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-8-27 09:27 | 顯示全部樓層
kodak0818 發(fā)表于 2018-8-26 17:51
樓主,感謝分享,順便問一下,怎么鑒定oled12864是不是壞的,我燒你的hex,oled不顯示啊

如果不是按照程序中的引腳定義連線的,要改一下OLED_Hygrothermograph.h中的串行數(shù)據(jù)/時(shí)鐘的定義,應(yīng)該是沒有改吧?
回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-9-5 12:27 | 顯示全部樓層
twelveboy 發(fā)表于 2018-8-15 21:58
樓主,我仿制了一個(gè),我想把數(shù)字的字體加大到16*32,程序怎么改,我試了多次,提示void OLED_Set_Pos(unsig ...

不好意思,之前瀏覽回復(fù)的時(shí)候竟然沒有注意到你的問題。但是我并沒能想清楚你的問題出現(xiàn)在哪里,OLED_Set_Pos的作用類似于打印機(jī)將打印頭移動(dòng)到要寫入數(shù)據(jù)的位置處。本不應(yīng)該出現(xiàn)錯(cuò)誤的,推測(cè)是你的上級(jí)調(diào)用函數(shù)出了問題?
增大字號(hào)的話,先是擴(kuò)充取模數(shù)組,對(duì)應(yīng)著取模的方式重寫顯示函數(shù),要考慮到每一個(gè)字符占的位置大小,每一個(gè)字節(jié)的顯示順序等等,當(dāng)需要開始新一行(8個(gè)縱點(diǎn))的時(shí)候就要重新設(shè)置Pos,如此分行多次寫完一個(gè)字模。
回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-9-5 12:31 | 顯示全部樓層
kodak0818 發(fā)表于 2018-8-27 22:25
線序是對(duì)的,燒了好多hex 都沒有反應(yīng),自己也寫了一些全屏顯示的代碼,沒有反應(yīng),估計(jì)屏幕是壞的。放棄了 ...

OLED12864在淘寶上最便宜有12塊錢包郵的,小貓芯城價(jià)格15元,15元也是大多數(shù)“便宜”賣家給出的價(jià)格,至于20塊左右或者更高價(jià)格的,直接pass吧,我買過幾個(gè)便宜的,用著也沒什么問題。
回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-9-5 12:33 | 顯示全部樓層
pk可樂 發(fā)表于 2018-8-28 15:56
謝謝,想學(xué)習(xí)一下12864與單片機(jī)的鏈接

連接...IIC的話除了P0要加上拉之外,SDA和SCL隨便連接哪一個(gè)IO都可以啊~
回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-9-12 10:04 | 顯示全部樓層

不大,如果是用我的程序直接燒錄的話,難度就是5個(gè)IO和器件的連接,因?yàn)槠聊皇荌IC的,所以連接起來較SPI的更方便。
制作成本的話,按主要的算,屏幕13+洞洞板0.8元+DTH11 5.7+microUSB小板0.8+STC15F104W 1.8+雜項(xiàng),大約不到25元。
回復(fù)

使用道具 舉報(bào)

ID:102963 發(fā)表于 2018-7-13 13:57 | 顯示全部樓層
不錯(cuò)的設(shè)計(jì),新穎的單片機(jī),好!
回復(fù)

使用道具 舉報(bào)

ID:87193 發(fā)表于 2018-7-17 14:46 | 顯示全部樓層
回復(fù)看看咯,希望有驚喜
回復(fù)

使用道具 舉報(bào)

ID:373734 發(fā)表于 2018-7-18 00:51 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:163705 發(fā)表于 2018-7-18 09:29 | 顯示全部樓層
不錯(cuò),學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:44037 發(fā)表于 2018-7-18 10:13 | 顯示全部樓層
謝謝分享  回復(fù)看看咯,希望有驚喜
回復(fù)

使用道具 舉報(bào)

ID:373808 發(fā)表于 2018-7-18 10:56 | 顯示全部樓層
厲害了樓主
回復(fù)

使用道具 舉報(bào)

ID:256485 發(fā)表于 2018-7-19 15:27 | 顯示全部樓層
謝謝分享!
回復(fù)

使用道具 舉報(bào)

ID:374973 發(fā)表于 2018-7-19 16:25 來自手機(jī) | 顯示全部樓層
謝謝分享~
回復(fù)

使用道具 舉報(bào)

ID:75461 發(fā)表于 2018-7-24 00:05 | 顯示全部樓層
謝謝分享,學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

ID:371205 發(fā)表于 2018-7-24 13:44 | 顯示全部樓層
你好  您的基于DHT1112864顯示   我能下載嗎”
回復(fù)

使用道具 舉報(bào)

ID:104846 發(fā)表于 2018-7-24 17:06 | 顯示全部樓層
好,學(xué)學(xué)兮兮
回復(fù)

使用道具 舉報(bào)

ID:362076 發(fā)表于 2018-7-24 20:50 | 顯示全部樓層
hjklk 發(fā)表于 2018-7-24 13:44
你好  您的基于DHT1112864顯示   我能下載嗎”

這算是試探性的回復(fù)么?>v<
只要回帖就可以下載的。
回復(fù)

使用道具 舉報(bào)

ID:242127 發(fā)表于 2018-7-24 22:54 | 顯示全部樓層
很好的代碼
回復(fù)

使用道具 舉報(bào)

ID:199210 發(fā)表于 2018-7-24 23:13 | 顯示全部樓層
牛人
回復(fù)

使用道具 舉報(bào)

ID:375381 發(fā)表于 2018-7-25 18:59 來自手機(jī) | 顯示全部樓層
可以可以,很好
回復(fù)

使用道具 舉報(bào)

ID:60663 發(fā)表于 2018-8-5 18:06 | 顯示全部樓層
正找這個(gè)呢
回復(fù)

使用道具 舉報(bào)

ID:201191 發(fā)表于 2018-8-8 12:10 | 顯示全部樓層
看看如何
回復(fù)

使用道具 舉報(bào)

ID:163046 發(fā)表于 2018-8-8 16:14 | 顯示全部樓層
不錯(cuò)的設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

ID:383124 發(fā)表于 2018-8-8 16:39 來自手機(jī) | 顯示全部樓層
多謝分享
回復(fù)

使用道具 舉報(bào)

ID:379563 發(fā)表于 2018-8-13 10:01 | 顯示全部樓層
正嘗試STM32的DHT11溫濕度 前來參考參考
回復(fù)

使用道具 舉報(bào)

ID:272158 發(fā)表于 2018-8-13 14:53 | 顯示全部樓層
收藏學(xué)習(xí)一下,研究一下小發(fā)明
回復(fù)

使用道具 舉報(bào)

ID:82738 發(fā)表于 2018-8-15 07:45 來自手機(jī) | 顯示全部樓層
不錯(cuò)的設(shè)計(jì);下載學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:228731 發(fā)表于 2018-8-15 09:01 | 顯示全部樓層
不錯(cuò) 謝謝分享!
回復(fù)

使用道具 舉報(bào)

ID:229445 發(fā)表于 2018-8-15 19:44 | 顯示全部樓層
想要學(xué)習(xí)oled遂來討教
回復(fù)

使用道具 舉報(bào)

ID:358930 發(fā)表于 2018-8-15 23:33 來自手機(jī) | 顯示全部樓層
很好,簡(jiǎn)單的就好
回復(fù)

使用道具 舉報(bào)

ID:387116 發(fā)表于 2018-8-17 09:44 | 顯示全部樓層
很好的資料
回復(fù)

使用道具 舉報(bào)

ID:371023 發(fā)表于 2018-8-17 13:58 | 顯示全部樓層
回復(fù)看看咯,希望有驚喜
回復(fù)

使用道具 舉報(bào)

ID:57896 發(fā)表于 2018-8-18 18:28 | 顯示全部樓層
謝謝分享,51黑有你更精彩
回復(fù)

使用道具 舉報(bào)

ID:57896 發(fā)表于 2018-8-18 18:29 | 顯示全部樓層
謝謝分享,支持原創(chuàng)
回復(fù)

使用道具 舉報(bào)

ID:246638 發(fā)表于 2018-8-23 21:25 | 顯示全部樓層
不錯(cuò)的資料
回復(fù)

使用道具 舉報(bào)

ID:366539 發(fā)表于 2018-8-24 22:03 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:142687 發(fā)表于 2018-8-25 00:26 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:374724 發(fā)表于 2018-8-25 06:49 來自手機(jī) | 顯示全部樓層
菜鳥來學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:243394 發(fā)表于 2018-8-26 12:38 | 顯示全部樓層
不錯(cuò),學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:159122 發(fā)表于 2018-8-26 12:57 | 顯示全部樓層
感謝樓主分享,學(xué)習(xí)了e
回復(fù)

使用道具 舉報(bào)

ID:159122 發(fā)表于 2018-8-26 17:51 | 顯示全部樓層
樓主,感謝分享,順便問一下,怎么鑒定oled12864是不是壞的,我燒你的hex,oled不顯示啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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