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

標題: 基于DHT11的溫濕計設計 OLED12864顯示 [打印本頁]

作者: 凌凈清河    時間: 2018-7-12 14:33
標題: 基于DHT11的溫濕計設計 OLED12864顯示
本作品采用STC15F104W單片機和OLED12864(IIC)設計,配合B站上傳的視頻更佳。
B站搜索基于DHT11的溫濕計(UP凌凈清河)即可查到相關視頻(預計2018年7月13日前會審核完畢)。

主要亮點:
1.自定義的顯示函數以滿足顯示需求
2.簡化的字庫以滿足單片機4K Flash的容量需求
次要亮點:
1.使用小巧的STC15F104W單片機

請注意!為防止低成本盜用(雖然寫的不怎么樣),僅展示主程序文件源碼,在附件中有完整版。

  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. 設計名稱:基于DHT11的溫濕度計(Hygrothermograph)
  12. 設計者:清河

  13. 平臺:STC15F104W
  14. 硬件部分
  15. 顯示:采用OLED12864顯示溫度和濕度
  16. 測量,采用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. 為保證延時準確,晶振設置為12MHz

  26. 借用了<a href="http://m.zg4o1577.cn/bbs/dpj-38067-1.html" target="_blank">http://m.zg4o1577.cn/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();}}
復制代碼
帶注釋版以及OLED控制文件、字庫文件、底層通信文件在附件中,上面的為主程序文件無注釋緊縮版。
所有代碼排版嚴謹,分級之間使用TAB件,無多余空格,使用Notpad++以c文件形式打開即可正常觀看。

新礦城學習基地 凌凈清河

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


作者: songxia8013    時間: 2018-7-13 13:57
不錯的設計,新穎的單片機,好!
作者: lemon0210    時間: 2018-7-17 14:46
回復看看咯,希望有驚喜
作者: wss12345678    時間: 2018-7-18 00:51
謝謝樓主
作者: 854100995    時間: 2018-7-18 09:29
不錯,學習了
作者: by64214    時間: 2018-7-18 10:13
謝謝分享  回復看看咯,希望有驚喜
作者: 大概微笑會好吧    時間: 2018-7-18 10:56
厲害了樓主
作者: Mxzy    時間: 2018-7-19 15:27
謝謝分享!
作者: 通信狗    時間: 2018-7-19 16:25
謝謝分享~
作者: uva2015    時間: 2018-7-24 00:05
謝謝分享,學習中
作者: hjklk    時間: 2018-7-24 13:44
你好  您的基于DHT1112864顯示   我能下載嗎”
作者: siyaqq    時間: 2018-7-24 17:06
好,學學兮兮
作者: 凌凈清河    時間: 2018-7-24 20:50
hjklk 發表于 2018-7-24 13:44
你好  您的基于DHT1112864顯示   我能下載嗎”

這算是試探性的回復么?>v<
只要回帖就可以下載的。
作者: OPJH    時間: 2018-7-24 22:54
很好的代碼
作者: fate998    時間: 2018-7-24 23:13
牛人
作者: 天涯明月刀    時間: 2018-7-25 18:59
可以可以,很好
作者: twelveboy    時間: 2018-8-5 18:06
正找這個呢
作者: jawin    時間: 2018-8-8 12:10
看看如何
作者: wdyang27    時間: 2018-8-8 16:14
不錯的設計
作者: zfyzxgg    時間: 2018-8-8 16:39
多謝分享
作者: 15081898066    時間: 2018-8-13 10:01
正嘗試STM32的DHT11溫濕度 前來參考參考
作者: feixue2007    時間: 2018-8-13 14:53
收藏學習一下,研究一下小發明
作者: 18588278793    時間: 2018-8-15 07:45
不錯的設計;下載學習

作者: Akon4    時間: 2018-8-15 09:01
不錯 謝謝分享!
作者: 密碼忘了    時間: 2018-8-15 19:44
想要學習oled遂來討教

