单片机数字温度报警器的设计.doc

上传人:PIYPING 文档编号:10762875 上传时间:2021-06-03 格式:DOC 页数:43 大小:455.96KB
返回 下载 相关 举报
单片机数字温度报警器的设计.doc_第1页
第1页 / 共43页
单片机数字温度报警器的设计.doc_第2页
第2页 / 共43页
单片机数字温度报警器的设计.doc_第3页
第3页 / 共43页
单片机数字温度报警器的设计.doc_第4页
第4页 / 共43页
单片机数字温度报警器的设计.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《单片机数字温度报警器的设计.doc》由会员分享,可在线阅读,更多相关《单片机数字温度报警器的设计.doc(43页珍藏版)》请在三一文库上搜索。

1、1 项目综述1.1 设计目的 通过单片机数字温度报警器的设计,使得建立构成单片机系统的的整机概念,了解单片机系统各单元电路特别是DS18B20之间的关系及相互影响,从而能正确设计、计算发射的各个单元电路:包括AT89S52单片机主控模块、DS18B20温度采集芯片、独立式键盘、流水灯、蜂鸣器。数字温度计是日常生活中常见的也是应用非常广泛的电子器件,研究本课题既可以了解数字温度计报警电路的相关原理,又可以提高对于keil和Protues的应用能力和运用书本知识的能力。1.2 设计任务 设计一个具有特定功能的数字温度计。该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。测

2、量温度范围099,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。可以设置上限和下限温度,并且18B20出现故障能够报警。1.3 基本要求 (1)测量温度信号:外界温度; (2)测量温度范围: 099; (3)显示方式:8位数码管显示; (4)两个键,一键开启测温,一键关闭测温 (5)温度超限报警和18B20故障报警 (6)上限下限温度设定2 方案论证与比较2.1 温度采集部分方案论证2.1.1 方案一 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以

3、将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。采用热敏电阻,可满足 40 摄氏度至 90 摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,而我们对实验的精度要求较高,对于检测小于 1 摄氏度的信号是不适用的。 2.1.2 方案二 考虑到用温度传感器,在单片机电路设计中,可以采用一只温度传感DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,2.2 显示部分方案论证2.2.1 方案一 数码管显示,每一个二极管的状态分别用0 和1 表示,若为0 ,则表示L ED

4、无电流,即熄灭状态,;若为1 则表示二极管被点亮。可以静态显示和动态显示,虽然设计上如果处理不当,易造成亮度低,闪烁问题。但是相对液晶来说价格低,动态显示也比较丰富2.2.2 方案二 液晶显示,FWD12864-0402B是一种具有4位/8位并行,2线或3线串行多种接口方式,内部有中文汉字库的点阵图形液晶显示模块;分辨率为128*64,内置8192个16*16的汉字和128个16*8点的ASCII字符集。显示图形较点阵显示完整。低功耗,显示亮度较好, 无闪烁感.。显示内容丰富多彩. 鉴于上述原因, 我们采用方案一3 总体方案3.1工作原理 利用单片机AT89S52单片机作为本系统的中控模块。单

5、片机可把由DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 DS18B20产品的特点 (1)只要求一个端口即可实现通信。 (2)在DS18B20中的每个器件上都有独一无二的序列号。 (3)实际应用中不需要外部任何元器件即可实现测温。 (4)测量温度范围在55。C到125。C之间。 (5)数字温度计的分辨率用户可以从9位到12位选择。 (6)内部有温度上、下限告警设置。 3.2 总体设计主 控 制 器8位数码管显示器温 度 传 感 器单片

6、机复位时钟振荡独立式按键 图3.1设计总体框图如图4 系统硬件模块设计4.1 系统各功能模块 基于单片机的数字温度报警系统主要由数码管接口模块、温度测量模块、键盘电路模块、蜂鸣电路模块和LED流水灯电路模块组成。各模块的功能如下:4.1.1 主控电路模块 主控电路模块由AT89S52单片机、时钟电路和复位电路构成。是本次最小系统整个电路的核心。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引

