亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

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

作者: JN0717    時間: 2020-9-9 19:38
標(biāo)題: 基于單片機+pt100熱敏電阻的體溫計Proteus仿真程序
采用熱敏電阻pt100設(shè)計溫度傳感電路,溫度傳感電路通過放大電路進(jìn)行放大后加載到A/D轉(zhuǎn)換模塊(ADC0804),以AT89C51單片機為主控制端,外接晶振電路滿足各模塊時序,最終通過7段數(shù)碼管進(jìn)行溫度顯示

仿真原理圖如下(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數(shù)據(jù)口

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

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

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

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

  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轉(zhuǎn)換子程序//////////////////
  26. void start_ad(void)
  27. {       cs=0;                 //允許AD
  28.         wr=0;
  29.         _nop_();
  30.          wr=1;                //WR由低變高時啟動AD轉(zhuǎn)換
  31.         
  32.         while(intr);          //等待轉(zhuǎn)換完成,低電平有效
  33.         cs=1;                 //停止AD轉(zhuǎn)換
  34. }////////////////////
  35. read_ad()
  36. {       uint ad_data;
  37.         ad0_7=0xff;
  38.         cs=0;                 //允許讀       
  39.         rd=0;                 //讀取轉(zhuǎn)換數(shù)據(jù)結(jié)果
  40.         _nop_();
  41.         ad_data=ad0_7;         //把數(shù)據(jù)存到AD——data中
  42.         rd=1;cs=1;            //停止讀取AD
  43.         return(ad_data);
  44. }
  45. // 數(shù)據(jù)處理函數(shù)
  46. //實際測量當(dāng)0度時,AD數(shù)據(jù)為133,所以數(shù)據(jù)處理時判斷AD數(shù)據(jù)和133的大小來識別正負(fù)溫度。
  47. //由于ADC芯片精度不夠,所以測量時有誤差,8位AD的分辨率為19.5mV,約為20mV,
  48. //放大電路輸出的電壓,溫度每變化一度,電壓變化只有10mV左右,所以測量有誤差,
  49. //以下溫度和AD數(shù)據(jù)的計算公式為實測數(shù)據(jù)后線性擬合得到的,實際線性擬合得到公式為:y=0.503x+133.63.
  50. //因為AD數(shù)據(jù)為0-255的整數(shù),所以公式簡化為以下計算方式
  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.                }                            //負(fù)溫度   dat_AD[0]中為溫度符號數(shù)據(jù)
  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;          //溫度值的小數(shù)位

  77. }
  78. //顯示函數(shù)
  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. //用作數(shù)碼管顯示的刷新
  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. //定時器中斷函數(shù),在中斷中刷新數(shù)碼管顯示
  98. void Time0(  ) interrupt 1{
  99.         TH0=(65535-2000)/256;
  100.         TL0=(65535-2000)%256;
  101.         disp();
  102. }

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

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


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

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




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1