基于单片机的温度报警器.doc_第1页
基于单片机的温度报警器.doc_第2页
基于单片机的温度报警器.doc_第3页
基于单片机的温度报警器.doc_第4页
基于单片机的温度报警器.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

专业课程设计报告题目:单片机课程设计报告系 别 信息工程系 专业班级 1513132151 学 号 45645464 学生姓名指导教师 156123165 提交日期 2012年6月7日 目 录一、设计目的1二、设计要求和设计指标12.1 系统的设计原则12.2 系统的设计步骤22.3 系体的总体方案设计2三、设计内容33.1 硬件电路工作原理33.1.1 51单片机简介33.1.2 管脚说明53.1.3单片机的时钟电路63.1.4单片机的复位电路73.1.5 传感器数据采集电路73.1.6 AT89C51的最小应用系统93.2程序设计93.2.1主程序9系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。93.2.2读温度子程序103.2.3温度转换命令子程序113.2.4计算温度子程序113.2.5程序11四、设计制作与检测174.1电路板的设计制作174.2电路板的检测204.2.1单片机检测204.2.2整机检测204.3程序调试214.3.1软件调试214.3.2整机调试21五、总结(感想和心得等)21六主要参考文献22一、设计目的通过本课程的实践教学使学生深入理解与掌握单片机(MCS51)的基本概念、硬件构成、基本功能、指令系统及程序设计、常用外围芯片的功能及扩展,为后续课的学习打下较扎实的理论基础和必要的基本知识,进而得到较好的工程实践训练。掌握MCS-51系列单片机的基本原理、发展过程,MCS-51系列单片微型计算机与程序设计有关的主要特征,特殊功能寄存器SFR的功能特点及设置方法;指令系统及汇编语言程序设计;MCS51单片机内部资源及应用;单片机的扩展技术,输入输出通道接口,交互通道的配置与接口,单片机应用系统的软硬件设计。要求学生通过本课程的学习,使学生具备完成一个具有一定测控功能的单片机应用系统软硬件设计的能力,提高学生分析、设计、调试计算机应用系统的能力。 本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用4位共阴极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。 大学本科学生动手能力的培养和提高是大学本科教育的一个重要内容。如何让学生在学好基础知识的同时,迅速掌握应用技术,实验与课程设计环节起着非常重要的作用。本课程设计的目的,是让电子信息类(自动化,电气,测控)专业学生通过课程设计,首先建立起单片机应用系统的概念,根据实际的系统设计要求,掌握初步的单片机系统设计方法,从硬件系统和软件系统设计两个方面得到实际的提高,为今后的毕业设计和就业打下良好的基础。二、设计要求和设计指标2.1 系统的设计原则 一般系统的设计原则包含安全性(稳定抗干扰性),操作的便利性(人性化),实时性,通用性和经济性。(1)安全可靠 首先要选用高性能的AT89C51单片机,保证在恶劣的工业环境下能正常运行。其次是设计可靠的控制方案,并具有各种安全保护措施,如报警、事故预测、事故处理和不间断电源等。(2)操作维护方便 操作方便表现在操作简单、直观形象和便于掌握且不强求操作工要掌握计算机知识才能操作。(3)实时性强 选用高性能的AT89C51单片机的实时性,表现在内部和外部事件能及时地响应,并做出相应的处理。(4)通用性好 系统设计时应考虑能适应不同的设备和各种不同设备和各种不同控制对象,并采用积木式结构,按照控制要求灵活构成系统。主要表现在两个方面:一是硬件板设计采用标准总线结构(如PC总线),配置各种通用的模板,以便扩充功能时,只需增加功能模板就能实现;二是软件功能模块或控制算法采用标准模块结构,用户使用时不需要二次开发,只需各种功能模块,灵活地进行控制系统组态。(5)经济效益高 2.2 系统的设计步骤(1)系统总体方案设计、(2)方案论证评审 硬件和软件的分别细化设计 硬件和软件的分别调试 系统的组装 离线仿真和调试阶段 2.3 系体的总体方案设计(1)系统的主要功能、技术指标、原理性方框及文字说明。(2)系统的硬件结构几配置,主要软件的功能、结构几框图。(3)保证性能指标要求的技术措施。(4)抗干扰性和可靠性设计。(5)工艺要求温度数码管显示。调节温度的超调量小于30%。 实现温度闭环控制,控制温度误差范围0.1。温度范围:-50 125。供电电压:交流5。 考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以使用热敏电阻之类的器件利用其感温效应,感温电路比较麻烦,进行A/D转换,才可以满足设计要求。由于本设计是测温电路,首先要选用高性能的AT89C51单片机,保证在恶劣的工业环境下能正常运行。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。测温传感器使用二极管结电压变化的数值来转化成温度的变化,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。图2.1 总体设计方框图三、设计内容3.1 硬件电路工作原理3.1.1 51单片机简介:51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当前常用的51系列单片机主要产品有:*Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; ATMEL的:89C51、89C52、89C2051等8位CPU4kbytes 程序存储器(ROM) (52为8K) 256bytes的数据存储器(RAM) (52有384bytes的RAM) 32条I/O口线111条指令,大部分为单字节指令 21个专用寄存器 2个可编程定时/计数器5个中断源,2个优先级(52有6个) 一个全双工串行通信口 外部数据存储器寻址空间为64kB 外部程序存储器寻址空间为64kB 逻辑操作位寻址功能双列直插40PinDIP封装 单一+5V电源供电 CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M图3.1 51单片机3.1.2 管脚说明:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.1.3单片机的时钟电路图3.3片内振荡电路的时钟电路 AT89C1单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。AT89C51的时钟产生方式有两种:内部时钟电方式和外部时钟方式。由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。即利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。最常用的是在 XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图2.13电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为6MHz的石英晶体,电容器一般选择22F.3.1.4单片机的复位电路图3.4单片机的复位电路本设计中AT89C52是采用上电自动复位和按键复位两种方式。最简单的复位电路如图2.13所示。上电瞬间,RC电路充电,RST引线端出现正脉冲,只要RST端保持10ms以上的高电平,就能使单片机有效地复位。其中R1和R2分别选择200和1K的电阻,电容器一般选择22F。3.1.5 传感器数据采集电路图3.9 电源供电方式DS18B20详细引脚功能描述 ,引脚功能描述。 1 GND 接地地信号 2 DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。 3 VDD 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。 由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。DS18B20可以采用两种方式供电,一种是采用电源供电方式,如图2.15所示,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图2.15所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。考虑到实际应用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P2.0口。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。3.1.6 AT89C51的最小应用系统AT89C51是片内有程序存储器的单片机,要构成最小应用系统时只要将单片机接上外部的晶体或时钟电路和复位电路即可,如图2.14所示。这样构成的最小系统简单可靠,其特点是没有外部扩展,有可供用户使用的大量的IO线。图3.5 AT89C51单片机构成的最小系3.2程序设计3.2.1主程序系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY3.21主程序流程图 图3.22读温度流程图3.2.2读温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束图3.13 温度转换流程图3.2.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图3.14所示3.2.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.15所示温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY图3-14 计算温度流程图图 3-15显示数据刷新流程图3.2.5程序#include#include#includechar count,mi,fe,shz;sbit g1=P27;sbit g2=P26;sbit g3=P25;sbit g4=P24;sbit lv=P22;sbit jin=P33;sbit jia=P34;sbit jian=P35;uint shiwen;uintzuigao=350;int zuidi=300;uchar flag=0; /记录第一个按键次数 flag=0正常 1最高 2最低uchar flag2=0; /记录第四个按键次数 flag2=0正常 1调节小时 2调节分钟uchar tableshu=0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xe0,0xff ,0xf7 ;/ 0 1 234 5 6 7 8 9 灭uchar tableshudi=0x08,0xcb,0x12,0x82,0xc1,0x84,0x04,0xca,0x00,0xc0,0xff ;/*报警*/void baojing()if(shiwenzuidi)lv=0;elselv=1;void dis(uchar ba,uchar sh,uchar ge,uchar di)g1=0;P0=tableshuba;delay1(5);g1=1;P0=tableshu10;g2=0;P0=tableshush;delay1(5);g2=1;P0=tableshu10;g3=0;P0=tableshudige;delay1(5);g3=1;P0=tableshudi10;g4=0;P0=tableshudi;delay1(5);g4=1;P0=tableshu10;void disdi(uchar ba,uchar sh,uchar ge,uchar di)g1=0;P0=tableshudiba;delay1(5);g1=1;P0=tableshu10;g2=0;P0=tableshudish;delay1(5);g2=1;P0=tableshu10;g3=0;P0=tableshudige;delay1(5);g3=1;P0=tableshudi10;g4=0;P0=tableshudidi;delay1(5);g4=1;P0=tableshu10;void biaozhun()if(jin=0)delay1(5);if(jin=0)while(!jin);flag+;if(flag=3)flag=0; /*调幅值*/void tfz()uchar ba,sh,ge,di;if(flag=1) while(1)ba=zuigao/1000;sh=zuigao/100%10;ge=zuigao/10%10;di=zuigao%10;dis(ba,sh,ge,di);if(jia=0)delay1(5);if(jia=0)zuigao=zuigao+10;while(!jia);dis(ba,sh,ge,di);if(jian=0)zuigao=zuigao-10;while(!jian);dis(ba,sh,ge,di);biaozhun();if(flag!=1)break; if(flag=2)while(1)ba=zuidi/1000;sh=zuidi/100%10;ge=zuidi/10%10;di=zuidi%10;dis(ba,sh,ge,di);if(jia=0)delay1(5);if(jia=0)zuidi=zuidi+10;while(!jia);if(jian=0)zuidi=zuidi-10;while(!jian);biaozhun();if(flag!=2)break;void main(void) uchar TL; /储存暂存器的温度低位 uchar TH; /储存暂存器的温度高位 uint TN; /储存温度的整数部分uchar TD; /储存温度的小数部分uchar ba,sh,ge,di,ba1,sh1,ge1,di1;bit flag1; /判断显示正负0负 1正delay1(5); /延时5ms给硬件一点反应时间 while(1) /不断检测并显示温度init();/读温度准备if(flag1=1)dis(ba,sh,ge,di);else dis(11,sh,ge,di); TL=ReadOneChar(); /先读的是温度值低位TH=ReadOneChar(); /接着读的是温度值高位if(TH&0xf8)!=0x00)/判断高五位 得到温度是负flag1=0;TL=TL; /取反TH=TH; /取反TL=TL+1; /低位加1TN=(TH*256+TL)*0.625; /实际温度值10倍=(TH*256+TL)*0.625,if(TN%160=0)TN=TN+160;sh=TN/100%10;ge=TN/10%10;di=TN%10;dis(11,sh,ge,di); /显示温度else/判断高五位 得到温度是正flag1=1;TN=(TH*256+TL)*0.625; /实际温度值10倍=(TH*256+TL)*0.625, /这样前几位是温度的整数部分,最后一位是温度的小数部分ba=TN/1000;sh=TN/100%10;ge=TN/10%10;di=TN%10;dis(ba,sh,ge,di); /显示温度的整数部分 shiwen=TN;biaozhun();tfz();if(flag1=1)dis(ba,sh,ge,di);else dis(11,sh,ge,di);baojing(); 四、 设计制作与检测4.1电路板的设计制作电路板的设计与制作是整个电路制作过程中比较重要的一步,如果电路板做不好,再好的电路设计也不行。下面就对简单电路板的设计及制作过程做一个简单的介绍。1、利用Protel 99SE画原理图。在画原理图的时候为了电路板比较好看,要注意布局,同时还得注意元件封装,命名等。画好原理图后要对其进行电气检测,检查原理图是否有错,同时还要创建网络表为下一步的工作做好准备。2、PCB版图的设计。在对PCB图设计时首先要添加封装库,这样原理图中给予的封装才能有效,然后调入网络表看原理图的封装,命名等是否有错,如果没错便可进行下一步操作。对其进行布线,首先先对布线规则作一些必要的设置,如焊盘的大小,导线的粗细等。做好这些设置后便可进行自动布线,自动布线后如果布线不是很理想还可用手动布线进行手动修改,这样PCB图就画好了。3、电路板的制作。把设计布局好的PCB图打印出来之后,然后进行压板、腐蚀、钻孔。注意,腐蚀之前要检查是否有断线及焊盘的脱落等。4、元件的焊接。元件焊接的时候要先查看跳线,首先焊接所有的跳线,其次再焊接分离元件,最后焊接集成块和外接的引线。当然为了美观在布线中最好不要出现跳线。5、整体检查。查看是否有断线和虚焊等。6、添加程序原理图:PCB:仿真图:4.2电路板的检测4.2.1单片机检测判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V,19脚对地约2.09V。对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和5V连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。4.2.2整机检测首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。安装好硬件,上电,显示正常,达到预期效果。证明显示电路正常。按下复位按键,LED无显示,松开,显示正常,证明复位电路正常。然后测试得到温度程序,将初始化程序,DS18B20正常工作的初始化程序、写DS18B20程序、读DS18B20程序,得到温度子程序,温度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。重新读取源程序,经检查后发现问题在于DS18B20初始化程序有错,修改后重新编译并写入单片机。上电后,显示当前温度。证明温度传感器DS18B20工作正常,各部分子程序运行正常。最后是按键子程序及报警子程序的调试,将按键子程序及报警子程序及上述程序正确编排后,写入单片机中,上电后,各个部分工作正常,在测得当前温度超出设定温度上下限后,蜂鸣器发出报警声,调试基本成功。但后来发现,按键要在按下1S后才反应,再次研读程序发现原因在于按键程序采用扫描方式,程序每执行一遍才扫描按键一次。进而到考虑采用中断方式解决此问题,但因为DS18B20正常工作有严格的时序限制,否则不能正常工作,而中断则在很大可能上会影响到DS18B20正常工作。在尝试并采用中断方式却失败后,决定仍采用扫描方式。后来仔细排查发现按键反应迟缓是由于显示程序占用时间过长造成的,修改显示程序并且在主程序和按键子程序中增加调用显示程序的次数,问题得以解决。至此,此次设计的调试部分完成。设计的所有功能全部得以实现。4.3程序调试4.3.1软件调试软件调试,第一步是在具有汇编软件的主机上和用户系统连接起来,进行调试准备。第二步是单步运行。第三步是系统连调,即进行软件和硬件联合调试。经调试,软件运行良好。4.3.2整机调试首先是测试显示电路的正确性,根据硬件写好一段显示程序,写入单片机中。安装好硬件,上电,显示正常,达到预期效果。证明显示电路正常。按下复位按键,LED无显示,松开,显示正常,证明复位电路正常。 然后测试得到温度程序,将初始化程序,DS18B20正常工作的初始化程序、写DS18B20程序、读DS18B20程序,得到温度子程序,温度转换子程序,数据转换子程序,显示子程序正确编排后写入单片机中,上电,显示不正常。重新读取源程序,经检查后发现问题在于DS18B20初始化程序有错,修改后重新编译并写入单片机。上电后,显示当前温度。证明温度传感器DS18B20工作正常,各部分子程序运行正常。 最后是按键子程序及报警子程序的调试,将按键子程序及报警子程序及上述程序正确编排后,写入单片机中,上电后,各个部分工作正常,在测得当前温度超出设定温度上下限后,蜂鸣器发出报警声,调试基本成功。但后来发现,按键要在按下1S后才反应,再次研读程序发现原因在于按键程序采用扫描方式,程序每执行一遍才扫描按键一次。进而到考虑采用中断方式解决此问题,但因为DS18B20正常工作有严格的时序限制,否则不能正常工作,而中断则在很大可能上会影响到DS18B20正常工作。在尝试并采用中断方式却失败后,决定仍采用扫描方式。后来仔细排查发现按键反应迟缓是由于显示程序占用时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论