基于51单片机的通风电路的设计

上传人:Bod****ee 文档编号:47492913 上传时间:2018-07-02 格式:DOC 页数:39 大小:896.03KB
返回 下载 相关 举报
基于51单片机的通风电路的设计_第1页
第1页 / 共39页
基于51单片机的通风电路的设计_第2页
第2页 / 共39页
基于51单片机的通风电路的设计_第3页
第3页 / 共39页
基于51单片机的通风电路的设计_第4页
第4页 / 共39页
基于51单片机的通风电路的设计_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《基于51单片机的通风电路的设计》由会员分享,可在线阅读,更多相关《基于51单片机的通风电路的设计(39页珍藏版)》请在金锄头文库上搜索。

1、阳泉职业技术学院毕业设计说明书毕业生姓名:钟毅芳专业:应用电子技术学号:080724015指导教师:乔永凤所属系(部):信息系二一一年五月阳泉职业技术学院毕业论文评阅书题目: 基于51单片机的通风电路设计 信息 系 应用电子技术 专业 姓名钟毅芳 设计时间:2011 年3月7 日2011 年5月16日 评阅意见:成绩: 指导教师:(签字) 职务:2011年月日阳泉职业技术学院毕业论文答辩记录卡 信息 系 应用电子技术 专业 姓名 钟毅芳答 辩 内 容问 题 摘 要评 议 情 况 记录员: (签名)成 绩 评 定指导教师评定成绩答辩组评定成绩综合成绩注:评定成绩为100分制,指导教师为30%,答

2、辩组为70%。 专业答辩组组长:(签名) 2011年月日摘要本设计采用STC89S51单片机为控制核心,电机的硬件驱动采用ULN2003芯片,由单片机输出信号控制电机转动,利用温度传感器模块实现智能检测当前环境温度,整个系统的电路结构简单,可靠性高。设计测试结果满足要求,设计原理简明,方案正确。关键词:通风系统 STC89S51 ULN2003驱动 自动测温AbstractThe design for the control of single-chip core STC89C51, electrical hardware drivers using the ULN2003 chip, sin

3、gle-chip output by the PWM control of motor speed, the use of infrared detection module bus intelligent automatic tracing, the circuit structure of the whole system is simple, high reliability. Experimental test results meet the requirements, design principles of simplicity, the program correctly.Ke

4、yword: Intelligent ventilation system STC89S51 ULN2003 Automatic temperature目 录摘要I引言IV1 方案的选择及认证11.1电源方案选择11.2测温传感器模块11.3显示模块11.4电机驱动模块的选择22 硬件系统设计与电路设计22.1通风电路组成框图22.2STC89C51单片机硬件结构32.3最小应用系统设计32.3.1时钟电路42.3.2复位电路42.4温度测量电路单元模块设计52.5电机驱动单元模块设计82.6液晶LCD1602显示模块硬件电路设计103 软件设计103.1软件程序设计103.2主程序流程图11

5、3.3读取温度流程图113.4温度报警控制电机流程图123.5液晶LCD1602显示温度133.6报警温度上下限设置和按键处理14结论15致谢16参考文献17附件1.通风电路主板、串口的原理图18附件2.通风电路主板、串口的PCB图19附件3.程序清单20引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中智能通风系统就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从属于单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的液晶温度控制直流电机与传统的手动控制直流电机及测

6、温电路相比,具有读数方便,显示的信息比较多,测温范围广,测温比较准确,实现了智能化,其输出温度采用液晶1602显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89S51,测温传感器使用DS18B20,用液晶芯片LCD1602实现温度显示,能准确到小数点后一位达到以上要求。单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于STC89S51单片机的测温控制电机风扇系统,详细描述了利用温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的

7、电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要发光报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度比较高、体积小、功耗低环保实惠廉价等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC89S51结合实现最简温度检测系统和具有智能化的控制风扇的开启与关闭,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。1 方案的选择及认证1.1电源方案选择由于本系统需要+5V电源供电,我们考虑了如下几种方案为系统供电。方案1:采用4节1.5V干电池供电,电