7、脚送入单片机。4.1.2 数码管接口模块 数码管单片机最小系统包括晶体振荡电路、复位电路和液晶显示等部分。为了便于调整温度上下限和显示温度值,我采用两个四位一体共阳型数码管显示器进行显示。位控口接在P2口线上,实现对显示的控制。在P2口线上接了8个PNP型三极管使得位控线的驱动电流加大,从而提高驱动能力;P0.0-P0.7做为段控口接a-dp,数码管显示电路模块在调整阶段主要用来指示调整的上下限温度值,在测温阶段主要用来温度值。4.1.3 温度测量模块 温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55125,可编程为9位12位A/D转换精度,测温分辨率

8、达到0.0625,采用寄生电源工作方式, CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。也是本次我设计的基于单片机的数字温度报警系统的核心模块之一。4.1.4 键盘模块 P1口则用于与键盘相接。每个按键都通过一个10K的上拉电阻接电源+Vcc,按键的另一端接地。当有键按下时,与该键相连的P1口的相应位变为低电平,单片机检测到该变化后即转到相应的键处理程序。本次设计的基于单片机的数字温度报警系统主要用该模块实现上下限温度的调整和温度的测量开启和测量4.1.5 蜂鸣器电路模块 单片机P3.1口线上接上一个1K电阻然后再通过一个PNP型三极管与蜂鸣器相连接组

9、成蜂鸣器电路。在该系统中蜂鸣电路主要完成超限报警和18B20故障报警功能。4.1.6 LED流水灯电路模块 单片机P3口线上接上一个470电阻然后再与LED灯的阴极相连接,LED灯的阳极接正五伏电压。在该系统中LED流水灯电路模块的设置可以增强系统人性化设计,在系统初始化显示P.的时候同时LED流水灯闪烁。 5 系统软件设计5.1 单片机资源使用的情况 基于单片机的数字温度报警器用到了单片机的P1口,P2口,P3口,用到了口线的基本输入输出功能。其中独立式键盘接在P1口线,并且通过上拉电阻接VCC,按键结果键值储存在内部数据存储器中。单片机P3口线上接上一个470电阻然后再与LED灯的阴极相连

10、接,实现流水灯功能。P3.1接18B20实现温度数据的接收。P3.2口通过PNP三极管接蜂鸣器,实现超限报警。5.2 程序的流程框图5.2.1 主程序流程框图图5.1主程序流程框图5.2.2 温度转换命令子程序 主要功能是读出RAM中的2字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图下图示 发DS18B20复位命令 发跳过ROM命令 发温度转换开始命令 结束图5.2温度转换子程序流程框图5.2.3 温度计算子程序 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如下图所示。 开始温度零下?温度值取补码置“”标志计算小数

11、位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY 图5.3温度转换子程序流程框图5.2.4读出温度子程序 转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图所示Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验2字节完?CRC校验正确?移入温度暂存器结束NNY 图5.3读温度子程序流程框图5.2.5 检测DS18B20是否正常工作子程序 图5.5检测DS18B20是否正常工作子程序流程框图5.2.6 超上/下限温度报警子程序 图5.6 超上/

12、下限温度报警子程序流程框图6 系统测试与结果分析6.1 硬件测试 硬件测试的主要是检查电路各种参数是否符合设计要求。先排除硬件电路故障, 利用万用表或逻辑测试仪器,检查电路中各器件以及引脚是否连接是否稳固,是否有短路故障。 先将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,测单片机的电源引脚看是否是正常的电压,是否有虚焊的情况,然后用万用表测试各电源电压,若这些都没有问题,则将单片机AT89S52芯片插上,接通电源观察电路指示灯是否正常。人为升高温度看是否超限报警。断开开18b20插槽,看是否报警。6.2 软件测试 软件调试是利用仿真编译工具进行在线仿真调试,除发现

