版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要目前随着社会的开展以及人们生活水平的提高,厨房中油烟机的应用越来越广泛。但是传统的油烟机根本上都是人为监控,缺少烟雾浓度和温度的检测模块,从而缺少相应的触发、调节以及控制模块。由此时常会带来一些比方煤气中毒,意外火灾等事故,给人们带来一些本来可以防止的灾难。基于此,我们按照“以人为本”的原那么,设计和完善了现有的油烟机控制系统,力求防范灾难于未然,最大限度的保护人们的生命和财产平安。本文采用温度传感器,气体浓度传感器,单片机芯片,LCD1602显示芯片,模数转换器芯片设计了一种油烟机控制系统。可以实现温度检测,气体浓度检测,温度气体浓度显示,调节报警上限,控制外围驱动电路。文中主要介绍了主控芯片相关知识,外围芯片以及电路的工作原理,各个模块的硬件电路;表达了主程序以及各子程序的工作流程以及源代码。关键词:抽油烟机;单片机;传感器;硬件设计
ABSTRACTWiththecurrentdevelopmentofsocietyandimprovepeople'slivingstandards,thekitchenhoodPetroleumwidelyapplied.However,theconventionalhoodbasicallyhumanmonitoring,lackofconcentrationandtemperatureofthesmokedetectionmodule,sothatthelackofappropriatetrigger,regulationandcontrolmodule.Thusoftenbringsomesuchgaspoisoning,accidentalfiresandotheraccidents,tobringsomeofthedisastercouldhavebeenavoided.Basedonthis,wefollowthe"people-oriented"principle,thedesignandimprovementoftheexistinghoodcontrolsystem,andstrivetopreventdisasterinthefirstplace,tomaximizetheprotectionofpeople'slivesandpropertysafety.
Inthispaper,temperaturesensors,gasconcentrationsensor,microcontrollerchips,LCD1602displaychip,ananalogchipdesign,asmokemachinecontrolsystem.Canrealizetemperaturedetection,detectionofgasconcentrations,temperature,gasconcentrationdisplay,adjustthealarmlimit,controlperipheraldrivecircuit.Thispaperintroducesthemainchip-relatedknowledge,theworkingprincipleofperipheralchipsandcircuits,eachmodulehardwarecircuit;describesthemainprogramandthesubroutineworkflowandsourcecode.KeyWords:Rangehoods;SCM;sensor;softwareflow目录引言 2正文 3第一章 硬件电路 31.1系统结构框图 31.2微控制器AT89C51 3微控制器AT89C51 4时钟电路 5复位电路 51.3液晶显示模块LCD1602 61.4温度传感器DS18B20 8 DS18B20温度传感器 8 DS18B20的工作时序 9 DS18B20的功能命令 101.5烟雾气敏传感器MQ-2 101.6模数转换器ADC0832 111.7按键控制模块 13第二章软件设计 132.1主程序流程图 132.2键盘中断流程图 142.3按键调节子程序 152.4定时器中断模块 15结论 16致谢 17附录〔程序〕 18参考文献 29引言进入21世纪,科学技术极大地方面了我们生活的各个方面,方便了人类的衣食住行。它使得人们的生产生活越来越趋向于自动化智能化,使人类从自然原始的状态更加彻底的解放出来。经济的开展以及社会生产力的普遍提高,使得人类对自身的生活条件的要求提高,追求更加舒适洁净的生活场所。而家里的厨房烹饪食物所发出的煤气,油烟,蒸汽,高温不可防止的给我们的生活环境带来了不利因素。人类为了追求更好的生活,20世纪以来,创造了比方空调,暖气,抽油烟机,他们毫无疑问很大程度上方便了生活。但是传统的这些孤立的设备有赖于人的控制,脱离了人的控制,这些东西就会只是这些设备,不能实现他们功能的最大化。要想实现智能控制,现代控制系统中通常有赖于智能系统的“眼睛”和“鼻子“,这些所谓的“眼睛”和“鼻子“就是我的所说的各种传感器比方温度传感器,烟雾浓度传感器,他们能够代替人类的眼睛和鼻子然后代替人类进行智能控制而且控制的更加经精确,准确,灵敏。传感器将检测的结果传送给微处理器,处理器经过数据转换数据处理,进而控制驱动外围电路,从而到达控制的目的。因此他们比人类更快速,必人类更智能,更重要的是它能够很大程度上使人类得到解放。一般而言,作为常用烹饪设备,厨房离不开煤气灶,而使用煤气设备就不可防止的会产生油烟、水汽与乙烷等影响人类健康的甚至有毒的气体,为了生命健康和人类生存的需要,我们通常用通风设备来改善厨房环境。厨房是家里环境空气污染最为严重的地方,其污染源有以下两方面;一是以煤炭、煤气、液化石油气日常用炊火中释放出的氧化物,氮氧化物等有毒有害气体;二是烹饪食物时产生的油烟以及泄露的煤气。当代流行的厨房装修大多使用开放式的设计,但烹制中餐的过程会不可防止的产生大量油烟,由于厨房的开放性,空气流动空间就会扩大,如果油烟机不能有效的排放做饭产生的油烟,就会很大程度上造成了整个房间油烟和废气的污染。因此设计一款有效,多功能的油烟机对于每个家庭而言是迫在眉睫的。下面我们将展开我们的设计理念和过程。正文硬件电路1.1系统结构框图本文采用AT89C51单片机、MQ-2可燃性气体浓度传感器、DS18B20温度传感器、LCD1602液晶显示模块设计的一种智能抽油烟机控制系统。可以实现温度检测、气体浓度检测、温度浓度显示、按键调节参数数值以及外部电路驱动等功能。具有简单实用,价格低廉,稳定性强,平安可靠等优点,有一定的实用价值。整体设计框图如图1.1所示。图1.1系统原理及组成框图1.2微控制器AT89C51在诸多的控制系统中,都以微控制器作为核心控制器件。在该控制系统中,微控制器一方面接收烟雾传感器的模拟信号并进行AD转换,检测温度传感器信号并转换成摄氏温度信号;另一方面将实时检测的数据显示在液晶显示屏,控制蜂鸣器实现对外界信号的报警,控制继电器实现对外界电路的驱动。与此同时,通过外部中断对报警的参数进行调节以及手动控制警报,实现智能控制。基于上述原因,因此我们选用了ATMEL公司生产的AT89C51单片机,该种型号的单片机价格适中,运行稳定,易于操作。实践证明它确实能够很好的满足我们的要求。AT89C51单片机正常工作依靠一定的外围电路,也就是单片机最小系统。AT89C51单片机最小系统包括:AT89C51单片机、时钟电路、复位电路。1.2.1微控制器AT89C51AT89C51单片机是一种带4K字节Flash的低电压、高性能CMOS8位微处理器。该器件使用Atmel高密度非易失存储器制造技术,与工业标准的MCS-51指令集和输出管脚相兼容,是一种高效微控制器。AT89C51单片机拥有强大的中断系统,大大调高了程序的运行效率,能够保证许多不同功能的实现,其程序存储器和数据存储器可以进行外部扩展,从而有更大的空间来存储数据。它可以使用C语言编程控制,为很多嵌入式控制系统提供了一种灵活高性价比的方案,在工业、农业以及生活领域得到了广泛的应用。因此,本设计采用AT89C51单片机作为控制核心,具有价格低、易控制以及可实现设计所需的全部功能的特点。
1.内部结构
AT89C51单片机由中央处理器、内部数据存储器、内部程序存储器、定时器/计数器、并行I/O口、串行口、中断控制系统以及时钟电路组成。
(1)中央处理器:简称CPU,是单片机的核心,能够完成运算和控制功能。AT89C
51的CPU可以处理8位的二进制数。
(2)内部数据存储器:简称内部RAM,AT89C51的共有256个RAM单元,其中前128个单元可以被用户自由使用,可以存放数据;其后128个单元供专用存放器使用。(3)内部程序存储器:简称内部ROM,AT89C51有4KB的掩膜ROM可以存放程序、数据表格等。(4)定时器/计数器:AT89C51有2个16位的定时器/计数器,可以实现定时和计数功能。(5)并行I/O口:实现数据的输入和输出。(6)串行口:AT89C51有一个全双工的串行口,可以实现它与其他相关设备之间的数据传送,也可以作为同步移位器。(7)中断系统:AT89C51有5个中断源,其中外部中断2个,定时器/计数器中断2个以及1个串行中断。全部中断都包高、低级两个优先级别。2.管脚介绍AT89C51单片机芯片如图1.2所示。VCC:电源输入,接+5V。VSS:电源地端。XTAL1:时钟的反相放大器输入端。XTAL2:时钟的反相放大器输出端。RST:复位信号,当输入高电平时间在2个机器周期以上系统立即复位。。EA/VPP:访问程序存储器控制信号。EA为低电平,对ROM的访问从外部存储器开始;EA为高电平,对ROM的访问从内部程序存储器开始。ALE:地址锁存控制信号端。系统扩展过程中,ALE把P0口输出的低8位地址锁存,另外,它还可以输出频率为晶振六分之一的正脉冲。PSEN:外部程序存储器的读选通信号。单片机读外部ROM时,PSEN低电平有效。P0.0~P0.7口:8位双向数据输入输出口线。P0口作为一般的I/O口输出时需连接上拉电阻;当它作为I/O输入时,须先向锁存器写“1”。P1.0~P1.7口:8位双向数据输入输出口线。P1口作输出无需接上拉电阻,输入时,也需向锁存器写“1”。P2.0~P2.7口:8位双向数据输入输出口线;通常情况下,作为高位地址线使用。P3.0~P3.7口:8位双向数据输入输出口线;P3口引脚第二功能:P3.0〔RXD〕,图1.2AT89C51单片机的引脚图可用于串行通信时数据的接收;P3.1〔TXD〕,可用于串行通信时数据的发送;P3.2〔INT0〕,可用于外部中断0请求;P3.3〔INT1〕,可用于外部中断1请求;P3.4〔T0〕,可用于定时器/计数器0的外部输入;P3.4〔T1〕,可用于定时器/计数器1的外部输入;P3.6〔WR〕,可用于外部RAM的写选通;P3.7〔RD〕,可用于外部RAM的读选通。1.2.2时钟电路单片机的时钟电路用来产生其工作时所需要的特定时钟信号。AT89C51单片机内部有一个反相放大器,它的输入端为XTAL1,输出端为XTAL1,XTAL1和XTAL2两端之间需接晶体振荡器和适宜的电容,电容起到微调的作用。从而构成时钟电路产生振荡脉冲,振荡脉冲经过触发器进行二分频后,方可作为时钟信号。晶体的振荡频率和单片机的运行速度呈正比,通常AT89C51单片机使用的晶体振荡频率为6MHZ,12MHZ,11.0592MHZ,本设计采用的是11.0592MHZ的晶体。单片机时钟振荡电路如图1.3所示。图1.3单片机时钟振荡电路1.2.3复位电路单片机的复位是指使CPU或者系统中的其他功能部件停止工作,回归到设定的一个初始状态,然后从这个状态开始工作。系统断电后,再次上电时系统自动复位,在系统运行出故障时,例如运行进入死循环时,可以对其进行复位,然后重新开始工作。由此可知,复位电路是系统很重要的一局部。AT89C51单片机复位的条件是:RST引脚加上一个持续二个机器周期以上的高电平。单片机的复位电路通常有两种形式,为上电复位和按键复位。本设计采用的是按键复位,如图1.4所示。图1.4复位电路1.3液晶显示模块LCD1602字符型LCD专门用于显示数字、字母、图形符号及少量的自定义符号。显示器吧LCD控制器、点阵驱动器、字符存储器等做在一块板上,在与液晶屏一起组成一个显示模块。液晶显示的原理是利用液晶的物理特性,通过调节电压对显示区域进行控制,只需输入所需的电压就可以显示出字符。LCD能够显示字符的关键在与控制器,目前大局部点阵型LCD都是用HD44780集成电路作为控制器。HD44780的工作原理较为复杂,但是它的使用却相对简单。只要将待显示字符的ASCII码输入到内部数据存储器,内部电路就会自动将字符传送到液晶屏上进行显示。LCD1602价格适中,显示位数多,灵活,易于编程,反响速度相对较快,具有背光特性,因此应用比拟广泛,更为广阔电子爱好者所喜爱。1602型LCD主要技术指标●显示容量:16×2个字符●芯片工作电压:4.5~5.5V●工作电流:2.0mA〔5.0V〕●标准工作电压:5.0V1602型LCD采用标准的14引脚〔无背光〕或16引脚〔背光〕接口,其引脚图如图1.5所示。图1.5LCD1602引脚图引脚1〔VSS〕:电源地引脚2〔VDD〕:电源正极引脚3〔VL〕:反视度调整,使用可变电阻调整,一般接地引脚4〔RS〕:存放器选择,RS=1,选择数据存储器;RS=0,选择指令存储器引脚5〔R/W〕:读/写选择。R/W=1,读;R/W=0,写引脚6〔E〕:模块使能端,当E由高电平跳变成低电平时,液晶模块执行指令引脚7〔DB0〕:双向数据线第0位引脚8〔DB1〕:双向数据线第1位引脚9〔DB2〕:双向数据线第2位引脚10〔DB3〕:双向数据线第3位引脚11〔DB4〕:双向数据线第4位引脚12〔DB5〕:双向数据线第5位引脚13〔DB6〕:双向数据线第6位引脚14〔DB7〕:双向数据线第7位引脚15〔A〕:背光显示器电源+5V引脚16〔K〕:背光显示器接地时序图1602读操作时序地址表如下1234567891011121314151600H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0EH0FH40H41H42H43H44H45H46H47H48H49H4AH4BH4CH4DH4EH4FH1602写操作时序依据以上论述,LCD1602和51单片机可有如下连接由于单片机内P0口无上拉电阻,没有驱动负载的能力,因此在驱动LCD1602数据总线时,需要外接上拉电阻。1.4温度传感器DS18B20DS18B20温度传感器是美国DALLAS公司推出的单总线器件,它具有很多优点,例如:低功耗、高性能、体积小、线路连接简单等特点,它可以直接把传感器测到的温度数据转换成单片机可以处理的二进制数,并且可以在一根总线上挂接多个温度传感器,实现温度的多点测量。应用范围广泛,可以适应多种复杂的环境。DS18B20温度传感器1.DS18B20是DALLAS公司生产的一线式数字温度传感器,具有微型化、低功耗、高性能、抗干扰能力强等优点,可直接将温度转化成串行数字信号给单片机处理,因而可以省去传统的信号放大、A/D转换等外围电路。具有以下特点:〔1〕只需一个端口引脚就可以进行通信;〔2〕每个DS18B20上都有唯一的序列号;〔3〕其测温范围为-55度~+125度,测温范围广;〔4〕其分辨率可在9~12位之间选择,能够满足对温度不同精度的要求;〔5〕其内部有温度上下限报警的设置;〔6〕其把温度转换为二进制数的时间为93.78ms到750ms,显示速度;2.TO-92封装的DS18B20的如图1.6所示,其引脚功能描述见表2-1:图1.6TO-92封装的DS18B20序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,单总线接口引脚,如果使用寄生电源时,能够向电源提供电源3VDD电源引脚,如果传感器使用寄生电源工作,该引脚接地表2-1DS18B20引脚功能DS18B20的工作时序DS18B20的工作时序包括初始化、写时序、和读时序,如图1.6所示:〔a)初始化〔b〕读时序〔c〕写时序图1.6DS18B20的工作时序初始化时序:单片机输出高电平将数据线置位高电平,延时〔尽可能短一些〕;单片机输出低电平将数据线拉低,延时480~960us后释放,延时等待15~60us,DS18B20会输出一个持续60~240us的低电平脉冲,单片机接收到此应答后就可以进行操作,否那么继续重复前面步骤,直到最后检测到低电平脉冲为止,然后将数据线拉高。写时序:单片机将数据线的数据线先置低电平0。延时确定的时间为15us。从低位到高位发送数据,一次只发送一位,延时45us后,将数据线拉高,继续重复前面步骤,直到整个字节发送完,最后拉高数据线。读时序:单片机将数据线从高电平拉低,使读时序初始化,假设15us后,单片机检测到低电平,那么从DS18B20读到“0”,假设15us后检测到高电平,那么从DS18B20读到“1”。DS18B20的功能命令DS18B20的功能命令均为8位字长,常见的命令代码如表2-2。功能描述代码启动温度转换44H读暂存器内容BEH读DS18B20的序列号33H报警搜索ECH跳过读序列号的操作CCH读电源供应方式,0为寄生电源;1为外部电源B4H匹配ROM55H把数据写入暂存器的第2、3字节4EH表2-2DS18B20的功能命令1.5烟雾气敏传感器MQ-2MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ-2气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。〔1〕电气性能:●输入电压:DC5V
●功耗〔电流〕:150mA●DO输出:TTL数字量0和1〔0.1和5V〕●AO输出:0.1-0.3V〔相对无污染〕,最高浓度电压4V左右〔2〕接线方式:
VCC:接电源正极〔5V〕
GND:接电源负极
DO:TTL开关信号输出,输出数字信号0和1
AO:模拟信号输出,接模数转换器ADC08321.6模数转换器ADC0832模拟信号经过采样、保持、量化和编码后就可以转换成数字信号,这个转换过程叫做A/D转换。A/D转换器的主要技术指标●转换时间:从发出启动转换命令到转换结束获得数字信号为止所需要的时间●分辨率:表示转换器对微小输入量变化的敏感程度,通常用转换器输出数字量的位来表示●转换精度:指转换后的结果相对于实际值的准确度,用满量程的百分比来表示ADC0832是8引脚双列直插式双通道A/D转换器,它能分别对两路模拟信号实现模/数转换。具有体积小、兼容性强、性价比高、占用I/O口少等优点,因此应用非常广泛。ADC0832引脚图如图1.4所示。图1.4ADC0832引脚图ADC0832引脚图说明如下:CS:片选端,低电平选中芯片CH0:模拟输入通道0CH1:模拟输入通道1GND:芯片接地端DI:数据信号输入,选择通道控制DO:数据信号输出,转换数据输出CLK:芯片时钟输入VCC:电源输入端ADC0832的工作时序图如图1.5所示●当DI依次输入1、0时,只对CH0通道进行点通道转换●当DI依次输入1、1时,只对CH1通道进行点通道转换●当DI依次输入0、0时,将CH0作为正输入端,CH1作为负输入端●当DI依次输入1、0时,将CH0作为负输入端,CH1作为正输入端正常情况下,ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO和DI两个端口的值在通信时并未同时使用,而是由DI端口输入两位数据〔0或1〕来选择通道控制,再由DO端口输出数据,因此,在I/O口资源紧张时,可以将图1.5ADC0832的工作时序图DO和DI并联在一根数据线上使用。由于该系统需要I/O数量较多,因此我们采用单口连接,以节省单片机端口,其接线方式如图1.6所示图中CH0接传感器输出信号,要求接入信号强度范围在0到参考电压之间。图1.6单片机与ADC0832接口1.7按键控制模块按键控制电路如图1.7所示,系统通过P1.0和P1.1口的按键引发中断,在中断效劳程序中设置按键的报警上限,由于51单片机是下降沿触发中断,所以与非门之后还需要接入非门以满足触发要求。P1.2和P1.3用来控制报警上限的加一和减一,而且只有在系统在执行中断效劳程序时才能发挥控制作用,以维持显示屏的显示稳定性。值得注意的是,由于按键抖动,需要在软件编程时参加去抖动程序。图1.7按键控制电路第二章软件设计2.1主程序流程图主程序流程图如图2.1所示。图2.1主程序流程图主程序中预显示的内容是在显示器上倒计时10秒,这样能够让传感器提前上电预热一段时间,使得之后的显示更加稳定,也能防止温度传感器最初始的85℃。在烟雾浓度显示模块包括烟雾传感器和模数转换模块,传感器输出0~5V电压,所以该模块的主要功能是A/D转换。在温度显示模块主要是对温度的实时采集和转换。由于该传感的内部初值的原因使得刚开始显示的数值为85℃,所以在第一次显示之前需让内部初值先读出来,这样可以有效的防止这种系统错误。由于报警、控制子程序都是些最根底的判断语句,所以下面就不列出流程图了。2.2键盘中断流程图键盘中断流程图如图2.2所示图2.2键盘中断流程图按键触发中断进入中断效劳程序后,系统通过识别具体按键编号来执行不同显示子程序,从而到达调节的目的。2.3按键调节子程序按键调节子程序如图2.3所示在中断程序中,主体局部重复运行250次,如果在这期间P1.2和P1.3上的按键没有动作,中断函数执行完之后系统会自动返回主函数,中断函数大约会执行两秒,否那么中断函数还会继续延时两秒。如果在这期间检测到按键按下,那么系统会通过按键调节上限的设定值,并能够在主函数中动态显示出来。2.4定时器中断模块这局部主要用来控制蜂鸣器发声,但输出频率不同时,声音的音调不同,这样人们可以通过区分不同的音调就来判断是温度还是烟雾浓度局部的触发。定时器模块是通过赋予不同定时初值来调节不同的频率,软件编程包括初始化〔包括定时器赋初值〕判断触发条件,开〔闭〕中断,进入中断,定时器赋初值,判断触发条件……以此顺序循环下去。由于中断程序较少且在多个程序中同时出现,不便写出流程图,这里只做大致描述。图2.3按键调节子程序结论从上学期就陆续的开始准备毕业设计,到现在为止根本完成了毕业设计所包含的任务,其间,经历了很多,学到了很多,也很有感悟。虽然曾经迷茫过,为难过,但也激起了我对本专业的极大兴趣,鼓励我朝着这条路一直走下去。毕业设计一路走来,从写开题报告开始,着手前期资料准备,中期报告,开始硬件电路设计,尝试软件编程,画仿真电路图,调试程序,正式搭建硬件电路,再次调试程序,完成论文。学到了之前没有接触到的东西,开阔了眼界,增长了见识。因为之前都是编一些相对较小的程序,当突然接触一些很大的程序时,会自然感觉到手足无措,很是为难,可是当自己沉下心来,将每一个程序分开进行研究,各个击破之后,就会对程序的整体有个大致的概念。因为在前期准备阶段看过不少类似这样的程序,随着学习练习的深入,对程序的结构,语法知识,常见算法就会慢慢的熟悉起来,最后编程时自然会得心应手。以前在学习单片机的时候,接触到的一些接口电路都很根底,也不会涉及驱动电路,滤波电路等典型的模拟电路。但是一些常见的外围器件比方温度传感器DS18B20,烟雾传感器,超声波传感器等一些相对复杂的器件就在我们的掌握范围之外了,这时培养自己的学习能力就显得尤为重要,因为大千世界,各种器件,我们不可能掌握所的东西,但是当我们学会学习的时候,我们就“无敌”了。正所谓“授人以鱼不如授人以渔”。尽管我准备的还算比拟充分,但是还是遇到了好多问题,这里就两个主要的问题作简要说明。第一,是关于温度传感器的,当我们按照正常的步骤编程后,发现最初显示的温度是85℃,大约会显示一秒,然后恢复正常显示。我本来以为这是系统错误,消除不了,后来通过查找资料,我发现,这是温度传感器初始化的问题,可以通过软件编程的方式加以消除。只需让温度传感器提前工作几秒钟,而液晶显示器不显示此时温度值,然后再恢复正常显示,就会有效的消除这一系统错误。第二,当我仿真完成后,就着手开始搭建硬件电路,等我按照仿真电路图搭建电路图时,发现仿真图的器件和实际的器件是由差异的,导致了我刚开始的焊接出现了大量的问题,反复修改,后来我就干脆先把所有用到的元器件全部拿来比对,比拟它们之间的差异,然后按照仿真图画实际电路图,最后进行焊接,这样就有效的减少了失误。由于在本次设计中,好多东西都是第一次接触,所以遇到了好多意想不到的错误,我相信通过以后不断努力的学习,我会更加熟练地掌握所学的知识,并将之用于实践当中,使科学技术转化为生产力,为社会主义建设做奉献。致谢经过十三周的学习努力,我终于完成了自己的抽油烟机控制系统的设计,在此首先衷心感谢***老师给予我的指导和帮助。这个设计的题目是老师亲自帮我选的,在毕业设计工作刚开始的时候,我完全处于茫然状态,因为之前一直没有系统性的做过这种相关的课题,所以不知道从哪方面开始,经过耿老师的提示和分析,我很快确定了大概的设计方向,通过查阅相关的资料,我逐步确立了自己的课题的设计目标,从而开始正式着手设计。在毕业设计的后期,耿老师又给我的论文和实物提出了一些建设性的意见,使我的设计更加合理。她的和蔼的态度、严格的要求以及精益求精的工作作风给我留下了深刻的印象,我不仅从她那里学到了很多知识,也学到一些做人的道理。除此之外,我还要感谢身边的一些同学,他们和我一起并肩学习生活四年,在我需要帮助的的时候都会无私的援助之手,并且给我提出一些建议,使我在大学四年有了很大进步。尤其是毕业设计这段枯燥的时间,他们不仅给予我提供了设计方面的帮助,还给我以精神上的鼓励,使我在这段时间一直过得充实快乐,顺利的完成了毕业设计。最后,我要深深的感谢我的母校—**大学,是它给我提供了这样一个学习交流的平台,让我在这里能够取得很大的进步和提高。在这个大环境中,一方面,我学习到了自己的专业知识,开发了自己对这个领域的兴趣,通过刻苦学习,提高了自己的专业素养,培养了自己对新事物的学习能力,使自己能够在以后的工作中和接触新事物的过程中做到游刃有余;另一方面,大学提供了很多的锻炼时机,让我能够在锻炼中学到与人、处事的道理,为自己以后的开展奠定了根底。附录〔程序〕#include<reg51.h>//包含单片机存放器的头文件#include<intrins.h>//包含_nop_()函数定义的头文件#include<math.h> //根本数学计算#defineLCD_DBP0#defineucharunsignedchar#defineuintunsignedintsbitCS=P2^4;//将CS位定义为P3.4引脚sbitCLK=P2^6;//将CLK位定义为P1.0引脚sbitDIO=P2^7;//将DIO位定义为P1.1引脚sbitLCD_RS=P2^0;//存放器选择位,将RS位定义为P2.0引脚sbitLCD_RW=P2^1;//读写选择位,将RW位定义为P2.1引脚sbitLCD_E=P2^2;//使能信号位,将E位定义为P2.2引脚 sbitwendu=P1^0; //温度中断控制位sbitnongdu=P1^1; //烟雾浓度中断控制位sbitDEC=P1^3; //上限加一位sbitINC=P1^2; //上限减一位sbitCT=P1^4; //温度控制位sbitCN=P1^5; //浓度控制位sbitsound0=P1^6; //温度上限报警位sbitsound1=P1^7; //烟雾浓度上限报警位charWH=40; //温度上限值charNHH=2; //烟雾浓度上限整数位charNHL=50; //烟雾浓度上限小数位ucharTL;//储存暂存器的温度低位ucharTH;//储存暂存器的温度高位ucharTN;//储存温度的整数局部ucharTD;//储存温度的小数局部ucharInt,Dec;//分别储存转换后的整数局部与小数局部voiddelay1ms() //延时1ms{uchari,j; for(i=0;i<10;i++) for(j=0;j<33;j++) ; }voiddelaynms(uintn) //延时nms{uinti; for(i=0;i<n;i++) delay1ms();}voiddelay_n10us(uintn) //延时10微妙,做1602显示用{uinti;for(i=n;i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voidLCD_write_command(uchardat) //写指令{delay_n10us(10);LCD_RS=0;LCD_RW=0;LCD_E=1;LCD_DB=dat;delay_n10us(10);LCD_E=0;delay_n10us(10);}voidLCD_write_data(uchardat) //写数据{delay_n10us(10);LCD_RS=1;LCD_RW=0;LCD_E=1;LCD_DB=dat;delay_n10us(10);LCD_E=0;delay_n10us(10);}voidLCD_disp_char(ucharx,uchary,uchardat) //在既定的行列写数据{ucharaddress;if(y==1)address=0x80+x;elseaddress=0xc0+x;LCD_write_command(address);LCD_write_data(dat);}voidLCD_disp_str(ucharx,uchary,uchar*str) //在既定的行列写字符{ucharaddress;if(y==1)address=0x80+x;elseaddress=0xc0+x;LCD_write_command(address);while(*str!='\0'){LCD_write_data(*str);str++;}}voidLCD_init() //LCD初始化{delay_n10us(10);LCD_write_command(0x38);//设置8位格式,2行,5x7delay_n10us(10);LCD_write_command(0x0c);//开显示,关光标,不闪烁delay_n10us(10);LCD_write_command(0x06);//设定输入方式,增量不移位delay_n10us(10);LCD_write_command(0x01);//去除屏幕显示delay_n10us(100);//延时清屏,延时函数,延时约n个10us}unsignedcharA_D() //{uchari,dat;CS=1;//一个转换周期开始CLK=0;//为第一个脉冲作准备CS=0;//CS置0,片选有效DIO=1;//DIO置1,规定的起始信号CLK=1;//第一个脉冲CLK=0;//第一个脉冲的下降沿,此前DIO必须是高电平DIO=1;//DIO置1,通道选择信号CLK=1;//第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0CLK=0;//第二个脉冲下降沿DIO=0;//DI置0,选择通道0CLK=1;//第三个脉冲CLK=0;//第三个脉冲下降沿DIO=1;//第三个脉冲下沉之后,输入端DIO失去作用,应置1CLK=1;//第四个脉冲for(i=0;i<8;i++)//高位在前{CLK=1;//第四个脉冲CLK=0;dat<<=1;//将下面储存的低位数据向右移 dat|=(unsignedchar)DIO; //将输出数据DIO通过或运算储存在dat最低位} CS=1;//片选无效 returndat; //将读书的数据返回}sbitDQ=P2^3;uchartime;//设置全局变量,专门用于严格延时bitInit_DS18B20(void) {bitflag;//储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在DQ=1;//先将数据线拉高for(time=0;time<2;time++)//略微延时约6微秒;DQ=0;//再将数据线从高拉低,要求保持480~960usfor(time=0;time<200;time++)//略微延时约600微秒;//以向DS18B20发出一持续480~960us的低电平复位脉冲DQ=1;//释放数据线〔将数据线拉高〕for(time=0;time<10;time++);//延时约30us〔释放总线后需等待15~60us让DS18B20输出存在脉冲〕flag=DQ;//让单片机检测是否输出了存在脉冲〔DQ=0表示存在〕for(time=0;time<200;time++)//延时足够长时间,等待存在脉冲输出完毕;return(flag);//返回检测成功标志}ucharReadOneChar(void){ uchari=0; uchardat;//储存读出的一个字节数据 for(i=0;i<8;i++) { DQ=1;//先将数据线拉高 _nop_(); //等待一个机器周期 DQ=0;//单片机从DS18B20读书据时,将数据线从高拉低即启动读时序 dat>>=1; _nop_();//等待一个机器周期 DQ=1;//将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备 for(time=0;time<2;time++);//延时约6us,使主机在15us内采样 if(DQ==1) dat|=0x80;//如果读到的数据是1,那么将1存入dat else dat|=0x00;//如果读到的数据是0,那么将0存入dat //将单片机检测到的电平信号DQ存入r[i] for(time=0;time<8;time++) ;//延时3us,两个读时序之间必须有大于1us的恢复期 } return(dat);//返回读出的十进制数据}WriteOneChar(uchardat){ uchari=0; for(i=0;i<8;i++) { DQ=1;//先将数据线拉高 _nop_(); //等待一个机器周期 DQ=0;//将数据线从高拉低时即启动写时序 DQ=dat&0x01;//利用与运算取出要写的某位二进制数据,//并将其送到数据线上等待DS18B20采样 for(time=0;time<10;time++) ;//延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样 DQ=1;//释放数据线 for(time=0;time<1;time++) ;//延时3us,两个写时序间至少需要1us的恢复期 dat>>=1;//将dat中的各二进制位数据右移1位 } for(time=0;time<4;time++) ;//稍作延时,给硬件一点反响时间}voidReadyReadTemp(void){Init_DS18B20();//将DS18B20初始化 WriteOneChar(0xCC);//跳过读序号列号的操作 WriteOneChar(0x44);//启动温度转换 for(time=0;time<100;time++) ; //温度转换需要一点时间 Init_DS18B20();//将DS18B20初始化 WriteOneChar(0xCC);//跳过读序号列号的操作 WriteOneChar(0xBE);//读取温度存放器,前两个分别是温度的低位和高位 }voiddisplay1() //分页显示温度{uchari,k;LCD_disp_str(0,1,"current:.");LCD_disp_char(13,1,0xdf);LCD_disp_str(14,1,"C");LCD_disp_str(0,2,"Top:"); LCD_disp_char(6,2,0xdf);LCD_disp_str(7,2,"C");for(k=0;k<250;k++){LCD_disp_char(8,1,TN/100+'0');LCD_disp_char(9,1,(TN%100)/10+'0');LCD_disp_char(10,1,TN%10+'0');LCD_disp_char(12,1,TD+'0');LCD_disp_char(4,2,WH/10+'0');LCD_disp_char(5,2,WH%10+'0'); for(i=0;i<100;i++){ if(WH<99) { if(INC==0){ delaynms(100); if(INC==0) { k=0; WH++; }} } if(WH>10) {if(DEC==0) { delaynms(100); if(DEC==0) { k=0; WH--; }} } }}LCD_disp_str(0,1,"con:.");LCD_disp_str(0,2,"temp:.");LCD_disp_char(10,2,0xdf); LCD_disp_str(11,2,"C");}voiddisplay2() //分页显示烟雾浓度{uchari,k;LCD_disp_str(0,1,"current:.");LCD_disp_str(0,2,"Top:.");for(k=0;k<250;k++){LCD_disp_char(8,1,Int+'0'); LCD_disp_char(10,1,Dec/10+'0'); LCD_disp_char(11,1,Dec%10+'0');LCD_disp_char(4,2,NHH+'0');LCD_disp_char(6,2,NHL/10+'0'); for(i=0;i<100;i++){if(NHH<5) { if(INC==0){ delaynms(100); if(INC==0) { k=0; NHL=NHL+10; if(NHL==100) {NHL=0;NHH++;} }} } if(NHH>0) {if(DEC==0) { delaynms(100); if(DEC==0) { k=0; if(NHL==0) {NHL=100;NHH--;} NHL=NHL-10;} }}}}LCD_disp_str(0,1,"con:.");LCD_disp_str(0,2,"temp:.");LCD_disp_char(10,2,0xdf); LCD_disp_str(11,2,"C");}voidmain() {uintAD_val;//储存A/D转换后的值 chari; CT=0; //控制位初始化为0 CN=0; sound0=0; sound1=0; EA=1; //中断初始化EX0=1;IT0=1; ET1=1; ET0=1; TMOD=0x11; TH0=0; TL0=0; TH1=(65536-921)/256; TH1=(65536-921)%256; LCD_init(); delaynms(5); ReadyReadTemp();//读温度准备 LCD_disp_str(0,1,"Please
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教导主任终工作总结简短
- 浙江省温州市龙湾区瑞安等多校2024-2025学年九年级上学期12月期末联考英语试题
- 甘肃省定西市渭源县2024-2025学年七年级上学期11月月考生物学试题(含答案)
- 高一 人教版必修二 英语 第三单元《Lesson 2 Reading and Thinking (1) 》课件
- 2016年现实热点融入中考历史复习的攻略
- 高三政治一轮复习备课资料-第四部分 生活与哲学
- 高一 统编版 历史(上)第四单元《第14课 清朝前中期的鼎盛与危机》课件
- 高一上册部编版 语文必修上 第四单元《家乡文化生活现状调查2》课件
- 高一 粤教版 物理 第三单元《力的合成》课件
- 《有相伴滋味长》课件
- 大数据开发工程师招聘笔试题及解答(某世界500强集团)2025年
- 思想道德与法治课件:第五章 第二节 吸收借鉴优秀道德成果
- 外研版八年级英语上册Module6Unit1说课稿
- 经纬度距离计算小工具-Distance_Formula
- ISO9001-2015培训教材(共166页).ppt
- 嘉陵江上-[原调-D]-钢琴伴奏正谱钢琴伴奏正谱高考声乐伴奏谱钢琴谱五线谱谱
- 并网前单位工程调试报告
- 校长学校跑操比赛总结大会上讲话.doc
- 一线员工技能等级评定方案
- 论直流电动机换向器打火原因分析及处理
- 浅谈压减三金的施工企业中的重要性
评论
0/150
提交评论