作者: twelveboy    時間: 2018-8-15 21:58
樓主,我仿制了一個,我想把數字的字體加大到16*32,程序怎么改,我試了多次,提示void OLED_Set_Pos(unsigned char x, unsigned char y) 這里出錯,請樓主幫忙,謝謝了。


作者: 冰冰潔潔    時間: 2018-8-15 23:33
很好,簡單的就好
作者: 986283407    時間: 2018-8-17 09:44
很好的資料

作者: adsl989    時間: 2018-8-17 13:58
回復看看咯,希望有驚喜
作者: engcyh    時間: 2018-8-18 18:28
謝謝分享,51黑有你更精彩
作者: engcyh    時間: 2018-8-18 18:29
謝謝分享,支持原創
作者: 逗比不逗_    時間: 2018-8-23 21:25
不錯的資料
作者: arther    時間: 2018-8-24 22:03
謝謝樓主
作者: smalldi    時間: 2018-8-25 00:26
感謝分享
作者: 莫林    時間: 2018-8-25 06:49
菜鳥來學習一下
作者: szzxl10    時間: 2018-8-26 12:38
不錯,學習了
作者: kodak0818    時間: 2018-8-26 12:57
感謝樓主分享,學習了e
作者: kodak0818    時間: 2018-8-26 17:51
樓主,感謝分享,順便問一下,怎么鑒定oled12864是不是壞的,我燒你的hex,oled不顯示啊
作者: 凌凈清河    時間: 2018-8-27 09:25
kodak0818 發表于 2018-8-26 17:51
樓主,感謝分享,順便問一下,怎么鑒定oled12864是不是壞的,我燒你的hex,oled不顯示啊

確定連線都是按照程序中位定義連接的么?OLED的初始化操作正確執行了么?這兩步完成程序應該會有顯示了。OLED對延時要求不是很高呀。和DHT相關的部分倒是要改一下精準延時函數。
作者: 凌凈清河    時間: 2018-8-27 09:27
kodak0818 發表于 2018-8-26 17:51
樓主,感謝分享,順便問一下,怎么鑒定oled12864是不是壞的,我燒你的hex,oled不顯示啊

