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

標題: 51單片機定時控制ds18b20溫度程序 [打印本頁]

作者: Eugene1    時間: 2019-2-18 14:34
標題: 51單片機定時控制ds18b20溫度程序
51單片機定時溫度控制,數碼管顯示。時間和溫度。

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit DQ=P2^2;//溫度采集
  4. sbit latch1=P2^6;//段鎖存
  5. sbit latch2=P2^7;//位鎖存
  6. unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9
  7. unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//點亮數碼管
  8. unsigned char TempData[8];//存儲顯示的度數
  9. bit Readtime;//讀取時間的標志








  10. //定義延時函數delayus,delayms
  11. void delayus(unsigned char t)
  12. {
  13. while(--t);
  14. }
  15. void delayms(unsigned char t)
  16. {
  17. while(t--)
  18. {
  19. delayus(245);
  20. delayus(245);
  21. }
  22. }




  23. //18b20初始化
  24. bit ds18b20()
  25. {
  26. bit test=0;
  27. DQ=1;//復位DQ
  28. delayus(5);//稍作延時
  29. DQ=0;//將DQ拉低
  30. delayus(200);//精確 >480us <960us
  31. delayus(200);
  32. DQ=1;//將DQ拉高
  33. delayus(50);//延時15~60us后,接收脈沖
  34. test=DQ;//判斷是否初始化成功
  35. delayus(25);//延時后返回值
  36. return test;
  37. }




  38. //顯示程序函數
  39. void Display(unsigned char FirstBit,unsigned char Num)
  40. {
  41. static unsigned char i=0;
  42. P0=0;//防止有重影
  43. latch1=1;//段鎖存
  44. latch1=0;


  45. P0=dofly_WeiMa[i+FirstBit];//取位碼
  46. latch2=1;//位鎖存
  47. latch2=0;


  48. P0=TempData[i];//取顯示數據,取斷碼
  49. latch1=1;//段鎖存
  50. latch2=0;


  51. i++;
  52. if(i==Num)
  53. i=0;
  54. }




  55. //讀數據函數
  56. unsigned char Readchar()
  57. {
  58. unsigned char i=0;
  59. unsigned char test=0;
  60. for(i=8;i>0;i--)
  61. {
  62. DQ=0;
  63. test>>=1;//右移一位
  64. DQ=1;
  65. if(DQ)
  66. test|=0x80;
  67. delayus(25);

  68. }
  69. return(test);
  70. }


  71. //寫入數據函數
  72. void Writechar(unsigned char test)
  73. {
  74. unsigned char i=0;
  75. for(i=8;i>0;i--)
  76. {
  77. DQ=0;
  78. DQ=test&0x01;
  79. delayus(25);
  80. DQ=1;
  81. test>>=1;
  82. }
  83. delayus(25);
  84. }


  85. //讀取溫度函數
  86. unsigned int ReadTempture()
  87. {
  88. unsigned char a=0;
  89. unsigned int b=0;
  90. unsigned int t=0;
  91. ds18b20();
  92. Writechar(0xCC);//跳過讀序列號
  93. Writechar(0x44);//啟動溫度轉換
  94. delayms(10);
  95. ds18b20();
  96. Writechar(0xCC);//跳過讀序列號
  97. Writechar(0xBE);//讀取溫度
  98. a=Readchar();//高8位
  99. b=Readchar();//低8位


  100. b<<=8;
  101. t=a+b;
  102. return(t);
  103. }






  104. //主函數main
  105. void main()
  106. {
  107. unsigned int TempH,TempL,Temp;
  108. TMOD |= 0x01;//確定使用哪個定時器,確定工作模式
  109.   EA=1;    //打開中斷允許
  110.   ET0=1;       //定時器T0允許
  111.   TR0=1;  //啟動T0
  112. while(1)
  113. {
  114. if(Readtime==1)
  115. {
  116. Readtime=0;
  117. Temp=ReadTempture();
  118. if(Temp&0x8000)
  119. {
  120. TempData[0]=0x40;//表示為負數
  121. Temp=~Temp;//取反碼
  122. Temp+=1;//取補碼
  123. }
  124. }
  125. else
  126. TempData[0]=0;//表示為正數


  127. TempH=Temp>>4;
  128. TempL=Temp&0x0F;
  129. TempL=TempL*6/10;//小數近似處理


  130. if(TempH/100==0)
  131. TempData[1]=0;//百位
  132. else
  133. TempData[1]=dofly_DuanMa[TempH/100];//十位


  134. if((TempH/100==0)&&((TempH%100)/10==0))//消影
  135. TempData[2]=0;
  136. else
  137. TempData[2]=dofly_DuanMa[(TempH%100)/10];//十位


  138. TempData[3]=dofly_DuanMa[(TempH%100)%10]|0x80;//個位溫度,帶小數點
  139. TempData[4]=dofly_DuanMa[TempL];//小數位溫度
  140. TempData[6]=0x39;//顯示溫度C


  141. }
  142. }




  143. //定時中斷函數
  144. void Timer0_isr() interrupt 1
  145. {
  146. static unsigned int num;
  147. TH0=(65536-2000)/256;
  148. TL0=(65536-2000)%256;

  149. Display(0,8);//調用函數
  150. num++;
  151. if(num==300)
  152.    {
  153.     num=0;
  154.     Readtime=1; //讀標志位1
  155. }
  156. }
復制代碼

所有資料51hei提供下載:
5.rar (30.19 KB, 下載次數: 16)




作者: admin    時間: 2019-2-18 15:46
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲国产精品久久久久婷婷老年 | 国产wwwcom| 99久久精品免费看国产免费软件 | 激情五月婷婷丁香 | 国产精品久久久久久久久免费高清 | 午夜激情视频 | 国产精品久久久久久久久免费相片 | 成人做爰www免费看视频网站 | 天天操伊人 | 中文字幕在线看人 | 自拍偷拍中文字幕 | 4h影视| 精品久久久久久久久久久下田 | 老头搡老女人毛片视频在线看 | 欧美日韩亚洲国产综合 | 国产美女网站 | 久久99网 | 日本视频在线播放 | 日韩1区| 超碰在线国产 | 久久久久www | 久久1区| 亚洲综合字幕 | 亚洲视频一区 | 精品自拍视频 | 6080亚洲精品一区二区 | 色视频一区二区 | 国产精品亚洲成在人线 | 亚洲欧美在线观看 | 午夜不卡福利视频 | 亚洲v日韩v综合v精品v | 女人av| 国产伦一区二区三区四区 | 日韩在线看片 | 久久精品免费 | 国产综合精品 | 国产乡下妇女做爰 | 免费欧美 | 日韩欧美在线视频观看 | 亚洲精品一区中文字幕乱码 | 在线中文字幕视频 |