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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

剛買來的stc12c5a60s2單片機開發(fā)板+1602顯示dht11,1602上為什么不顯示數(shù)據(jù)呢

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:291819 發(fā)表于 2018-4-25 22:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. #include<stdlib.h>
  3. #include <ctype.h>
  4. #define uint unsigned int

  5. #define uchar unsigned char

  6. uchar DHT11[5],RTflag=0;

  7. uchar FLAG; //超時標(biāo)志位

  8. uchar a;

  9. sbit dat=P1^0;         //DHT11數(shù)據(jù)引腳

  10. sbit RS=P2^5;         //1602引腳

  11. sbit RW=P2^6;         //1602引腳

  12. sbit EN=P2^7;          //1602引腳

  13. uchar table[5];

  14. uint wd,sd;

  15. void Delay_t(uint j)         //延時函數(shù)

  16. { uchar i;

  17. for(;j>0;j--)

  18. {

  19. for(i=0;i<27;i++);

  20. }

  21. }

  22. void Delay_10us(void) //10us延時函數(shù)

  23. {

  24. uchar i;

  25. i--;

  26. i--;

  27. i--;

  28. i--;

  29. i--;

  30. i--;

  31. }

  32. void delay(uint z)//1毫秒延時函數(shù)

  33. {

  34. uint x,y;

  35. for(x=z;x>0;x--)

  36. for(y=110;y>0;y--);

  37. }

  38. void lcd_write_com(uchar com) //1602寫指令

  39. {

  40. RS=0;

  41. //RW=0;
  42. delay(1);
  43. EN=1;

  44. P0=com;

  45. delay(1);

  46. EN=0;

  47. }

  48. void lcd_init()        //1602初始化

  49. {
  50. EN=0;
  51. RW=0;
  52. lcd_write_com(0x38);

  53. delay(1);

  54. lcd_write_com(0x08);

  55. delay(1);

  56. lcd_write_com(0x01);//1602清屏指令

  57. delay(1);

  58. lcd_write_com(0x06);

  59. delay(1);

  60. lcd_write_com(0x0C);

  61. delay(1);

  62. }

  63. void lcd_write_data(uchar date)//1602寫數(shù)據(jù)

  64. {

  65. RS=1;

  66. //RW=0;

  67. EN=1;

  68. P0=date;

  69. delay(1);

  70. EN=0;

  71. }

  72. void write_str(uchar x,uchar y,uchar *s)//在任意地址寫符號字母或數(shù)字

  73. {

  74. if(y==0)

  75. lcd_write_com(0x80+x);

  76. else

  77. lcd_write_com(0xc0+x);

  78. while(*s)

  79. {

  80. lcd_write_data(*s);

  81. s++;

  82. }

  83. }

  84. void write_shu(uchar x,uchar y,uchar num)//數(shù)據(jù)顯示函數(shù)

  85. {

  86. uchar s,g;

  87. if(y==0)

  88. lcd_write_com(0x80+x);

  89. else

  90. lcd_write_com(0xc0+x);

  91. s=num/10;// 數(shù)據(jù)分離顯示

  92. lcd_write_data(0x30+s);

  93. g=num%10;//數(shù)據(jù)分離顯示

  94. lcd_write_data(0x30+g);

  95. }

  96. uchar write_byte1() //讀一個字節(jié)

  97. {

  98. uchar i,comdata,temp1;

  99. for(i=0;i<8;i++)

  100. {

  101. FLAG=2;

  102. while((!dat)&&FLAG++);//判斷數(shù)據(jù)位是0還是1

  103. Delay_10us();

  104. Delay_10us();

  105. Delay_10us();

  106. temp1=0;

  107. if(dat)temp1=1;        // 如果高電平高過預(yù)定0高電平值則數(shù)據(jù)位為 1

  108. FLAG=2;

  109. while((dat)&&FLAG++);//flag先與后加1 如果dat一直為1 uchar型變量 flag 溢出變?yōu)? 再自加1

  110. if(FLAG==1)break;        //超時則跳出for循環(huán)

  111. comdata<<=1;//左移一位 高位在前 低位在后

  112. comdata|=temp1;

  113. }

  114. return (comdata);

  115. }

  116. void DHT11_5() //讀5個字節(jié)數(shù)據(jù) 兩個字節(jié)為溫度數(shù)據(jù) 兩個字節(jié)為濕度數(shù)據(jù) 最后一個字節(jié)為校驗

  117. {

  118.    int p;
  119.    char o;
  120. uchar i,temp;

  121. //主機拉低18ms

  122. dat=0;

  123. Delay_t(180);

  124. dat=1;

  125. //總線由上拉電阻拉高 主機延時20us

  126. Delay_10us();

  127. Delay_10us();

  128. Delay_10us();

  129. Delay_10us();

  130. //主機設(shè)為輸入 判斷從機響應(yīng)信號

  131. dat=1;

  132. //判斷從機是否有低電平響應(yīng)信號 如不響應(yīng)則跳出,響應(yīng)則向下運行

  133. if(!dat)        //T !

  134. {

  135. FLAG=2;        //超時標(biāo)志位

  136. while((!dat)&&FLAG++);//判斷從機是否發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束

  137. FLAG=2;

  138. while(

  139. (dat)&&FLAG++); //判斷從機拉高80us是否結(jié)束

  140. for(i=0;i<5;i++)//數(shù)據(jù)接收狀態(tài)

  141. {

  142. DHT11[i]=write_byte1();

  143. }

  144. dat=1;        //釋放數(shù)據(jù)總線 為下一次讀取做好準(zhǔn)備

  145. temp=(DHT11[0]+DHT11[1]+DHT11[2]+DHT11[3]);

  146. if(temp==DHT11[4])        //數(shù)據(jù)校驗

  147. {

  148. RTflag=1;

  149. }
  150.   p=DHT11[0];
  151.   o=toascii(p);
  152. if(RTflag==1) //如果RTflag=1 說明讀取到得數(shù)據(jù)正確

  153. {

  154. RTflag=0;

  155. //        tm[0]=DATARHT[0]/10;

  156. //        tm[1]=DATARHT[0]%10;

  157. //        tm[2]=DATARHT[1]/10; //濕度

  158. //        tm[3]=DATARHT[2]/10;

  159. //        tm[4]=DATARHT[2]%10;

  160. //        tm[5]=DATARHT[3]/10; //溫度

  161. write_str(0,0,"shidu: ");//第一行顯示濕度

  162. write_shu(12,0,o);

  163. write_str(14,0,"RH");

  164. write_str(0,1,"wendu: ");//第二行為顯示溫度

  165. write_shu(12,1,DHT11[2]);

  166. write_str(14,1,"^C");

  167. }

  168. }

  169. }

  170. void main()

  171. {

  172. lcd_init(); //1602初始化

  173. delay(1000); //等待DHT11溫濕度傳感器數(shù)據(jù)穩(wěn)定 開始激活DHT11

  174. while(1)//循環(huán)讀取 并更新數(shù)據(jù)顯示

  175. {

  176. delay(1000);//等待DHT11溫濕度傳感器數(shù)據(jù)穩(wěn)定 開始激活DHT11

  177. write_byte1();//讀一個字節(jié)

  178. DHT11_5(); //讀數(shù)據(jù)

  179. delay(1000); //延時等待

  180. }

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

使用道具 舉報

沙發(fā)
ID:291819 發(fā)表于 2018-4-25 22:25 | 只看該作者
程序是從51單片機移植過來的,把數(shù)據(jù)引腳改過了
回復(fù)

使用道具 舉報

板凳
ID:291819 發(fā)表于 2018-4-25 22:26 | 只看該作者
本帖最后由 電子勿擾 于 2018-4-25 22:29 編輯

剛買來的板子,還不太會用,請問51單片機與stc12c5a60s2單片機有什么區(qū)別嗎?倆者程序兼容嗎?
回復(fù)

使用道具 舉報

地板
ID:213173 發(fā)表于 2018-4-26 12:14 | 只看該作者
電子勿擾 發(fā)表于 2018-4-25 22:26
剛買來的板子,還不太會用,請問51單片機與stc12c5a60s2單片機有什么區(qū)別嗎?倆者程序兼容嗎?

51單片機與stc12c5a60s2單片機主要差別是后者是1T單片機并內(nèi)置了一些外圍設(shè)備,速度快許多,1602不顯示、dht11讀不了可能是你沒有把延時函數(shù)修改,從而導(dǎo)致驅(qū)動程序的時序錯誤。
回復(fù)

使用道具 舉報

5#
ID:316332 發(fā)表于 2018-4-26 17:27 | 只看該作者
程序沒有問題,就調(diào)1602亮度
回復(fù)

使用道具 舉報

6#
ID:291819 發(fā)表于 2018-4-26 19:30 | 只看該作者
wulin 發(fā)表于 2018-4-26 12:14
51單片機與stc12c5a60s2單片機主要差別是后者是1T單片機并內(nèi)置了一些外圍設(shè)備,速度快許多,1602不顯示、 ...

我把延時加長一點
回復(fù)

使用道具 舉報

7#
ID:291819 發(fā)表于 2018-4-26 19:32 | 只看該作者
123456m 發(fā)表于 2018-4-26 17:27
程序沒有問題,就調(diào)1602亮度

我考慮到亮度,調(diào)過亮度還是不顯示數(shù)據(jù)
回復(fù)

使用道具 舉報

8#
ID:291819 發(fā)表于 2018-4-26 19:33 | 只看該作者
wulin 發(fā)表于 2018-4-26 12:14
51單片機與stc12c5a60s2單片機主要差別是后者是1T單片機并內(nèi)置了一些外圍設(shè)備,速度快許多,1602不顯示、 ...

我把延時加長一點試一試
回復(fù)

使用道具 舉報

9#
ID:319953 發(fā)表于 2018-5-10 09:57 | 只看該作者
電子勿擾 發(fā)表于 2018-4-26 19:33
我把延時加長一點試一試

我也是這個問題,我想請教一下應(yīng)該怎么修改呢。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区中文字幕 | 国产成人精品一区二区三区在线 | 久久久久久久av麻豆果冻 | 一区二区国产精品 | 日韩欧美日韩在线 | www.日韩高清 | 99久久精品免费看国产小宝寻花 | 日韩成人影院在线观看 | av电影一区二区 | 亚洲精品国产第一综合99久久 | 亚洲一区视频在线 | 91在线成人 | 天堂久久久久久久 | 欧美一区免费 | 欧美黄色精品 | 久青草影院 | 91精品久久久久久综合五月天 | 日韩欧美手机在线 | 亚洲欧美日韩久久久 | 精品国产一区二区久久 | 欧美一区二区三区在线观看 | 精品国产欧美一区二区三区成人 | 亚洲成人午夜电影 | 久久久区 | 久久精品国产久精国产 | 最新国产精品 | 国产视频中文字幕 | 久久1区| 亚洲超碰在线观看 | 成年人免费网站 | 99热这里只有精品8 激情毛片 | 亚洲国产成人av好男人在线观看 | 国产一区二区在线视频 | 久久福利电影 | 国产亚洲精品精品国产亚洲综合 | 欧美一级免费黄色片 | 久久精品久久久久久 | 欧美成人一区二区三区 | 全免一级毛片 | 成年人在线观看视频 | 国产精品久久精品 |