如果不是按照程序中的引腳定義連線的,要改一下OLED_Hygrothermograph.h中的串行數據/時鐘的定義,應該是沒有改吧?
作者: 非一般速度    時間: 2018-8-27 09:34
學習學習,謝樓主分享
作者: tsf8587710    時間: 2018-8-27 18:43
學習學習,謝樓主分享
作者: kodak0818    時間: 2018-8-27 22:24
twelveboy 發表于 2018-8-15 21:58
樓主,我仿制了一個,我想把數字的字體加大到16*32,程序怎么改,我試了多次,提示void OLED_Set_Pos(unsig ...

請問你這個 溫度計 還有水滴 是用什么軟件取模的?
作者: kodak0818    時間: 2018-8-27 22:25
凌凈清河 發表于 2018-8-27 09:27
如果不是按照程序中的引腳定義連線的,要改一下OLED_Hygrothermograph.h中的串行數據/時鐘的定義,應該是 ...

線序是對的,燒了好多hex 都沒有反應,自己也寫了一些全屏顯示的代碼,沒有反應,估計屏幕是壞的。放棄了,再買一個
作者: 股海沖浪2006    時間: 2018-8-28 06:45
學習ing
作者: pk可樂    時間: 2018-8-28 15:55
謝謝,想看看12864與單片機的鏈接
作者: pk可樂    時間: 2018-8-28 15:56
謝謝,想學習一下12864與單片機的鏈接
作者: 小白來報到    時間: 2018-8-31 10:44
謝謝分享

作者: 陌念惜年!    時間: 2018-9-4 22:19
新手,想來學習學習
作者: mengchen12    時間: 2018-9-5 04:41
謝謝分享
作者: 凌凈清河    時間: 2018-9-5 12:27
twelveboy 發表于 2018-8-15 21:58
樓主,我仿制了一個,我想把數字的字體加大到16*32,程序怎么改,我試了多次,提示void OLED_Set_Pos(unsig ...

不好意思,之前瀏覽回復的時候竟然沒有注意到你的問題。但是我并沒能想清楚你的問題出現在哪里,OLED_Set_Pos的作用類似于打印機將打印頭移動到要寫入數據的位置處。本不應該出現錯誤的,推測是你的上級調用函數出了問題?
增大字號的話,先是擴充取模數組,對應著取模的方式重寫顯示函數,要考慮到每一個字符占的位置大小,每一個字節的顯示順序等等,當需要開始新一行(8個縱點)的時候就要重新設置Pos,如此分行多次寫完一個字模。
作者: 凌凈清河    時間: 2018-9-5 12:31
kodak0818 發表于 2018-8-27 22:25
線序是對的,燒了好多hex 都沒有反應,自己也寫了一些全屏顯示的代碼,沒有反應,估計屏幕是壞的。放棄了 ...

OLED12864在淘寶上最便宜有12塊錢包郵的,小貓芯城價格15元,15元也是大多數“便宜”賣家給出的價格,至于20塊左右或者更高價格的,直接pass吧,我買過幾個便宜的,用著也沒什么問題。
作者: 凌凈清河    時間: 2018-9-5 12:33
pk可樂 發表于 2018-8-28 15:56
謝謝,想學習一下12864與單片機的鏈接

連接...IIC的話除了P0要加上拉之外,SDA和SCL隨便連接哪一個IO都可以啊~
作者: 100860903    時間: 2018-9-5 14:35
good,good
作者: 呂志盛    時間: 2018-9-9 17:13
寫得好
作者: 蘭大明    時間: 2018-9-10 08:38
下載學習一下
作者: a704625084    時間: 2018-9-10 15:31
謝謝分享
作者: 揀盡寒枝不肯棲    時間: 2018-9-10 17:16
厲害
作者: 葉活    時間: 2018-9-12 08:28
制作難度大嗎
作者: 凌凈清河    時間: 2018-9-12 10:04
葉活 發表于 2018-9-12 08:28
制作難度大嗎

不大,如果是用我的程序直接燒錄的話,難度就是5個IO和器件的連接,因為屏幕是IIC的,所以連接起來較SPI的更方便。
制作成本的話,按主要的算,屏幕13+洞洞板0.8元+DTH11 5.7+microUSB小板0.8+STC15F104W 1.8+雜項,大約不到25元。
作者: wkings    時間: 2018-9-22 19:31
look look
作者: 梁光陽    時間: 2018-9-23 18:53
看看,一起學習,東西非常好
作者: hasi    時間: 2018-9-25 22:56
很好的例子,值得研究學習
作者: jijkf    時間: 2018-10-1 11:05
可以發給我嗎
作者: jijkf    時間: 2018-10-1 11:40
這是什么型號oled
作者: 凌凈清河    時間: 2018-10-1 22:15
jijkf 發表于 2018-10-1 11:40
這是什么型號oled

OLED12864(IIC接口)
作者: LXJ50    時間: 2018-10-2 00:21
學習學習。仿制一個!
作者: ttgogogo    時間: 2018-10-2 16:20
想看

作者: hbnpmw    時間: 2018-10-2 23:22
謝謝分享  回復看看咯,希望有驚喜
作者: jijkf    時間: 2018-10-6 20:31
怎樣換成中文的?
作者: 凌凈清河    時間: 2018-10-6 22:31
jijkf 發表于 2018-10-6 20:31
怎樣換成中文的?

中文顯示就要換一下顯示驅動函數了,具體的要根據取字模的方式而定,而且這個單片機的話,存不下太多中文字模,一共只有4k的空間。
作者: middfat    時間: 2018-10-7 18:08
謝謝大神
作者: cokesu    時間: 2018-10-7 22:41
學習學習
作者: jamyg    時間: 2018-10-13 11:13
學習學習
作者: 小黑屋@    時間: 2018-10-13 13:09
資料值得看看。

作者: Jack589    時間: 2018-10-13 23:51
謝謝分享
作者: Jack589    時間: 2018-10-14 00:02
學習到了
作者: 文鳳軒    時間: 2018-10-14 11:11
謝謝分享!
作者: xiong731    時間: 2018-10-14 19:46
不錯,學習了!
作者: 潘香亦鴻    時間: 2018-10-15 11:27
不錯,學習一下。

作者: jijkf    時間: 2018-10-15 19:31
凌凈清河 發表于 2018-9-5 12:27
不好意思,之前瀏覽回復的時候竟然沒有注意到你的問題。但是我并沒能想清楚你的問題出現在哪里,OLED_Set ...

有沒有用sm32做的
作者: compione星星    時間: 2018-10-15 20:49
很好,很強大,感謝
作者: 凌凈清河    時間: 2018-10-16 10:22
jijkf 發表于 2018-10-15 19:31
有沒有用sm32做的

不好意思,沒有使用32,51的資源足夠了。
作者: wqs123456    時間: 2018-10-16 17:27
回復看看咯,希望有驚喜
作者: ab1801574    時間: 2018-10-17 23:34
學習一下,謝謝樓主分享
作者: hu2018y    時間: 2018-10-18 00:18
出個套件嗎?
作者: starheaven    時間: 2018-10-22 11:09
學習了
作者: xiaoxiaoniao    時間: 2018-10-22 13:01
我雖然不會,但是感覺你挺牛。
作者: snchj    時間: 2018-10-22 22:13

學習,給看看
作者: szdgsz    時間: 2018-10-24 17:48
謝謝分享
作者: kkfy888    時間: 2018-10-25 01:24
不錯,下個測試下!
作者: zhao1997@    時間: 2018-10-25 13:58
很好,看圖片不錯啊
作者: WFX777888    時間: 2018-10-26 22:33
謝謝分享資料
作者: 719500    時間: 2018-10-27 00:04
謝謝分享
作者: WseriesY    時間: 2018-10-27 00:21
Thank you for your sharing!
作者: qhdyang    時間: 2018-10-27 00:58
高手啊,看了后學到知識了
作者: sd19941129    時間: 2018-10-27 12:43
很期待,多學習學習
作者: ╰つ懷念_ヽ那回    時間: 2018-11-4 19:36
來看看                 
作者: FLY581    時間: 2018-11-5 10:17
謝謝分享
作者: kjl    時間: 2018-11-24 16:08
贊贊贊贊贊贊





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜三级在线观看 | 精品久久国产老人久久综合 | 91精品久久久久久久久中文字幕 | 国产精品中文字幕在线 | 成人伊人网 | 久久久成人动漫 | 精品福利一区二区三区 | 国产精品视频久久久 | 久久91精品久久久久久9鸭 | 日韩第一区 | 精品欧美乱码久久久久久 | 亚洲日日夜夜 | 91久久久久久久久久久 | 在线观看av网站 | 久久久久亚洲精品国产 | 久久久久国产精品午夜一区 | 国产午夜精品视频 | 亚洲啊v在线 | 国产日韩视频 | 欧产日产国产精品99 | 久国久产久精永久网页 | 不用播放器看的av | av入口 | 国产成人99久久亚洲综合精品 | 麻豆av片| av黄色在线观看 | 神马九九| 国产在线视频一区二区 | 99re在线免费视频 | 二区在线视频 | 福利视频二区 | 国产精品毛片久久久久久 | 天天躁日日躁狠狠躁2018小说 | 91视频在线观看免费 | 亚洲精品在线看 | 日韩中文字幕网 | 日韩网站在线观看 | 中文字幕第二区 | 99精品视频一区二区三区 | 91精品久久久 | 久久国产麻豆 |