找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6094|回复: 5
收起左侧

铂热电阻PT100热敏电阻温度计仿真与源程序

  [复制链接]
ID:359904 发表于 2018-6-27 08:56 | 显示全部楼层 |阅读模式
本案例使用铂热电阻PT100作为温度传感器,阻值会随温度变化而变化。使用热敏电阻类的温度传感器件,利用其感温效应。将其随被测温度变化的电压或电流用单片机采集下来,将被测温度在数码管显示器上显示出来。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png
单片机源程序如下:
  1. #include<reg51.h>
  2. #include <intrins.h>

  3. #define Disdata P3
  4. #define discan P0

  5. sbit adrd=P2^7;          //IO口定义
  6. sbit adwr=P2^6;
  7. sbit csad=P2^4;
  8. sbit  DIN=P3^7;       //LED小数点控制

  9. unsigned char j,k,ad_data,t;
  10. unsigned char dis[4]={0x00,0x00,0x00,0x00};

  11. unsigned char code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x40};
  12. /* 共阳LED段码表对应           "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9" "不亮" "-" */                 
  13. unsigned char code  scan_con[4]={0xfe,0xfd,0xfb,0xf7};      // 列扫描控制字   

  14. void delay(unsigned int t)  
  15. {  
  16.   for(;t>0;t--)
  17.   {
  18.     ;
  19.   }  
  20. }  //11微秒延时函数

  21. void scan()  
  22. {  
  23.    char k;      
  24.    
  25.    for(k=0;k<4;k++)        //四位LED扫描控制      
  26.    {        
  27.      Disdata=dis_7[dis[k]];        
  28.          if(k==1)
  29.          {
  30.            DIN=1;                                  //加入小数点
  31.          }        
  32.          discan=scan_con[k];
  33.          delay(90);
  34.          discan=0xff;      
  35.    }   
  36. }
  37. void ad0804()
  38. {
  39.   P1=0xff;              //读取P1口之前先给其写全1
  40.   csad=0;               //选通ADCS
  41.   adrd=0;               //AD读使能
  42.   ad_data=P1;                        //AD数据读取赋给P1口
  43.   adrd=1;
  44.   csad=1;               //关闭ADCS
  45.   adwr=0;
  46. }

  47. void ad_compute()       //u=2.55+T/100, 2.55反映在AD上为0x83
  48. {
  49.   unsigned char t_temp;

  50.   //if(ad_data>=0x83)
  51.   //{
  52.     ad_data=ad_data-0x83;
  53.     t_temp=ad_data*2-4;
  54.         if(t_temp<=110)
  55.         {
  56.          dis[3]=t_temp/100;
  57.          dis[2]=t_temp/10-dis[3]*10;
  58.          dis[1]=t_temp%10;
  59.          dis[0]=t%5*2;
  60.         }
  61.         else
  62.         {
  63.           t_temp=256-t_temp;
  64.       dis[3]=11;
  65.       dis[2]=t_temp/10;
  66.       dis[1]=t_temp%10;
  67.       dis[0]=t%5*2;
  68.         }
  69. //          
  70. //  }

  71. }
  72. void main()                //        主程序
  73. {
  74.   while(1)
  75.   {
  76.     ad0804();
  77.         ad_compute();
  78.         scan();
  79.   }
  80. }

复制代码

所有资料51hei提供下载:
例12-10 热敏电阻温度计.rar (24.1 KB, 下载次数: 240)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:364042 发表于 2018-7-3 15:35 | 显示全部楼层
给力,能测热敏电阻阻值不
回复

使用道具 举报

ID:773610 发表于 2020-6-9 09:32 | 显示全部楼层
297354780 发表于 2018-7-3 15:35
给力,能测热敏电阻阻值不

厉害了,感谢
回复

使用道具 举报

ID:235332 发表于 2022-4-16 12:31 | 显示全部楼层
超过100度就不行了?
回复

使用道具 举报

ID:1111082 发表于 2024-2-18 11:39 | 显示全部楼层
计算公式原理是怎么样的
回复

使用道具 举报

ID:433219 发表于 2024-2-21 10:16 | 显示全部楼层
life_阳子 发表于 2022-4-16 12:31
超过100度就不行了?

铂电阻优势是能侧1000度的高温,,,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表