仿真图:
功能简介:
采用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