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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機DS18B20溫度控制系統 proteus仿真 代碼

  [復制鏈接]
跳轉到指定樓層
樓主
溫度控制系統,DS18B20,仿真,源程序


單片機源程序代碼如下:
  1. #include <at89x51.h>//用AT89C51時就用這個頭文件
  2. //#include <reg52.h>//用華邦W78E58B時必須用這個頭文件
  3. #include <absacc.h>
  4. #include <ctype.h>
  5. #include <math.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <DS18B20.h>
  9. #include "LCD1602.h"                        ////液晶顯示頭文件
  10. //sbit DQ = P3^4;                                        //定義DQ引腳為P3.4
  11. unsigned char t[2],*pt;                                //用來存放溫度值,測溫程序就是通過這個數組與主函數通信的
  12. unsigned char  TempBuffer1[9]={0x2b,0x31,0x32,0x32,0x2e,0x30,0x30,0x43,'\0'};
  13.                                                                 //顯示實時溫度,上電時顯示+125.00C
  14. unsigned char  TempBuffer0[17]={0x54,0x48,0x3a,0x2b,0x31,0x32,0x35,0x20,
  15.                                                                 0x54,0x4c,0x3a,0x2b,0x31,0x32,0x34,0x43,'\0'};
  16.                                                                 //顯示溫度上下限,上電時顯示TH:+125 TL:+124C                                                       
  17. unsigned char code dotcode[4]={0,25,50,75};
  18. /***因顯示分辨率為0.25,但小數運算比較麻煩,故采用查表的方法*******
  19. 再將表值分離出十位和個位后送到十分位和百分位********************/


  20. void covert0( unsigned char TH, unsigned char TL)        //將溫度上下限轉換為LCD顯示的數據
  21. {
  22.    if(TH>0x7F)                    //判斷正負,如果為負溫,將其轉化為其絕對值
  23.    {
  24.     TempBuffer0[3]=0x2d;             //0x2d為"-"的ASCII碼
  25.         TH=~TH;
  26.         TH++;
  27.    }
  28.    else TempBuffer0[3]=0x2b;        //0x2B為"+"的ASCII碼

  29.    if(TL>0x7f)
  30.    {
  31.    TempBuffer0[11]=0x2d;             //0x2d為"-"的ASCII碼
  32.    TL=~TL+1;
  33.    }
  34.    else TempBuffer0[11]=0x2b;        //0x2B為"+"的ASCII碼

  35.   TempBuffer0[4]=TH/100+0x30;                             //分離出TH的百十個位
  36.   if( TempBuffer0[4]==0x30) TempBuffer0[4]=0xfe; //百位數消隱
  37.   TempBuffer0[5]=(TH%100)/10+0x30;                                //分離出十位
  38.   TempBuffer0[6]=(TH%100)%10+0x30;                                 //分離出個位
  39.   TempBuffer0[12]=TL/100+0x30;                             //分離出TL的百十個位
  40.   if( TempBuffer0[12]==0x30) TempBuffer0[12]=0xfe; //百位數消隱
  41.   TempBuffer0[13]=(TL%100)/10+0x30;                                //分離出十位
  42.   TempBuffer0[14]=(TL%100)%10+0x30;                                 //分離出個位
  43. }


  44. void covert1(void)        //將溫度轉換為LCD顯示的數據
  45. {
  46.    unsigned char x=0x00,y=0x00;
  47.    t[0]=*pt;
  48.    pt++;
  49.    t[1]=*pt;
  50.    if(t[1]>0x07)                    //判斷正負溫度
  51.    {
  52.     TempBuffer1[0]=0x2d;             //0x2d為"-"的ASCII碼
  53.         t[1]=~t[1];                         /*下面幾句把負數的補碼*/
  54.         t[0]=~t[0];                  /* 換算成絕對值*********/
  55.         x=t[0]+1;                                 /***********************/
  56.         t[0]=x;                                         /***********************/
  57.         if(x>255)                /**********************/
  58.         t[1]++;                                 /*********************/
  59.    }
  60.    else TempBuffer1[0]=0x2b;        //0xfe為變"+"的ASCII碼
  61.   t[1]<<=4;                //將高字節左移4位
  62.   t[1]=t[1]&0x70;                //取出高字節的3個有效數字位
  63.   x=t[0];                                        //將t[0]暫存到X,因為取小數部分還要用到它
  64.   x>>=4;                                        //右移4位
  65.   x=x&0x0f;                                        //和前面兩句就是取出t[0]的高四位       
  66.   t[1]=t[1]|x;                        //將高低字節的有效值的整數部分拼成一個字節
  67.   TempBuffer1[1]=t[1]/100+0x30;                             //+0x30 為變 0~9 ASCII碼
  68.    if( TempBuffer1[1]==0x30) TempBuffer1[1]=0xfe; //百位數消隱
  69.   TempBuffer1[2]=(t[1]%100)/10+0x30;                                //分離出十位
  70.   TempBuffer1[3]=(t[1]%100)%10+0x30;                                 //分離出個位
  71.   t[0]=t[0]&0x0c;                                                        //取有效的兩位小數
  72.   t[0]>>=2;                                                                        //左移兩位,以便查表
  73.   x=t[0];                                                                               
  74.   y=dotcode[x];                                                                        //查表換算成實際的小數
  75.   TempBuffer1[5]=y/10+0x30;                                                        //分離出十分位
  76.   TempBuffer1[6]=y%10+0x30;                                                        //分離出百分位
  77. }                       

  78. void delay(unsigned char i)
  79. {
  80.         while(i--);
  81. }

  82. main()
  83. {
  84. unsigned char TH=110,TL=-20;                                            //下一步擴展時可能通過這兩個變量,調節上下限
  85.                                                                                 //測溫函數返回這個數組的頭地址
  86. while(1)
  87. {       
  88.     pt=ReadTemperature(TH,TL,0x3f);                 //上限溫度-22,下限-24,分辨率10位,也就是0.25C
  89.                                                                                  //讀取溫度,溫度值存放在一個兩個字節的數組中,
  90. ……………………

  91. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
DS18B20溫度控制電路(proteus仿真電路 C源程序).zip (406 KB, 下載次數: 802)



評分

參與人數 1黑幣 +5 收起 理由
dingqinhong + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:268470 發表于 2017-12-28 17:56 | 只看該作者
大神可以的
回復

使用道具 舉報

板凳
ID:328948 發表于 2018-5-14 10:08 | 只看該作者
文件1.c中不全啊,是要哪幾個文件啊
回復

使用道具 舉報

地板
ID:330342 發表于 2018-5-15 13:06 | 只看該作者
看看程序
回復

使用道具 舉報

5#
ID:329293 發表于 2018-5-15 15:44 | 只看該作者
感謝分享
回復

使用道具 舉報

6#
ID:331270 發表于 2018-5-16 14:44 | 只看該作者
控制電路怎么實現啊    恒溫控制電路
回復

使用道具 舉報

7#
ID:268143 發表于 2018-6-4 17:32 | 只看該作者
感想分享
回復

使用道具 舉報

8#
ID:335758 發表于 2018-6-5 15:13 | 只看該作者
請問一下為什么仿真的代碼看不到,不知道是不是我的proteus的問題
回復

使用道具 舉報

9#
ID:345473 發表于 2018-6-6 10:01 | 只看該作者
感謝分享
回復

使用道具 舉報

10#
ID:120108 發表于 2018-6-25 22:14 | 只看該作者
樓主厲害 幫頂
回復

使用道具 舉報

11#
ID:359667 發表于 2018-6-27 08:27 | 只看該作者
感謝樓主,好人一生平安
回復

使用道具 舉報

12#
ID:410721 發表于 2018-10-17 11:38 | 只看該作者

感謝樓主,好人一生平安
回復

使用道具 舉報

13#
ID:417782 發表于 2018-10-30 10:23 | 只看該作者


感謝樓主
回復

使用道具 舉報

14#
ID:66287 發表于 2018-10-30 10:47 | 只看該作者
挺好的程序,謝謝分享!
回復

使用道具 舉報

15#
ID:438815 發表于 2018-12-13 09:07 | 只看該作者
晶振為什么這樣連接
回復

使用道具 舉報

16#
ID:194625 發表于 2018-12-16 20:49 | 只看該作者
不錯的東西,贊一個
回復

使用道具 舉報

17#
ID:380539 發表于 2019-1-3 20:15 | 只看該作者

看看程序
回復

使用道具 舉報

18#
ID:489872 發表于 2019-3-13 13:28 | 只看該作者
不錯 贊一個
回復

使用道具 舉報

19#
ID:519456 發表于 2019-4-24 21:22 | 只看該作者
不錯不錯
回復

使用道具 舉報

20#
ID:547542 發表于 2019-5-26 14:45 | 只看該作者
感謝 感謝
回復

使用道具 舉報

21#
ID:547542 發表于 2019-5-26 14:52 | 只看該作者
感謝 樓主
回復

使用道具 舉報

22#
ID:382874 發表于 2019-5-27 11:07 | 只看該作者
感謝分享
回復

使用道具 舉報

23#
ID:503018 發表于 2019-6-23 16:42 | 只看該作者
非常好
回復

使用道具 舉報

24#
ID:503018 發表于 2019-6-29 22:56 | 只看該作者
很好,,我非常感謝啊
回復

使用道具 舉報

25#
ID:620426 發表于 2019-10-8 11:24 | 只看該作者
不錯,贊一個!
回復

使用道具 舉報

26#
ID:357631 發表于 2019-11-1 15:03 | 只看該作者
感謝樓主,好人一生平安
回復

使用道具 舉報

27#
ID:654133 發表于 2019-12-2 11:27 | 只看該作者
很好
回復

使用道具 舉報

28#
ID:594666 發表于 2020-1-3 18:20 來自觸屏版 | 只看該作者
主函數文件不全,下載后解壓的1.c文件與本貼重復,導致主函數后半部分缺失。請問后續代碼如何得到?2394246663@qq.com我的郵箱,請樓主發一下,不勝感激!
回復

使用道具 舉報

29#
ID:681481 發表于 2020-1-5 12:25 | 只看該作者
謝謝樓主
回復

使用道具 舉報

30#
ID:729938 發表于 2020-4-16 12:27 | 只看該作者
可以成功嗎
回復

使用道具 舉報

31#
ID:747067 發表于 2020-5-8 17:16 | 只看該作者
不錯,真強
回復

使用道具 舉報

32#
ID:747067 發表于 2020-5-8 17:17 | 只看該作者
大神真強啊
回復

使用道具 舉報

33#
ID:758479 發表于 2020-5-22 16:41 | 只看該作者
很有幫助
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区欧美 | 欧美性生交大片免费 | 99视频免费播放 | 中文字幕人成乱码在线观看 | 欧洲精品码一区二区三区免费看 | 久久综合久色欧美综合狠狠 | 亚洲小说图片 | 亚洲国产中文字幕 | 福利视频三区 | 欧美h版 | www.国产精品 | 国产成人高清视频 | 欧美成人精品在线 | 视频一区在线 | 日韩精品一区二区三区视频播放 | 99久久久国产精品 | 伊人精品在线 | 国产精品一区二区三区四区五区 | 欧美成人精品二区三区99精品 | 久久久久国产精品一区二区 | 一区免费观看 | 国产精品色一区二区三区 | 久久tv在线观看 | 7777奇米影视 | 水蜜桃久久夜色精品一区 | 国产永久免费 | 日韩精品一区二区三区中文字幕 | 正在播放国产精品 | 亚洲成人av在线 | 精品入口麻豆88视频 | 日韩精品免费 | 亚洲一区二区三区在线视频 | 国产精品三级 | 一级片在线观看 | 91久久精品国产免费一区 | 欧美在线a | 欧美成人在线网站 | av夜夜操 | 天天综合国产 | 亚洲不卡视频 | 日韩色图视频 |