采用热敏电阻pt100设计温度传感电路,温度传感电路通过放大电路进行放大后加载到A/D转换模块(ADC0804),以AT89C51单片机为主控制端,外接晶振电路满足各模块时序,最终通过7段数码管进行温度显示
单片机源程序如下:
#include #include #define uchar unsigned char #define uint unsigned int #define ad0_7 P1 //AD数据口 sbit cs=P2^4; //片选信号,低电平有效,控制芯片的启动和结果读取 sbit rd=P2^7; //读数据控制,低电平有效 sbit wr=P2^6; //AD启动控制,上升沿有效 sbit intr=P2^5; //AD转换完成输出低电平 uchar i; uchar led[11]={ 0x3F, //"0" 0x06, //"1" 0x5B, //"2" 0x4F, //"3" 0x66, //"4" 0x6D, //"5" 0x7D, //"6" 0x07, //"7" 0x7F, //"8" 0x6F, //"9" 0x40, //"-" }; uchar dat_AD[4]={0}; //启动AD转换子程序////////////////// void start_ad(void) { cs=0; //允许AD wr=0; _nop_(); wr=1; //WR由低变高时启动AD转换 while(intr); //等待转换完成,低电平有效 cs=1; //停止AD转换 }//////////////////// read_ad() { uint ad_data; ad0_7=0xff; cs=0; //允许读 rd=0; //读取转换数据结果 _nop_(); ad_data=ad0_7; //把数据存到AD——data中 rd=1;cs=1; //停止读取AD return(ad_data); } // 数据处理函数 //实际测量当0度时,AD数据为133,所以数据处理时判断AD数据和133的大小来识别正负温度。 //由于ADC芯片精度不够,所以测量时有误差,8位AD的分辨率为19.5mV,约为20mV, //放大电路输出的电压,温度每变化一度,电压变化只有10mV左右,所以测量有误差, //以下温度和AD数据的计算公式为实测数据后线性拟合得到的,实际线性拟合得到公式为:y=0.503x+133.63. //因为AD数据为0-255的整数,所以公式简化为以下计算方式 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()); //数据处理 } }
上一篇:能够实现单片机计算器与LCD1602字幕滚动的源程序
下一篇:基于51单片机的PWM温控风扇
推荐阅读最新更新时间:2024-11-17 11:56
设计资源 培训 开发板 精华推荐
- ADP2118、1.5V、3A降压稳压器的典型应用,同步至1MHz,与外部时钟180度异相
- 用于仪表的 12/14/16 位、16 通道 DAC
- ADA4637-1ARZ带保护反相放大器的典型应用电路
- L7809A 开关稳压器的典型应用
- RSO-2412D ±12V、42mA输出DC/DC转换器的典型应用电路
- LTC2945CUD-1 隔离式宽范围 I2C 功率监视器的典型应用
- MAXREFDES168#:ARM处理器的ChipDNA安全认证参考设计
- EVAL-AD5424SDZ,使用 AD5424、8 位、高带宽乘法 DAC 和并行接口的评估板
- LT1085CT-5、5V/7.5A 低压差稳压器的典型应用电路
- 具有I2C接口的VEML6030高精度环境光传感器的典型应用
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光
- 免费测评TI LAUNCHXL-CC2650
- 2024 DigiKey 应用说:蓝牙5.4新特性解读和实例演示
- 免费试用Atmel MCU开发板,抢“鲜”体验优越性能,更有大奖等你拿!
- 抢先体验:恩智浦最新LPC1500开发板,速来!
- 是德科技电子书,下载有礼进行时!
- 打造健康生活,成就强劲工具 TE Connectivity (TE) 智慧生活子系统解决方案
- 【社区大讲堂】ARM+DSP双核处理器应用程序开发
- Littelfuse 高效 • 可靠 • 精准的功率控制和电路保护方案在工业、交通、通讯、医疗及新能源中的应用
- ST MEMS传感器交流论坛正式上线啦!
- LPC8N04测评,激发你的NFC&物联网新创意!