《单片机课程设计--多路数字温度测量系统设计(共25页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计--多路数字温度测量系统设计(共25页).doc(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上单片机课程设计报告题目名称:多路数字温度测量系统设计 系: 电 专 业: 电 班 级: 学 号: 学生姓名: 指导教师: 职 称: 年 月 日 一、摘要计算机技术的发展和普及提升了数据采集系统的技术水平。在生产过程中,应用数据采集系统可对生产现场的工艺参数进行采集、监视和记录,以方便人们对数据结果做出分析判断。基于汇编语言的多路温度采集与处理系统,可以实现对多路不同温度进行实时检测,通过LED显示当前温度值,可以更直观的观察数据、更便捷的对系统进行控制。本课题以内置A/D转换器的单片机STC12C5A32AD为核心,对多路的温度进行实时巡检。采用多个模拟温度传感器LM
2、35测量多路温度。通过LM358构成的同相放大器对模拟温度信号进行放大,然后送至单片机处理。处理后由四位LED数码管对八路温度予以动态显示。通过独立式键盘可对测量进行操控。同时该系统还具有报警功能,实现当测量温度超出-55125时发出报警。本文结合实际使用经验,介绍了LM35温度传感器在单片机下的硬件连接及软件编程,并给出了流程图。 关键词:单片机;温度传感器;放大器;数码管显示;键盘二、总体方案设计方案的阐述与特点:本设计方案以LM35为温度传感器、内置A/D转换器单片机STC89LE516AD为控制核心组成多点温度测量系统,该系统包括传感器及其放大电路、复位电路、晶振电路、报警电路、键盘与
3、显示、基准电压电路组成。1、本方案系统框图为: 图1 总体系统框图2、 基本工作原理: 如图1所示本设计以LM35模拟温度传感器对八路温度进行实时测量,其输出电压经由LM358构成的同相放大器放大后送至单片机的A/D输入口。单片机对输入信号进行模数转换执行软件程序后,由LED数码管显示温度值,每秒切换一个通道进行轮流显示。通过键盘可以随时查看指定通道的温度值,当任何一路温度的3次平均值超过设定的下限值或上限值时,发出警告。3、它有如下特点:(1)可以监测8路环境温度信号,可以扩充;对8路模拟信号输入进行循环采集,每路连线采集三次,取平均值。(2)测量范围为-55+125,精度为0.5(3)LC
4、D液晶显示或用4位LED数码管进行循环显示,其中最高位通道提示符AH,低三位显示实际温度值,每秒切换一个通道进行轮流显示;(4)键盘控制,可随时查看指定通道的温度值;(5)可分别设定每一路的上限制和下限值,若采集平均值超过设定范围,则对应通道指示灯闪烁10后一直亮,指示灯闪烁是喇叭发声,以示警告。三、系统硬件设计本课题的整个系统是由传感器及其信号放大电路、单片机、显示电路、键盘电路、稳压电路、晶振电路、复位电路等构成。3.1控制器-单片机设计:本设计采用的单片机为STC12C5A32AD STC12C5A32AD单片机是单时钟/ 机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新
5、一代单片机,全新的流水线/ 精简指令集结构。STC12C5A32AD单片机主要性能:高速:1个时钟/机器周期,RISC型8051内核,速度比普通8051快12倍工作电压:5.5V-3.3V低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)工作频率:035MHz时钟:外部晶体或内部RC 振荡器可选芯片内E2PROM 功能 ISP/IAP,在系统可编程/在应用可编程,无需仿真器 8位8通道ADC,转换速度可达300K/S 2个硬件16位定时器,兼容普通8051 的定时器。再加上2 路PCA 还可再实现2个16位定时器硬件看门狗(WDT)全双工异步串行口(UART),由于STC12系列单片机是高速的
6、8051,可再用定时器或PCA软件实现多串口如图3.1为STC12C5A32AD引脚图,各引脚功能说明如下: 图3.1 STC12C5A32AD引脚图 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)时
7、,P2 口送出高八位地址。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口。P3口亦作为特殊功能口使用,如表3-1所示。 表3-1 STC12C5A32AD引脚号特殊功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0外部输入和定时器0时钟频率输出)P3.5 T1(定时器1外部输入和定时器1时钟频率输出)P3.6WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通) RST: 复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。 ALE:地址锁存控制信号(
8、ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。3.2传感器检测电路设计:LM35 是由National Semiconductor 所生产的温度传感器,其输出电压与摄氏温度成正比,具有10mv/的灵敏度,工作温度范围为4V30V;输出阻抗为0.1。LM35温度传感器,由于它采用内部补偿,所以输出可以从0开始,器件有三个引脚,分别是电源负GND,电源正Vcc,信号输出端。电路需要两路运算放大电路,所以选择双路运算放大器,一路作跟随器另一路作同向放大器,LM358 内部包括有两个独立的、
9、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。 图3.2.传感器检测电路3.3显示电路设计:如图3.3所示,本显示方案采用单片机I/O口外扩74HC573驱动器驱动4位LED数码管实现动态显示,所谓动态显示就是在任何时刻只有一位LED数码管处于显示状态,即单片机采用扫描的方式控制各个数码管的轮流显示。动态显示具有编程简单,占用I/O口线少的优点。 图3.3显示电路3.4键盘电路设计:其原理图如下:本设计中由于所用键盘不多,所以采用独立连接式的编程扫描方式键盘
10、就能够满足设计要求。键盘接口与键盘程序的根本任务就是要检测有没有键按下?按下的是那个位置的键?键值是多少?在本次设计中采用了软件扫描的方法。通过对键盘接口P3的查询判断是否有键按下。 图3.4 键盘电路3.5晶振电路设计:晶振电路是单片机的心脏,它控制着单片机的工作节奏。单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。STC12C5A32AD内部有一个反相振荡放大器,XTAL1和 XTAL2分别是该反向振荡放大器的输入端和输出端。该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。本设计采用的晶振频率为12MHZ。其晶振电路如图3.5所示。此外还可使用外部时钟。在使用外部时钟
11、时,外部时钟必须从XTAL1输入,而XTAL2悬空。 图3.5晶振电路3.6复位电路的设计: 复位使单片机处于起始状态,并从该起始状态开始运行。STC12C5A32AD的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。复位后,只影响SFR中的内容,内部RAM中的数据不受影响。外部复位有上电复位和按键电平复位。由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。为了便于本设计运行调试,复位电路采用按键复位方式。如图3.6 图3.6 复位电路3.7报警电路设计:为了实现多点温度检测报警系统,本课题采用STC12C
12、5A32AD单片机作为主控制器,采用扫描的方式对多点温度传感器获取对应该位置的温度值,经处理后,如温度不在设定的范围内,给出报警信号。系统总体硬件电路图如下所示: 图3.7 报警电路3.8 3V稳压电路为了给STC89LE516AD单片机提供精确的3V基准电压,本设计采用了LM117三端可调正稳压集成电路。它的输出电压范围是1.2V至37V,负载电流最大为1.5A。仅需外接两个电阻就可以设置输出电压。此外它的线性调整率和负载调整率都比较好。 图3.8 3V稳压电路3.9总电路见附录四、系统软件设计4.1系统主程序流程图主程序主要实现系统的初始化,温度数据采集与处理,键值处理,显示数据,报警。
13、系统的初始化包括寄存器的初始化(控制寄存器、堆栈、中断寄存器等),LED显示的初始化,输出端口的初始化,采集、累计数据的初始化。 图4.1 主程序流程图4.2测温子程序的设计数据采样程序功能:温度检测通道,控制存放数据的地址和采样次数。数据检测的方式是先对8个通道各采样一次,共采集三次。采样程序采用中断方式。在设置通道初值、通道数、采样次数和存放数据的开始地址后,启动A/D转换,随后检测标志位状态。标志位被清零,标志着本通道的A/D转换已经结束,在修改通道号和数据存放地址后,对下一通道继续检测。当8个通道的检测工作完成后,判断三次采样是否全部完成,若没完成,则对8个通道继续采样,直至完成三次采
14、样工作。数据采样程序流程框图如4.2所示。 图4.2 测温子程序4.3报警子程序设计(1) 采样被测参数(2)比较采样值和给定的上下限。(3)根据比较结果执行相应的处理程序。如果发现采样值超过报警值,发出执行报警程序。报警程序流程框图4.3所示。 4.3 报警子程序流程图 4.4显示子程序设计 四位LED数码管进行轮流显示,其中最高位显示通道提示符AH,低三位显示实际温度。 图4.4 显示子程序流程图 五、结论1、课题总结 本课题主要是实现对温度进行多点同时测量并准确显示。整个系统由单片机控制,将能够接受传感器的数据并显示出来,可以从键盘输入命令,系统根据命令选择对应的传感器,并由驱动电路驱动
15、温度显示,对异常情况进行报警。2、心得六、参考文献1王为青, 程国刚. 单片机Keil Cx51应用开发技术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第五
16、版北京:高等教育出版社,2006.524-535.7闫玉德,葛龙,俞虹. 单片机微型计算机原理与设计M.北京: 中国电力出版社,2010.112-154,197-199. 8 郁有文. 传感器原理及工程应用M. 西安: 西安电子科技大学出版社, 2008.215-238. 七、附录:1.系统程序: ;*;常数定义;*TMEL EQU 0E0H ;20ms,定时器0时间常数TMEH EQU 0B1HTMEPHEAD EQU 36H;*;工作内存定义;*BITST DATA 20HTIMEISOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMP
17、H DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;*; 引脚定义;* TEMPDIN BIT P3.7;*; 中断向量区;*ORG 000HLJMP START ORG 00BH LJMP T0IT;*;系统初始化;* ORG 100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20H MOV R1,#60HCLSMEM1: MOV R0,#00H INC R0 DJNZ R1,CLSMEM1 MOV TMOD,#B MOV TH0,#TIMEL MOV TL0,#TIMEH SJMP INITERROR: NOP LJMP START
18、NOPINIT: NOP SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR TEMPONEOK LJMP MAIN;*; 定时器0中断服务程序;*T0IT: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7,#32H,T0ITI MOV R7,#00H SETB TIMEISOKTOIT1: POP PSW RETI;*; 主程序;*MAIN: LCALL LM35_1 JNB TIME1SOK,MAIN CLR TIME1SOKJNB TEMPONEOK,MAIN2LCAL
19、L READTEMP1LCALL CONVTEMPLCALL LM35_1MAIN2: LCALL READTEMPSETB TEMPONEOKLJMP MAIN;*;子程序区;*; RESETLM35;*INILM35: SETB TEMPDINNOP NOPCLR TEMPDINMOV R6,#0A0HDJNZ R6,$MOV R6,#0A0H DJNZ R6,$ SETB TEMPDIN MOV R6,#32H DJNZ R6,$ MOV R6,#3CHLOOPLM35: MOV C,TEMPDINJC INILM35UTDJNZ R6,LOOPLM35MOV R6,#064HDJNZ
20、R6,$SJMP INILM35RET;INILM35UT: SETB TEMPDINRET; *; 读LM35的程序,从LM35中读出一个字节的数据; *READLM35: MOV R7,#08HSETB TEMPDINNOPNOPREADLM35LOOP: CLR TEMPDINNOPNOPNOPSETB TEMPDINMOV R6,#07HDJNZ R6,$MOV C,TEMPDINMOV R6,#3CHDJNZ R6,$RRC ASETB TEMPDINDJNZ R7,READLM35LOOPMOV R6,#3CHDJNZ R6,$RET; *; 写LM35的程序,从LM35中写一个字
21、节的数据; *WRITELM35: MOV R7,#08HSETB TEMPDINNOPNOPWRITELM35LOP: CLR TEMPDINMOV R6,#07HDJNZ R6,$RRC AMOV TEMPDIN,CMOV R6,#34HDJNZ R6,$SETB TENPDINDJNZ R7,WRITELM35LOPRET; *; READ TEMP; *READTEMP: LCALL INITELM35MOV A,#0CCHLCALL WRITELM35MOV R6,#34HDJNZ R6,$MOV A,#44HLCALL WRITELM35MOV R6,#34HDJNZ R6,$RE
22、TREADTEMP1: LCALL INILM35MOV A,#0CCHLCALL WRITELM35MOV R6,#34HDJNZ R6,$MOV A,#0BEHLCALL WRITELM35MOV R6,#34HDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READLM35MOV R0,AINC R0READTEMP21: LCALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0MOV TEMPL,AMOV A,TEMPHEAD+1
23、MOV TEMPH,AREADTEMPOUT: RET; *; 处理温度BCD码子程序; *CONVTEAMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPLCPL AADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BHSJMP TEMPCHTEMPC1: MOV TEMPHC,#0AHTEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FHMOV DPTR,#TEMPDOTTABMOVC
24、 A,A+DPTRMOV TEMPLC,AMOV A,TEMPLANL A,#0F0HSWAP AMOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLLCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHCMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP AORL A,TEMPLCMOV TEMPLC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHCANL A,#0FHORL A,R7MOV TEMPHC,AT
25、EMPC12: RET; *; 小数部分码表; *TEMPDOTTAB: DB 00H, 01H, 01H, 02H, 03H, 03H, 04H,04H,05H,06HDB 06H,07H,08H,09H,09H; *; 显示区BCD码温度值刷新子程序; *LMBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,AMOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,AMOV A,TEMPHCANL A,#0FHMOV 72H,AMOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,AMOV A,TEMPHCANL A,#0F0HCJNZ
26、 A,#010H,DISPBCD0SJMP DISPBCD2LMBCD0: MOV A,TEMPHC ANL A,#0FH JNZ DISPBCD2 MOV A,TEMPHC SWAP AANL A,#0FHMOV 73H,#0AHMOV 72H,ALMBCD2: RET; *; 显示子程序; *; 显示数据在70H73H单元内,用4位LED共阳数码管显示,P1口输出段码数据,;P3口作扫描控制,每个LED数码管亮1ms时间再逐位循环。LM1: MOV R1,#70H MOV R5,#0FEHPLAY: MOV P1,#0FFH MOV P3,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,A MOV A,R5 JB ACC.1,LOOP5 CLR P1.7LOOP5: LCALL DLIMS INC R1 MOV A,R5 JNB ACC.3,ENDOUT RL A