8、压达到12V,经7805稳压后给直流电机供电及单片机系统和其他芯片供电。由于干电池电量有限,使用大量的干电池将会给系统调试带来不便,而且电池对环境产生污染源。因此,我们放弃了这种方案。方案2: 采用变压器整流滤波再经过7805稳压稳定后再给直流电机供电及单片机和其他芯片供电,。此方案是自制一个+5v电源,电路比较简单,而且元件也比较廉价,电路板小而易携带。因此,这种方案比较可行,因此我们选择了此方案。综上考虑,我们选择了方案2。1.2测温传感器模块方案1:使用热敏电阻设计由于本设计是测温控制直流电机电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/

9、D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦而且测量的精度不够,抗干扰能力比较差,受各方面因素的影响较多,所以此方案不可取。方案2:使用DS18B20传感器设计采用STC89C51单片机作控制器,温度传感器选用DS18B20来对环境温度采集,测温电路由温度传感器DS18B20实现,本设计所介绍的DS18B20温度采集与传统的热敏电阻之类的利用感温效应相比,具有温度采集数据处理方便,测温范围广,测温准确,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89S51,测温传感器使用DS18

10、B20,用,实现温度显示,能准确达到以上要求。故选择方案二。1.3显示模块方案1:用四位七段数码管,对于数码显示,显示的数据信息比较有限,而且显示的控制比较繁琐,因此我们放弃了这种方案。方案2:用液晶LCD1602显示,可以显示的数据信息比较多,对液晶现实的控制写入比较简单,而且它的价格然我们接受的起,所以我们选择了方案2。1.4电机驱动模块的选择方案1:采用专用芯片L298N作为直流电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率比较高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良,但芯片比较贵。方案

11、2:用分立元件制作直流电机驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中比较广泛。但是这种电路工作性能不够稳定。 方案3:用ULN2003反相器作为直流电机驱动芯片,ULN2003也是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平,当输入端为低电平时ULN2003输出端为高电平,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,而且价格低廉。因此我们选用了方案3。能够较好地满足系统的要求,因此我们选择了此方案。2 硬件系统设计与电路设计硬件设计系统主要包括了测温系统的设计以及单片机应用系统设计。一个单片机应用系统的硬件电路设计主要包含有两

12、部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/计数器中断系统等,当不能满足应用系统的要求时,还必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,并要考虑设计合适的接口电路。2.1通风电路组成框图通风系统的控制核心是STC89S51单片机,系统由测温模块、直流电机驱动模块、LCD显示模块、LED灯光报警指示模块、电源模块等几部分构成。系统框图如图2-1所示。图2-1 通风系统框图2.2STC89C51单片机硬件结构STC89C51单片机是把那些控制应用所必需的基本内容都集成在一个尺寸有限的电路芯片上。如果按照功能的划分

13、,它主要由微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器组成。它们都是通过片内单一总线连接而成,其基本结构仍旧是采用CPU加上外围芯片的传统模式。但对各种功能部件的控制是则采用特殊功能寄存器的集中控制方式。STC89C51单片机的硬件结构具有功能部件种类齐全,功能强等特点。特别值得一提的是该单片机中CPU中的位处理器,它实际上是一个完整的一位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的

14、硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精妙之处。2.3最小应用系统设计STC89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。用STC89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图2-3所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点如下:(1) 有可供用户使用的大量I/O口线。(2) 内部存储器容量有限。(3) 应用系统开发具有特殊性。图2-2 STC89C51单片机最小系统2.3.1时钟电路STC89C51虽然有内部振荡电路,但要形成时钟,必

15、须外部附加电路。STC89C51单片机产生时钟的方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体频率选择11.0592MHz。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在20pF到30pF时振荡器有较高的频率稳定性。所以本设计中,电容选择22pF。在设计印刷电路板时,晶体和电容应尽可能地靠近单片机芯片,以减少寄生

16、电容的产生,更好的保证振荡器稳定和可靠地工作。2.3.2复位电路STC89C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个施密特触发器来抑制噪声,在每个机器周期的S5P2, 复位电路采样施密特触发器的输出电平一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。上电复位电路见图2-4。图2-3 上电复位2.4温度测量电路单元模块设计测温所采用的电路如下图2-5所示:图2-4 测温电路原理我们采用DS18B20温

