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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1799|回復: 1
打印 上一主題 下一主題
收起左側

51單片機定時控制ds18b20溫度程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:477589 發(fā)表于 2019-2-18 14:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
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)



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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-2-18 15:46 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美在线观看 | 夜久久 | 在线观看www| 91在线导航| 综合久久av | 午夜国产羞羞视频免费网站 | 国产超碰人人爽人人做人人爱 | 黑人粗黑大躁护士 | 免费看国产精品视频 | 玖玖国产 | 美美女高清毛片视频免费观看 | 国内自拍偷拍 | 国产成人午夜精品影院游乐网 | 99精品在线观看 | 丁香色婷婷 | 久久天天 | 精品乱码一区二区三四区 | 久草新在线 | 国产一区二区三区在线看 | 亚洲综合无码一区二区 | 亚洲视频在线一区 | 国产精品区一区二区三 | 国产激情一区二区三区 | 亚洲成人自拍 | 91原创视频在线观看 | 欧美中文字幕一区 | 国产免费色 | www.色婷婷 | 久久亚洲春色中文字幕久久久 | 亚洲精品二区 | 久久九九99| 国产偷录视频叫床高潮对白 | 欧美乱淫视频 | 欧美日韩高清 | 中文字幕精品一区二区三区在线 | 国产不卡视频 | 日韩中文字幕第一页 | 一级日韩 | 亚洲欧美精品国产一级在线 | 男女羞羞视频免费 | 中日字幕大片在线播放 |