13、和解决程序错误外,也可以发现硬件故障。本设计采用的调试软件是keil。程序调试时,先是一个模块一个模块地进行,一个子程序一个子程序地调试,最后联起来统调。当程序调试无误后,就可以用用下载线将生成的hex文件下载到AT89S52的FLASH ROM中。6.3 实验结果测试 下好程序后,上电(按键复位后)能够自动显示系统提示符“P.”并且流水灯循环两灭,当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。与温度计测量结果数据比较如下表所示。但我按下停止键的时候,DS18B20停止工作,数码管上可以通过开始自动显示系统提示符“P.”。超限和断开18b20后会

14、报警。测试结果测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。 表6.1 实验测试结果实验项目数字温度计测量温度值()温度计测量85.7978.4463.440.236.022.215.09.0显示温度85.77678.47663.35640.41135.96122.10115.1529.120 图6.1 实验测试系统初始状态显示P.和流水灯结果 图6.2 实验测试上下限温度调整状态结果 图6.3 实验测试进入温度测量后的显示结果6.4 设计总结 在这次单片机课程设计筹备过程中,我都学到了很多,。当然,总的来说,这里面的酸甜苦辣都是我人生难得的一大笔财富。通过此次的单片机课

15、程设计,我学到了许多以前在课本上学不到的东西,同时也把以前学到的理论知识运用到了此次的课程设计中,很好地加强了我在单片机方面的知识,特别是在中断处理部分。整个调试程序的过程让我对keil软件有了更深一步的了解。重要的是,我的PCB制作能力有了很大的提高,懂得了电路的布线规则,知道如何去减小或者避免不必要的麻烦。 这次课程设计使我懂得了理论与实际相结合的重要性,只掌握书上的理论知识是远远不够的,而应该把所学的理论知识与实践相结合,把理论运用与实践,从实践中验证理论,从而提高自己的实际动手能力和独立思考的能力,为以后踏入社会打下基础。调试硬件电路,一定要心细、眼明、头脑要清醒。在调试的过程中,一定

16、要仔细测量各个点的电压,分析思考为什么会出现这种现象,这个现象是什么原因引起的,针对这个现象我们应该怎么去解决。很重要的一点就是我们要有耐性和毅力还有很强的抗挫折能力。 准备了这么久,我终于要交上了课程设计作品,在作品完成期间我遇到很多困难,几乎没有说过一次好觉,尽管很艰苦,一次又一次品尝到了解决问题的喜悦,最终完成了这次课程设计,在课程设计中我们发现了自己知识的不足,通过老师和同学的帮助,以及去图书馆查找资料,终于把问题都解决了,让我学到了很多,同时也巩固了所学的知识。参考文献1谢嘉奎.电子线路M,北京:高等教育出版社,1999年XieJiaKui electronic circuit M,

17、 Beijing: higher education press, 19992康华光.单片机的C语言应用程序M,北京:北京航空航天大学出版社, 1999 Kang uh guano. MCU C language application M, Beijing: Peking aerospace university press, 1999 3李广弟,朱月秀.单片机基础M,北京:北京航空航天大学出版社,2010 年 LiAnDi, based ZhuYueXiu. Microcontroller M, Beijing: Peking University of aeronautics press

18、, 20104阎石.数字电子技术M.第四版,高等教育出版社,2009年YanShi. Digital electronic technology j. J fourth edition, higher education press, 20095谢自美.电子线路设计与实验测试M.第二版.华中科技大学,2010年 Xie since beauty. Circuit design and the experiment test M. Second edition. Huazhong university of science and technology, 20106康华光.电子技术基础模拟部分M

19、.第五版.华中科技大学出版社,2005.7Kang uh guano. Electronic technology basic analog part j fifth edition. Huazhong university of science and technology press, 2005.77曹才开.电路分析基础M.第四版,北京:清华大学出版社,2009CaoCai open. Circuit analysis j. J fourth edition, Beijing: tsinghua university press, 2009致 谢 在这次课程设计的撰写过程中,我得到了许多人