17、度传感器实物如图2-4-1所示: 图2-4-1-1 ds18b20的8角封装图2-4-1 ds18b20实物DS18B20输出地数据格式说明在下图2-4-2中具体表现出来,其中MS表示数据的高8位,LS表示数据的低8位。由于温度在0以上为正温度,而在0以下为负温度,因此在计算温度时必须在温度转换之前应先对正负数进行判别,然后再进行转换。当S=0时,表示正数;S=1时,表示负数。对于负数,在处理时是采用了“先取反再加一” 即将补码转换为原码的方法。同时,为了提高测量的精度,DS18B20采用了12位数据转换的方式,其中,符号位占l位,整数占7位,小数占4位。因此,在计算与处理时,还必须将整数和小

18、数分开进行处理。通过对百分位数据的“四舍五入”处理。其引脚说明如下表2-4-18引脚SOIC封装TO92符号说明51GND地42DQ数据输入/输出,常态下高电平33VDD可选电源表2-4-1DS18B20的存储器由暂存RAM和非易失的EEPRAM构成。暂存RAM共9个存储单元,其结构图如图2-4-2所示。暂存RAM中TH、TL、配置字节的拷贝。改变TH、TL的值,可以改变DS18B20的上下限的温度。通过设置配置字节的第6 7位,可完成温度值的分辨率的配置。温度值低字节0温度值高字节1TH/用户字节12TL/用户字节23配置字节4保留字节5保留字节6保留字节7CRC8CRC值为前8个字节的校验

19、位。温度值的高低字节位结构如表2-4-2-1:232221202-12-22-32-4 MSb (unit=oc) LSBSSSSS262524 表2-4-2-1本通风系统的温度测量温度显示的整数温度值取值时采取:“高字节的低三位,低字节的高四位”;小数部分:“低字节位的低四位”列表查表。完成DS18B20操作指令集如下列表2-4-2-2:命令说明协议总线数据操作温度转换开始温度转换44H将转换状态发送给主设备读寄存器读所有寄存器,包括CRC字节BEH将9字节的数据发送给主设备写寄存器数据写入寄存器(TH、TL)4EH主设备向ds18b20发送3字节数复制将寄存器TH、TL恢复到EEPROM4

20、8H无回调由EEPROM向寄存器恢复TH、TL和配置寄存器数据B8H将恢复状态发送给主设备读电源读取电源模式B4H向主设备发送电源状态表2-4-2-22.5电机驱动单元模块设计从单片机输出的信号功率很弱,即使在没有其它外在负载时也无法带动电机,所以在实际电路中我们加入了电机驱动芯片用来提高输出电机信号的功率,从而能够根据实际需要来控制电机转动。根据驱动功率大小以及连接电路的简化要求我们选择了ULN2003芯片,其外形、管脚分布如图2-7所示。 图2-5 ULN2003管脚分布图从图中可以知道,一块ULN2003芯片能够驱动两个电机转动,它的使能端可以外接高低电平,也可以利用单片机进行软件控制,

21、极大地满足各种复杂电路需要。另外,ULN2003的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决负载能力不足的问题。电机驱动电路如下图2-8所示。图2-6 电机驱动电路ULN2003的18个引脚接到单片机上,通过对单片机的编程可以实现直流电机正停转的功能。2.6液晶LCD1602显示模块硬件电路设计图2-7 通风系统显示图及仿真效果图3 软件设计3.1软件程序设计在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个对象的实际需要设计应用程序。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字处理、数据变换,显示处理

22、等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出信号,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是完成一定功能,相对独立的程序段。 模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写及调试;(2)模块可以共存,一个模块可以被多个任务在不同条件下调用;3.2主程序流程图主程序流程图3-2如下所示:图3-2程序流程图3.3读取温度流程图测温流程图3-2如下: 图3-2 读取温度流程图 图3-2-1 温度报警的流程图3.4温度报警控制电机流程图温度报警控制流程图如图3-4:报警温度原理图如

