基于51单片机PT100的热敏电阻数字温度计仿真

本文介绍了如何使用51单片机作为控制器,配合ADC0804进行模拟信号转换,结合PT100传感器实现高精度温度测量,并通过4位数码管显示结果。详细阐述了ADC0804的特点,如分辨率、输入范围和工作模式,以及主程序的设计和实现。
摘要由CSDN通过智能技术生成

仿真图:

在这里插入图片描述

功能简介:

采用51单片机作为控制器,最小系统由晶振和复位电路组成
显示采用4位数码管用于显示该项目的参数信息
PT100采用四线制的接法完全消除导线电阻带来的影响
采用ADC0804将传感器出来的模拟信号转换为数字信号再送入单片机处理

芯片/模块的特点:

ADC0804特点:

分辨率:ADC0804可以将模拟信号转换为8位数字输出,提供256个不同的离散电平。这使得它可以测量和转换相对较低精度的模拟信号。

输入范围:ADC0804具有一个单端输入,可以接受0到5伏的模拟信号。这使得它适用于大多数基于5伏供电的电路。

并行接口:ADC0804使用并行接口进行数据传输。它提供8位数据输出,一次可以同时转换8路模拟信号。

内部参考电压:ADC0804有一个内部参考电压(+Vref),通常为2.56伏。这个内部参考电压可以用来对输入信号进行比较,以确定数字输出的值。

操作模式:ADC0804可以以单次转换(Single Conversion)模式或连续转换(Continuous Conversion)模式工作。在单次转换模式下,它会对一次模拟输入进行一次转换并输出结果。在连续转换模式下,它会不断对输入进行转换,输出连续的数字结果。

低功耗:ADC0804是一种低功耗设备,适用于在电池供电或功耗敏感的应用中使用。

PT100特点:
精度高:PT100传感器的精度非常高,通常可以达到0.1°C,甚至更高的精度。这使得它在需要准确测量温度的应用中非常适用。

宽温度范围:PT100传感器可以测量非常广泛的温度范围,通常从-200°C到+600°C。这使得它能够适应许多不同的应用场景,包括极低温和高温环境。

稳定性好:PT100传感器的电阻随温度变化非常稳定。它们通常采用高纯度的白金材料制造,具有很好的抗腐蚀性和长期稳定性,可以在长时间使用过程中保持准确性。

快速响应:PT100传感器响应速度较快,能够迅速感知温度变化并输出相应的电阻值。这使得它适用于需要及时检测温度变化的应用。

无线性误差小:PT100传感器的温度-电阻特性通常非常线性,能够提供准确的温度-电阻转换。这降低了由于非线性误差引起的测量偏差。

高耐压能力:PT100传感器通常具有较高的耐压能力,可以承受一定的机械应力、振动和冲击。

标准化:PT100传感器是一种经过标准化的传感器,符合国际标准,因此可以方便地与其他设备和系统进行兼容和集成。

主程序:

#include<reg51.h>
#include <intrins.h>

#define Disdata P3
#define discan P0

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

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

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

void delay(unsigned int t)  
{  
  for(;t>0;t--)
  {
    ;
  }  
}  //11微秒延时函数

void scan()  
{  
   char k;      
   
   for(k=0;k<4;k++)        //四位LED扫描控制       
   {        
     Disdata=dis_7[dis[k]];        
	 if(k==1)
	 {
	   DIN=1;				  //加入小数点
	 }        
	 discan=scan_con[k];
	 delay(90);
	 discan=0xff;       
   }   
}
void ad0804()
{
  P1=0xff;              //读取P1口之前先给其写全1
  adrd=0;               //AD读使能
  ad_data=P1;			//AD数据读取赋给P1口
  adrd=1;
  csad=1;               //关闭ADCS
  adwr=0;
}

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

  //if(ad_data>=0x83)
  //{
    ad_data=ad_data-0x83;
    t_temp=ad_data*2-4;
	if(t_temp<=110)
	{
	 dis[3]=t_temp/100;
	 dis[2]=t_temp/10-dis[3]*10;
	 dis[1]=t_temp%10;
	 dis[0]=t%5*2;
	}
	else
	{
	  t_temp=256-t_temp;
      dis[3]=11;
      dis[2]=t_temp/10;
      dis[1]=t_temp%10;
      dis[0]=t%5*2;
	}
//	  
//  }

} 
void main()		//	主程序
{
  while(1)
  {
    ad0804();
	ad_compute();
	scan();
  }
}

设计文件:
链接:https://pan.baidu.com/s/1PfhbasL0_ffZM3_oCmOyHg?pwd=3tty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值