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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機+pt100熱敏電阻的體溫計Proteus仿真程序

  [復制鏈接]
跳轉到指定樓層
樓主
采用熱敏電阻pt100設計溫度傳感電路,溫度傳感電路通過放大電路進行放大后加載到A/D轉換模塊(ADC0804),以AT89C51單片機為主控制端,外接晶振電路滿足各模塊時序,最終通過7段數碼管進行溫度顯示

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define      ad0_7      P1       //AD數據口

  6. sbit         cs=P2^4;      //片選信號,低電平有效,控制芯片的啟動和結果讀取

  7. sbit         rd=P2^7;        //讀數據控制,低電平有效

  8. sbit         wr=P2^6;         //AD啟動控制,上升沿有效

  9. sbit         intr=P2^5;       //AD轉換完成輸出低電平

  10. uchar i;
  11. uchar led[11]={     0x3F,  //"0"
  12.                 0x06,  //"1"
  13.                 0x5B,  //"2"
  14.                 0x4F,  //"3"
  15.                 0x66,  //"4"
  16.                 0x6D,  //"5"
  17.                 0x7D,  //"6"
  18.                 0x07,  //"7"
  19.                 0x7F,  //"8"
  20.                 0x6F,  //"9"
  21.                                 0x40,   //"-"
  22.                                 };
  23.         uchar dat_AD[4]={0};
  24.   
  25. //啟動AD轉換子程序//////////////////
  26. void start_ad(void)
  27. {       cs=0;                 //允許AD
  28.         wr=0;
  29.         _nop_();
  30.          wr=1;                //WR由低變高時啟動AD轉換
  31.         
  32.         while(intr);          //等待轉換完成,低電平有效
  33.         cs=1;                 //停止AD轉換
  34. }////////////////////
  35. read_ad()
  36. {       uint ad_data;
  37.         ad0_7=0xff;
  38.         cs=0;                 //允許讀       
  39.         rd=0;                 //讀取轉換數據結果
  40.         _nop_();
  41.         ad_data=ad0_7;         //把數據存到AD——data中
  42.         rd=1;cs=1;            //停止讀取AD
  43.         return(ad_data);
  44. }
  45. // 數據處理函數
  46. //實際測量當0度時,AD數據為133,所以數據處理時判斷AD數據和133的大小來識別正負溫度。
  47. //由于ADC芯片精度不夠,所以測量時有誤差,8位AD的分辨率為19.5mV,約為20mV,
  48. //放大電路輸出的電壓,溫度每變化一度,電壓變化只有10mV左右,所以測量有誤差,
  49. //以下溫度和AD數據的計算公式為實測數據后線性擬合得到的,實際線性擬合得到公式為:y=0.503x+133.63.
  50. //因為AD數據為0-255的整數,所以公式簡化為以下計算方式
  51. void data_shout(uint ad_data)
  52. {      
  53.          float  temp;
  54.          uint T;

  55.                 if(ad_data<79)
  56.                {
  57.                    temp=614.422-7.811*ad_data;
  58.                  T=(uint)temp;
  59.                  dat_AD[0]=10;
  60.                }                            //負溫度   dat_AD[0]中為溫度符號數據
  61.                 else if(ad_data<=204)
  62.                {
  63.                    temp=7.990*ad_data-628.491;
  64.                  T=(uint)temp;
  65.                  dat_AD[0]=T/1000;
  66.                }                             //正溫度

  67.                 else if(ad_data>204)
  68.                {
  69.                  temp=8.124*ad_data-655.742;
  70.                  T=(uint)temp;
  71.                  dat_AD[0]=T/1000;
  72.                }                                        //ad_data=T;
  73.                
  74.                dat_AD[1]=T%1000/100;              //溫度值的十位
  75.          dat_AD[2]=T%100/10;          //2溫度值的個位
  76.          dat_AD[3]=T%10;          //溫度值的小數位

  77. }
  78. //顯示函數
  79. void disp(){

  80.         switch(i){
  81.                 case 0: P0=0xfe;P3=led[dat_AD[0]];i++;break;         //顯示符號位
  82.                 case 1: P0=0xfd;P3=led[dat_AD[1]];i++;break;
  83.                 case 2: P0=0xfb;P3=led[dat_AD[2]]|0x80;i++;break;
  84.                 case 3: P0=0xf7;P3=led[dat_AD[3]];i=0;break;

  85.         }
  86. }

  87. //定時器初始化
  88. //用作數碼管顯示的刷新
  89. void t0init(){
  90.         TMOD=0x01;
  91.         TH0=(65535-2000)/256;           //定時20ms時間
  92.         TL0=(65535-2000)%256;
  93.         EA=1;
  94.         ET0=1;
  95.         TR0=1;
  96. }
  97. //定時器中斷函數,在中斷中刷新數碼管顯示
  98. void Time0(  ) interrupt 1{
  99.         TH0=(65535-2000)/256;
  100.         TL0=(65535-2000)%256;
  101.         disp();
  102. }

  103. //主函數
  104. void main(void){
  105.          t0init();          //初始化
  106.      while(1){
  107.         start_ad();             //開始AD
  108.         data_shout(read_ad());           //數據處理
  109.      }
  110. }
復制代碼

所有資料51hei提供下載:
pt100熱敏電阻的體溫計.zip (48.38 KB, 下載次數: 305)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:896842 發表于 2021-3-26 15:51 | 只看該作者
小白,想問溫度范圍是怎么定的,感謝
回復

使用道具 舉報

板凳
ID:679189 發表于 2021-3-29 12:57 | 只看該作者
keliandexiaowa 發表于 2021-3-26 15:51
小白,想問溫度范圍是怎么定的,感謝

根據pt100熱敏電阻的溫度特性
回復

使用道具 舉報

地板
ID:896842 發表于 2021-3-31 20:42 | 只看該作者
樓主可以告訴我怎么改變溫度大小嗎,非常感謝
回復

使用道具 舉報

5#
ID:46065 發表于 2021-3-31 21:40 | 只看該作者
這個要用阻值對照表的,才精確
回復

使用道具 舉報

6#
ID:879351 發表于 2022-5-23 18:33 | 只看該作者
阻值對照表的應該怎么看啊?
回復

使用道具 舉報

7#
ID:228452 發表于 2022-5-23 22:28 | 只看該作者
find data sheet for used PT100..
回復

使用道具 舉報

8#
ID:1031438 發表于 2022-6-15 00:24 | 只看該作者
這個有沒有報警系統
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩国产精品一区 | 中文字幕国产精品 | 国产黄色麻豆视频 | 亚洲成av| 日本久久综合网 | 欧美国产一区二区 | 欧美一区二区在线观看 | 欧美8一10sex性hd | 先锋资源在线 | 国产男女视频 | 91福利网 | 亚洲国产精品一区二区第一页 | 亚洲精品免费视频 | 国产免费一区二区 | 毛片综合 | 激情国产视频 | 黄色免费av | 久久久av一区 | 亚洲福利在线观看 | 午夜影院操 | 午夜性色a√在线视频观看9 | 成人免费视频观看 | 久久久综合网 | 在线观看亚洲专区 | 久草在线在线精品观看 | 天天草天天干天天 | 美女福利网站 | 日韩亚洲一区二区 | 欧美激情在线精品一区二区三区 | 国产一区在线免费观看 | 伊人操| 欧美在线一区二区三区 | 波多野结衣一区二区三区在线观看 | 欧美一区二区三区久久精品 | 久久com | 国产精品美女久久久久aⅴ国产馆 | 久色网 | 日本久久www成人免 成人久久久久 | 91成人精品 | 欧美精品福利 | 久久人人网 |