《简易数字温度计毕业论文.doc》由会员分享,可在线阅读,更多相关《简易数字温度计毕业论文.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 摘 要在日常生活中,仓库、实验室等一些重要场合对室内温度的要求比较严格,温度过高或者过低都给带来不便,若使用自动控制来检测室内温度,则给生活带来很多方便。本课题是以AT89S52单片机为控制芯片,选用温度传感器DS18B20,实现简易的数字温度计。环境温度的获取通过温度传感器DS18B20,然后传送到单片机处理后送液晶显示。单片机作为主控芯片起到接收信号-处理信号-输出信号的作用。温度精确到十分位。要求温度的测量范围为0.00-99.99度。当温度超过一定值,蜂鸣器响,用按键1和按键2加减设置报警温度,要求独立搭接硬件电路,编写源程序。保证整个系统的正常运行。关键字:DS18B20; AT8
2、9S51单片机; 液晶1602 键入文字AbstractIn daily life, warehouse, lab and so on some important occasions more strict to the requirement of indoor temperature, the temperature too high or too low to bring inconvenience, if use the automatic control to detect the indoor temperature, has caused a lot of convenienc
3、e for life.This topic is based on AT89S52 single chip microcomputer control chip, temperature sensor DS18B20, realize a simple digital thermometer. Environmental temperature acquisition by temperature sensor DS18B20, and then sent to the microcontroller send LCD after processing. Single chip microco
4、mputer as main control chip rise to receive signals - processing - the role of the output signal. Temperature down to the very place. Requirement for temperature measurement range of 0.00 to 99.99 degrees. When the temperature exceeds a certain value, the buzzer sounded, with key 1 and 2 and subtrac
5、t set alarm temperature, independence lap hardware circuit, write the source program. Ensure the normal operation of the whole system.Key words: DS18B20;AT89S51;LCD 1602 桂林电子科技大学课程设计(论文)报告 第 28页共27页 目 录前 言11 背景介绍21.1 设计目的与要求21.2方案论证与比较22 系统硬件设计42.1硬件设计说明42.2 AT89S51单片机简介42.3 硬件电路设计52.4 硬件组成63 系统软件设计
6、103.1 软件总体设计104 系统调试114.1 软件调试114.2 硬件电路114.3 硬件检测134.4 系统源程序145 结论24谢 辞25参考文献26附 录27 前 言本设计为基于单片机8052设计的实时温度采集仪。采用一个以单片机为核心的重小系统。访问系统有:单片机显示器,键盘 、串口通讯、模拟开关、AD转换器等以及整个系统中所要需要的电源组成的一个系统,对于超过此限的温度数据将产生报警信号。近年来,随着大规模集成电路的发展,单片机继续朝快速,高性能方向发展,从位、8位单片机发展到16位,32位单片机。单片机主要用于控制,它的应用领域遍及各行各业,大到航天飞机,小至日常生活中的冰箱
7、、彩电,单片机都可以大显其能。单片机在家用电器业中应用得十分广泛:例如全自动冼衣机、智能玩具;除了上述传统领域外,汽车、电子工业在国外也是单片机应用十分广泛的一个领域。它成本低、集成度高j功耗低、控制功能多、能灵活的组装成各种智能控制装置,由它构成的智能仪表解决了长期以来测量仪器中的误差的修正、线性处理等问题。本文设计的就是利用8052单片机进行管理和控制的,具有能采集并显示温度,对于超出范围的温度发出蜂鸣声警报的温度采集系统。281 背景介绍1.1 设计目的与要求在日常生活中,仓库、实验室等一些重要场合对室内温度的要求比较严格,温度过高或者过低都给带来不便,若使用自动控制来检测室内温度,则给
8、生活带来很多方便。1.1.1 设计目的课程设计是将理论与实践相结合的教学环节,通过综合运用教材及其他资料,使所学知识得到进一步加深和扩展。同时还培养设计能力和解决实际问题能力,进行基本技能的训练, 进一步熟练Altium Disegner DXP,keilC等软件的操作。本设计的目的是在学习51系列单片机的基础上,设计出符合要求的电路,从而实现设计产品的测温及报警功能。1.1.2 主要设计内容及基本要求利用AT89S51单片机,设计测温及报警器。其中主要的外围功能电路有:按键控制电路,时钟部分,复位电路,1602显示电路等。通过对以上各功能的设计,制作出的测温及报警器应具有以下功能:测出温度,
9、并且显示当前温度,保留到小数点后两位,设置报警温度,超过报警温度,蜂鸣器响,课通过按键1和按键2设置报警温度。1.2方案论证与比较(1)温度传感器方案一:PT100温度传感器采用铂金属,它的阻值随温度上升而匀速增长,但是外接硬件电路复杂,需AD转换,测量范围小,精度一般。方案二:采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路
10、连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。 1: 技术性能描述 、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 、测温范围 55+125,固有测温分辨率0.5。 、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 、工作电源: 35V/DC 、在使用中不需要任何外围元件 、 测量结果以912位数字量方式串行传送 、不锈钢保护管直径 6 、适用于DN1525, DN40DN250各种
11、介质工业管道和狭小空间设备测温 、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。(2)单片机 方案二:采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。设计采用AT89S51单片机为主控器,用18B20测温度,输出采用液晶1602。利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的测温及报警功能。系统结构图如下:图1.1系统结构图通过比较以上两种方案,我们采用方案二实现测温及报警的功能。AT89S51作为一个
12、单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能设计电路提供了很好的选择。2 系统硬件设计2.1硬件设计说明单片机是单片微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。在这次设计中,我们用到P0口和P2口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口的驱动能力较强。 设计电路时,18B20一端接在正电源,另一端接地,中间一脚接P3.3口,通过P3.3口传送数据、读数据。通过在程序中对存储器的设置,在加上1602电路的设计,就可以在1602上分别显示当前温度
13、和报警温度。在显示方面,可以用液晶显示,也可以用数码管进行显示。由于数码管布线不好布,我们采用液晶进行显示。这样既节约了成本,又可以达到显示的目的。我们还设计了控制按键,能够很好的对报警温度进行设置。2.2 AT89S51单片机简介AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器, 128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。P0口有二个功能:1 外部扩展存储器时,当做数据/地址总线。2 不扩展时,可做
14、一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。P1口只做I/O口使用:其内部有上拉电阻。 P2口有两个功能: 1 扩展外部存储器时,当作地址总线使用。 2 做一般I/O口使用,其内部有上拉电阻。 P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。图2.1 AT89S51引脚图 图2.2 AT89S51封装图设计中用到的单片机各管脚(图2.1)功能介绍如下:VCC:接+5V电源。VSS:接地。时钟引脚:XTAL1和XTAL2两端接晶振和30PF的电容,构成时钟电路。它可以使单片机稳定可靠的运行。RST:复位信号输入端,高电
15、平有效。当在此引脚加两个机器周期的高电平时,就可以完成复位操作。P0.3:报警温度加键。P0.4:报警温度减键。P3.3:接18B20数据脚。P0口接液晶控制脚,P2口接液晶数据脚。P3.6:接蜂鸣器。2.3 硬件电路设计 一上电就能显示当前温度,还显示报警温度,通过按键1和按键2增减报警温度。下图是通过在Keil C中编译通过,并生成Hex文件,Altium Disegner DXP中整体硬件原理图: 图2.3硬件原理图2.4 硬件组成硬件组成主要包括:指示灯电路、蜂鸣器电路、复位电路、时钟电路、按键电路、显示电路。2.4.1 指示灯电路指示灯亮,说明供电正常。图2.4指示灯电路原理图2.4
16、.2 蜂鸣器电路 通过给P3.6口低电平,三极管导通,电流放大,驱动蜂鸣器,蜂鸣器响。图2.5蜂鸣器电路原理图2.4.3 复位电路单片机的复位是由外部的复位电路实现的, 复位电路通常采用上电自动复位和按钮复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。除了上电复位外还需要按键手动复位(图2.8)。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源VCC接通而实现的。单片机的复位速度比外围I/O接口电路为能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。图2.6复位电路2.4.5 时钟电路MCS-51单片机的各功能部件都是以时钟控制信号为基
17、准,内部电路在时钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。其实只需在时钟引脚连接上外围的定时控制元件,就可以构成一个稳定的自激振荡器。为更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装得与单片机芯片靠近。本设计中使用的振荡电路,由12MHZ晶体振荡器和两个约30PF的电容组成,在XTAL1和XTAL2两端跨接晶体,电容的大小不会影响振荡频率的高低。在整个系统中为系统各个部分提供基准频率,以防因其工作频率不稳定而造成相关设备的工作频率不稳定,晶振可以在电路中产生振荡
18、电流,发出时钟信号。如图2.7所示。图2.7时钟电路2.4.6 按键电路按键1接P0.3口,按下报警温度加1,按键2接P0.4口,按下报警温度减1。图2.8 按键电路2.4.7 显示电路 图2.9 1602显示电路 3系统软件设计3.1 软件总体设计51单片机的程序设计语言主要有两种:一是汇编程序设计;二是C语言编程设计。两种程序设计语言都有各自的优点。用汇编语言编写和高级语言(C语言)比较起来节省空间,这样对于存储空间仅4Kb的芯片来说是极之有利的,51单片机能更高速的运行。C语言编写的程序,虽然不象汇编那样速度快、但程序简单易行、并且需要较小的存储空间。C语言作为一种编译型程序设计语言,它
19、兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的主流。本设计就是采用C语言编写的,由于采用模块化操作,使得程序在修改,执行的时候显得方便易行。3.2 系统程序设计本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用各个子程序的方法,使程序通俗易懂,我们设计了整体程序流程图。在main函数编写开始,要进行初始化,包括对系统初始化和对存储器初始化,要对硬件设备进行初始化,并使硬件处于就绪状态。通过判断是否计费,调价,清零等状态
20、,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。这些对应于硬件就是通过按下各个控制开关,来分别进行不同的动作,最后数码管根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时输入信息控制输出信息的目的。整个程序的流程图如下:图3.1系统程序流程图4 系统调试系统调试包括软件调试和硬件调试。硬件调试的任务是排除所焊接电路故障。软件调试是利用开发工具进行在线仿真调试。调试的一般过程如图4.1所示:图4.1 系统调试流程图系统调试的一般过程是上电运行后观察其运行状态,数码管是否点亮等。软件调试先是各个模块、各个子程序分别调试,最后进行系统联机调试。4.1 软件调试4.1
21、.1 编程工具C51语言8051单片机的应用程序设计,使用C51语言进行程序设计虽然相对于汇编语言代码效率有所下降,但可以方便地实现程序设计模块化,代码结构清晰、可读性强,易于维护、更新和移植,适合较大规模的单片机程序设计。近年来,随着C51语言的编译器性能的不断提高,在绝大多数应用环境下,C51程序的执行效率已经非常接近汇编语言,因此,使用C51进行单片机程序设计已经成为单片机程序设计的主流选择之一。4.1.2 程序调试工具KEIL本设计的软件都是在 Keil Vision 7.5上进行编写,编译,调试以及运行操作。4.2 硬件电路设计的目的是做出实用的实物,把所用的元器件焊接成能正常工作的
22、实物。4.2.1 电路元件检测在焊接电路前,首先要进行元器件的检测。检测主要是测出各个元器件的型号。对于数码管的检测在显示电路中已介绍。识别电阻时可根据各环的数量级和色码表,判断电阻的阻值。排阻是将多个电阻集中封装在一起,组合制成的。排阻具有装配方便、安装密度高等优点。常用排阻有A型和B型。A型排阻的引脚总是奇数的。它的左端有一个公共端(用白色的圆点表示),常见的排阻有4、7、8个电阻,所以引脚共有5或8或9个。B型排阻的引脚总是偶数的。它没有公共端,常见的排阻有4个电阻,所以引脚共有8个。排阻的阻值读法如下:“103”表示:10k,“510”表示:51。以此类推。对于集成芯片的检测,就是根据
23、它的管脚图,来识别各个引脚,以方便焊接。4.2.2 元件的焊接方法手工焊接是传统的的焊接方法,虽然批量电子产品生产已较少采用手工焊接了,但在电子产品的维修、调试中不可避免地还会用到手工焊接。焊接质量的好坏直接影响到维修效果。手工焊接是一项实践性很强的技能,在了解一般方法后,要多练;多实践,才能有较好的焊接质量。手工焊接握电烙铁的方法,有正握、反握及握笔式三种。焊接元器件及维修电路板时以握笔式较为方便。 一、手工焊接一般分四步骤进行准备焊接:清洁被焊元件处的积尘及油污,再将被焊元器件周围的元器件左右掰一掰,让电烙铁头可以触到被焊元器件的焊锡处,以免烙铁头伸向焊接处时烫坏其他元器件。焊接新的元器件
24、时,应对元器件的引线镀锡。加热焊接:将沾有少许焊锡和松香的电烙铁头接触被焊元器件约几秒钟。若是要拆下印刷板上的元器件,则待烙铁头加热后,用手或镊子轻轻拉动元器件,看是否可以取下。清理焊接面:若所焊部位焊锡过多,可将烙铁头上的焊锡甩掉(注意不要烫伤皮肤,也不要甩到印刷电路板上!),用光烙锡头沾些焊锡出来。若焊点焊锡过少、不圆滑时,可以用电烙铁头蘸些焊锡对焊点进行补焊。检查焊点:看焊点是否圆润、光亮、牢固,是否有与周围元器件连焊的现象。 二、焊接质量不高的原因 手工焊接对焊点的要求是:电连接性能良好;有一定的机械强度;光滑圆润。 造成焊接质量不高的常见原因是:焊锡用量过多,形成焊点的锡堆积;焊锡过
25、少,不足以包裹焊点。冷焊。焊接时烙铁温度过低或加热时间不足,焊锡未完全熔化、浸润、焊锡表面不光亮(不光滑),有细小裂纹(如同豆腐渣一样!)。夹松香焊接,焊锡与元器件或印刷板之间夹杂着一层松香,造成电连接不良。若夹杂加热不足的松香,则焊点下有一层黄褐色松香膜;若加热温度太高,则焊点下有一层碳化松香的黑色膜。对于有加热不足的松香膜的情况,可以用烙铁进行补焊。对于已形成黑膜的,则要吃净焊锡,清洁被焊元器件或印刷板表面,重新进行焊接才行。焊锡连桥。指焊锡量过多,造成元器件的焊点之间短路。这在对超小元器件及细小印刷电路板进行焊接时要尤为注意。焊剂过量,焊点周围松香残渣很多。当少量松香残留时,可以用电烙铁
26、再轻轻加热一下,让松香挥发掉,也可以用蘸有无水酒精的棉球,擦去多余的松香或焊剂。焊点表面的焊锡形成尖锐的突尖。这多是由于加热温度不足或焊剂过少,以及烙铁离开焊点时角度不当造成的。三、易损元器件的焊接 易损元器件是指在安装焊接过程中,受热或接触电烙铁时容易造成损坏的元器件,例如,有机铸塑元器件、MOS集成电路等。易损元器件在焊接前要认真作好表面清洁、镀锡等准备工作,焊接时切忌长时间反复烫焊,烙铁头及烙铁温度要选择适当,确保一次焊接成功。此外,要少用焊剂,防止焊剂侵入元器件的电接触点(例如继电器的触点)。焊接MOS集成电路最好使用储能式电烙铁,以防止由于电烙铁的微弱漏电而损坏集成电路。由于集成电路
27、引线间距很小,要选择合适的烙铁头及温度,防止引线间连锡。焊接集成电路最好先焊接地端、输出端、电源端,再焊输入端。对于那些对温度特别敏感的元器件,可以用镊子夹上蘸有元水乙醇(酒精)的棉球保护元器件根部,使热量尽量少传到元器件上。焊接过程要遵循以下原则:焊接原则是先焊接小的元件,再焊接大的。焊接过程要掌握烙铁的温度,以免温度过高损坏元器件。焊接过程中要特别注意的几点:(1)在焊接多引脚元件时最好焊接一个底座,这样可以避免器件烧坏。(2)51单片机引脚较多,它与外围电路连接时,要特别注意,以免连焊、虚焊。(3)有极性的电解电容,要注意其极性。(4)焊接前先弄清各芯片引脚排列方式。4.3 硬件检测设计
28、的过程中,对硬件的检测和对软件的测试都不能忽略,因为在系统的仿真过程中。各元件都是理想的,而在设计实际电路时,就需要多方面考虑。要先对元件进行检测,然后进行调试。例如如果在设计中不加任何驱动,在仿真软件中仍然可以正常计价,但是在具体硬件焊接时,需要考虑电路的驱动能力。 在已经焊接好的电路板上,要对其各个元器件进行检查。一般情况下,集成电路不会出现故障。在本设计中采用了先焊接插槽的方法,这可以避免一些元件在焊接的过程中被烧坏。另外在焊接数码管时,要先排线,再焊接以免线路混乱。元件在选购时需要多备选元件,元件的型号较多,产品质量没有可靠保证,就避免不了我们买的元器件是损坏的,再加上焊接是在万能板上
29、焊接的。就有可能发生虚焊,短路等情况的发生。所以,在焊接好每个元件后都要进行检测,以保证焊接无误。焊接好电路板,把相应的芯片插到对应的插槽中,再检一次,看芯片是否与插槽接触良好。 显示部分检测的目的是看数码管是否能够正常显示。如果不该亮的字段点亮,检测是因否有短路的情况;如果数码管不显示,说明位选端可能没有焊好;如果显示不够亮,则应该检查驱动电路。晶振部分使用示波器查看波形。如果出现看不到12MHZ的正弦波形的现象,说明此部分电路不正常。 4.4 系统源程序#include reg52.h#include intrins.hsbit DQ=P33;sbit lcden=P05;sbit lcd
30、rw=P06;sbit lcdrs=P07;sbit beep=P36;sbit key1=P03;sbit key2=P04;unsigned char code table1=the temperature:;unsigned char time,temp;float wendu;unsigned char H=25;void Delayus(unsigned char xus);void Delayms(unsigned char xms);void BEEP();bit DS18B20_Init();void DS18B20_Writebyte(unsigned char dat);u
31、nsigned char DS18B20_Readbyte();float DS18B20();void LCD1602_Writecom(unsigned char com);void LCD1602_Writedat(unsigned char dat);void LCD1602_Init();void LCD1602_Display();void LCD1602_Display1();void temperature();void LCD1602_display(unsigned char add,unsigned char dat);void keyscan();void alarm(
32、);void main() unsigned char dat; LCD1602_Init();dat=DS18B20();while(1) Delayms(1000); temperature(); /LCD1602_Display1(); keyscan(); alarm();/*延时us函数*/void Delayus(unsigned char xus) /调用此函数24us,每循环一次16us unsigned char i;for(i=0;ixus;i+);/*延时ms函数*/void Delayms(unsigned char xms) /调用此函数1ms unsigned ch
33、ar i,j; for(i=0;i110;i+) for(j=0;jxms;j+);/*beep函数*/void BEEP() beep=0; Delayms(200); beep=1; Delayms(10);/*/*DS18B20复位*/bit DS18B20_Init() bit flag; DQ=1;Delayus(1); DQ=0;Delayus(100);DQ=1;Delayus(10); flag=DQ;Delayus(100);return(flag);/*/*DS18B20读时序*/ void DS18B20_Writebyte(unsigned char dat) unsi
34、gned char i; for(i=0;i=1;/Delayus(10); /*/*DS18B20写时序*/unsigned char DS18B20_Readbyte() unsigned char value,i,j; for(i=0;i8;i+) DQ=1; _nop_(); DQ=0; _nop_(); DQ=1; for(j=0;j=1; if(DQ=1) value=value|0x80; else value=value|0x00; Delayus(2); return(value); /*/*DS18B20函数*/float DS18B20() / float wendu;
35、unsigned int temp; unsigned char H_bit,L_bit; while(DS18B20_Init(); DS18B20_Writebyte(0xCC); DS18B20_Writebyte(0x44); Delayms(2000); while(DS18B20_Init(); DS18B20_Writebyte(0xCC); DS18B20_Writebyte(0xBE); H_bit= DS18B20_Readbyte(); L_bit= DS18B20_Readbyte(); temp= L_bit8 ; temp= H_bit|temp ;/ wendu=
36、 temp*0.0625; return(wendu);/*/*LCD160写指令*/ void LCD1602_Writecom(unsigned char com) lcdrw=0;lcdrs=0;P2=com; Delayus(2); lcden=1; Delayus(2);lcden=0;/*/*LCD1602写数据*/ void LCD1602_Writedat(unsigned char dat) lcdrw=0; lcdrs=1; P2=dat; Delayus(2); lcden=1; Delayus(2); lcden=0;/*/*LCD1602初始化*/ void LCD1
37、602_Init() LCD1602_Writecom(0x38); LCD1602_Writecom(0x0c); LCD1602_Writecom(0x06); LCD1602_Writecom(0x01);/*/*LCD1602显示*/ void LCD1602_Display() unsigned char i; LCD1602_Writecom(0x80); for(i=0;i16;i+) LCD1602_Writedat(table1i);/*/*LCD1602显示单个字符*/ void LCD1602_display(unsigned char add,unsigned char
38、 dat) LCD1602_Writecom(add); LCD1602_Writedat(dat);/*/*温度显示*/void temperature() floattemp; unsigned char shi,ge,shifen,baifen; unsigned int temp1 ; LCD1602_Display(); temp=DS18B20(); temp1= temp*100; shi= temp1/1000; ge= temp1%1000/100; shifen= temp1%1000%100/10; baifen= temp1%1000%100%10; LCD1602_d
39、isplay(0x80+0x40,shi+0x30); LCD1602_display(0x80+0x41,ge+0x30); LCD1602_display(0x80+0x42,.); LCD1602_display(0x80+0x43,shifen+0x30); LCD1602_display(0x80+0x44,baifen+0x30); LCD1602_display(0x80+0x45,0xdf); LCD1602_display(0x80+0x46,C); /*/*报警检测*/void alarm() unsigned char shi,ge; shi=H/10; ge=H%10; LCD1602_display(0x80+0x4A,0x30+shi); LCD1602_display(0x80+0x4B,0x30+ge); LCD1602_display(0x80+0x4C,0xdf); LCD1602_display(0x80+0x4D,C); /*/*按键扫描*/void ke
限制150内