版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机设计的温度检测显示报警程序设备技术网 时间:2010-4-14来源:电子技术网 1温度传感器AD590基本知识 AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V30V,检测的温度围为55150,它有非常好的线性输出性能,温度每增加1,其电流增加1uA。 AD590温度与电流的关系如下表所示: 摄氏温度 AD590电流 经10K电压 0 273.2 uA 2.732V 10 283.2
2、uA 2.832 V 20 293.2 uA 2.932 V 30 303.2 uA 3.032 V 40 313.2 uA 3.132 V 50 323.2 uA 3.232 V 60 333.2 uA 3.332 V 100 373.2 uA 3.732 V 实验任务:利用AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入ADC0809的其中
3、一个通道进行A/D转换,将转换的结果进行温度值变换之后进行监控。 由于AD590的温度变化围在55150之间,经过10K之后采样到的电压变化在2.182V4.232V之间,不超过5V电压所表示的围,因此参考电压取电源电压VCC,(实测VCC4.70V)。由此可计算出经过A/D转换之后的摄氏温度显示的数据为: 如果(D*2350/128)2732,则显示的温度值为(2732)D*2350/128) 如果(D*2350/128)2732,则显示的温度值为(D*2350/128)2732)#include "reg52.h"/头文件#include "intrins.h
4、"#define uchar unsigned char/宏定义#define uint unsigned int/宏定义 sbit RS=P10;/LCD1602定义I/O的硬件接口sbit RW=P11;/LCD1602定义I/O的硬件接口sbit E=P12;/LCD1602定义I/O的硬件接口sbit key_1=P13;/按键1定义I/O的硬件接口/Alarm_Value;/温度报警值+1度sbit key_2=P14;/按键2定义I/O的硬件接口/Alarm_Value;/温度报警值-1度sbit key_3=P15;/按键3定义I/O的硬件接口sbit key_4=P1
5、6;/按键4定义I/O的硬件接口sbit AD590_2=P17;/A定义I/O的硬件接口,通道选择/C、D接地sbit key_6=P37;/按键6定义I/O的硬件接口/控制 温度报警标志位/sbit ST=P30; /ST和ALE接在一起sbit OE=P31; sbit EOC=P32; sbit CLK=P33; sbit SPK=P34; /喇叭,蜂鸣器报警sbit LED1=P35; /LED报警sbit LED2=P36; #define DPDR P2/LCD1602并行数据输出接口定义#define DPDR_1 P0/ADC0809并行数据输入接口定义uchar temp;
6、/最终温度值 unsigned long temp2;/平均温度 unsigned long temp1;/温度1,AD590_1接IN0unsigned long temp2;/温度2,AD590_2接IN1uchar Alarm_Value;/温度报警值bit Alarm_Value_bit;/温度报警标志位uchar code DispTab_1='0','1','2','3','4','5','6','7','8','9'/16
7、02:0-9 数字uchar code DispTab_2=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00;/温度符号uchar DispBuf6; /6字节的显示缓冲区char char_char_1=" Temperature: "/定义字符串void delay(uint z)/1ms延时 uchar x,x1;for(;z>0;z-)for(x=0;x<114;x+)for(x1=0;x1<1;x1+); void write_Directive(uchar a)/写LCD指令RS=0;RW=0;delay
8、(5);E=0;DPDR=a;delay(5);E=1;delay(5);E=0;delay(5);void write_Data(uchar a)/写LCD数据RS=1;RW=0;delay(5);E=0;DPDR=a;delay(5);E=1;delay(5);E=0;delay(5);void LCD_init()/LCD初始化 uchar i;delay(15);write_Directive(0x38);delay(5);write_Directive(0x38);delay(5);write_Directive(0x38);write_Directive(0x01);write_D
9、irective(0x02);/初始化后数据地址为0x80;即第一行,第一个位置write_Directive(0x0c);/不显示光标/write_Directive(0x0f);/显示光标write_Directive(0x80+0x00);/第一行第一位地址for(i=0;i<16;i+)write_Data(char_char_1i);/显示字符串" Temperature "void write_Data_String()/显示温度函数 uchar i;DispBuf0=temp/100;/显示十位temp=temp%100;DispBuf1=temp/10
10、;/显示个位temp=temp%10;DispBuf2=temp%10;/显示小数点后一位:0.0DispBuf0=DispTab_1i;/查表,取字符i=DispBuf1;DispBuf1=DispTab_1i;i=DispBuf2;DispBuf2=DispTab_1i;write_Directive(0x80+0x40);/第二行,第一个位置地址write_Data(DispBuf0);/第二行,第一个位置write_Data(DispBuf1);/第二行,第二个位置 write_Data('.');/第二行,第三个位置write_Data(DispBuf2);/第二行,
11、第四个位置write_Data(0x00);/第二行,第五个位置显示温度符号void ADC0809_init()/ADC0809复位ST=0; OE=0; SPK=1;LED1=1;TMOD=0x12; TH0=0x216; TL0=0x216; TH1=(65536-40000)/256; TL1=(65536-40000)%256; TR1=0; TR0=1; ET0=1; ET1=1; EA=1; void t0(void) interrupt 1 using 0 CLK=CLK; void t1(void) interrupt 3 using 0 TH1=(65536-40000)/
12、256; TL1=(65536-40000)%256; SPK=SPK;LED1=LED1;void temp1_start()/启动温度1 转换AD590_2=0;/通道选择ST=1;delay(1);/延时1msST=0;delay(1);/延时1msST=1;delay(1);/延时1msST=0;while(!EOC);/查询转换结束否_nop_();_nop_();OE=1;/OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。delay(1);/延时1mstemp1=DPDR_1; void temp2_start()/启动温度2 转换AD590_2=1;/通道选择ST=1;
13、delay(1);/延时1msST=0;delay(1);/延时1msST=1;delay(1);/延时1msST=0;while(!EOC);/查询转换结束否_nop_();_nop_();OE=1;/OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。delay(1);/延时1mstemp2=DPDR_1; void temp1_Calculated()/温度1 计算temp1=(temp1*2350/128)-2732;void temp2_Calculated()/温度2 计算temp2=(temp2*2350/128)-2732;void Temperature_Alarm()
14、/温度报警if(Alarm_Value_bit=1)if(Alarm_Value=temp)TR1=1;/启动定时器1else SPK=1;LED1=1;TR1=0;else SPK=1;LED1=1;TR1=0;void key_Detection()/按键检测if(key_6=0)delay(20);/延时20mswhile(!key_6);delay(20);/延时20msAlarm_Value=Alarm_Value;/break;/if(key_1=0)delay(20);/延时20mswhile(!key_1);delay(20);/延时20msif(Alarm_Value>
15、=100)temp=99;return;elseAlarm_Value+;return;/if(key_2=0)delay(20);/延时20mswhile(!key_2);delay(20);/延时20msif(Alarm_Value<=0)Alarm_Value=0;return;elseAlarm_Value-;return;void main() uchar i;ADC0809_init();/ADC0809复位LCD_init();/LCD复位delay(5);/延时for(i=0;i<8;i+)write_Directive(0x40+i);/写入温度符号write_D
16、ata(DispTab_2i);while(1)key_Detection();/按键检测temp1_start();/启动温度1 转换temp2_start();/启动温度2 转换temp1_Calculated();/温度1 计算 temp2_Calculated();/温度2 计算temp=(temp1+temp2)/2;/取温度1和温度2的平均值Alarm_Value=temp;Temperature_Alarm();/温度报警条件查询write_Data_String();/显示温度 相关温度检测文章基于AT89C52单片机的温度检测与显示设计 由于高新技术的不断
17、发展,仪器仪表的微型化,数字化已得到实现。90年代高精确度、高性能、多功能仪器仪表都已经采用微处理器件。而作为工业控制和自动化领域的各种新技术、新方法、新产品的发展趋势和显著标志智能化是自动化技术当前和今后发展的动向之一。本文采用AT89C52单片机开发了键盘、液晶显示器、多路温度检测来实现温度的采集、温度的文字显示和图形显示三个系统。实验证明,采用AT89C52开发的系统性能可靠、成本较低、软件设计灵活简单、硬件接口功能丰富,具有扩展性好、通用性强等优点。 1 元器件的选择1.1 核心芯片的选择AT89C52单片机价格低廉,输入输出口丰富,无需再另外扩展,简化了外围电路。256 B部RAM,
18、8 kB部ROM,程序存储空间大,防止由于字模过多而造成存储空间不够。另外由于前期开发需要多次的写入、擦除,而89C52可以完成1 000次写擦,故满足要求。1.2 模数转换芯片的选择ADC0809是8位的AD转换芯片,为逐次逼近型。由单一的+5 V电源供电,片带有所存功能的8路模拟多路开关,可对8路05 V的输入模拟电压信号分时进行转换,完成一次转换约需100s;片的地址译码和锁存电路,将单片机的三条地址信号译码生成选择八路模拟通道。输出具有TTL三态锁存缓冲器,可以直接接到单片机的数据线上。1.3 温度传感器的选择温度传感器类型很多,目前出现的石英体温度传感器如AD590具有很高的稳定性、
19、准确度和良好的线性,抗干扰能力强。单总线数字型的温度传感器DS18B20直接产生温度数字信号,不需要AD转换,准确度、稳定性都相当高,但这些传感器的适用围不广,不利于以后其他功能的扩展。所以本次采用TREND公司的铂热电阻温度传感器TPIHT,传感器的工作电压为24 V,输出电流为420 mA,外接250 精确电阻用于提取电压时进行AD转换,ADC0809的输入电压在15 V围对应的测量温度围为-10+160。2 AT89C52的设计应用2.1 硬件设计根据设计仪表的功能要求,本设计要完成以下功能:(1)数字化测量,显示与报警装置;(2)显示指定位置温度的数值与其动态曲线图;(3)多路模拟数据的采集、处理;(4)温度值字体的放缩。系统结构图如图1所示。2.2 软件设计用C语言进行单片机程序设计,采用结构化程序设计思想:在总体设计中采用“自顶而下”(TOP-DOWN)的方法,在程序设计中采用模块化编程。把整体任务分成一个个子任务,子任务再分子任务,逐层细分,每个子程序都完成其规定的功能,明确输入输出。将这些程序连接起来就构成整体流程图。模块化编程,每个模块结构完整,相互独立的程序段。如液晶模块的写控制指令、写显示数据、清屏;数据处理中的工程量转换,均值滤波等。这些程序可以任意调用、修改,使整个程序结构清晰,组合灵活,维护调试方便。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚介师岗中安全文明考核试卷含答案
- 中药饮片购销员操作技能模拟考核试卷含答案
- 口腔护理液制造工发展趋势模拟考核试卷含答案
- 绢纺精炼操作工岗前专项能力考核试卷含答案
- 2026多组学技术在创新药物筛选中的整合应用报告
- 2026中国医疗无人机配送网络布局与成本效益分析
- 2026全屋定制家居消费者行为分析与企业战略规划报告
- 2026瓶装水季节性销售波动与应急储备策略报告
- 2026低压电缆行业产能布局与供需平衡研究报告
- 2026氢燃料电池产业链技术突破及产业化发展策略与行业分析
- 2026年安徽合肥单招考试题库
- 圆锥曲线-2027高三数学(解析版)
- 辽宁石化职业技术学院单招职业技能考试题库及答案
- 中国慢性肾脏病高血压管理指南(2024年版)
- 人教版数学二年级上册课内计算每日一练
- 2026-2027学年四年级上册数学单元全真模拟培优卷(人教版)第4单元 加法模型和乘法模型
- 2026年全国职业病诊断医师培训职业性化学中毒复习题及答案
- 呼吸系统疾病的预防与控制
- 急诊科急性中毒诊疗指南
- 平面设计师招聘笔试题及解答(某大型国企)2025年
- 老师给的立式多喷嘴水喷射真空泵设计课程设计模板
评论
0/150
提交评论