• 2.27 MB
  • 2022-08-08 发布

[工学]单片机课程设计 盐城工学院

  • 30页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
盐城工学院课程设计说明书(2012)单片机课程设计说明书用数码管和DS18B20设计温度报警器专业电气工程及其自动化学生姓名张舒辉班级B电气092学号0910601202指导教师陆广平完成日期2012年6月15日27\n盐城工学院课程设计说明书(2012)27盐城工学院课程设计说明书(2012)目录1概述12温度报警器的基本原理22.1单片机STC89C5222.2温度传感器DS18B2052.2.1DS18B20测温原理62.2.2DS18B20注意事项73温度报警器的硬件设计83.1单片机最小系统93.2显示电路103.3温度检测电路113.4温度报警电路124软件设计134.1主程序模块134.2温度检测模块144.3报警模块154.4中断设定模块155总结17参考文献17附录:18附录1:用数码管和DS18B20设计温度报警器的源程序18附录2:用数码管和DS18B20设计温度报警器的proteus仿真图24附录3:用数码管和DS18B20设计温度报警器的实物图24附录4:用数码管和DS18B20设计温度报警器的PCB图26附录5:用数码管和DS18B20设计温度报警器的元器件目录表2727\n盐城工学院课程设计说明书(2012)1概述随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。  现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:①传统的分立式温度传感器②模拟集成温度传感器③智能集成温度传感器。目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(STCE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。单片机技术作为计算机技术的一个分支,广泛地应用于工业控制,智能仪器仪表,机电一体化产品,家用电器等各个领域。单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同种类的传感器,可实现诸如电压、湿度、温度、速度、硬度、压力等的物理量的测量。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器使用STCMEL公司的STC89C52单片机,测温传感器使用DALLAS公司DS18B20,用LCD来实现温度显示。但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。27\n盐城工学院课程设计说明书(2012)2温度报警器的基本原理本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:1利用温度传感器(DS18B20)测量某一点环境温度2测量范围为-55℃~+125℃,精度为±0.5℃3用LED进行实际温度值显示4温度低于—20℃度或高于70℃蜂鸣器报警采用STC89C52单片机P3.6口控制温度传感器DS18B20的温度测量,以六位数码管形式输出测量温度。采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0—100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器STC89C52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外STC89C52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用STC89C52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。2.1单片机STC89C52STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用STC公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器8K27\n盐城工学院课程设计说明书(2012)字节在系统可编程FlashSTC89C52图2.1单片机1.P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。2.P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。具体如下所示:在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)27\n盐城工学院课程设计说明书(2012)P1.5MOSI(在系统编程用)  P1.6MISO(在系统编程用)  P1.7SCK(在系统编程用)3.P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。  在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。4.P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。  P3口亦作为STC89C52特殊功能(第二功能)使用,如下所示。  在flash编程和校验时,P3口也接收一些控制信号。  端口引脚第二功能  P3.0RXD(串行输入口)  P3.1TXD(串行输出口)  P3.2INTO(外中断0)  P3.3INT1(外中断1)  P3.4TO(定时/计数器0)  P3.5T1(定时/计数器1)  P3.6WR(外部数据存储器写选通)  P3.7RD(外部数据存储器读选通)5.RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 6.ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 7.27\n盐城工学院课程设计说明书(2012)PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 8.EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp2.2温度传感器DS18B20DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20的性能特点如下:1.独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯2.DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温3.DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内4.适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电5.温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃27\n盐城工学院课程设计说明书(2012)图2.1外部封装形式图2.2传感器电路2.2.1DS18B20测温原理DS18B20的测温原理如图2所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温图2中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。27\n盐城工学院课程设计说明书(2012)另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。图2.2.1DS18B20测温原理图2.2.2DS18B20注意事项DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。在实际使用中发现,应使电源电压保持在5V左右,若电源电压过低,会使所测得的温度精度降低。1.效果。在使用PL/M、C等高级语言进行的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结系统程序设计时,对DS1820操作部分最好采用汇编语言实现。2.在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20超过827\n盐城工学院课程设计说明书(2012)个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。3.在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。3温度报警器的硬件设计温度计电路设计原理图如图3.1所示,控制器使用单片机STC89C52,温度计传感器使用DS18B20,用液晶实现温度显示。本温度计大体分三个工作过程。首先,由DS18B20温度传感器芯片测量当前的温度,并将结果送入单片机。然后,通过STC89C52单片机芯片对送来的测量温度读数进行计算和转换,井将此结果送入液晶显示模块。最后,数码管显示温度数据。由图1可看到,本电路主要由DS18820温度传感器芯片、数码管显示模块和STC89C52单片机芯片组成。其中,DS18B20温度传感器芯片采用“一线制”与单片机相连,它独立地完成温度测量以及将温度测量结果送到单片机的工作。27\n盐城工学院课程设计说明书(2012)图3.1温度报警器电路设计原理图3.1单片机最小系统单片机STC89C52具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很合适携手特式产品的使用。主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。27\n盐城工学院课程设计说明书(2012)图3.2单片机最小系统图3.2显示电路显示电路采用六个共阴极数码管显示。27\n盐城工学院课程设计说明书(2012)3.3温度检测电路DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到27\n盐城工学院课程设计说明书(2012)E2PROM时),同时芯片的性能也有所降低。因此,在条件允许的场合,尽量采用外供电方式。无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电。在这里采用前者方式供电。DS18B20与芯片连接电路如图3.1所示:图3.3DS18B20与单片机的连接3.4温度报警电路本设计采软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过获低于所预设的温度时,数据口相应拉高电平,报警输出。(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM的内容是否与预设一样,如不一样,则发光报警)报警电路硬件连接见图3.2。27\n盐城工学院课程设计说明书(2012)图3.4蜂鸣器电路连接图4软件设计4.1主程序模块主程序需要调用4个子程序,分别为数码管显示程序,温度测试及处理子程序,报警子程序,中断设定子程序。各模块程序功能如下:1.数码管显示程序:向数码的显示送数,控制系统的显示部分。2.温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。3.报警子程序:进行温度上下限判断及报警输出。4.中断设定程序:实现设定上下限报警功能。27\n盐城工学院课程设计说明书(2012)图4.2主程序流程图4.2温度检测模块DS18B20在单片机控制下分三个阶段:1.18B20初始化:初始化2.读18B20时序:读DS18B203.写18B20时序:写18B20图4.3读DS18B20流程图27\n盐城工学院课程设计说明书(2012)4.3报警模块图4.3报警模块子程序流程图4.4中断设定模块当设计需要实现上下限报警时,利用INT0口进行中断,set键进行上下限报警温度设定,进入温度设定状态后(按一下温度设定键),首先会提示显示“UP”字母,表示要用户设定高温报警温度,按S3键,表示本位数字+1,按S4表示移向下一位,如果4位高温设定完毕,则显示“DO”,表示要用户设定低温报警温度。4位低温设定完毕,如果用户设置的高温比设定的低温高的话则显示“ERRO”表示错误提示,同时会有蜂鸣器及时报警提示,然后自动显示“UP”27\n盐城工学院课程设计说明书(2012),让用户重新进行温度设定。中断设定子程序流程图见下图27\n盐城工学院课程设计说明书(2012)5总结经过将两周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。在电路设计的时候总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。参考文献[1]李朝青.单片机原理及接口技术.北京航空航天大学出版社,2005[2]马忠梅等.单片机的C语言应用程序设计(第4版),2007[3]江世明.基于Proteus的单片机应用技术.电子工业出版社,2009[4]彭伟.单片机C语言程序设计实训100例.电子工业出版社,200927\n盐城工学院课程设计说明书(2012)附录:附录1:用数码管和DS18B20设计温度报警器的源程序#include#include#defineuintunsignedint#defineucharunsignedcharsbitDQ=P3^6;sbitBEEP=P3^7;sbitHI_LED=P1^4;sbitLO_LED=P1^5;ucharcodeDSY_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};ucharcodedf_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};charAlarm_Temp_HL[2]={70,-20};ucharCurrentT=0;ucharTemp_Value[]={0x00,0x00};ucharDisplay_Digit[]={0,0,0,0};bitDS18B20_IS_OK=1;bitHI_Alarm=0,LO_Alarm=0;uintTime0_Count=0;voidDelay(uintx){while(--x);}27\n盐城工学院课程设计说明书(2012)ucharInit_DS18B20(){ucharstSTCus;DQ=1;Delay(8);DQ=0;Delay(90);DQ=1;Delay(8);stSTCus=DQ;Delay(100);DQ=1;returnstSTCus;}ucharReadOneByte(){uchari,dSTC=0;DQ=1;_nop_();for(i=0;i<8;i++){DQ=0;dSTC>>=1;DQ=1;_nop_();_nop_();if(DQ)dSTC|=0x80;Delay(30);DQ=1;}returndSTC;}voidWriteOneByte(uchardSTC){uchari;for(i=0;i<8;i++){DQ=0;DQ=dSTC&0x01;Delay(5);DQ=1;dSTC>>=1;}}voidRead_TemperSTCure()27\n盐城工学院课程设计说明书(2012){if(Init_DS18B20()==1)DS18B20_IS_OK=0;else{WriteOneByte(0xCC);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0xBE);Temp_Value[0]=ReadOneByte();Temp_Value[1]=ReadOneByte();Alarm_Temp_HL[0]=ReadOneByte();Alarm_Temp_HL[1]=ReadOneByte();DS18B20_IS_OK=1;}}voidSet_Alarm_Temp_Value(){Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0x4E);WriteOneByte(Alarm_Temp_HL[0]);WriteOneByte(Alarm_Temp_HL[1]);WriteOneByte(0x7F);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0x48);}voidDisplay_TemperSTCure(){27\n盐城工学院课程设计说明书(2012)uchari;uchart=150;ucharng=0,np=0;charSigned_Current_Temp;if((Temp_Value[1])&0xF8==0xF8){Temp_Value[1]=~Temp_Value[1];Temp_Value[0]=~Temp_Value[0]+1;if(Temp_Value[0]==0x00)Temp_Value[1]++;ng=1;np=0xFD;}Display_Digit[0]=df_Table[Temp_Value[0]&0x0F];CurrentT=((Temp_Value[0]&0xF0)>>4)|((Temp_Value[1]&0x07)<<4);Signed_Current_Temp=ng?-CurrentT:CurrentT;HI_Alarm=Signed_Current_Temp>=Alarm_Temp_HL[0]?1:0;LO_Alarm=Signed_Current_Temp<=Alarm_Temp_HL[1]?1:0;Display_Digit[3]=CurrentT/100;Display_Digit[2]=CurrentT%100/10;Display_Digit[1]=CurrentT%10;if(Display_Digit[3]==0){Display_Digit[3]=10;np=0xFB;if(Display_Digit[2]==0){Display_Digit[2]=10;np=0xF7;}}for(i=0;i<30;i++)27\n盐城工学院课程设计说明书(2012){P0=0x39;P2=0x7F;Delay(t);P2=0XFF;P0=0x63;P2=0xBF;Delay(t);P2=0XFF;P0=DSY_CODE[Display_Digit[0]];P2=0xDF;Delay(t);P2=0xFF;P0=(DSY_CODE[Display_Digit[1]])|0x80;P2=0xEF;Delay(t);P2=0xFF;P0=DSY_CODE[Display_Digit[2]];P2=0xF7;Delay(t);P2=0xFF;P0=DSY_CODE[Display_Digit[3]];P2=0xFB;Delay(t);P2=0xFF;if(ng){P0=0x40;P2=np;Delay(t);P2=0xFF;}}}voidT0_INT()interrupt1{TH0=-1000/256;TL0=-1000%256;BEEP=!BEEP;if(++Time0_Count==400){Time0_Count=0;if(HI_Alarm)HI_LED=~HI_LED;elseHI_LED=1;if(LO_Alarm)LO_LED=~LO_LED;elseLO_LED=1;}}27\n盐城工学院课程设计说明书(2012)voidmain(void){IE=0x82;TMOD=0x01;TH0=-1000/256;TL0=-1000%256;TR0=0;HI_LED=1;LO_LED=1;Set_Alarm_Temp_Value();Read_TemperSTCure();Delay(50000);Delay(50000);while(1){Read_TemperSTCure();if(DS18B20_IS_OK){if(HI_Alarm==1||LO_Alarm==1)TR0=1;elseTR0=0;Display_TemperSTCure();}else{P0=P2=0x00;}}}27\n盐城工学院课程设计说明书(2012)附录2:用数码管和DS18B20设计温度报警器的proteus仿真图附录3:用数码管和DS18B20设计温度报警器的实物图27\n盐城工学院课程设计说明书(2012)27\n盐城工学院课程设计说明书(2012)附录4:用数码管和DS18B20设计温度报警器的PCB图27\n盐城工学院课程设计说明书(2012)附录5:用数码管和DS18B20设计温度报警器的元器件目录表器件名称参数元件数量STC89C52RC单片机—1蜂鸣器有源1数码管六位一体、共阴极1按钮—1电阻—5排阻—1电解电容10uF127\n盐城工学院课程设计说明书(2012)瓷片电容30pF2晶振11.0592MHz1DS18B20—1LED发光二极管—3三极管PNP1杜邦线—1USB接口—127

相关文档