辽宁科技学院智能仪器设计基础课程设计----温度测量显示报警院系:专业:班级:姓名:学号:时间:指导老师:1.设计要求:热电阻温度设计:①温度传感器铂PT100②显示温度数值,精度0.1℃③温度超限报警2.方案设计:温度传感器信号调理 AD0804 STC89C52 数码管显示单片机蜂鸣器报警方案说明:本设计的采用STC89C52为核心,DA0804数据采集。
将外部的模拟信号经过A/D(ADC0804)转换后送给单片机STC89C52进行处理。
处理后将显示数据传送给数码管显示。
在到达设定的报警温度时进行报警。
温度测量显示报警是通过铂电阻的阻值随温度的变化而变化,将阻值的变化通过电桥电路转化成电压变化,用运放把电压放大到AD可以接受的范围,AD将电压信号转换成数字信号传输到单片机,经过单片机处理,将温度数值显示到七段数码管上。
当温度大于80℃时蜂鸣器进行报警提示。
3.硬件设计:3.1单片机及其最小应用系统STC89C52是一个高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。
各引脚的功能如下:Vss(20):接地。
Vcc(0):接+5V电源。
XTAL1(19)和XTAL2(18):在使用单片机内部振荡电路时,这两个端子用来外接石英晶体和微调电容。
如图3.1所示,本硬件图使用11.0592MHz石英晶振。
(9): RST是复位信号输入端。
当此输入端保持两个机器周期(24RST/VPD个振荡周期)的高电平时,就可以完成复位操作。
ALE/PROG(30):ALE是地址锁存允许信号,在访问外部存储器时,用来锁存由P0口送出的低8位地址信号。
在不访问外部存储器时,ALE以振荡频率1/6的固定速率输出脉冲信号。
因此它可用作对外部输出脉冲信号。
因此它可用作对外输出的时钟。
但要注意,只要外接有存储器,ALE端输出的就不再是连续的周期脉冲信号。
PSEN(29):它是外部程序存储器ROM的读选通信号。
在执行访问外部ROM 指令时,会自动产生PSEN信号;而在访问外部数据存储器RAM或访问内部ROM 时,不产生PSEN信号。
(31):访问外部存储器的控制信号。
当EA为高电平时,访问内部程EA/VPP序存储器;但当程序计数器PC的值超过0FFFH(对8051/80C51/8751)或1FFFH (对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,为对8751片只访问外部程序存储器,不管是否有内部程序存储器。
第二功能VPP内EPROM的21V编程电源输入。
P0.0~P0.7(39~32):双向I/O口P0。
第二动能是访问外部存储器时,可分时用作低8位地址和8位数据线;在对8751编程和效验时,用于数据的输入/输出。
P0口能以吸收电流的方式驱动8个LS型TTL负载。
P1.0~P1.7(1~8):双向I/O口P1。
P1口能驱动(吸收或输出电流)4个LS 型TTL负载。
在对EPROM编程和程序验证时,它接收低8位地址。
在8052单片机中,.P1.0还用作定时器2的记数触发输入端T2,P1.1还用作定时器2的外部控制端T2EX。
P2.0~P2.7(21~28):双向I/O口P2。
P2口可以驱动(吸收或输出电流)4个LS型TTL负载。
第二功能是访问外部存储器时,输出高8位地址。
在对EPROM 编程和效验时,它接收高位地址。
P3.0~P3.7(10~17):双向I/O口P3。
P3口能驱动(吸收或输出电流)4个LS型TTL负载。
P3口的每条引脚都有各自的第二功能。
图3.1 单片机最小应用系统复位电路:本硬件图使用手动复位电路,在按下复位按钮后,电容C通过R1放点,同时电源Vcc通过R1和R2分压。
而R2要比R1大许多,大部分电压降落到R2上,从而使RST端得到一个高电平导致单片机复位。
同时EA=1。
3.2PT100电阻温度传感器电阻温度传感器分为两部分:一部分为电桥电路,另一部分为放大电路。
在3.2图中,测温元件是铂电阻(测温范围0~200℃),铂电阻阻值变化在100~175.86Ω,用电桥来测量RX的变化,将电阻的阻值变化转变成电压的变化。
通过计算可得电桥差模输出为0~0.15V,由于AD转化器件能接受的电压范围为0~5V,所以电桥差模输出要经过运发放大输出。
差模运算放大器如图所接,放大倍数≈30。
将电压放大到0~4.5V,这时就可通过AD转换,将数据传送到单片机处理。
图3.2 PT100电阻调理电路3.3AD0804转换ADC0804是集成A/D 转换器。
它采用CMOS 工艺20引脚集成芯片,分辨率8位,转换时间100us ,输入电压范围在0~5V ,芯片具有三态输出数据锁存器,可直接连接到数据总线上。
图3.3 AD0804转换各引脚名称及作用:V IN (+),V IN (-)——两模拟信号输入端,用以接受单极性、双极性和差模输入信号。
DB7~DB0——具有三态特性数字信号输出口。
AGND——模拟信号地。
DGND——数字信号地。
CLK——时钟信号输入端。
CLKR——内部时钟发生器的外接电阻端。
CS——片选信号输入端,低电平有效。
WR——写信号输入,低电平启动A/D转换。
RD——读信号输入,低电平有效。
INTR——A/D转换结束信号,低电平表示本次转换已完成。
VREF/2——参考电平输入,决定量化单位。
VCC——电源5V输入。
AD0804时序图如下:3.4七段LED数码管动态显示测温范围是0~200℃,我们需要精确到小数点后一位,所以需要四个七段LED数码管。
为了节约单片机的P口,所以我们使用两片74HC573锁存器连接到P0口进行数据传输,来实现动态显示的“段选”和“位选”,U2为段选锁存器,U3为位选锁存器。
P2.6和P2.7端口来控制锁存器的锁存端。
图3.4 数码管显示3.5声报警电路如图3.5所示,蜂鸣器一端连接电源,一端连接PNP三极管e端,三极管c端接地,三极管b端加电阻连接单片机的P2.3口。
当单片机的P2.3口给低电平“0”时,蜂鸣器响起。
3.6硬件设计图完整的的电路图如下:4.软件设计4.1程序流程图开始AD数据传送处理温度数据显示否温度超过设定值?是蜂鸣器报警4.2程序C语言编程程序实现温度测量显示,并在超过80℃的时候报警。
#include<reg52.h>#include<intrins.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit adwr=P3^6;sbit adrd=P3^7;sbit beep=P2^3;uint adnum;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //不带小数点的0~9编码 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带小数点的0~9编码void delayms(uint xms) //延时程序{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void display(uchar qian,uchar bai,uchar shi,uchar ge) //显示程序 {dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0x5f;wela=0;delayms(5);dula=1;P0=table[shi+10];dula=0;P0=0xff;wela=1;P0=0x6f;wela=0;delayms(5);dula=1;P0=table[bai];dula=0;P0=0xff;wela=1;P0=0x77;wela=0;delayms(5);dula=1;P0=table[qian];dula=0;P0=0xff;wela=1;P0=0x7b;wela=0;delayms(5);}uchar adnumber(void) //ad数据采集{adwr=1;_nop_();adwr=0;_nop_();adwr=1;P0=0xff;adrd=1;_nop_();adrd=0;_nop_();adnum=P1;adrd=1;return adnum;}main(){ uint a,a1,a2,a3,a4;uint temp;wela=1; //AD初始化P0=0x7f;wela=0;while(1){adnumber();temp=adnum*10*44.444444*0.0195+0.5; //数据处理 a1=temp%10;a2=temp%100/10;a3=temp%1000/100;a4=temp/1000;for(a=0;a<10;a++){display(a4,a3,a2,a1); } //数据显示if(temp>800) //报警检测{ beep=0;delayms(50);for(a=0;a<10;a++){display(a4,a3,a2,a1); }beep=1;}}}5.开发板调试按照上述流程图编写程序,下载到开发板上,模拟电压输入值,在数码管上显示温度值,如图(1)(2)所示:当模拟输入1.15V时,输出温度值是51.1℃。
(图1)当模拟输入2.65V时,输出温度值是117.9℃。
(图2)6.参考文献《智能化测量控制仪表原理与设计(第三版)》徐爱钧徐阳编著北京航空航天大学出版社《单片机实用技术与应用》徐成波杨数强李彦林金纯编著清华大学出版社《单片机原理及应用——基于Proteus与Keil C》孟祥莲高洪志编著哈尔滨工业大学出版社《新概念51单片机C语言教程-入门、提高、开发、拓展全攻略》郭天祥编著电子工业出版社7.心得体会本次实习我们使用开发板,keil软件编制了C语言程序,并将程序下载到开发板上进行了调试,验证了我们所设计的程序的可用性。
这次实习还使我理解了编写程序的一些技巧。
单片机应用系统一般包含多个模块的主程序和各种子程序组成。
每个模块都能完成一个明确的任务,实现某个具体的功能,如温度接收、延时、发送、显示等。
采用模块化程序设计的方法,就是讲这些具体的功能程序独立设计和分别调试,最后将这些模板程序连接在一起进行联合调试。
模板化的设计有点:一个模板可以多个程序共享;单个功能设计和调试比较方便,容易完成。