20、的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把这个简易调频发射做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢湖南工学院为我提供良好的单片机课程设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学,我感谢在这这么多天以来给过我帮助和关注的所有人,更加感谢给过我挫折的所有人。你们用不同的方式给了我成长,也是你们促使我在走过的大学时光里一直努力

21、,终可以在课程设计的最后那一天无愧的说一声:我成功了。附 录 一附录 1.1 总体原理图PBC顶层图PBC底层图附 录二汇编程序代码;*;项目名称:单片机数字温度报警器;设计者: 王琨;设计日期:2010年12月28日;*;功能介绍:1 、上电或者复位初始状态数码管显示p. 并且流水灯循环闪动2、 按下S1键进入上限温度调整状态。S2是调十位,S3调个位。数字 前显示“H”字样表明调上限3、按下S1键进入下限温度调整状态。S2是调十位,S3调个位。数字前显示“L”字样表明调下限4、再按S1键进入温度测量状态,按S2可以退出该状态 ;*;LED数码管显示器设定;P0.7-P0.0段控线,接LED

22、的显示段dp,g,f,e,d,c,b,a;P2.7-P2.0位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);*;独立式键盘设定;8个按键S2至S9分别依次接在P1.0至P1.7口线; ;*;子程序;DISP(数码管显示子程序);DL(1毫秒延时子程序,晶振频率12MHz) ;键盘扫描子程序KEY: ;P1口数据处理子程序 ;DI ;缓冲单元赋值 ;十进制加1子程序 入口:R

23、0,出口:R0 DADD1: ;十位、个位数缓冲单元清0子程序CLR0 ;灭灯TSF1;读出转换后的温度值 GETWD;读到的温度值进行处理CL;做好读温度的准备READY;读DS18B20的程序READ_18200:;写DS18B20的子程序WRITE_1820;DS18B20复位初始化START1820 ;流水灯循环LEDXZ;*;常数表格;TAB(共阳数码管字型代码表);DISBH(系统提示符P.字型代码序号表)*;键功能程序;KEYS1; KEYS2;*;数据存储器变量及常量单元定义;*;伪指令定义区 T_H EQU 60H ;T_H中为整数温度值 T_L EQU 61H ;T_L中为

24、小数温度值 LED0 EQU 78H ; LED1 EQU 79H ; LED2 EQU 7AH ; 数码管温度小数个位 LED3 EQU 7BH ; 数码管温度小数十位 LED4 EQU 7CH ; 数码管温度整数个位 LED5 EQU 7DH ; 数码管温度整数十位 LED6 EQU 7EH ; LED7 EQU 7FH ; HING EQU 67H ;设定值上限 LOWD EQU 68H ;设定值下限 T29H EQU 6AH ;上一次温度高字节暂存 T28H EQU 6BH ;上一次温度低字节暂存 FLAG BIT 47H ;是否检测到DS18B20标志位 SDATA BIT P3.0

25、 ;DS18B20数据总线 ;*;系统起始程序区 ORG 0000H START: LJMP MAIN;*;系统监控程序区 ORG 0030H MAIN: MOV SP, #7FH ;确立堆栈区 MOV PSW, #00H ;初始化PSW,通用寄存器组为第 MOV R0, #20H ;RAM区首地址 MOV R7, #96 ;RAM区单元个数 ML: MOV R0, #00H INC R0 DJNZ R7, ML CLR EA TSF: MOV DPTR, #DISBH ;提示符“P.”字符代码表首地址 MOV R5, #08H MOV R0, #78H DISPTSF: CLR A MOVC

26、 A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSF DIS: LCALL DISP ;调显示子程序显示提示符“P.” LCALL LEDXZ ;流行灯 LCALL KEY JB 20H.0, KEYS1;是S2键,转KEYS2执行 LJMP DIS KEYS1:LCALL TSF1 ;灭灯p. MOV P3, #0FFH;灭流水灯 MOV LED3, #29;数码管上左边显示H,表明是设置上限 MOV LED0, #0 MOV LED1, #2 MOV HING, #20;上限默认值K1: LCALL DISP ;先设置上限 LCALL

