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

硬件

本设计使用PT100热敏电阻作为温度传感器,利用其感温效应,将随被测温度变化的电压经运算放大电路将信号放大后,通过ADC0804转换芯片,将电压信号转换为数字信号,用单片机采集下来,将被测温度在显示器上显示出来;如图:
在这里插入图片描述

设计功能

(1)测量温度范围−50℃~110℃。
(2)精度误差小于0.5℃。
(3)LED数码直接显示。

设计原理图

Protues仿真图如下:
在这里插入图片描述

软件设计

/************主程序源码**********/
void data_shout(uint ad_data)
{      
         float  temp;
         uint T;

		if(ad_data<79)
               {
                   temp=614.422-7.811*ad_data;
		 T=(uint)temp;
                 dat_AD[0]=10;
               }	                    //负温度   dat_AD[0]中为温度符号数据
 		else if(ad_data<=204)
               {
                   temp=7.990*ad_data-628.491;
	         T=(uint)temp;
                 dat_AD[0]=T/1000;
               }	                     //正温度

		else if(ad_data>204)
               {
                 temp=8.124*ad_data-655.742;
	         T=(uint)temp;
                 dat_AD[0]=T/1000;
               }		                        //ad_data=T;
		
      	 dat_AD[1]=T%1000/100;              //温度值的十位
         dat_AD[2]=T%100/10;          //2温度值的个位
         dat_AD[3]=T%10;          //温度值的小数位

}
//显示函数
void disp(){

	switch(i){
		case 0: P0=0xfe;P3=led[dat_AD[0]];i++;break;	 //显示符号位
		case 1: P0=0xfd;P3=led[dat_AD[1]];i++;break;
		case 2: P0=0xfb;P3=led[dat_AD[2]]|0x80;i++;break;
		case 3: P0=0xf7;P3=led[dat_AD[3]];i=0;break;

	}
}

//定时器初始化
//用作数码管显示的刷新
void t0init(){
	TMOD=0x01;
	TH0=(65535-2000)/256;	   //定时20ms时间
	TL0=(65535-2000)%256;
	EA=1;
	ET0=1;
	TR0=1;
}
 //定时器中断函数,在中断中刷新数码管显示
 void Time0(  ) interrupt 1{
 	TH0=(65535-2000)/256;
	TL0=(65535-2000)%256;
	disp();
 } 

//主函数
void main(void){ 
	 t0init();	  //初始化
     while(1){
        start_ad();             //开始AD
        data_shout(read_ad());           //数据处理
     }
}

资料

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值