摘 要
随着社会的快速发展,人们的生活节奏逐渐加快,微波炉方便快捷的烹饪特点为现代人的生活提供了便利,在现代家庭中,微波炉已成为必备的烹饪工具之一。
通过制作微波炉控制器,更充分了解微波炉的结构特点和工作原理。本文介绍了微波炉控制器的设计、调试与实现。本设计中的微波炉控制器以ATC52单片机为核心,由矩阵键盘、时间显示、控制输出等模块组成。并且能够实现大、中、小火力选择以及启动、停止和时间重设功能。其中初始时间由矩阵键盘输入设置,火力大小通过发光二极管来表示、电机的转速表示在加热中。微波炉控制器工作时,将按照设定的时间进行加热并倒计时,等时间到后报警提示、火力指示灯熄灭、转盘停止运转。
关键词: 微波炉;单片机ATC52;控制器
I
The microwave oven controller
based on MCU
Abstract
With the rapid development of our society and the gradually speeding steps of our life, the convenient and efficient cooking features of microwave oven have provided us great help and make it an indispensable cooking tool in our modern life.
Through the making of the microwave oven controller, I have a better understanding of its structural features and working principles. This article introduces the design, debugging and implementation of microwave oven controller. With the SCM ATC52 at the core, it is made up of modules of matrix keyboard, time display and control outputs and etc. What’s more, you can choose a max, mid or min power and make it work or stop or even time resetting at your will. And the initial time is set by matrix keyboard; the power size is shown by light-emitting diodes; the spinning of the motor shows its working. When it works, it heats according to the setting time and countdowns until the alarming system ringing, the power indicator light packing up and the turntable stopping.
Keyword: microwave oven;SCM ATc52;controller
II
目 录
1.绪 论 ................................................................... 1
1.1微波炉的背景资料 ..................................................... 1 1.2微波炉的工作原理 ..................................................... 1 1.3使用微波炉时的注意事项 ............................................... 2 1.4微波炉控制器总体设计思路 ............................................. 2 2.系统总体方案 ....................................................... ….…..3
2.1系统总体设计 ......................................................... 3 2.2单片机的结构和接口的基本介绍 ......................................... 4
2.2.1单片机的基本组成 ............................................... 4 2.2.2单片机的内部结构 ............................................... 5 2.2.3部分关键的程序存储单元 ......................................... 6 2.2.4中断 ........................................................... 6 2.3显示驱动芯片7447/7448的简介 ......................................... 7
2.3.1认识7447/7448 .................................................. 8 2.3.2引脚说明 ....................................................... 8 2.4高耐压、大电流达林顿陈列—ULN2003 .................................... 9
2.4.1概述与特点 ..................................................... 9 2.4.2方框图 ......................................................... 9 2.4.3 极限值 ......................................................... 9 2.4.4 电特性………………………………………………………………………… 10 2.5 LM7805稳压芯片介绍 ..................... …………………….………….10 2.5.1 概述…………………………………………………………………………… 10 2.5.2 主要特点……………………………………………………………………… 10 2.5.3 外形图及引脚排列…………………………………………………………… 11 2.5.4 功能框图……………………………………………………………………… 11 2.6三极管9013…………………………………………………………………………… 12 3.硬件电路与实现 ........................................................... 13
3.1微波炉控制器的总体硬件设计 .......................................... 13 3.2矩阵键盘及器应用 .................................................... 13
3.2.1矩阵键盘的结构与工作原理 ...................................... 13 3.2.2矩阵式键盘的按键识别方法 ...................................... 14 3.2.3矩阵式键盘的按键的例子 ........................................ 15 3.2.4去抖处理 ...................................................... 15
III
3.3四位数码管原理及应用 ................................................ 16 3.4步进电机控制电路 .................................................... 17
3.4.1 步进电机工作原理 .............................................. 17 3.4.2步进电机控制系统原理 .......................................... 18 3.5 蜂鸣器控制电路………………………………………………………………………19 4.控制程序设计与仿真 ....................................................... 20
4.1键盘扫描及显示程序设计 .............................................. 20
4.1.1键盘扫描流程图 ................................................ 20 4.1.2键盘扫描仿真电路 .............................................. 21 4.1.3键盘扫描和显示输出的程序 ...................................... 21 4.2倒计时程序设计…. ................................................... 23
4.2.1倒计时流程图 .................................................. 23 4.2.2倒计时仿真电路 ................................................ 24 4.2.3倒计时程序 .................................................... 24 4.3步进电机控制程序设计 ................................................ 26
4.3.1步进电机流程图 ................................................ 26 4.3.2步进电机仿真电路 .............................................. 27 4.3.3步进电机转动程序 .............................................. 27 4.4 总体程序设计 ....................................................... 29
4.4.1总体设计流程图 ................................................ 29 4.4.2总体设计仿真电路 .............................................. 30 4.3.3总体设计程序 .................................................. 30
5.电路制作与系统调试……………………………………………………………………… 35 6.总结与展望 ............................................................... 36 致 谢 .................................................................... 37 参考文献 ................................................................... 38 附 录 ..................................................................... 39
附录一:微波炉控制器实体图片 ........................................... 39 附录二:微波炉控制器硬件连接电路 ....................................... 40 附录三:微波炉控制器PCB板…………………………………………………………… 41
IV
1 绪 论
1.1微波炉的背景资料
微波炉已经有50多年的发展历史,时至今日,微波炉已实现了高度工业化规模的生产。主要生产为日本、韩国以及欧洲的一些发达国家。我国自80年始小规模生产微波炉,发展至今,已具有相当的生产能力,成为该行业不可小视的生力军。微波炉在世界上发达国家的家庭普及率很高。美国是微波炉最大的消费市场。中国老百姓也已经开始认识和接受微波炉。可以预见,中国也将成为一个巨大的微波炉市场。 随着科技的发展,生活水平的提高,人们对微波炉的要求也越来越高。未来的发展趋势将以智能、信息为主流,使微波炉的发展更人性化。因此基于单片机的微波炉控制系统的开发有利于推动微波炉市场的发展,使老百姓能用上更优秀的微波炉。
1.2微波炉的工作原理
微波炉,顾名思义,就是用微波来煮饭烧菜的。微波炉是一种用微波加热食品的现代化烹调工具。微波是一种电磁波。这种电磁波的能量不仅比通常的无线电波大得多,而且还很有\"个性\",微波一碰到金属就发生反射,金属根本没有办法吸收或传导它;微波可以穿过玻璃、陶瓷、塑料等绝缘材料,但不会消耗能量;而含有水分的食物,微波不但不能透过,其能量反而会被吸收。
微波是指波长为0.01~1米的无线电波,其对应的频率为30000兆赫到300兆赫。为了不干扰雷达和其他通信系统,微波炉的工作频率多选用915兆赫或2450兆赫。
微波炉由电源,磁控管,控制电路和烹调腔等部分组成。电源向磁控管提供大约4000伏高压,磁控管在电源激励下,连续产生微波,再经过波导系统,耦合到烹调腔内。在烹调腔的进口处附近,有一个可旋转的搅拌器,因为搅拌器是风扇状的金属,旋转起来以后对微波具有各个方向的反射,所以能够把微波能量均匀地分布在烹调腔内。微波炉的功率范围一般为500~1000瓦。
微波加热的原理简单说来是:当微波辐射到食品上时,食品中总是含有一定量的水分,而水是由极性分子(分子的正负电荷中心,即使在外电场不存在时也是不重合的)组成的,这种极性分子的取向将随微波场而变动。
由于食品中水的极性分子的这种运动。以及相邻分子间的相互作用,产生了类似摩擦的现象,使水温升高,因此,食品的温度也就上升了。用微波加热的食品,因其内部也同时被加热,使整个物体受热均匀,升温速度也快。
1
1.3使用微波炉时的注意事项
微波遇到金属物体,如银、铜、铝等会像镜子反射可见光一样被反射。常用金属隔离微波,不能使用金属器皿加热食物。金属在微波加热的情况下还会产生火花,特别是较尖锐的金属制品﹝如:叉﹞。因此在使用微波烹调中,不得使用密闭的金属容器或金属网状容器来装载事物,以免发生意外事故。
不要用一般普通塑料容器放入微波炉加热。虽然塑料自身不被加热,但热的食物会使容器变得很烫。这些塑料容器在高温下可能放出毒素,染污食物。使用微波炉时,应注意至少离炉0.5米以上,眼睛不要看着炉门,不可在炉前久站。食物从炉中取出后,最好先放几分钟再吃。
1.4微波炉控制器总体设计思路
通过对微波炉的了解,本设计采用C52单片机作为设计的核心,由矩阵键盘、时间显示、控制输出等模块组成。由矩阵键盘模块来实现时间的设置,火力大、中、小的选择以及启动、停止和时间重设功能;时间显示模块由七段数码管来实现,其中初始时间由矩阵键盘输入;火力大小通过发光二极管来表示,红、绿、黄三种灯分别表示大力大、中、小,默认为中火力;启动加热后,步进电机开始转动,七段数码管按照设定的时间进行倒计时,等时间快到零时报警提示、等于零时火力指示灯熄灭、转盘停止运转,工作结束。
2
2系统总体方案
2.1系统总体设计
本设计采用ATC52单片机作为设计的核心,由矩阵键盘、时间显示、控制输出等模块组成。由矩阵键盘模块来实现时间的设置,火力大、中、小的选择以及启动、停止和时间重设功能;时间显示模块由七段数码管来实现,其中初始时间由矩阵键盘输入;火力大小通过发光二极管来表示,红、绿、黄三种灯分别表示大力大、中、小,默认为中火力;启动加热后,步进电机开始转动,七段数码管按照设定的时间进行倒计时,等时间快到零时报警提示、等于零时火力指示灯熄灭、转盘停止运转,工作结束。
元件清单:
表 2-1 元件清单
元件清单 ATC52 ULN2003 74LS48 LM7805 LED 三极管9013 四位数码管 步进电机 蜂鸣器 自锁开关 轻触开关 220欧电阻 10千欧电阻 10k*8排阻 30p电容 10u电容 100u电容 12MHZ晶振 USB接口 16p插槽 40p插槽 排针
数量 1 1 1 1 4 5 1 1 1 1 16 16 1 1 2 1 2 1 1 2 1 10 3
2.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-1 80C51单片机的基本组成
4
2.2.2单片机的内部结构
1.处理器CPU
CPU是80C51内部的1个字长为8位的处理单元,它由运算器、控制器两部分组成。实际上构成了单片机的核心。 (1)运算器
以算术逻辑单元ALU(Arithmetic Logic Unit)为核心,还包括累加器A、程序状态字寄存器PSW(Program Status Word)、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单片机的内部结构
5
2.2.3部分关键的程序存储单元
在程序存储器中,某些单元保留给系统使用,见下表:
表2-2中断入口 存储器单元 0000H~0002H 0003H~000AH 000BH~0012H 0013H~001AH 001BH~0022H 0023H~002AH 002BH 保留单元的作用 复位后初始化引导程序入口 外部中断0入口 定时器0溢出中断入口 外部中断1入口 定时器1溢出中断入口 串行口中断入口 定时器2溢出中断入口 注:标注灰色背景的存储空间为增强型芯片所独有
2.2.4中断
1、中断源
51单片机有5个中断源:两个外部中断、两个计数/定时器中断和一个串行口中断。 2、中断响应步骤:
(1)保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。 (2)寻找中断入口,根据5个不同的中断源所产生的中断,查找5个不同的入口地址。 (3)执行中断服务程序,用中断服务程序处理需要改变的变量或者事件。
(4)中断返回,执行完中断服务程序后,从中断断点处返回主程序,继续执行主程序。 3、中断的实现
寄存器IE、IP、TCON和SCON来控制中断申请、中断的开关和各种中断源的优先级确定。(1)中断方式和标志位
单片机的中断标志位和方式的选择是通过TCON达到低4位控制字实现的。TCON中的低4位用于外部中断的控制,高4位是T0、T1控制字。控制字如下:
表2-3 TCON中的控制字
TCON.7 TF1 TCON.6 TR1 TCON.5 TF0 TCON.4 TR0 TCON.3 IE1 TCON.2 IT1 TCON.1 IE0 TCON.0 IT0 外部中断请求源
IT0-----INT0触发方式控制位,可由软件进行置位和复位.IT0=0,INT0为低电平触发方式;IT0=1,INT0为负跳变触发方式.
IE0-----INT0中断请求标志位.当有外部的中断请求时,这位就会置1(这由软件来完成),在CPU响应中断后,由硬件将IE0清0.
6
内部中断请求源
TF0-----定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0.当CPU响应中断后,再由硬件TF0清0. TR0-----定时器T0的中断允许. (2)中断允许寄存器IE
表2-4中断允许寄存器IE
IE.7 EA IE.6 X IE.5 X IE.4 ES IE.3 ET1 IE.2 EX1 IE.1 ET0 IE.0 EX0 其中:
EA:总开关,如果它等于0,则所有中断都不允许。 ES:串行口中断允许。 ET1:定时器1中断允许。 EX1:外中断1中断允许。 ET0:定时器0中断允许。 EX0:外中断0中断允许。
单片机的中断服务入口地址如下,它们的自然优先级由高到低排列。 外中断0:0003H 定时器0:000BH 外中断1:0013H 定时器1:001BH 串口:0023H
开机时,每个中断都处于低优先级,我们可以用指令对优先级进行设置,中断优先级由中断优先级寄存器IP来设置,IP中某位设为1,相应的中断就是高优先级,否则就是低优先级。
表2-5中断优先级寄存器IP
(3)5个中断源的优先级
--- EA
--- X --- X IP.4 PS IP.3 PT1 IP.2 PX1 IP.1 PT0 IP.0 PX0 2.3显示驱动芯片7447/7448的简介
2.3.1认识7447/7448
BCD码转换成7段LED数码管的译码驱动IC,首推7447系列,包括7446、7447、7448、74LS49,其中7446及7447输出低电平驱动的显示码,用以推动共阳极的7段LED数码
7
管;而7448及74LS49输出高电平驱动的显示码,用以推动共阴极7段LED数码管。7446、7447与7448的引角相同(双并排16Pins),74LS49为双并排14Pins,如图所示。
图2-3 7446、7447、7448/74LS49引脚图
2.3.2引脚说明
D、C、B、A:BCD码输入引脚。
a、b、c…….g:7段LED数码管输出引脚。
Lamp Test:本引脚为测试引脚,简称为LT引脚。当本引脚输入低电平时,所连接的7段LED数码管全亮。正常显示下,本引脚应输入高电平。
RBI:本引脚为涟波淹没输入引脚(ripple-blanking input),正常显示下,本引脚应输入高电平。若本引脚输入低电平(即0),且D、C、B、A引脚输入为0,则该位数不显示,这项功能称为消除前置0(leading zero suppression)或消除尾端0(trailing zero suppression)
BI/RBO:本引脚为淹没输入或涟波淹没输出引脚(blanking in and/or ripple-blanking output)。正常显示下,本引脚输入高电平或空接。若本引脚连接低电平(0),则该位数将不显示。当该位数不显示时,本引脚将输出低电平,以串接到前一个位数的RBI引脚,作为消除前置0(leading zero suppression)或消除尾端0(trailing zero suppression)之用。
这4个IC都是开集极式输出,对于开集极式输出所连接的负载,其所连接的电源电压也有些差异,如下表所示。
表2-6最大负载电压、最大吸入电流对照表
7446 7447 7448 74LS49
最大负载电压 30V 15V 5.5V 5.5V 最大吸入电流 40mA 40mA 6.4mA 8mA 8
2.4高耐压、大电流达林顿陈列—ULN2003
2.4.1 概述与特点
ULN2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。 该电路的特点如下:
ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路
直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。
ULN2003 采用DIP—16 或SOP—16 塑料封装。
2.4.2 ULN2003方框图
图2-4 ULN2003内部框图
2.4.3 极限值(若无其他规定,Tamb=25℃)
表2-7 ULM2003极限值
9
2.4.4 电特性(若无其它规定, Tamb=25℃)
表2-8 ULM2003电特性
2.5 LM7805稳压芯片介绍
2.5.1 概述
7805系列为3端正稳压电路,TO-220封装,能提供多种固定的输出电压,应用范围广。内含过流,过热和过载保护电路。带散热片时,输出电流可达1A,虽然时固定稳压电路,但使用外接元件,可获得不同的电压和电流。
2.5.2 主要特点
输出电流可达1A 输出电压有:5V 过热保护
10
短路保护
输出晶体管SOA保护
2.5.3 外形图及引脚排列
2.5.4 功能框图
图2-5 LM7805外形图 图2-6 LM7805功能框图
11
2.6三极管9013
三极管9013
9013是一种NPN型硅小功率的三极管它是非常常见的晶体三极管,在收音机以及各种放大电路中经常看到它,应用范围很广,它是npn型小功率三极管。 集电极电流Ic:Max 500mA 工作温度:-55℃ to +150℃ 集电极-基极电压Vcbo:40V 主要用途: 放大电路
图2-7 9013管脚图
12
3硬件电路与实现
3.1微波炉控制器的总体硬件设计
图3-1 微波炉控制器硬件连接电路
3.2矩阵键盘及其应用
3.2.1矩阵键盘的结构与工作原理
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如下图所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构
13
成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
图3-2矩阵键盘
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。
3.2.2矩阵式键盘的按键识别方法
确定矩阵式键盘上何键被按下,介绍一种“行扫描法”。
行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下:
判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。
判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
14
3.2.3矩阵式键盘的按键的例子
图仍如上所示。ATS52单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。检测当前是否有键被按下。检测的方法是P1.4-P1.7输出全“0”,读取P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,否则有键闭合。
去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。 若有键被按下,应识别出是哪一个键闭合。方法是对键盘的行线进行扫描。P1.4-P1.7按下述4种组合依次输出:
一 二 三 四 P1.7 1 1 1 0 P1.6 1 1 0 1 P1.5 1 0 1 1 P1.4 0 1 1 1
在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。
为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。
3.2.4去抖处理
按键的抖动时间一般为5-10ms,抖动可能造成一次按键的多次处理问题。当采取措
施消除抖动的影响。消除的办法有多种,常采用软件延时10ms的方法。 在按键较少时,常采用硬件去抖电路。
当按键较多时,常采用软件延时的办法。当单片机检测到有键按下时,先延时10ms,然后再检测按键的状态,若仍是闭合状态,则认为真正有键按下。当检测到按键释放时,亦需要做同样的处理。
15
3.3四位数码管原理及应用
单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路。LED的
发光原理,我们在这里不做介绍。七段LED的数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出他们的电极,点亮相应的点划来显示0-9的数字。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阳式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然。LED的电流通常较少,一般均需在回路中接上限流电阻。假如我们将“b”和“c”段接上正电源,其它端接地或悬空,那么“b”和“c”段发光,此时,数码管显示将显示数字“1”。而将“a ”、“b、“d”、“e”和“g”段都接上正电源,其他引脚悬空,此时数码管将显示“2”,其他字符的显示原理类同。
图3-3四位数码管实物图
图3-4四位数码管内部逻辑图 图3-5 四位数码管实物引脚图
16
管脚顺序:从数码管的正面看,以第一脚位起点,管脚的顺序是逆时针方向排列: 12-9-8-6 公共端 D5-3 D6-3
A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3 DP5-3 DP6-3
四位数码管连接图
图3-6 四位数码管连接图
3.4步进电机控制电路
3.4.1 步进电机工作原理
图3-7 步进电机原理图
17
1.步进电机
(1)是一个数字/角度转换器,也是一个串行的数/模转换器。 (2)是过程控制及仪表中的主要控制元件。 (3)广泛用于定位系统 2. 概念:
(1)步进电机旋转的根本原因:错齿; (2)术语:齿距角、步距角;
(3)通电一周,转子转过一个齿距角,N 为几,一个齿距角分几步走完。
3.4.2 步进电机控制系统原理
图3-8步进电机控制系统的组成
用微型机控制步进电机原理系统图
图3-9 用微型机控制步进电机原理系统图
18
步进电机连接图
图3-10 步进电机连接图
3.5蜂鸣器控制电路
蜂鸣器分有源蜂鸣器和无源蜂鸣器,这里的“源”不是指电源,而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。
图3-11 蜂鸣器实物图
图3-12 蜂鸣器驱动电路
19
4控制程序设计与仿真
4.1键盘扫描及显示程序设计
4.1.1键盘扫描流程图
键盘扫描 有键闭合 延时去抖动 扫描键盘 找到闭合键 计算键值 建立无效标志 闭合键释放 建立有效标志 返回 图4-1微波炉控制器的键盘扫描方式流程图
20
4.1.2矩阵键盘仿真电路
图4-2 矩阵扫描显示电路 4.1.3键盘扫描和显示输出的程序:
#include char TAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9}; char disp[4]={0x8f,0x4f,0x2f,0x1f}; //数码管控制显示 unsigned int digit=1234; //按键输入的数值 char dig[4]; //声明led数码管显示的数字 void debouncer(void); //声明防抖动函数 void scanner(void); //声明扫描函数 #define TH_M1 (65536-500)/256 #define TL_M1 (65536-500)%256 #define rowkey() (~P1)&0x0f //读入p1低四位(列按键值)宏 main() { EA=1; ET1=1; TMOD=0X10; //定时器1,模式1 TH1=TH_M1;TL1=TL_M1; TR1=1; 21 while(1) scanner(); } void debouncer(void) //延时程序 { int i; for(i=0;i<3600;i++); //约30ms延时 } void scanner(void) //{ char col,row; // char scan,keyin,kcode; // scan=0xef; for(col=0;col<4;col++) { P1=scan; //P1 keyin=rowkey(); // _nop_(); _nop_(); _nop_(); if(keyin!=0) // { for(row=0;row<3;row++) { if(keyin==(0x01< while(rowkey()!=0) debouncer(); } scan=(scan<<1)|0x01; } } char m=0; void T1_100us(void)interrupt 3 { 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]; 扫描函数 声明行和列 声明扫描信号,列按键值,扫描码 按键扫描 读入第col行的列按键值 三个_nop_();作用为让 P1 口的状态稳定若有按键按下 计算出按键码 //扫描码写入七段数码管数组 取输入的后四位,输入不够四位高位为零 离开第row列扫描 //等按键放开 防抖动函数 产生左一位扫描信号 //T1中断子程序开始,显示四位数码管 22 // // // m=(m<3)? m+1:0; } 4.2倒计时程序设计 4.2.1倒计时流程图 开始 计数值初值 计数值输出 延时1s 上次计数值取出 计数值减1 判断是否为0 倒数结束 图4-3倒计时程序流程图 23 4.2.2倒计时仿真电路 图4-4 倒计时显示电路 4.2.3倒计时程序: #include char TAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9}; char disp[4]={0x8f,0x4f,0x2f,0x1f}; //数码管控制显示 unsigned int digit=4321; //数值显示 char dig[4]; #define TH0_M0 (65536-20000)/256 #define TL0_M0 (65536-20000)%256 #define TH1_M1 (65536-1000)/256 #define TL1_M1 (65536-1000)%256 main() { TMOD=0x01; //定时器0,模式1 TH0=TH0_M0; TL0=TH0_M0; IE= 0x82; //打开中断 TR0=1; //启动计数器TR0 EA=1; 24 ET1=1; TMOD=0X10; //定时器1,模式1 TH1=TH1_M1;TL1=TL1_M1; TR1=1; while(1); } /********************************/ /* 定时中断 */ /********************************/ int m0=50; void t0_1s(void)interrupt 1 //定时中断TR0 { TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit=(digit>0)? digit-1:4321; m0=50; } } char m1=0; void T1_100us(void)interrupt 3 //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; } 25 4.3步进电机控制程序设计 4.3.1步进电机流程图 开始 取第一个值 延时 取第二个值 延时 取第三个值 延时 取第四个值 图4-5步进电机程序流程图 26 4.3.2步进电机仿真电路 图4-6 步进电机转动电路 4.3.3步进电机转动程序: #include char excite[]={0x08,0x01,0x02,0x04}; //1相驱动激励数组 //char excite[]={0x03,0x06,0x0c,0x09}; //2相驱动激励数组 unsigned char times=10; unsigned char count=10; #define TH_M1 (65536-500)/256 #define TL_M1 (65536-500)%256 unsigned char i=0; main() { OUTPUT=0; TMOD=0x10; 27 IE=0x88; TH1=TH_M1; TR1=1; TL1=TL_M1; while(1); } void time1(void) interrupt 3 { TH1=TH_M1; TL1=TL_M1; if(--count==0) {OUTPUT=excite[i]; i=(i<4)? i+1:0; count=times;} } 28 4.4总体程序设计 4.4.1总体设计流程图 开始 键盘扫描 计算按键值 删除按键值 火力选择 启动 电机运转 按键值减一 按键值等于0 结束 图4-7 总体设计流程图 29 4.4.2总体设计仿真电路 图4-8 总体设计仿真电路 4.4.3总体设计程序: #include char TAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9}; char disp[4]={0x8f,0x4f,0x2f,0x1f}; //数码管控制显示 char excite[]={0x08,0x01,0x02,0x04}; //步进电机1相驱动激励数组 //char excite[]={0x03,0x06,0x0c,0x09}; //2相驱动激励数组 unsigned char times=10; //声明电机重复数(即电机的快慢) unsigned char count=10; //声明电机重复变量 char dig[4]; char c1=5; //蜂鸣器第5秒、3秒、1秒的时候发声 char c2=4; char qid=0; //启动的判断 char a1=0,a2=1,a3=0; //火力大中小的判断 int digit=0; //按键输入的初始数值 30 sbit da=P3^0; //声明火力大小的按键 sbit zhong=P3^1; sbit xiao=P3^2; sbit qidong=P3^3; //声明启动按键 sbit chs=P3^4; //声明重新输入数值 sbit hli1=P0^5; //声明火力的输出端 sbit hli2=P0^6; sbit hli3=P0^7; sbit buzzer=P0^4; //蜂鸣器接口 void debouncer(void); //声明防抖动函数 void scanner(void); //声明扫描函数 void huoli(void); //火力大小函数 #define rowkey() (~P1)&0x0f //读入p1低四位(列按键值)宏 #define OUTPUT P0 //步进电机输出端低四位 #define TH0_M0 (65536-20000)/256 #define TL0_M0 (65536-20000)%256 #define TH1_M1 (65536-500)/256 #define TL1_M1 (65536-500)%256 main() { 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;} 31 if(digit==c2) {buzzer=0; c2=c2-2;} while(digit<=0) //加热结束关闭系统 {TR0=0; TR1=0; P0=0xe0; P1=0; P2=0; P3=0;} } } void scanner(void) //扫描函数 { char col,row; //声明行和列 char scan,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< 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); } 32 huoli(); //火力大小的判断 scan=(scan<<1)|0x01; //产生左一位扫描信号 } } char m=0,n=0; void T1_1ms(void)interrupt 3 //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;} } int m0=50; void t0_1s(void)interrupt 1 //定时中断TR0 { TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit--; m0=50;} } void huoli(void) //火力大小函数 { if(da==0) //判断大火力是否按下 { a1=1;a2=0;a3=0; while(da==0); //等待按键放开 } if(zhong==0) //判断中火力是否按下 { a1=0;a2=1;a3=0; while(zhong==0); } if(xiao==0) { a1=0;a2=0;a3=1; while(xiao==0); } 33 } void debouncer(void) { int i; for(i=0;i<1200;i++); } //延时防抖程序 //约10ms延时 34 5电路制作与系统调试 在电路的制作过程中,要充分认识各个元器件的功能,同时也要确切认准元件的各个引脚序号,在充分了解之后进行电路的连接,连接之后做反复检查。 在制作PCB板的过程中,首要任务就是封装尺寸一定要准确,其次元件排放不能随意,既要好看,也要考虑到前后左右其他原件间的间距。 在焊接电路时,要学会握住好电烙铁,插上原件时小心元件引脚放反。 在焊接完成之后,进行系统调试,在调试的过程中,我遇到了几个棘手的问题,幸好最终找到了解决的方法。 1. 按键的时候总是出现两个数码管显示一样的数字。 2.上拉电阻很重要,漏接上拉电阻导致电机不运转。 3.蜂鸣器发声时间长短设置要适当。 35 6总结与展望 一、对毕业设计的总结 本毕业设计的内容是基于ATS52的微波炉控制器的设计与实现,涉及软件和硬件两个部分。如今,微波炉已经走进每个普通的家庭,成为一种烹调加热食物的好工具。因此,制作本毕业设计有着实质的现实意义。本人学习单片机的时候是通过汇编语言入门的,后来由于对C语言产生了一定的兴趣,C语言在单片机的运用也逐渐熟练起来,所以本设计的软件部分使用C语言来编写。为了完成本设计,我查阅了不少的相关的资料,对单片机的基本功能得到了充分的认识。编写程序方面,我用到了编译软件Keil C51和仿真软件Proteus。通过运行这两个软件,可以验证程序的语法和程序的功能实现是否真确,找出程序出现的问题,然后不断的修改和尝试,最终调试出烧录到单片机上的程序。 二、对毕业设计的展望 由于时间与工作的关系,毕业设计只是用七段数码管显示时间,用单片机输出引脚控制步进电机转速等功能。其实,除此以外还有值得加强和改进的地方: 1.电路板的布局有待完善 2.数字显示可改用液晶显示 3.火力输出可改为继电器输出 4.可增加显示加热温度功能 36 致 谢 本论文是在我的导师彭芳的亲切关怀和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,彭老师都始终给予我细心的指导和不懈的支持。彭老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向彭老师致以诚挚的谢意和崇高的敬意。 在此,我还要感谢在一起愉快的度过大学本科生活的06自动化全体同学,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。特别感谢在工作的梁培南和曾韶贯两位工程师,他教会我使用软件allegro,在PCB版的设计和硬件的测试给了我很大的帮助。 感谢在大学学习期间给我上课的老师们,特别是教我们模电的朱春媚老师、教我们数电和信号与系统的周文辉老师、教我们微机原理和单片机原理与接口技术的彭芳老师、教我们电机拖动和电气控制与PLC的刘跃华老师、教我们传感器原理刘保军老师、教我们供配电和电力电子技术的刘金华老师、教我们计算机控制技术和过程控制与自动化仪表的黎萍老师、教我们现代控制理论基础和运功控制系统的王连圭老师、教我们自动控制原理的潘奇明老师等。这些老师严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我获益颇多。谨向老师们致以最衷心的感谢。 在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们! 37 参考文献 [1]李全利、迟荣强编著.单片机原理及接口技术.高等教育出版社.2004 [2]张义和、王敏男、许宏昌、余春长编著.例说51单片机(C语言版).人民邮电出版社.2008 [3]谭浩强编著.C语言程序设计。清华大学出版社.2000 [4]赵广林编著.protel99se电路设计与制版.电子工业出版社.2005 [5]武军、袁园编著.Cadence Concept HDL&ALLegro原理图与PCB设计.人民邮电出版社.2006 38 附 录 附录一:微波炉控制器实体图片 39 附录二:微波炉控制器硬件连接电路 40 附录三:微波炉控制器PCB板 41 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务