




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的微波炉控制器摘要随着社会的快速开展,人们的生活节奏逐渐加快,微波炉方便快捷的烹饪特点为现代人的生活提供了便利,在现代家庭中,微波炉已成为必备的烹饪工具之一。通过制作微波炉控制器,更充分了解微波炉的结构特点和工作原理。本文介绍了微波炉控制器的设计、调试与实现。本设计中的微波炉控制器以AT89C52单片机为核心,由矩阵键盘、时间显示、控制输出等模块组成。并且能够实现大、中、小火力选择以及启动、停止和时间重设功能。其中初始时间由矩阵键盘输入设置,火力大小通过发光二极管来表示、电机的转速表示在加热中。微波炉控制器工作时,将按照设定的时间进行加热并倒计时,等时间到后报警提示、火力指示灯熄灭、转盘停止运转关键词:微波炉;单片机AT89C52;控制器ThemicrowaveovencontrollerbasedonMCUAbstractWiththerapiddevelopmentofoursocietyandthegraduallyspeedingstepsofourlife,theconvenientandefficientcookingfeaturesofmicrowaveovenhaveprovidedusgreathelpandmakeitanindispensablecookingtoolinourmodernlife.Throughthemakingofthemicrowaveovencontroller,Ihaveabetterunderstandingofitsstructuralfeaturesandworkingprinciples.Thisarticleintroducesthedesign,debuggingandimplementationofmicrowaveovencontroller.WiththeSCMAT89C52atthecore,itismadeupofmodulesofmatrixkeyboard,timedisplayandcontroloutputsandetc.What’smore,youcanchooseamax,midorminpowerandmakeitworkorstoporeventimeresettingatyourwill.Andtheinitialtimeissetbymatrixkeyboard;thepowersizeisshownbylight-emittingdiodes;thespinningofthemotorshowsitsworking.Whenitworks,itheatsaccordingtothesettingtimeandcountdownsuntilthealarmingsystemringing,theKeyword:microwaveoven;SCMAT89c52;目录1.绪论11.1微波炉的背景资料11.2微波炉的工作原理11.3使用微波炉时的考前须知21.4微波炉控制器总体设计思路22.系统总体方案….…..32.1系统总体设计32.2单片机的结构和接口的根本介绍42.2.1单片机的根本组成42.2.2单片机的内部结构52.2.3局部关键的程序存储单元62.2.4中断62.3显示驱动芯片7447/7448的简介72.3.1认识7447/744882.3.2引脚说明82.4高耐压、大电流达林顿陈列—ULN200392.4.1概述与特点92.4.2方框图92.4.3极限值92.4.4电特性…………102.5LM7805稳压芯片介绍…….………….102.5.1概述……………102.5.2主要特点………………………102.5.3外形图及引脚排列……………112.5.4功能框图………………………112.6三极管9013……………123.硬件电路与实现133.1微波炉控制器的总体硬件设计133.2矩阵键盘及器应用133.2.1矩阵键盘的结构与工作原理133.2.2矩阵式键盘的按键识别方法143.2.3矩阵式键盘的按键的例子153.2.4去抖处理153.3四位数码管原理及应用163.4步进电机控制电路173.4.1步进电机工作原理173.4.2步进电机控制系统原理183.5蜂鸣器控制电路………………………194.控制程序设计与仿真204.1键盘扫描及显示程序设计204.1.1键盘扫描流程图204.1.2键盘扫描仿真电路214.1.3键盘扫描和显示输出的程序214.2倒计时程序设计….234.2.1倒计时流程图234.2.2倒计时仿真电路244.2.3倒计时程序244.3步进电机控制程序设计264.3.1步进电机流程图264.3.2步进电机仿真电路274.3.3步进电机转动程序274.4总体程序设计294.4.1总体设计流程图294.4.2总体设计仿真电路304.3.3总体设计程序305.电路制作与系统调试………………………356.总结与展望36致谢37参考文献38附录39附录一:微波炉控制器实体图片39附录二:微波炉控制器硬件连接电路40附录三:微波炉控制器PCB板……………411绪论1.1微波炉的背景资料微波炉已经有50多年的开展历史,时至今日,微波炉已实现了高度工业化规模的生产。主要生产为日本、韩国以及欧洲的一些兴旺国家。我国自80年代开始小规模生产微波炉,开展至今,已具有相当的生产能力,成为该行业不可小视的生力军。微波炉在世界上兴旺国家的家庭普及率很高。美国是微波炉最大的消费市场。中国老百姓也已经开始认识和接受微波炉。可以预见,中国也将成为一个巨大的微波炉市场。随着科技的开展,生活水平的提高,人们对微波炉的要求也越来越高。未来的开展趋势将以智能、信息为主流,使微波炉的开展更人性化。因此基于单片机的微波炉控制系统的开发有利于推动微波炉市场的开展,使老百姓能用上更优秀的微波炉。1.2微波炉的工作原理微波炉,顾名思义,就是用微波来煮饭烧菜的。微波炉是一种用微波加热食品的现代化烹调工具。微波是一种电磁波。这种电磁波的能量不仅比通常的无线电波大得多,而且还很有"个性",微波一碰到金属就发生反射,金属根本没有方法吸收或传导它;微波可以穿过玻璃、陶瓷、塑料等绝缘材料,但不会消耗能量;而含有水分的食物,微波不但不能透过,其能量反而会被吸收。微波是指波长为0.01~1米的无线电波,其对应的频率为30000兆赫到300兆赫。为了不干扰雷达和其他通信系统,微波炉的工作频率多项选择用915兆赫或2450兆赫。微波炉由电源,磁控管,控制电路和烹调腔等局部组成。电源向磁控管提供大约4000伏高压,磁控管在电源鼓励下,连续产生微波,再经过波导系统,耦合到烹调腔内。在烹调腔的进口处附近,有一个可旋转的搅拌器,因为搅拌器是风扇状的金属,旋转起来以后对微波具有各个方向的反射,所以能够把微波能量均匀地分布在烹调腔内。微波炉的功率范围一般为500~1000瓦。微波加热的原理简单说来是:当微波辐射到食品上时,食品中总是含有一定量的水分,而水是由极性分子〔分子的正负电荷中心,即使在外电场不存在时也是不重合的〕组成的,这种极性分子的取向将随微波场而变动。由于食品中水的极性分子的这种运动。以及相邻分子间的相互作用,产生了类似摩擦的现象,使水温升高,因此,食品的温度也就上升了。用微波加热的食品,因其内部也同时被加热,使整个物体受热均匀,升温速度也快。1.3使用微波炉时的考前须知微波遇到金属物体,如银、铜、铝等会像镜子反射可见光一样被反射。常用金属隔离微波,不能使用金属器皿加热食物。金属在微波加热的情况下还会产生火花,特别是较锋利的金属制品﹝如:叉﹞。因此在使用微波烹调中,不得使用密闭的金属容器或金属网状容器来装载事物,以免发生意外事故。不要用一般普通塑料容器放入微波炉加热。虽然塑料自身不被加热,但热的食物会使容器变得很烫。这些塑料容器在高温下可能放出毒素,染污食物。使用微波炉时,应注意至少离炉0.5米以上,眼睛不要看着炉门,不可在炉前久站。食物从炉中取出后,最好先放几分钟再吃。1.4微波炉控制器总体设计思路通过对微波炉的了解,本设计采用89C52单片机作为设计的核心,由矩阵键盘、时间显示、控制输出等模块组成。由矩阵键盘模块来实现时间的设置,火力大、中、小的选择以及启动、停止和时间重设功能;时间显示模块由七段数码管来实现,其中初始时间由矩阵键盘输入;火力大小通过发光二极管来表示,红、绿、黄三种灯分别表示大力大、中、小,默认为中火力;启动加热后,步进电机开始转动,七段数码管按照设定的时间进行倒计时,等时间快到零时报警提示、等于零时火力指示灯熄灭、转盘停止运转2系统总体方案2.1系统总体设计本设计采用AT89C52单片机作为设计的核心,由矩阵键盘、时间显示、控制输出等模块组成。由矩阵键盘模块来实现时间的设置,火力大、中、小的选择以及启动、停止和时间重设功能;时间显示模块由七段数码管来实现,其中初始时间由矩阵键盘输入;火力大小通过发光二极管表2-1元件清单元件清单:表2-1元件清单元件清单数量AT89C521ULN2003174LS481LM78051LED4三极管90135四位数码管1步进电机1蜂鸣器1自锁开关1轻触开关16220欧电阻1610千欧电阻110k*8排阻130p电容210u电容1100u电容212MHZ晶振1USB接口116p插槽240p插槽1排针102.2单片机的结构和接口的根本介绍2.2.1单片机的根本组成1.CPU系统1个8位微处理器CPU内部时钟电路总线控制逻辑2.内部存储器4KB的片内程序存储器〔ROM/EPROM/Flash〕128B数据存储器〔RAM〕和128B特殊功能存放器SFR〔80C51只用到其中21B〕3.I/O接口及中断定时功能4个8位可编程的I/O〔输入/输出〕并行接口5个中断源的中断控制系统,可编程为2个优先级2个16位定时/计数器,既可以定时,又可以对外部事件进行计数1个全双工的串行I/O接口,用于数据的串行通信所有这些都通过单片机内部的总线相连接。下列图所示为80C51单片机的根本组成,可以看出在该芯片上集成了一个微型计算机图2-180C51单片机的根本组成2.2.2单片机的内部结构1.中央处理器CPUCPU是80C51内部的1个字长为8位的中央处理单元,它由运算器、控制器两局部组成。实际上构成了单片机的核心。〔1〕运算器以算术逻辑单元ALU〔ArithmeticLogicUnit〕为核心,还包括累加器A、程序状态字存放器PSW〔ProgramStatusWord〕、B存放器、两个8位暂存器TMP1和TMP2等部件。可以进行加、减、乘、除、加1、减1、BCD数十进制调整、比拟等算术运算;也可以进行与、或、非、异或等逻辑运算;2.存储器〔1〕片内ROM是程序存储器;〔2〕片内RAM,可用于存放输入、输出数据和中间计算结果,或作为数据堆栈区。3.I/O口〔1〕并行口有4个8位并行I/O口P0~P3,均可并行输入输出8位数据。〔2〕串行口有1个串行I/O口,用于数据的串行输入输出4.定时器/计数器〔1〕产生定时脉冲,实现单片机的定时控制;〔2〕用于计数方式,记录外部事件的脉冲个数。图2-2单片机的内部结构2.2.3局部关键的程序存储单元在程序存储器中,某些单元保存给系统使用,见下表:表2-2中断入口存储器单元保存单元的作用0000H~0002H复位后初始化引导程序入口0003H~000AH外部中断0入口000BH~0012H定时器0溢出中断入口0013H~001AH外部中断1入口001BH~0022H定时器1溢出中断入口0023H~002AH串行口中断入口002BH定时器2溢出中断入口注:标注灰色背景的存储空间为增强型芯片所独有2.21、中断源51单片机有5个中断源:两个外部中断、两个计数/定时器中断和一个串行口中断。2、中断响应步骤:(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。(2)寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。(3)执行中断效劳程序,用中断效劳程序处理需要改变的变量或者事件。(4)中断返回,执行完中断效劳程序后,从中断断点处返回主程序,继续执行主程序。3、中断的实现存放器IE、IP、TCON和SCON来控制中断申请、中断的开关和各种中断源的优先级确定。〔1〕中断方式和标志位单片机的中断标志位和方式的选择是通过TCON到达低4位控制字实现的。TCON中的低4位用于外部中断的控制,高4位是T0、T1控制字。控制字如下:表2-3TCON中的控制字TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1TR1TF0TR0IE1IT1IE0IT0外部中断请求源IT0INT0触发方式控制位,可由软件进行置位和复位.IT0=0,INT0为低电平触发方式;IT0=1,INT0为负跳变触发方式.IE0INT0中断请求标志位.当有外部的中断请求时,这位就会置1(这由软件来完成),在CPU响应中断后,由硬件将IE0清0.内部中断请求源TF0定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0.当CPU响应中断后,再由硬件TF0清0.TR0定时器T0的中断允许.(2)中断允许存放器IE表2-4中断允许存放器IEIE.7IE.6IE.5IE.4IE.3IE.2IE.1IE.0EAXXESET1EX1ET0EX0其中: EA:总开关,如果它等于0,那么所有中断都不允许。 ES:串行口中断允许。 ET1:定时器1中断允许。 EX1:外中断1中断允许。 ET0:定时器0中断允许。 EX0:外中断0中断允许。〔3〕5个中断源的优先级单片机的中断效劳入口地址如下,它们的自然优先级由高到低排列。外中断0:0003H定时器0:000BH外中断1:0013H定时器1:001BH串口:0023H开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置,中断优先级由中断优先级存放器IP来设置,IP中某位设为1,相应的中断就是高优先级,否那么就是低优先级。表2-5中断优先级存放器IPIP.4IP.3IP.2IP.1IP.0EAXXPSPT1PX1PT0PX02.3显示驱动芯片7447/7448的简介2.3.1认识7447/7448BCD码转换成7段LED数码管的译码驱动IC,首推7447系列,包括7446、7447、7448、74LS49,其中7446及7447输出低电平驱动的显示码,用以推动共阳极的7段LED数码管;而7448及74LS49输出高电平驱动的显示码,用以推动共阴极7段LED数码管。7446、7447与7448的引角相同〔双并排16Pins〕,74LS49为双并排14Pins,如下图。图2-37446、7447、7448/74LS49引脚图2.3.2引脚说明D、C、B、A:BCD码输入引脚。a、b、c…….g:7段LED数码管输出引脚。LampTest:本引脚为测试引脚,简称为LT引脚。当本引脚输入低电平时,所连接的7段LED数码管全亮。正常显示下,本引脚应输入高电平。RBI:本引脚为涟波淹没输入引脚〔ripple-blankinginput〕,正常显示下,本引脚应输入高电平。假设本引脚输入低电平〔即0〕,且D、C、B、A引脚输入为0,那么该位数不显示,这项功能称为消除前置0〔leadingzerosuppression〕或消除尾端0〔trailingzerosuppression〕BI/RBO:本引脚为淹没输入或涟波淹没输出引脚〔blankinginand/orripple-blankingoutput〕。正常显示下,本引脚输入高电平或空接。假设本引脚连接低电平〔0〕,那么该位数将不显示。当该位数不显示时,本引脚将输出低电平,以串接到前一个位数的RBI引脚,作为消除前置0〔leadingzerosuppression〕或消除尾端0〔trailingzerosuppression〕之用。这4个IC都是开集极式输出,对于开集极式输出所连接的负载,其所连接的电源电压也有些差异,如下表所示。表2-6最大负载电压、最大吸入电流对照表最大负载电压最大吸入电流744630V40mA744715V40mA74485.5V6.4mA74LS495.5V8mA2.4高耐压、大电流达林顿陈列—ULN20032.4ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。该电路的特点如下:ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。ULN2003采用DIP—16或SOP—16塑料封装。2.4.图2-4图2-4ULN2003内部框图表2-7ULM2003极限值2.表2-7ULM2003极限值表2-8ULM2003电特性2.4表2-8ULM2003电特性2.5LM7805稳压芯片介绍2.57805系列为3端正稳压电路,TO-220封装,能提供多种固定的输出电压,应用范围广。内含过流,过热和过载保护电路。带散热片时,输出电流可达1A,虽然时固定稳压电路,但使用外接元件,可获得不同的电压和电流。2.5输出电流可达1A输出电压有:5V过热保护短路保护输出晶体管SOA保护2.5图2-5图2-5LM7805外形图2.5图2-6图2-6LM7805功能框图2.6三极管9013三极管90139013是一种NPN型硅小功率的三极管它是非常常见的晶体三极管,在收音机以及各种放大电路中经常看到它,应用范围很广,它是npn型小功率三极管。集电极电流Ic:Max500mA工作温度:-55℃to+集电极-基极电压Vcbo:40V主要用途:放大电路图2-7图2-79013管脚图3硬件电路与实现3.1微波炉控制器的总体硬件设计图3-1微波炉控制器硬件连接电路图3-1微波炉控制器硬件连接电路3.2矩阵键盘及其应用3.2.1矩阵键盘的结构与工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如下列图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口〔如P1口〕就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比方再多加一条线就可以构成20键的键盘,而直接用端口线那么只能多出一键〔9键〕。由此可见,在需要的键数比拟多时,采用矩阵法来做键盘是合理的。图3-2矩阵键盘图3-2矩阵键盘矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口那么作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,那么输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。3.2.2矩阵式键盘的按键识别方法确定矩阵式键盘上何键被按下,介绍一种“行扫描法〞。行扫描法行扫描法又称为逐行〔或列〕扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下:判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,那么表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。假设所有列线均为高电平,那么键盘中无键按下。判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。假设某列为低,那么该列线与置为低电平的行线交叉处的按键就是闭合的按键。3.2.3矩阵式键盘的按键的例子图仍如上所示。AT89S52单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线分别接有4个上拉电阻到正电源+5V,并把列线设置为输入线,行线设置为输出线。4根行线和4根列线形成16个相交点。检测当前是否有键被按下。检测的方法是输出全“0〞,读取的状态,假设为全“1〞,那么无键闭合,否那么有键闭合。去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。假设有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。按下述4种组合依次输出:一二三四P1.71110P1.61101P1.51011P1.40111在每组行输出时读取,假设全为“1〞,那么表示为“0〞这一行没有键闭合,否那么有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。3.2.4去抖处理按键的抖动时间一般为5-10ms,抖动可能造成一次按键的屡次处理问题。当采取措施消除抖动的影响。消除的方法有多种,常采用软件延时10ms的方法。在按键较少时,常采用硬件去抖电路。当按键较多时,常采用软件延时的方法。当单片机检测到有键按下时,先延时10ms,然后再检测按键的状态,假设仍是闭合状态,那么认为真正有键按下。当检测到按键释放时,亦需要做同样的处理。3.3四位数码管原理及应用单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路。LED的发光原理,我们在这里不做介绍。七段LED的数码管,那么在一定形状的绝缘材料上,利用单只LED组合排列成“8”将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阳式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然。LED的电流通常较少,一般均需在回路中接上限流电阻。假设我们将“b〞和“c〞段接上正电源,其它端接地或悬空,那么“b〞和“c〞段发光,此时,数码管显示将显示数字“1〞。而将“a〞、“b、“d〞、“e〞和“g〞段都接上正电源,其他引脚悬空,此时数码管将显示“2〞,其他字符的显示原理类同。图3-3四位数码管实物图图3-3四位数码管实物图图3-5四位数码管实物引脚图图3-4图3-5四位数码管实物引脚图图3-4四位数码管内部逻辑图管脚顺序:从数码管的正面看,以第一脚位起点,管脚的顺序是逆时针方向排列:12-9-8-6公共端D5-3D6-3A-11B-7C-4D-2E-1F-10G四位数码管连接图图3-6四位数码管连接图图3-6四位数码管连接图3.4步进电机控制电路3.图3-7步进电机原理图图3-7步进电机原理图1.步进电机〔1〕是一个数字/角度转换器,也是一个串行的数/模转换器。〔2〕是过程控制及仪表中的主要控制元件。〔3〕广泛用于定位系统2.概念:〔1〕步进电机旋转的根本原因:错齿;〔2〕术语:齿距角、步距角;〔3〕通电一周,转子转过一个齿距角,N为几,一个齿距角分几步走完。3.图图3-8步进电机控制系统的组成用微型机控制步进电机原理系统图图图3-9用微型机控制步进电机原理系统图步进电机连接图图3-10图3-10步进电机连接图3.5蜂鸣器控制电路蜂鸣器分有源蜂鸣器和无源蜂鸣器,这里的“源〞不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。图3-12蜂鸣器驱动电路图图3-12蜂鸣器驱动电路图3-11蜂鸣器实物图4控制程序设计与仿真4.1键盘扫描及显示程序设计键盘扫描流程图键盘扫描键盘扫描有键闭合延时去抖动扫描键盘找到闭合键计算键值建立有效标志返回建立无效标志闭合键释放图4-1微波炉控制器的键盘扫描方式流程图矩阵键盘仿真电路图4-图4-2矩阵扫描显示电路键盘扫描和显示输出的程序:#include<reg52.h>#include<intrins.h>charTAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};chardisp[4]={0x8f,0x4f,0x2f,0x1f};//数码管控制显示unsignedintdigit=1234; //按键输入的数值chardig[4];//声明led数码管显示的数字voiddebouncer(void); //声明防抖动函数voidscanner(void);//声明扫描函数#defineTH_M1(65536-500)/256#defineTL_M1(65536-500)%256#definerowkey()(~P1)&0x0f//读入p1低四位〔列按键值〕宏main(){ EA=1; ET1=1; TMOD=0X10; //定时器1,模式1 TH1=TH_M1;TL1=TL_M1; TR1=1; while(1)scanner(); }voiddebouncer(void) //延时程序{inti;for(i=0;i<3600;i++);//约30ms延时}voidscanner(void)//扫描函数{charcol,row;//声明行和列charscan,keyin,kcode;//声明扫描信号,列按键值,扫描码scan=0xef;for(col=0;col<4;col++){P1=scan;//P1按键扫描 keyin=rowkey();//读入第col行的列按键值 _nop_(); //三个_nop_();作用为让P1口的状态稳定 _nop_(); _nop_();if(keyin!=0)//假设有按键按下{for(row=0;row<3;row++) {if(keyin==(0x01<<row)) {kcode=row+3*col;//计算出按键码 digit=digit*10+kcode; //扫描码写入七段数码管数组digit=digit%1000; //取输入的后四位,输入不够四位高位为零 break; //离开第row列扫描 } } while(rowkey()!=0) //等按键放开 debouncer(); //防抖动函数 } scan=(scan<<1)|0x01; //产生左一位扫描信号 }} charm=0;voidT1_100us(void)interrupt3 //T1中断子程序开始,显示四位数码管{TH1=TH_M1;TL1=TL_M1;dig[0]=digit%10; dig[1]=(digit%100)/10; dig[2]=(digit%1000)/100; dig[3]=digit/1000; P2=TAB[dig[m]]&disp[m]; m=(m<3)?m+1:0;}4.2倒计时程序设计4.2.1图4-图4-3倒计时程序流程图开始计数值初值计数值输出延时1s上次计数值取出计数值减1判断是否为0倒数结束4.2.图4图4-4倒计时显示电路4.2.3#include<reg52.h>charTAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};chardisp[4]={0x8f,0x4f,0x2f,0x1f};//数码管控制显示unsignedintdigit=4321; //数值显示chardig[4];#defineTH0_M0(65536-20000)/256#defineTL0_M0(65536-20000)%256#defineTH1_M1(65536-1000)/256#defineTL1_M1(65536-1000)%256main(){ TMOD=0x01;//定时器0,模式1 TH0=TH0_M0; TL0=TH0_M0; IE=0x82;//翻开中断 TR0=1;//启动计数器TR0 EA=1; ET1=1; TMOD=0X10; //定时器1,模式1 TH1=TH1_M1;TL1=TL1_M1; TR1=1; while(1);}/********************************//*定时中断*//********************************/intm0=50;voidt0_1s(void)interrupt1//定时中断TR0{ TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit=(digit>0)?digit-1:4321; m0=50; }}charm1=0;voidT1_100us(void)interrupt3 //T1中断子程序开始,显示四位数码管{TH1=TH1_M1;TL1=TL1_M1; dig[0]=digit%10; dig[1]=(digit%100)/10; dig[2]=(digit%1000)/100; dig[3]=digit/1000; P2=TAB[dig[m1]]&disp[m1]; m1=(m1<3)?m1+1:0;}4.3步进电机控制程序设计4.3.1开始开始取第一个值延时取第二个值延时取第三个值延时取第四个值图4-5步进电机程序流程图4.3.2图图4-6步进电机转动电路步进电机转动程序:#include<reg52.h>#defineOUTPUTP0charexcite[]={0x08,0x01,0x02,0x04};//1相驱动鼓励数组//charexcite[]={0x03,0x06,0x0c,0x09};//2相驱动鼓励数组unsignedchartimes=10;unsignedcharcount=10;#defineTH_M1(65536-500)/256#defineTL_M1(65536-500)%256unsignedchari=0;main(){OUTPUT=0;TMOD=0x10;IE=0x88;TH1=TH_M1;TR1=1; TL1=TL_M1;while(1);}voidtime1(void)interrupt3{TH1=TH_M1;TL1=TL_M1;if(--count==0){OUTPUT=excite[i];i=(i<4)?i+1:0;count=times;}}4.4总体程序设计开始4.4.1开始计算按键值计算按键值火力选择电机运转结束键盘扫描按键值减一图4-7总体设计流程图按键值等于0启动删除按键值4.4.2总体设计仿真图图4-8总体设计仿真电路4.4.3#include<reg52.h>#include<intrins.h>charTAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};chardisp[4]={0x8f,0x4f,0x2f,0x1f};//数码管控制显示charexcite[]={0x08,0x01,0x02,0x04};//步进电机1相驱动鼓励数组//charexcite[]={0x03,0x06,0x0c,0x09};//2相驱动鼓励数组unsignedchartimes=10;//声明电机重复数(即电机的快慢〕unsignedcharcount=10;//声明电机重复变量chardig[4];charc1=5; //蜂鸣器第5秒、3秒、1秒的时候发声charc2=4;charqid=0; //启动的判断chara1=0,a2=1,a3=0; //火力大中小的判断intdigit=0; //按键输入的初始数值sbitda=P3^0;//声明火力大小的按键sbitzhong=P3^1;sbitxiao=P3^2;sbitqidong=P3^3;//声明启动按键sbitchs=P3^4;//声明重新输入数值sbithli1=P0^5; //声明火力的输出端sbithli2=P0^6;sbithli3=P0^7;sbitbuzzer=P0^4; //蜂鸣器接口voiddebouncer(void); //声明防抖动函数voidscanner(void);//声明扫描函数voidhuoli(void);//火力大小函数#definerowkey()(~P1)&0x0f//读入p1低四位〔列按键值〕宏#defineOUTPUTP0//步进电机输出端低四位#defineTH0_M0(65536-20000)/256#defineTL0_M0(65536-20000)%256#defineTH1_M1(65536-500)/256#defineTL1_M1(65536-500)%256main(){ IE=0x8a; ET0=1; ET1=1; TMOD=0X11; //定时器0和1,模式1 TH1=TH1_M1;TL1=TL1_M1; TH0=TH0_M0;TL0=TH0_M0; TR1=1;//开启定时器1 P3=0xff; P0=0xe0; while(qid==0) //键盘扫描 scanner(); while(qid==1) //启动 {TR0=1; huoli(); if(a1==1) //启动加热 {hli1=0;hli2=1;hli3=1;} if(a2==1) {hli1=1;hli2=0;hli3=1;} if(a3==1) {hli1=1;hli2=1;hli3=0;} if(digit==c1) {buzzer=1;//蜂鸣器每次发声1s c1=c1-2;} if(digit==c2) {buzzer=0;c2=c2-2;} while(digit<=0)//加热结束关闭系统 {TR0=0; TR1=0; P0=0xe0; P1=0; P2=0; P3=0;} } }voidscanner(void)//扫描函数{charcol,row;//声明行和列charscan,keyin,kcode;//声明扫描信号,列按键值,扫描码scan=0xef;for(col=0;col<4;col++){P1=scan;//P1按键扫描 keyin=rowkey();//读入第col行的列按键值 _nop_(); //三个_nop_();作用为让P1口的状态稳定 _nop_(); _nop_();if(keyin!=0)//假设有按键按下{for(row=0;row<3;row++) {if(keyin==(0x01<<row)) {kcode=row+3*col;//计算出按键码 digit=digit*10+kcode; //扫描码写入七段数码管数组 digit=digit%1000; //取输入的后三位,输入不够三位高位为零 break; //离开第row列扫描 } } while(rowkey()!=0) //等按键放开 debouncer(); //防抖动函数 } if(qidong==0) //判断启动按键是否按下 {qid=1; while(qidong==0); } if(chs==0) //重新输入数值 {digit=0; while(chs==0); }huoli(); //火力大小的判断 scan=(scan<<1)|0x01; //产生左一位扫描信号 }} charm=0,n=0;voidT1_1ms(void)interrupt3 //T1中断子程序开始,显示四位数码管{TH1=TH1_M1;TL1=TL1_M1;dig[0]=digit%10; dig[1]=(digit%100)/10; dig[2]=(digit%1000)/100; dig[3]=digit/1000; P2=TAB[dig[m]]&disp[m]; m=(m<3)?m+1:0; if(qid==1)//启动步进电机 if(--count==0) {OUTPUT=OUTPUT&0xf0;//P0口高四位不变 OUTPUT=excite[n]|OUTPUT; n=(n<4)?n+1:0; count=times;} }intm0=50;voidt0_1s(void)interrupt1//定时中断TR0{ TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit--; m0=50;}}voidhuoli(void)//火力大小函数{ if(da==0) //判断大火力是否按下{ a1=1;a2=0;a3=0; while(da==0); //等待按键放开 } if(zhong==0) /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成长记录袋小学生课件
- 2025年环保厕所项目合作计划书
- 2025年重铬酸钠项目建议书
- 加强网络信息安全保障条例
- 公司股份制实施方案
- 金融投资顾问投资风险提示书
- 小王子电影故事解读
- StA-IFN-1-生命科学试剂-MCE
- 石油库区员工年终总结
- 2025年太阳能热发电系统项目合作计划书
- TPU材料项目可行性研究报告写作参考范文
- 试用期考核合格证明表
- 常见八种疾病
- 胶粘剂基础知识及产品详解(课堂PPT)
- 锅炉补给水阴阳混床操作步序表
- 2005年第4季度北京住房租赁指导价格
- 医疗器械GMP计算机软件确认控制程序
- 苏教版最新五年级数学上册应用题与解决问题专项
- 髋关节置换术男性患者留置尿管最佳时机探析和对策
- [爆笑小品校园剧本7人]爆笑小品校园剧本
- 岸边集装箱起重机CMS系统
评论
0/150
提交评论