单片机设计吸油烟机的设计
- 格式:doc
- 大小:1012.50 KB
- 文档页数:17
基于单片机的智能节能型抽油烟机的设计作者:梅宇轩来源:《科技传播》 2018年第23期摘要随着科学技术以及经济的发展,人们的生活水平有了很大的提高,更加关心吃住方面的安全健康问题。
在厨房内,抽油烟机已然成为了必不可少的厨具,发挥的作用也可想而知,但是在另一方面,抽油烟机功率是很大的,在方便人们做饭的同时,依然也耗费了大量的电能,虽然现在已经出现了可以调节升降高度的抽油烟机,但是依然不能从根本上解决其巨大的耗能问题。
因此需要一款新型的抽油烟机来解决这方面的问题,本设计就是在这样的背景之下产生的。
本设计通过烟雾传感器检测油烟的浓度,并且将该信息传递给单片机,单片机通过电机驱动来调节抽油烟机内电机的功率,以此在不影响抽油烟机正常工作的情况下,尽最大的可能降低电能的损耗。
经过一系列的论证,本设计是合理的。
关键词单片机;抽油烟机;节能中图分类号 TN4 文献标识码 A 文章编号 1674-6708(2018)224-0107-02随着科学技术以及经济的发展进步,尤其是这几十年来,中国得到了很快速的发展,无论是在工业、教育还是在日常生活方面。
仅仅是在20 年之前,在农村家家拾柴烧火还是非常普遍的事情,但也仅仅是在几年之后,这种现象就一去不复返了,都开始使用煤球了。
有的地方使用煤气灶也变得不很稀奇。
近几年来,各种智能家居电器变得普及起来,包括电磁炉、微波炉等,人们的生活也变得方便快捷。
目前在城市里边,大部分家庭里边都采用天然气作为能源烧水做饭,不仅省时省力而且还清洁卫生。
在这些能源以及锅具都已经普遍使用的情况下,各种辅助性的厨具也在进行着发展革新,甚至智能厨具都开始要进入市场了。
之前的老式的厨房,墙面都会有发黑或者发黄的现象,这些都是烟熏留下的痕迹,总是给人留下很不好的印象。
现在的厨房虽然很少出现烧柴的情况,但是在做饭时候难免会出现油烟的情况,日积月累,依然会影响到卫生状况。
所以,现在几乎家家户户都配备的有抽油烟机,这样在很大程度上解决了做饭时候出现油烟的问题。
智能油烟机控制系统设计摘要:由于炒这种烹饪方式在我国烹饪文化中占据了重要地位,吸油烟机已经成为家庭厨电中的必备品。
通常的吸油烟机产品具有高、中、低三种风量挡位模式,用于针对用户在烹饪过程中可能面临的不同程度的油烟环境。
在目前主流的吸油烟机控制方式上,主要通过手动按键进行控制,部分高端产品具有语音控制和挥手控制功能,两者均属于被动调节。
但被动调节均有缺陷,如在实际使用时,用户腾不出手用按键控制吸油烟机,油烟环境下用语音控制更是不便。
因此吸油烟机主动调节挡位是改善使用体验的有效方式。
本文主要分析智能油烟机控制系统设计。
关键词:单片机;传感器;液晶显示;自动控制引言在现代厨房中,普遍使用抽油烟机和天然气灶。
在使用天然气灶的过程中,将会产生一定量的油烟及有害气体;而传统抽油烟机拥有单一的风扇转速,增加了能源的消耗以及遇到煤气泄漏的危险时不能及时发现并报警。
为了减少或防止这些危害,本文设计一种智能型油烟机。
本次设计基于51单片机控制的智能油烟机进行设计,改善一些传统油烟机不足的地方,将部分智能化、自动化的功能加入其中,使其具有自动控制的功能,大大增强其可行性、安全性、舒适节能、智能化的功能。
1、系统的总体架构本系统的整个框架分为以下三个部分:(1)检测部分,包括烟雾检测、煤气检测和按键输入。
(2)控制部分,由单片机AT89C51、开关电路、液晶显示、自动照明和GSM模块与声光报警模块电路组成。
(3)看门狗芯片,用来保证单片机正常工作,并监测电源的是否稳定以及程序执行是否正常。
烟雾传感器用来检测厨房油烟的浓度,系统会根据室内油烟的浓度自动调节风扇的转速,在厨房的温度和烟雾高于其设定阈值的情况下,报警信号开启,蜂鸣器和排烟风扇同时作用,并向用户手机发送警报信息,达到即使排烟报警的效果。
按键用来设置温度和烟雾的报警阈值,系统的整个工作信息通过LED1062液晶屏幕显示出来。
2、吸油烟机控制系统电路设计2.1主控MCU电路设计主芯片选用MC96F6332AL,是一款自带32K字节闪存的8位CMOS单片机.可以为许多嵌人式控制应用提供高效灵活低成本解决方案。
本科结业设计(论文)令狐采学基于单片机的抽油烟机控制及净化系统设计学院电子信息工程学院专业电气工程及其自动化年级班别级2班学号40103学生姓名杨能指导教师刘鹏3月26日目录1 前言 (1)1.1 本课题研究布景和意义 (1)1.2 本课题研究任务 (3)2 系统总体设计计划 (4)2.1 本课题设计思路 (4)2.2 系统各模块计划选择和论证 (6)2.2.1 温度检测模块计划论证 (6)2.2.2 气体检测模块计划论证 (6)2.2.3 油烟净化模块计划论证 (7)2.2.4 显示模块计划论证 (9)3 系统硬件电路设计 (10)3.1 单片机最小系统设计 (10)3.2 电源电路设计 (10)3.3 油烟温度检测电路设计 (11)3.4 油烟和煤气浓度检测电路设计 (12)3.5 显示、按键和报警电路设计 (13)4 系统软件设计 (16)4.1 软件设计思想 (16)4.2 油烟温度检测法度设计 (17)4.3 油烟和煤气浓度检测法度设计 (19)4.4 显示、按键和报警法度设计 (20)5 系统调试 (23)5.1 硬件调试 (23)5.2 软件调试 (23)参考文献 (24)附录 (25)基于单片机的抽油烟机控制及净化系统设计摘要中国目前年夜大都家庭装置的抽油烟机只能手动操纵,抽油烟效果也其实不是特别好,这与它们的外形设计和内部构造都有一定关系,并且它们年夜大都是直接将油烟排到室外,不但污染环境,一段时间后还会使邻近的墙壁等笼盖上一层厚厚的油烟。
本设计对温度高、污染年夜的油烟使用DS18B20数字温度传感器检测,对温度低、危险系数年夜的天然气使用气敏传感器检测。
当厨房里的油烟或者可燃气体浓度达到设定值时,传感器将检测到的信号送入单片机,单片机经阐发后使相关法度运行,从而使机电启动开始抽油烟并同时爆发声音报警。
它还具有按时的功能,能够设置抽油烟机的工作时间长度。
本设计的硬件部分主要包含抽油烟机的按键电路模块、温度检测模块、浓度检测模块、显示电路模块、声音报警模块等,系统软件部分对各模块的流程进行了仔细阐发,包含控制主法度、油烟温度检测子法度、油烟和煤气浓度检测子法度、显示子法度、中断按键扫描子法度、中断报警办事子法度,通过这些法度即可实现抽油烟机的智能化控制。
目录摘要.............................................................第一章绪论.......................................................油烟的危害...............................................油烟机、评定............................................第二章系统结构与原理............................................. 第三章硬件设计与计算.............................................检测电路设计............................................3.1.1 煤气检测...........................................3.1.2 油烟检测...........................................3.1.3 按键输入...........................................3.1.4 系统自动复位电路...................................主控制电路设计..........................................3.2.1 AT89C51............................................3.2.2 对油烟机的开关控制.................................3.2.3自动照明控制.......................................3.2.4定时显示电路.......................................3.2.5报警电路........................................... 第四章软件程序设计...............................................软件设计................................................4.1.1 主程序的设计.......................................4.1.2 中断键盘扫描.......................................4.1.3 LED显示子程序.....................................4.1.4 INTI中断报警服务程序.............................. 第五章结论.......................................................参考文献..........................................................第三章硬件设计与计算检测电路设计3.1.1 煤气检测1 对气敏元件的选择对煤气检测选用气敏电阻,气敏电阻是一种半导体敏感器件,它是利用气体的吸附而使半导体本身的电导率发生变化这一机理来进行检测的。
基于51单片机控制的抽油烟机设计煤气灶以及抽油烟机已然成为现代家庭最常用设备,对于改善生活质量、提升家庭和谐与幸福等多方面具有重要意义。
抽油烟机的安全性也一直以来是社會大众关注的焦点,故此次以51单片机为核心,对更为智能化以及安全性的抽油烟机设计展开讨论。
标签:单片机;抽油烟机;设计0 引言传统形式的抽油烟机往往需要手动控制,因此存在干烧以及煤气泄漏等多方面安全隐患,随着人们对于生活质量要求越来越高,传统形式的抽油烟机势必需要进一步的优化与完善。
此次基于51单片机,将传统抽油烟机划分为检测部分以及执行部分,使其同时具备了煤气泄露监测、烟雾报警以及温度监测等多方面功能,大大提升了设备的智能化水平。
1 系统硬件设计分析1.1 控制模块分析硬件控制模块是整个系统功能实现的关键,也正是由于这个模块整个系统才能执行温度监测、按键设置以及红外监测等多项功能。
此次设计主要采用AT89S51单片机为核心控制元件,如下图所示为最小系统单片机原理图,整个系统主要分为复位模块、时钟模块以及P0口上拉电阻组成。
1.2 温度监测模块如图1所示,如若实际监测到的温度值大于EEPROM所预设的温度上限值,则在单片机的P0.5口会产生一个频率为1kHz的周期且占空比达到百分之三十的方波,从而控制电机运动,此外蜂鸣器也会进行报警。
一旦温度恢复到正常水平区间内,则相关电机停止工作,且蜂鸣器也停止报警。
而如若温度下降至预设值的下限范围时,则相对应的继电器工作联通加热电路,当温度恢复至正常区间内时,则继电器断开,停止加热。
1.3 数显模块此次设计数显主要采用LCD1602液晶屏显示,该屏幕包含8位数据端口,数据的选择端口与单片机P2.0连接,读写选择端口则与P2.1连接,使能信号则与单片机的P1.2口连接,从而形成有效显示回路,具体如图1所示。
1.4 热传感模块该模块主要用于对人员是否位于厨房空间内进行检测,避免人员长时间离开厨房时出现干烧等情况。
用PIC16C54单片机控制的吸油烟机 许多吸油烟机采用轻触式开关控制,用低价的单片机(如PIC16C54)做吸油烟机控制器可以获得较好的效果。
除了PIC16C54单片机外,类似的还有麦肯电子的单片机MDT2005等,只要通过一个简单的转换程序,就可以将PIC16C54的程序转换为MDT2005单片机的程序,给选用芯片带来了很大方便。
图1是采用PIC16C54单片机的吸油烟机控制器电路,其功能如下:J1控制吸油烟机的照明灯,按一下AN1,LED1变亮,同时继电器J1吸合。
再按一下AN1,LED1熄灭,J1释放。
J2、J3是控制吸油烟机风扇的转速,按一下AN2,LED2变亮,同时J2吸合,此时按一下AN3,LED3变亮,LED2熄灭,同时J3吸合,J2释放。
再按AN2则LED2变亮,LED3熄灭,J2吸合,J3释放。
继电器J2、J3是互锁的,两者只有一个能够吸合。
AN4为开关,控制AN2和AN3。
按一下AN4,LED4变亮,这时可以按AN2、AN3对J2、J3进行控制,再按一下AN4则LED4熄灭,亮着的LED2或LED3也熄灭,吸合着的J2或J3也同时释放。
在LED4不亮的状态下,按AN2或AN3不起作用,AN1则不受影响。
图2为该电路的电气安装图。
由于该电路要控制电机,因此对抗干扰的要求很高。
可从电路和软件两方面考虑。
在电路方面,全部电路装在两块线路板上。
单片机和按键在小板上,安装在吸油烟机的面板上。
继电器、电源在一块较大的线路板上,安装在吸油烟机内部,两板间用一根5芯电缆连接。
在软件方面,应在内存中保存一些输出端口寄存器的备份,并经常进行对比分析,若发现输出端口寄存器被干扰信。
基于单片机的抽油烟机控制及净化系统设计抽油烟机是家庭厨房常见的设备之一,用于排除烹饪中产生的油烟、异味等污染物,保持厨房空气清新。
为了提高抽油烟机的效能和便利性,可以使用单片机来控制抽油烟机的运行,并结合净化系统来提高其净化效果。
基于单片机的抽油烟机控制系统设计包括两部分:控制模块和传感器模块。
控制模块使用单片机,通过按钮、开关等外部输入设备,实现抽油烟机的开关、调速、延时关闭等功能。
传感器模块用来检测油烟的浓度和厨房的温度,以便根据实际情况自动调整抽油烟机的运行状态。
在设计上,可以使用数字式环境传感器来检测空气中的油烟浓度,温度传感器来检测厨房的温度,然后将传感器模块与单片机进行连接。
通过单片机对传感器数据进行采集和处理,可以实现智能控制功能。
在抽油烟机的正常运行过程中,通过按钮或开关控制单片机进行开关、调速等操作。
当油烟浓度超过一定阈值或温度超过一定阈值时,单片机可以自动开启抽油烟机并将其调整至合适的速度。
同时,单片机可以设置延时关闭的功能,使抽油烟机在用完一段时间后自动关闭,避免浪费电能。
除了控制模块,净化系统也是抽油烟机的重要组成部分。
净化系统可以包括预过滤、活性炭过滤和高效过滤等净化装置,用于去除油烟、异味等污染物。
净化系统可以与单片机的控制模块相结合,实现根据油烟浓度的不同自动调整净化装置的运行状态,提高净化效果。
总的来说,基于单片机的抽油烟机控制及净化系统设计可以提高抽油烟机的效能和便利性,增强其自动化控制和净化能力。
通过合理设计控制模块和净化系统,可以实现抽油烟机在使用过程中更加智能化和环保化的功能。
摘要本设计不仅具备油烟机基本开关功能,而且还能根据厨房在烧菜做饭过程中产生的油烟气温度高,而泄露的天然气温度低的特点,采取不同的传感器件,即对温度高、污染大的烟气采用数字温度传感器检测,而温度低但危险较大的天然气采用气敏传感器检测,当厨房的油烟或可燃有害气体达到一定浓度的值时,经传感器进入单片机分析,使电机电路自动启动并发出声音报警,油烟机迅速将有害气体抽走.本设计有定时功能,可对抽油烟机进行工作时长的设定。
论文的硬件部分主要设计了油烟机的按键输入模块,对油烟燃气温度、浓度的检测模块,显示模块,执行电路模块,声音报警模块等,系统软件部分主要是对各模块的流程做了详细的分析,控制主程序、中断按键扫描子程序、显示子程序,中断报警服务程序,以此从而实现抽油烟机自动控制功能.还分析了饮食业油烟污染的危害和油烟净化设备的现状,还附带了油烟净化系统。
油烟净化系统的设计是通过对油烟的流量以及压力的检测,通过压力传感器来检测油烟的进口和出口的浓度,通过检测装置把这个浓度的差反馈给电气控制装置,有电气控制装置来控制风机和油烟净化设备,达到净化的效果。
本设计的抽油烟机控制系统主要靠单片机进行控制,通过软件设计来自动控制抽油烟机的开关,所以相对于普通的抽油烟机来说,根据其自动检测功能,具有灵活性比较好,功耗低,便于操作等特点。
而本设计的油烟净化系统核心主要靠旋流净化设备产生的高速旋流,使油烟、废气、异味吸排更彻底,油烟净化率更高。
关键词:单片机,油烟机,检测,自动控制,油烟净化ABSTRACTThis design not only have the basic switching function of the hood and kitchen fumes generated in the process of cooking temperature and high and the gas leak of low temperature characteristic, take different sensors, namely to high temperature,pollution large flue gas using a digital temperature sensor detection, while the temperature is low but greater risk of natural gas using gas sensor detection, when the kitchen fumes or flammable harmful gases reach a certain concentration of value by the sensor into the single chip microcomputer analysis, make motor circuit automatically start and sound alarm, range hood promptly siphoned of harmful gases. This design has a timer function, long setting in the work on the range hood. The hardware part of the paper design of the range hood of the key input module, the lampblack, the concentration of gas temperature detection module, display module, the implementation of the circuit module, sound alarm module, the system software part mainly in each module process has made the detailed analysis, the fumes from the gas temperature, the concentration of the detection module, a detailed analysis, the main program control, interrupt key scanning routines,display routines,interrupt the alarm service program, in order to achieve the range hood automatic control functions. Also analyzed the status of cooking fume pollution hazards and smoke purification equipment, and also comes with a fume purification system。
吸油烟机的设计一、概述吸油烟机是广泛应用于厨房的重要的电气设备,吸油烟机性能的好坏将直接影响厨房的环境,因此也将影响人的健康。
随着现代科学技术的发展,吸油烟机将会有更广阔的应用领域,所以得到设计理想的吸油烟机也显得尤其重要。
吸油机控制电路的设计理念已相当成熟,根据对吸油烟机风扇电机转速不同的要求,可以用不同的方法来设计。
吸油烟机的设计既可以采用纯模拟电路,也可以采用数字电路,还可以采用数模混合电路。
吸油机可以采用数码管显示运行状态,也可以采用LCD液晶显示器。
该吸油烟机采用轻触式开关控制,并结合照明灯的亮和熄灭来控制油烟机风扇的转动。
照明灯开关按键一个B1,照明指示灯一个LED1,吸油烟机风扇转动按键两个B2、B3,对应这两个按键指示灯两个LED2、LED3,吸油烟机功能开关按键B4,对应指示灯LED4。
设计要求如下:1、按一下B1,LED1变亮,同时吸油烟机的照明灯打开,再按一下B1,LED1熄灭,对应照明灯熄灭。
2、B2和B3都能控制吸油烟机风扇的转动,但这两者控制吸油烟机的转速不同,按一下B2,LED2变亮、风扇高速转动,此时按一下B3,LED3变亮,LED2熄灭,风扇低速转动,B2不再控制风扇,再按一下B2则LED2变亮,LED3熄灭,风扇又高速转动,B3不再控制风扇,也就是说在同一时间里,B2和B3中只能有一个按键能控制风扇转动。
3、按一下B4,LED4变亮,这是可以按B2或B3控制风扇转动,再按一下B4则LED4熄灭,LED2、LED3熄灭,B2、B3不再起作用,在LED4不亮的状态下,按B2或B3不起作用,而B1则不受影响。
二、吸油烟机的方案设计在现代电子技术领域中,实现吸油烟机的控制电路的方法多种多样,可以通过纯硬件电路来实现,也可以采用硬件和软件结合的电路来完成。
以下列举了几种比较常用可行的方案,通过对比从中选择一种比较好的方案。
1吸油烟机的两种设计方案方案一:给予分立元件的吸油烟机控制电路基于分立元件的吸油烟机的控制系统主要由控制电路、键盘模块、指示灯模块以及电机驱动电路组成。
其原理方框图如图1所示。
图1基于分立元件的吸油烟机的原理方框图方案二:基于AT89C51微处理器的吸油烟机控制电路基于AT89C51的吸油烟机的控制系统主要由AT89C51微处理器、指示灯电路模块、键盘模块、LED显示器模块、复位模块等组成。
其原理方框图如图2所示。
基于基于AT89C51微处理器的吸油烟机控制系统的工作原理:以AT89C51微处理器为核心,通过软件编程实现电机控制的高低速切换。
一旦有按键操作,则引起单片机中断,在中断服务子程序里,根据相应的按键,执行的电机控制动作和指示灯显示。
同时,本系统扩展了一个时钟电路,能够显示时间。
2方案比较设计过程中,方案的选择必须与实际情形联系起来,从各方面考虑设计的可行性,即不仅要考虑其先进性也要考虑其实现的可能性,综合寻求最佳方案。
基于分立元件的吸油烟机采用纯硬件实现控制,故而电路结构复杂,所应用的集成IC 较多,功能实现起来比较麻烦,而且电路稳定性不高。
基于微处理器AT89C51的吸油烟机采用硬件和软件相结合的方式实现控制,电路简单,功能完善,所应用的集成IC 较少,稳定性较高。
经过上述方案的比较,结合各种因数综合考虑后,本设计采用方案二。
三、吸油烟机的硬件设计方案1电极控制模块电机控制电路的主要功能是完成吸油烟机风扇在高速转动与低速转动之间的切换。
其工作原理:微处理器在确认风扇转动按键B2被按下后,则单片机的P1.6置为高电平,三极管V8导通,继电器KA2吸合,常开触点KA2闭合,直流电机电枢回路通电,风扇电机低速转动;当按下按键B3后,则将单片机的P1.7置为高电平,三极管V7导通,继电器KA1吸合,常开触点KA1闭合,电阻R18被短路,此时电枢回路的总电阻小于KA1断开时的总电阻,而端电压保持不变,所以电枢回路的电流增大,故而风扇电机转速增大。
电机控制电路图如图3所示。
图3 电机控制电路原理图图5 指示灯电路原理图2 键盘模块根据设计要求,在本系统中共需要7个按键,照明灯按键B1、风扇转速控制键B2、B3,功能选择键B4、电子时钟设置调整键B5~B8。
为了节省I/O 资源,采用2×4键盘电路,键位的列线(输入线)连到P1.0~P1.2,行线(输出线)连到P1.2~P1.5,而2根列线则通过74LS08“与”门相连后,连到INT0端。
初态时,P1.2~P1.5全部为0,没有键压下时,INT0为高电平;当键位上有任一键压下,INT0端变低,向CPU 发出中断请求,执行中断服务程序扫面键盘。
键盘电路原理图如图4所示。
3指示灯模块指示灯电路的主要功能是指示当前吸油烟的工作状态。
当按键B1被按下时,将P3.0置为低电平,发光二极管V1点亮。
指示灯电路原理图如图5所示。
4复位电路模块复位电路采用STC813组成的看门狗电路。
它和单片机的连接电路如图6所示。
看门狗定时器对微处理机提供了独立的保护系统,当系统出现故障时,在可选的超时周期之后,STC813看门狗将发出RESET 信号,使CPU 自动复位。
利用STC813的低电压监测电路,可以保护系统免受低电压的影响,当Vcc 低到转换点以下时,系统复位,并一直保持到Vcc 返回并且稳定为止。
5 时钟模块若采用直接驱动法驱动6个七段显示器,共须6×8=48条I/O 线,而采用解码器驱动也要6×4=24条I/O 线,形成I/O 口的浪费。
所以采用扫描显示法,再加上TTL 七段显示译码器74LS48和3-8译码器74LS138,只需要7条I/O线,图4 键盘电路原理图图6 复位电路原理图可节省硬件。
时钟电路原理图如图7所示。
图7 时钟电路原理图四、吸油烟机的软件设计1初始化程序和主程序模块初始化程序流程图如图8所示,初始化程序部分主要使系统进入复位初始化的状态值。
具体过程为:设置中断优先级IP,选择定时器0的工作方式,并且设置初始值,开外部中断0,时钟显示寄存器初始化,使之全部显示为0,键盘端口初始化,指示灯显示初始化。
主程序流程图如图9所示,具体过程为:主程序调用初始化程序后,处于等待状态,当外部中断0产生中断,则调用外部中断0服务子程序,当外部中断0没有产生中断时,则调用定时器0服务子程序。
图8 初始化程序流程图2定时器0中断服务程序模块定时器0中断程序工作过程:定时器0每隔4ms 中断,一次中断相当于一个计数,每中断一次则计数加1。
当计数为250次时,则表示1s 到了,调用计时子程序,秒变量加1,再判断秒变量是否到60,如果到了60,则说明一分钟到了,分变量加1,同理判断时变量是否1小时到了,若计数到了则将相关变量清除为0。
同时调用显示子程序和子程序来对显示器进行扫描,从而显示时间数据。
定时器中断服务子程序的流程图如图10所示。
图9 主程序流程图3时钟程序模块时钟程序设计主要包括计时子程序CLOCL 、显示子程序DIS 、显示准备子程序READY 三部分。
计时子程序CLOCK 主要功能:每隔1S 判断秒变量、分变量、时变量寄存器的值,当秒、分变量寄存器的值超过60则清零,而时变量寄存器的值超过24则清零。
显示子程序SCAN 的主要功能:将列扫描值和显示数值送到P2口。
图10 定时器0中断程序流程图 图11计时子程序CLOCK 流程图显示准备子程序DIS 的主要功能:分别将显示的秒、分、时数值转换程十进制数值暂存到寄存器20H ~25H 。
计时子程序CLOCL 、显示子程序DIS 、子程序REDAY 的程序流程图分别如图11、图12和图13所示。
4外部中断0服务程序外部中断0中断服务程序的功能是:当有键按下时,通过“与”门触发外部中断0中断,调用键盘扫描子程序获取键值,根据键值执行相应的动作。
外部中断0的服务程序流程图和键盘扫描子程序流程图分别如图14、图15所示。
图12显示子程序DIS 流程图图13 显示准备子程序READY 流程图图14中断0服务程序流程图图15键盘扫描程序流程图五、仿真及调试1程序调试及问题分析在编写应用程序的过程中,无论是谁都难免出现一些或大或小的错误,尤其是我们这些编程不是很厉害的学生,在编程过程中必然会产生错误,所以编好初稿后必须进行程序调试。
程序调试过程确实不是一个容易的过程,我把程序在WAVE 6000集成实验环境下编辑好后一编译发现二十几处错误,有些是丢了冒号,或使用的是中文式的冒号,有些是宏汇编出错了等等错误。
2仿真测试在Proteus 6.9S环境下进行仿真,仿真效果如图16、图17所示。
图16吸油烟机仿真图一Array图17 吸油烟机仿真图二六、结束语做了两周的课程设计,有很多的心得体会,有关于单片机方面的,更多的是关于人与人之间关系方面的。
我们组一共有四个人,我单片机学的不太好,为此还是搞的很认真。
开始几天我白天在电子阅览室查找资料,晚上在图书馆查看一些有关书籍,有时还请教我们的指导老师。
经过老师的多凡讲解讲解使我得到了很大的收获。
所幸的是,我得到了很多同学的帮助。
我想没有他们我可能都要放弃了,因为我本人对单片机也并不是很熟悉,学的东西好像它是它,我是我理论联系不了实际。
以前的汇编语言没学好,一开始的程序这块儿就要令我不知所措了。
后来请教我们班的同学和老师,在他们的帮助下和大家的共同努力之下,终于写出了程序。
在此次课程设计中,我对着电路图再看课本,发现以前很多觉得很难记的东西现在记起来容易多了,因为整天都在同它们打交道。
51的引脚及其功能,驱动器的,所有我用到的我都一再的看书了解,同时请教同学我看书过程当中的疑惑。
在这个过程中又发现了以前连电路当中出的一些问题,能改的就改,不能改的,咳,要是时间再多一些,或者我能早点做好,不要想那些如果,还是准备自己的,做好我现在能做的吧。
还好,验收还算成功,但是我觉得对我来说已经很好,代表了我真实的水平,我觉得我对单片机的一些知识在这个动手的过程中真的是从无到有增长的。
同时我也尽量不去想别人得了多少分,没有什么不平衡的,有些人付出的是努力,有些人付出的是风险代价,其实这也没有什么不一样,这一点我早就了解。
最后,我发现自己对单片机竟然也有了一点兴趣,想暑假回家以后补一补汇编语言。
有什么问题请教下以前的那些老同学好了。
附录A吸油烟机的程序清单HOUR EQU 2AH ; 存放小时变量MIN EQU 2BH ; 存放分钟变量SEC EQU 2CH ; 存放秒钟变量GN_FLAG EQU 20H.5 ; 功能选择标志位ORG 00H ; 主程序起始地址LJMP MAIN ; 跳至主程序ORG 03H ; INT0中断起始地址LJMP INT0 ; 跳至中断子程序INT0ORG 0BH ; TIMER0中断起始地址LJMP TIMER ; 跳至TIMER0中断子程序TIMER**********************************************************主程序*********************************************************MAIN: MOV SP,#70H ; 设置堆栈在70HMOV 28H,#00H ; 显示寄存器初值为00MOV HOUR,#08H ; "时"寄存器初值为09HMOV MIN,#00H ; "分"寄存器初值为00HMOV SEC,#00H ; "秒"寄存器初值为00HMOV P2,#0FH ; 键盘端口初始化,行线置0MOV P3,#0FFH ; 指示灯初始化CLR GN_FLAG ; 功能标志位清零MOV TMOD,#01H ; TIMER0工作方式1MOV TL0, #60H ; 定时4MSMOV TH0, #0F0H ;MOV IE, #83H ; 中断使能SETB PX0 ; 中断0优先级高SETB IE0 ; 中断0跳变触发方式MOV R4, #250 ; 中断250次SETB TR0 ; 启动定时器0AJMP $ ; 等待中断********************************************************************外部中断0处理子程序******************************************************************** INT0: PUSH ACC ; 将ACC的值暂存于堆栈PUSH PSW ; 将PSW的值暂存于堆栈AGAIN: MOV P2,#0FHJNB P2.0,ZHIX0JNB P2.1,ZHIX1AJMP EXITZHIX0: MOV P2,#0F0HCALL DELAYJNB P2.4, B5JNB P2.5, B6JNB P2.6, B7JNB P2.7, B8JMP EXITZHIX1: MOV P2,#0F0HCALL DELAYJNB P2.4, B1JNB P2.5, B2JNB P2.6, B3JNB P2.7, B4JMP EXITB1: CPL P3.0 ; 照明灯点亮或熄灭JMP EXITB2: JB GN_FLAG, BB2CALL DELAYJB GN_FLAG, BB2JMP EXITBB2: CPL P3.1 ; 电机低速转动CLR P1.7JMP EXITB3: JB GN_FLAG, BB3JMP EXITBB3: CPL P3.3 ; 电机高速转动CLR P1.6JMP EXITB4: CPL P3.5 ; 电机功能选择CPL GN_FLAGJMP EXITB5: MOV A,SEC ; 将秒寄存器的值载入AADD A,#01H ; A的内容加1DA A ; A做十进制调整MOV SEC,A ; 将A的值存入秒寄存器CJNE A,#60H,EXIT ; 是否等于60秒,不是跳至N1MOV SEC,#00H ; 是则清除秒寄存器的值为00JMP EXITB6: MOV A,MIN ; 将分寄存器的值载入AADD A,#01H ; A的内容加1DA A ; A做十进制调整MOV MIN,A ; 将A的值存入分寄存器CJNE A,#60H,EXIT ; 是否等于60 分?不是则跳到N3 MOV MIN,#00H ; 是则清除分寄存器的值为00JMP EXITB7: MOV A,HOUR ; 将时寄存器的值载入AADD A,#01H ; A的内容加1DA A ; A做十进制调整MOV HOUR,A ; 将A的值存入秒寄存器CJNE A, #24H,EXIT ; 是否等于24?不是则跳到N5MOV HOUR,#00H ; 是则清除时寄存器的值为00JMP EXITB8: JMP EXITEXIT: POP PSW ; 至堆栈取回PSW的值POP ACC ; 至堆栈取回ACC的值RETI********************************************************************TO定时中断处理子程序********************************************************************TIMER: PUSH ACC ; 将ACC的值暂存于堆栈PUSH PSW ; 将PSW的值暂存于堆栈MOV TL0, #60H ; 计时到重新赋初值MOV TH0, #0F0H ;DJNZ R4,X2 ; 计时1S是否到?未到则跳到X2MOV R4,#250 ; 到了重新给R4赋值CALL CLOCK ; 调用计时子程序CLOCKCALL DIS ; 调用显示子程序DISX2: CALL SCAN ; 调用扫描子程序SCANPOP PSW ; 至堆栈取回PSW的值POP ACC ; 至堆栈取回ACC的值RETI ; 返回********************************************************************扫描子程序********************************************************************SCAN: CLR RS0CLR RS1 ; 选择工作寄存组0MOV R0,#28H ; (28H)为扫描指针CJNE @R0,#6,X3 ; 扫描完6个显示器?不是则跳至X3MOV @R0,#00H ; 是则扫描指针为0X3: MOV A,@R0 ; 扫描指针载入AADD A,#20H ; A加上常数20H(显示寄存器地址)=各时间显示区地址MOV R1,A ; 各时间显示时间地址存入R1MOV A,@R0 ; 扫描指针载入ASWAP A ; 将A的高低4位互换(P1高四位为扫描值,低四位为显示值)ORL A,@R1 ; 扫描值加显示值MOV P1,A ; 送至P1口显示INC @R0 ; 扫描指针加1RET ; 返回*********************************************************************计时处理子程序*********************************************************************CLOCK:MOV A,SEC ; 秒寄存器的内容载入AADD A,#01H ; 加1 秒DA A ; A做十进制调整MOV SEC,A ; 存入秒寄存器CJNE A,#60H,X4 ; 是否超过60秒?不是则跳到X4MOV SEC,#00H ; 是则秒位清零MOV A, MIN ; 分寄存器的内容载入AADD A,#01H ; 加1分DA A ; 做十进制调整MOV MIN,A ; 存入分寄存器CJNE A,#60H,X4 ; 是否超过60分?不是则跳到X4MOV MIN,#00H ; 是则分位清零MOV A,HOUR ; 时寄存器的内容载入AADD A,#01H ; 加1时DA A ; 做十进制调整MOV HOUR,A ; 存入时寄存器CJNE A,#24H,X4 ; 是否超过24时?不是则跳到X4MOV HOUR,#00H ; 是则时位清零X4:RET ; 返回*********************************************************************显示准备子程序*********************************************************************DIS: SETB RS0CLR RS1 ; 选择工作寄存器2MOV R1,#20H ; (20H)为显示寄存器,R1=20HMOV A,SEC ; 将秒寄存器的内容存入AMOV B,#10H ; 设B的累加器的值为10HDIV AB ; A除B ,商(十位数)存入A,余数(个位数)存入BMOV @R1,B ; 将B 的内容存入(20H)INC R1 ; R1=21HMOV @R1,A ; 将A的内容存入(21H)INC R1 ; R1=22HMOV A,MIN ; 将分寄存器的内容存入AMOV B,#10H ; 设B的累加器的值为10HDIV AB ; A除B ,商(十位数)存入A,余数(个位数)存入BMOV @R1,B ; 将B 的内容存入(22H)INC R1 ; R1=23HMOV @R1,A ; 将A的内容存入(23H)INC R1 ; R1=24HMOV A,HOUR ; 将时寄存器的内容存入AMOV B,#10H ; 设B的累加器的值为10HDIV AB ; A除B ,商(十位数)存入A,余数(个位数)存入BMOV @R1,B ; 将B 的内容存入(24H)INC R1 ; R1=25HMOV @R1,A ; 将A的内容存入(25H)RET ; 返回********************************************************************延时子程序********************************************************************DELAY: MOV R6,#10 ;5毫秒延时D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETEND附录B 吸油烟机的电路原理图。