23、图3-4-1:图3-4-1 温度报警原理图当温度值大于35度时,电机转动绿灯闪烁报警;当温度大于10度小于35度时,电机停止转动;当温度小于10度时,电机转动,红灯闪烁报警。3.5液晶LCD1602显示温度液晶显示流程图如图3-5:图3-5 液晶LCD1602显示流程图3.6报警温度上下限设置和按键处理 报警温度上下限设置和按键处理流程图如下图3-6-1 按键处理 图3-6-2 报警温度上下限设置 结论本设计通风控制系统经过论证,证明运行可靠,操作方便,节省人力投入,提高了自动化控制水平和工作效率,方便了调试和维护,符合智能通风技术的要求,真正做到既经济又实用的控制目的,具有推广价值。随着生活

24、水平的提高,人们对室内空气的要求已从保暖降温发展到要求高品质。在自然通风达不到要求时,强制通风的空气质量控制系统则成为建筑必不可少的设施,而这方面我国才刚刚起步,中低端市场更是空白。本设计已成功地应用于车间的通风机控制中,应用前景广阔,可以大量推广到需要低成本通风系统的场合,如学校、医院、家庭、商场及工厂等。致谢在这段时间里,乔老师严谨的治学态度和热忱的工作作风令我十分钦佩,她的指导使我们受益匪浅。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力

25、、不断完善。这段时间的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于自身水平有限,设计过程中存在了一些不足之处,敬请各位老师批评指正。参考文献1 王靖,胡特,谢玉川等.现代住宅室内通风方式探讨.制冷与空调.2003(2).2 侯哲生,李聪,张伏等.基于单片机的通风机控制器的设计.2005-09-13.3 王成福,赵云等.一种简单的实用LCD数显温度计.2002.4 宋亚伟,李恒宗.基于DS18B20的温度采集控制电路.2008,3,7(9).5 肖晴.液晶显示温度的控制.2005(2). 6 沈兰宁.窗户自动控制管理系统的控制与设计.2009(22).7 张菁.

26、基于单片机温度控制系统方案的研究.2007(9).8 党峰,王敬农,高国旺.基于DS18B20的数字式温度计的设计.2007(3).附件1.通风电路主板、串口的原理图主板的电路图电源及串口电路图附件电路图4 LCD显示模块电路图附件2.通风电路主板、串口的PCB图附件3.程序清单#include #include #define uchar unsigned char#define uint unsigned intvoid delayNOP() _nop_();_nop_();_nop_();_nop_();ucharflag=0; /按键标识符sbit DQ = P33; /温度传感器数据

27、口sbit LCD_RS = P12; sbit LCD_RW = P11;sbit LCD_EN = P10;sbit Forward=P13;/高温报警sbit Stop=P11; sbit Reveral=P15;/低温报警sbit MA = P25; /电机驱动sbitbeep=P27;/蜂鸣器报警sbitbutton=P26; /按键sbitk1=P20; sbitk2=P21; sbitk3=P22;sbitk4=P23;ucharcodespeak=Hot temp !;ucharcodespeak1=cold temp !;uchar code helloword=Wellco

28、me you !;uchar code helloword1=Temperature test ;uchar code helloword2=The test is end ;uchar code Temp_Disp_Title = Current Temp : ;uchar Current_Temp_Display_Buffer= TEMP: ;ucharalarm=HI: LOW: ;ucharalarm_temp2=15,10;uchargao,di;uchar ng = 0;/负温度标识符/温度字符uchar code Temperature_Char8 = 0x0C,0x12,0x1

29、2,0x0C,0x00,0x00,0x00,0x00; /温度小数位对照表 uchar code df_Table = 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 ;/当前读取的温度整数部分 uchar CurrentT = 0 ;/有符号温度值char Signed_Temp = 0;/从DS18B20读取的温度值 uchar Temp_Value = 0x00,0x00;/温度数据备份uchar Back_Temp_Value = 0xFF,0xFF;/待显示的各温度数位uchar Display_Digit = 0,0,0,0;/传感器正常标志 bit DS18B20

30、_IS_OK = 1;/voiddisplay_alarm_temp(ucharhigh,ucharlowe);/-/ 延时1/-void DelayXus(int x) uchar i; while( x- ) for(i = 0; i 200; i+);/-/ LCD忙检测/-uchar LCD_Busy_Check() reentrant uchar result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0 & 0x80); LCD_EN = 0; return result; /-/ 写指令/-v