27、KEY JB 20H.0, KEYS11 JB 20H.1 , A2 JB 20H.2 , A22 LJMP K1 A2: LCALL JIALED1 ;调加一子程序 LJMP K1 A22: LCALL JIALED0 LJMP K1 ;设定数值上限KEYS11: MOV A, LED1 MOV B, #10 MUL AB ADD A, LED0 MOV HING, A ;* KEYS2: LCALL TSF1 ;灭灯p. MOV P3, #0FFH;灭流水灯 MOV LED3, #30;数码管左边显示L,表明是设置下限 MOV LED0, #0 MOV LED1, #1 MOV LOWD

28、, #10 ;下限默认值K2: LCALL DISP LCALL KEY ;再设置下限温度 JB 20H.0, KEYS22 JB 20H.1 , A3 JB 20H.2 , A33 LJMP K2 A3: LCALL JIALED1 ;调加一子程序 LJMP K2 A33: LCALL JIALED0 LJMP K2 ;设定数值下限KEYS22: MOV A, LED1 MOV B, #10 MUL AB ADD A, LED0 MOV LOWD, A ;* LCALL TSF1 ;灭灯p. MOV P3, #0FFH;灭流水灯 MOV LED0, #28 ;- MOV LED1, #28

29、MOV LED6, #28 MOV LED7, #28 WD: LCALL GETWD; 调用读温度子程序,29H存低8位,28H存高8位 LCAll CL ;数值处理 LCALL DISP LCALL KEY JB 20H.1, HF ; 按键返回 LJMP WD HF: MOV HING, #20 ;HING恢复默认值 MOV LOWD , #10 ;LOW恢复默认值 LJMP TSF LJMP WD ;*;常数表格区;系统初始化后提示符“P.”字符代码表 DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号DISBH1: DB 10

30、H,10H,10H,10H,10H,10H,10H,10H;显示字符段选码表(共阳极代码) TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH, DB 050H,79H,24H,30H,19H,12H,02H,78H, DB 00H,10H,0bFh,89H,0C7H ;0-9,A,B,C,D,E,F,灭,p.后面为带点的0-9 ,“-”,HL;*;子程序区;数码管显示子程序DISP DISP: PUSH DPH PUSH DPL PUSH ACC PUSHPS

31、W CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示 MOV R5,#08H;循环次数,即驱动数码管的位数 DISP1: MOV A, R1 MOVDPTR, #TAB MOVC A, A+DPTR MOVP0, A;送段控 MOVP2, R2 ;送位控 LCALLDL ;延时1毫秒 MOVA,R2;位控码送A RL A;获得新的位控码 MOVR2, A;保存新的位控码 INCR1;获得新的显示缓冲单元地址 DJNZR5,DISP1;循环没有结束则继续 DISP2: POPPSW ;恢复当

32、前寄存器组的组号 POPACC POPDPL POPDPH RET;键盘扫描子程序KEY:KEY:LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回LCALL DISP;调显示子程序去抖动LCALL DISP LCALL KEYCHULI;调P1口数据处理子程序 JZ EXIT;没有键按下,转返回MOV B,20H;保存取反后的键值KEYSF:LCALLKEYCHULI;调P1口数据处理子程序JZKEY1;键释放,转恢复键值LCALLDISP;调显示子程序延时 LJMP KEYSF;等待释放KEY1:MOV 20H,B;键值送20H保存EXIT:RET;P1口数据处理子程序 KEYCHULI:PUSH PSW;保护现场 CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV P1,#0FFH ;先向P1口写1 MOV A, P1 ;读P1口数据 CPLA ;P1口数据取反 MOV20H,A;保存取反后的键值 CLRRS1;恢复当前寄存器组为组0 CLR RS0 POPPSW;恢复现场

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1