单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx
《单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计多路数字温度测量系统设计讲解Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
单片机对输入信号进行模数转换执行软件程序后,由LED数码管显示温度值,每秒切换一个通道进行轮流显示。
通过键盘可以随时查看指定通道的温度值,当任何一路温度的3次平均值超过设定的下限值或上限值时,发出警告。
3、它有如下特点:
(1)可以监测8路环境温度信号,可以扩充;
对8路模拟信号输入进行循环采集,每路连线采集三次,取平均值。
(2)测量范围为-55℃~+125℃,精度为±
0.5℃
(3)LCD液晶显示或用4位LED数码管进行循环显示,其中最高位通道提示符A~H,低三位显示实际温度值,每秒切换一个通道进行轮流显示;
(4)键盘控制,可随时查看指定通道的温度值;
(5)可分别设定每一路的上限制和下限值,若采集平均值超过设定范围,则对应通道指示灯闪烁10后一直亮,指示灯闪烁是喇叭发声,以示警告。
三、系统硬件设计
本课题的整个系统是由传感器及其信号放大电路、单片机、显示电路、键盘电路、稳压电路、晶振电路、复位电路等构成。
3.1控制器--单片机设计:
本设计采用的单片机为STC12C5A32AD
STC12C5A32AD单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代单片机,全新的流水线/精简指令集结构。
STC12C5A32AD单片机主要性能:
●高速:
1个时钟/机器周期,RISC型8051内核,速度比普通8051快12倍
●工作电压:
5.5V--3.3V
●低功耗设计:
空闲模式,掉电模式(可由外部中断唤醒)
●工作频率:
0~35MHz
●时钟:
外部晶体或内部RC振荡器可选
●芯片内E2PROM功能
●ISP/IAP,在系统可编程/在应用可编程,无需仿真器
●8位8通道ADC,转换速度可达300K/S
●2个硬件16位定时器,兼容普通8051的定时器。
再加上2路PCA还可再实现2个16位定时器
●硬件看门狗(WDT)
●全双工异步串行口(UART),由于STC12系列单片机是高速的8051,可再用定时器或PCA软件实现多串口
如图3.1为STC12C5A32AD引脚图,各引脚功能说明如下:
图3.1STC12C5A32AD引脚图
●Vcc:
电源
●GND:
地
●P0口:
P0口是一个8位的双向I/O口。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
●P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,同时也是模拟量输入口,可以对8路模拟量进行模数转换。
●P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
●P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口。
P3口亦作为特殊功能口使用,如表3-1所示。
表3-1STC12C5A32AD引脚号特殊功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
INT0(外部中断0)
P3.3
P3.4
T0(定时器0外部输入和定时器0时钟频率输出)
P3.5
T1(定时器1外部输入和定时器1时钟频率输出)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
●RST:
复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
●ALE:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
●XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
●XTAL2:
振荡器反相放大器的输出端。
3.2传感器检测电路设计:
LM35是由NationalSemiconductor所生产的温度传感器,其输出电压与摄氏温度成正比,具有10mv/℃的灵敏度,工作温度范围为4V~30V;
输出阻抗为0.1Ω。
LM35温度传感器,由于它采用内部补偿,所以输出可以从0℃开始,器件有三个引脚,分别是电源负GND,电源正Vcc,信号输出端。
电路需要两路运算放大电路,所以选择双路运算放大器,一路作跟随器另一路作同向放大器,LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
图3.2.传感器检测电路
3.3显示电路设计:
如图3.3所示,本显示方案采用单片机I/O口外扩74HC573驱动器驱动4位LED数码管实现动态显示,所谓动态显示就是在任何时刻只有一位LED数码管处于显示状态,即单片机采用扫描的方式控制各个数码管的轮流显示。
动态显示具有编程简单,占用I/O口线少的优点。
图3.3显示电路
3.4键盘电路设计:
其原理图如下:
本设计中由于所用键盘不多,所以采用独立连接式的编程扫描方式键盘就能够满足设计要求。
键盘接口与键盘程序的根本任务就是要检测有没有键按下?
按下的是那个位置的键?
键值是多少?
在本次设计中采用了软件扫描的方法。
通过对键盘接口P3的查询判断是否有键按下。
图3.4键盘电路
3.5晶振电路设计:
晶振电路是单片机的心脏,它控制着单片机的工作节奏。
单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。
STC12C5A32AD内部有一个反相振荡放大器,XTAL1
和XTAL2分别是该反向振荡放大器的输入端和输出端。
该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。
本设计采用的晶振频率为12MHZ。
其晶振电路如图3.5所示。
此外还可使用外部时钟。
在使用外部时钟时,外部时钟必须从XTAL1输入,而XTAL2悬空。
图3.5晶振电路
3.6复位电路的设计:
复位使单片机处于起始状态,并从该起始状态开始运行。
STC12C5A32AD的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。
复位后,只影响SFR中的内容,内部RAM中的数据不受影响。
外部复位有上电复位和按键电平复位。
由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。
为了便于本设计运行调试,复位电路采用按键复位方式。
如图3.6
图3.6复位电路
3.7报警电路设计:
为了实现多点温度检测报警系统,本课题采用STC12C5A32AD单片机作为主控制器,采用扫描的方式对多点温度传感器获取对应该位置的温度值,经处理后,如温度不在设定的范围内,给出报警信号。
系统总体硬件电路图如下所示:
图3.7报警电路
3.83V稳压电路
为了给STC89LE516AD单片机提供精确的3V基准电压,本设计采用了LM117三端可调
正稳压集成电路。
它的输出电压范围是1.2V至37V,负载电流最大为1.5A。
仅需外接两个电阻就可以设置输出电压。
此外它的线性调整率和负载调整率都比较好。
图3.83V稳压电路
3.9总电路
见附录
四、系统软件设计
4.1系统主程序流程图
主程序主要实现系统的初始化,温度数据采集与处理,键值处理,显示数据,报警。
系统的初始化包括寄存器的初始化(控制寄存器、堆栈、中断寄存器等),LED显示的初始化,输出端口的初始化,采集、累计数据的初始化。
图4.1主程序流程图
4.2测温子程序的设计
数据采样程序功能:
温度检测通道,控制存放数据的地址和采样次数。
数据检测的方式是先对8个通道各采样一次,共采集三次。
采样程序采用中断方式。
在设置通道初值、通道数、采样次数和存放数据的开始地址后,启动A/D转换,随后检测标志位状态。
标志位被清零,标志着本通道的A/D转换已经结束,在修改通道号和数据存放地址后,对下一通道继续检测。
当8个通道的检测工作完成后,判断三次采样是否全部完成,若没完成,则对8个通道继续采样,直至完成三次采样工作。
数据采样程序流程框图如4.2所示。
图4.2测温子程序
4.3报警子程序设计
(1)采样被测参数
(2)比较采样值和给定的上下限。
(3)根据比较结果执行相应的处理程序。
如果发现采样值超过报警值,发出执行报警程序。
报警程序流程框图4.3所示。
4.3报警子程序流程图
4.4显示子程序设计
四位LED数码管进行轮流显示,其中最高位显示通道提示符A—H,低三位显示实际温度。
图4.4显示子程序流程图
五、结论
1、课题总结
本课题主要是实现对温度进行多点同时测量并准确显示。
整个系统由单片机控制,将能够接受传感器的数据并显示出来,可以从键盘输入命令,系统根据命令选择对应的传感器,并由驱动电路驱动温度显示,对异常情况进行报警。
2、心得
六、参考文献
[1]王为青,程国刚.单片机KeilCx51应用开发技术[M].北京:
人民邮电出版社,2006.223-226.
[2]方佩敏编著·
智能化集成温度传感器原理与应用[M].北京:
电子工业出版社,2002.35-42.
[3]张毅刚,彭喜元,彭宇.单片机原理及应用[M].北京:
高等教育出版社,2008.18-20,253-255,219-220,198-201.
[4]刘笃人,韩保军.传感器及应用技术[M].西安:
西安电子科技大学出版社,2003.112-124.
[5]童诗白.模拟电子技术基础[M].北京:
高等教育出版社,2004.213-216.
[6]阎石.数字电子技术基础[M].第五版.北京:
高等教育出版社,2006.524-535.
[7]闫玉德,葛龙,俞虹.单片机微型计算机原理与设计[M].北京:
中国电力出版社,2010.112-154,197-199.
[8]郁有文.传感器原理及工程应用[M].西安:
西安电子科技大学出版社,2008.215-238.
七、附录:
1.系统程序:
;
****************************************************************
常数定义
TMELEQU0E0H;
20ms,定时器0时间常数
TMEHEQU0B1H
TMEPHEADEQU36H
工作内存定义
BITSTDATA20H
TIMEISOKBITBITST.1
TEMPONEOKBITBITST.2
TEMPLDATA26H
TEMPHDATA27H
TEMPHCDATA28H
TEMPLCDATA29H
引脚定义
TEMPDINBITP3.7
中断向量区
ORG000H
LJMPSTART
ORG00BH
LJMPT0IT
系统初始化
ORG100H
START:
MOVSP,#60H
CLSMEM:
MOVR0,#20H
MOVR1,#60H
CLSMEM1:
MOV@R0,#00H
INCR0
DJNZR1,CLSMEM1
MOVTMOD,#00100001B
MOVTH0,#TIMEL
MOVTL0,#TIMEH
SJMPINIT
ERROR:
NOP
LJMPSTART
INIT:
SETBET0
SETBTR0
SETBEA
MOVPSW,#00H
CLRTEMPONEOK
LJMPMAIN
定时器0中断服务程序
T0IT:
PUSHPSW
MOVPSW,#10H
MOVTH0,#TIMEH
MOVTL0,#TIMEL
INCR7
CJNER7,#32H,T0ITI
MOVR7,#00H
SETBTIMEISOK
TOIT1:
POPPSW
RETI
主程序
MAIN:
LCALLLM35_1
JNBTIME1SOK,MAIN
CLRTIME1SOK
JNBTEMPONEOK,MAIN2
LCALLREADTEMP1
LCALLCONVTEMP
LCALLLM35_1
MAIN2:
LCALLREADTEMP
SETBTEMPONEOK
LJMPMAIN
子程序区
RESETLM35
INILM35:
SETBTEMPDIN
NOP
NOP
CLRTEMPDIN
MOVR6,#0A0H
DJNZR6,$
DJNZR6,$
MOVR6,#32H
MOVR6,#3CH
LOOPLM35:
MOVC,TEMPDIN
JCINILM35UT
DJNZR6,LOOPLM35
MOVR6,#064H
SJMPINILM35
RET
INILM35UT:
****************************************************************
读LM35的程序,从LM35中读出一个字节的数据
READLM35:
MOVR7,#08H
SETBTEMPDIN
READLM35LOOP:
CLRTEMPDIN
MOVR6,#07H
MOVC,TEMPDIN
MOVR6,#3CH
RRCA
DJNZR7,READLM35LOOP
写LM35的程序,从LM35中写一个字节的数据
WRITELM35:
WRITELM35LOP:
MOVTEMPDIN,C
MOVR6,#34H
SETBTENPDIN
DJNZR7,WRITELM35LOP
READTEMP
READTEMP:
LCALLINITELM35
MOVA,#0CCH
LCALLWRITELM35
MOVA,#44H
READTEMP1:
LCALLINILM35
MOVA,#0BEH
MOVR5,#09H
MOVR0,#TEMPHEAD
MOVB,#00H
READTEMP2:
LCALLREADLM35
MOV@R0,A
INCR0
READTEMP21:
LCALLCRC8CAL
DJNZR5,READTEMP2
MOVA,B
JNZREADTEMPOUT
MOVA,TEMPHEAD+0
MOVTEMPL,A
MOVA,TEMPHEAD+1
MOVTEMPH,A
READTEMPOUT:
RET
处理温度BCD码子程序
CONVTEAMP:
MOVA,TEMPH
ANLA,#80H
JZTEMPC1
CLRC
MOVA,TEMPL
CPLA
ADDA,#01H
MOVA,TEMPH
ADDCA,#00H
MOVTEMPHC,#0BH
SJMPTEMPCH
TEMPC1:
MOVTEMPHC,#0AH
TEMPC11:
MOVA,TEMPHC
SWAPA
MOVTEMPHC,A
ANLA,#0FH
MOVDPTR,#TEMPDOTTAB
MOVCA,@A+DPTR
MOVTEMPLC,A
ANLA,#0F0H
ORLA,TEMPL
LCALLHEX2BCD1
ORLA,TEMPHC
ORLA,TEMPLC
MOVA,R7
JZTEMPC12
MOVR7,A
MOVA,TEMPHC
ORLA,R7
TEMPC12:
小数部分码表
TEMPDOTTAB:
DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
DB06H,07H,08H,09H,09H
****************************************