31、oid Write_LCD_Command(uchar cmd) while(LCD_Busy_Check(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; delayNOP(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /-/ 写数据/-void Write_LCD_Data(uchar dat) while(LCD_Busy_Check(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; del

32、ayNOP(); LCD_EN = 0; /-/ 自定义字符写CGRAM /-void Write_NEW_LCD_Char() uchar i; Write_LCD_Command(0x40); /写CGRAM for (i = 0; i 8; i+) Write_LCD_Data(Temperature_Chari); /写入温度符号/-/ 初始化 /-void LCD_Initialise() Write_LCD_Command(0x01); DelayXus(5); Write_LCD_Command(0x38); DelayXus(5); Write_LCD_Command(0x0c

33、); DelayXus(5); Write_LCD_Command(0x06); DelayXus(5); Write_NEW_LCD_Char(); /温度符号写入CGRAM /-/ 设置显示位置/-void Set_LCD_POS(uchar pos) Write_LCD_Command(pos | 0x80); /-/ 延时2/-void Delay(uint x) while(-x );/-/ 初始化DS18B20 /-uchar Init_DS18B20() uchar status; DQ = 1; Delay(8); DQ = 0; Delay(90); DQ = 1; Dela

34、y(8); status = DQ; Delay(100); DQ = 1; return status; /初始化成功返回0 /-/ 读一字节 /-uchar ReadOneByte() uchar i, dat = 0; DQ = 1; _nop_(); for (i = 0; i = 1; DQ = 1; _nop_(); _nop_(); if(DQ) dat |= 0x80; Delay(30); DQ = 1; return dat;/-/ 写一字节 /-void WriteOneByte(uchar dat) uchar i ; for (i = 0; i =1; /-/ 读取温

35、度值 /-void Read_Temperature() EA=0; if( Init_DS18B20() = 1 ) /DS18B20故障 DS18B20_IS_OK = 0; else WriteOneByte(0xCC); /跳过序列号 WriteOneByte(0x44); /启动温度转换 Init_DS18B20(); WriteOneByte(0xCC); /跳过序列号 WriteOneByte(0xBE); /读取温度寄存器 Temp_Value0 = ReadOneByte(); /温度低8位 Temp_Value1 = ReadOneByte(); /温度高8位 DS18B2

36、0_IS_OK = 1; EA=1;/-/ 在LCD上显示当前温度 /-void Display_Temperature() uchar i; uchar t = 150;/延时值 uchar ng = 0; /负数标识 /如果为负数则取反加1,并设置负数标识 if ( (Temp_Value1 & 0xF8) = 0xF8) Temp_Value1 = Temp_Value1; Temp_Value0 = Temp_Value0 + 1; if (Temp_Value0 = 0x00) Temp_Value1+; ng = 1; /查表得到温度小数部分 Display_Digit0 = df

37、_Table Temp_Value0 & 0x0F ; /获取温度整数部分(无符号) CurrentT =(Temp_Value0 & 0xF0)4)|(Temp_Value1 & 0x07)4); /获取有符号温度值(忽略小数位) Signed_Temp = !ng ? CurrentT : - CurrentT; /将整数部分分解为三位待显示数字 Display_Digit3 = CurrentT / 100; Display_Digit2 = CurrentT % 100/10 ; Display_Digit1 = CurrentT% 10 ; /刷新LCD显示缓冲 Current_Te

38、mp_Display_Buffer11 = Display_Digit0+ 0; Current_Temp_Display_Buffer10 = .; Current_Temp_Display_Buffer 9 = Display_Digit1 + 0; Current_Temp_Display_Buffer 8 = Display_Digit2 + 0; Current_Temp_Display_Buffer 7 = Display_Digit3 + 0; /高位为0时不显示 if (Display_Digit3 = 0) Current_Temp_Display_Buffer7 = ; /

39、高位为0且次高位为0时,次高位不显示 if (Display_Digit2 = 0 & Display_Digit3 = 0) Current_Temp_Display_Buffer8 = ; /负数符号显示在恰当位置 if (ng) if (Current_Temp_Display_Buffer8 = ) Current_Temp_Display_Buffer8 = -; else if (Current_Temp_Display_Buffer7 = ) Current_Temp_Display_Buffer7 = -; else Current_Temp_Display_Buffer6 =

40、 -; /在第一行显示标题 Set_LCD_POS(0x00); for(i = 0; i 16; i+) Write_LCD_Data( Temp_Disp_Titlei ); /在第二行显示当前温度 Set_LCD_POS(0x40); for(i = 0; i 16; i+) Write_LCD_Data( Current_Temp_Display_Bufferi ); Set_LCD_POS(0x4D); Write_LCD_Data(0x00); Set_LCD_POS(0x4E); Write_LCD_Data(C);/*/蜂鸣器报警声音/*voidbeept()uchari,j=

41、70;for(i=0;i= alarm_temp0) MA = 1; /转动Forward=Forward;Stop=1;Reveral=1;beept();Set_LCD_POS(0x00); for(i = 0; i 13; i+) Write_LCD_Data( speaki ); Write_LCD_Command(0x8f);Write_LCD_Data(Y); /风扇开启标志 else if ( Signed_Temp alarm_temp1) MA = 1; /转动Forward=1;Stop=1;beept();Reveral=Reveral;Set_LCD_POS(0x00)

42、; for(i = 0; i 13; i+) Write_LCD_Data( speak1i ); Write_LCD_Command(0x8f);Write_LCD_Data(Y); else MA = 0;Forward=1;Stop=0;Reveral=1;Write_LCD_Command(0x8f); /风扇关闭标志Write_LCD_Data(N); /*/按键处理/*/voidkeyscan()if(button=0)Delay(10);if(button=0) while(button=0);flag+;if(flag=2)flag=0;/*/ /显示字符串/*/ voiddi

43、splay_string(uchar *str,ucharLINENO)ucharK;Set_LCD_POS(LINENO);for(K=0;K16;K+)Write_LCD_Data(strK);voiddisplay_alarm(ucharhigh,uchardi)high=alarm_temp0;di=alarm_temp1;alarm4=high/100 +0;alarm5=high%100/10 +0;alarm6=high%10 +0;alarm11=di/100 +0;alarm12=di%100/10 +0;alarm13=di%10 +0;display_string(ala

44、rm,0x40);voidchange_alarm_temp()if(k1=0)beept();while(k1=0);if(+alarm_temp0=128)alarm_temp0=0;if(k2=0)beept();while(k2=0);if(-alarm_temp0=0)alarm_temp0=128;if(k3=0)beept();while(k3=0);if(+alarm_temp1=128)alarm_temp1=0;if(k4=0)beept();while(k4=0);if(-alarm_temp1=0)alarm_temp1=128;display_alarm(gao,di

45、);/-/ 主函数/-void main() uchar i;LCD_Initialise();Read_Temperature();Read_Temperature();Set_LCD_POS(0x00); for(i = 0; i 16; i+) Write_LCD_Data( hellowordi ); Set_LCD_POS(0x40);for(i = 0; i 16; i+) Write_LCD_Data( helloword1i ); Set_LCD_POS(0x40);for(i = 0; i 16; i+) Write_LCD_Data( helloword1i ); Read

46、_Temperature();Reveral=1;Forward=1;/MA=0;beep=1;flag=1; Delay(50000); Delay(50000);while(1) MA=0;/Read_Temperature();/display_HMS(hour,minute,second);keyscan();if(flag=0)dianji();elseif(flag=1)Reveral=1;Forward=1;beep=1;Write_LCD_Command(0x8f);Write_LCD_Data(N);change_alarm_temp();display_alarm(gao,

47、di);Set_LCD_POS(0x4e);Write_LCD_Data(0x00);Set_LCD_POS(0x4f);Write_LCD_Data(C); else Delay(5);Set_LCD_POS(0x40);for(i=0;i13;i+)Write_LCD_Data(alarmi);change_alarm_temp();display_alarm(alarm_temp0,alarm_temp1); 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀

48、膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁

49、螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈

50、蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆

51、薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂

52、蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄

53、蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿

54、肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁

55、蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号