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

標題: 基于單片機+pt100熱敏電阻的體溫計Proteus仿真程序 [打印本頁]

作者: JN0717    時間: 2020-9-9 19:38
標題: 基于單片機+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)


作者: keliandexiaowa    時間: 2021-3-26 15:51
小白,想問溫度范圍是怎么定的,感謝
作者: JN0717    時間: 2021-3-29 12:57
keliandexiaowa 發表于 2021-3-26 15:51
小白,想問溫度范圍是怎么定的,感謝

根據pt100熱敏電阻的溫度特性
作者: keliandexiaowa    時間: 2021-3-31 20:42
樓主可以告訴我怎么改變溫度大小嗎,非常感謝
作者: wxxl    時間: 2021-3-31 21:40
這個要用阻值對照表的,才精確
作者: Tiramisu.余    時間: 2022-5-23 18:33
阻值對照表的應該怎么看啊?
作者: mick32    時間: 2022-5-23 22:28
find data sheet for used PT100..
作者: yinjia    時間: 2022-6-15 00:24
這個有沒有報警系統




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 在线免费观看a级片 | 欧美日韩在线不卡 | 99精品国产一区二区青青牛奶 | 午夜精品久久久久久久久久久久 | 福利视频二区 | 91亚洲精选 | 精品欧美一区二区三区免费观看 | 国产午夜视频 | 欧美色人 | 日本一区二区三区免费观看 | 秋霞电影一区二区 | 狠狠干五月天 | av片毛片 | 91精品在线播放 | 97伦理电影 | 天天宗合网| 中文天堂在线一区 | 小草久久久久久久久爱六 | 91亚洲国产 | 亚洲激情综合 | 小草久久久久久久久爱六 | 久久机热 | 999热精品| 成人永久免费视频 | 毛片免费观看视频 | 国产精品一区二区三级 | 在线观看中文字幕 | 免费看淫片 | 一区二区三区欧美在线观看 | 成人夜晚看av | 久久综合一区二区 | 特黄毛片视频 | 久久精彩| 婷婷桃色网 | 亚洲一区二区三区四区五区中文 | 玖玖玖在线 | 国产精品一区在线 | 中文字幕精品视频 | 成人免费福利 | 国产这里只有精品 | 国产精品国产成人国产三级 |