用HT46X23设计微波炉控制器实例分析

发布者:ZenMaster123最新更新时间:2006-09-12 来源: 电子设计应用关键字:单片机  按键  变量 手机看文章 扫描二维码
随时随地手机看文章

  微波炉控制器的工作环境相对比较恶劣。首先是炉腔温度比较高,控制器附近温度也会比较高,达到60℃~70℃;另一方面,微波辐射对单片机抗干扰的要求也很高,在做多次快速开关门试验中,当少量微波泄露时,对控制器有一定的辐射,以及反复开通和关断大功率负载会产生较强的干扰。所以选择合适的单片机十分重要,在多年的家电产品设计中,经常用盛群半导体(Holtek)的48系列及46系列8bit单片机设计微波炉控制器,无论在适应工作环境还是抗干扰等方面都完全满足要求,在成本及供货等方面比国外芯片也有更明显的优势。

  本文通过实际产品为例,以产品功能要求、方案确定和芯片选型、硬件设计、软件规划及编写等几部分介绍如何用单片机设计微波炉控制器。

功能要求

  设计产品首先了解产品的要求,了解越详细设计反复修改就越少,特别是关于影响芯片选型及输出控制等跟硬件直接相关的部分。本文介绍的微波炉控制器的主要功能如下:
微波加热,功率有10档。
烧烤加热,功率有2档。
热风烘烤加热,温度多档。
混合加热,有三种组合模式:烧烤加微波、烘烤加微波、烘烤加烧烤。
自动解冻,重量选择有20档。
自动菜单,6大类,各类分别有重量选择。
显示:88:88数码管,四周带14个图标。
按键:有功能选择键、启动键、取消键、热风烘烤键,时钟及定时键,自动菜单各功能键,总共11个。
编码开关:调节加热时间。
另有蜂鸣器、门检测和门灯控制。

方案确定和芯片选型

  了解产品的详细要求后,需要确定具体的实现方案,首先是选择合适的单片机。选择合适的型号主要要看两个方面:硬件资源和软件资源。要选择合理的单片机首先必须了解单片机的各系列及各款的资源,再了解需要什么样的资源,下面分别从硬件和软件来说明怎样根据要求选择单片机。在选择单片机时,整个产品的方案也基本确定。

硬件相关资源
  硬件相关的资源是指外围硬件相关的如I/O数量、特殊驱动、工作电压等。

  首先,选择合适的单片机系列。看供电电压及工作温度抗干扰能力等是否满足要求。盛群的MCU在系统振荡频率小于4MHz时供电电压供电范围为2.2V~5.5V,当8MHz时则为3.3V~5.5V,要提高系统的抗干扰能力,最好用5V电压供电,当供电电压较高时,MCU内部所有逻辑电平幅值较高,容差电压大,干扰更强才能改变其逻辑状态。工作温度,选择Holtek的48和46系列工业级单片机,工作温度范围为-40℃~85℃,完全能满足微波炉控制器工作温度的要求。在选择合适的系列时,还要看特殊资源的要求,如中断口、PWM、蜂鸣器驱动、A/D转换等;在此产品的具体要求中,需要检测炉腔的温度以及在产品中需要对交流风扇调速,温度检测需要A/D转换,交流风扇调速控制需要有过零中断,所以,在这个产品中选择了46系列单片机。但此产品不需要LCD驱动、高精度A/D转换及比较器等资源,则不选择HT46R6X、HT46R5X、HT46R1X等系列,而选择HT46R2X系列。

  再就是选择的具体I/O要求和什么样封装的单片机,在Holtek单片机中同型号的单片机有多种封装,如HT46R23有DIP28或SOP28封装,也有DIP24或SOP24封装,其I/O分别为23个和19个。

  根据前面提到的功能要求,其I/O的需求列举如下:
继电器驱动:微波、烧烤、热风烘烤、门灯/转盘、散热风扇共5个输出ports。
蜂鸣器驱动:1个输出ports
按键有11个:11个输入port
门状态检测:1个输入port
编码开关检测:2个输入port
显示数码管:5个COM,9个段,需14输出port
过零中断检测:1个中断输入port
温度检测:1个A/D输入port

  简单加起来总共需要20个输出port,16个输入port。考虑复用I/O,将9个数码驱动段和5个公共端同时做输入检测;温度检测只能用A/D口PB.0,过零检测只能用单独的中断PA.5来检测,所以总共需要22个I/O,所以选择28PIN的HT46R2x可以满足要求。

软件相关资源

  软件相关的资源主要包括程序空间即ROM的大小和数据空间RAM的多少,当功能较多且复杂时需要更多的ROM和RAM;当然还有定时器、中断、以及其它某些特殊的资源;前面已经选择了28PIN封装的46R2X系列单片机,此产品功能相对比较丰富,程序空间要求比较多,选择4K的ROM和192byteRAM的HT46R23应该能够满足要求,同样封装可以选择28PIN的HT46R24,它有8K ROM和384byteRAM,可以做后备选择,这样不必担心资源不够时换IC,反复修改硬件就很麻烦。

  总之,在选择资源时,要软硬兼顾,如果程序简单,硬件资源要求高,则可以选择封装小、I/O少的单片机,另外增加扩展IC来扩展I/O;当程序复杂,硬件资源要求少时,则选择较小封装、软件资源多的单片机。

硬件电路设计
  在选择主芯片时,已经在考虑部分电路设计了,显示、按键检测、输出驱动等都考虑好了,由于篇幅有限,只简单介绍几个关键问题:

门检测电路:给单片机检测的门开关信号的同时,还要控制微波、烧烤、热风烘烤继电器的电源。

供电部分:考虑数码管显示内容较多,驱动电流大,变压器尽量选择继电器和单片机独立供电,一方面降低变压器功率,同时可以让单片机的电源不受继电器的工作状态影响。

过零检测和触发:选择合适的光耦和可控硅驱动电路,实现过零驱动,过零检测电路注意适当的滤波和隔离,减少通过电源耦合的干扰。

微波炉控制器电路原理图如图1。


图1 HT46X23微波炉原理图

  另外,PCB设计时注意强弱电分开,注意电源与地的分布,注意生产的工艺性问题等。总之,合理的硬件设计和PCB布板对保证产品功能和性能十分重要。

软件规划及编写

芯片配置选项设定
  根据硬件电路,将按键、编码开关及门检测部分的内部设置上拉电阻;盛群单片机的LVD功能很可靠,所以复位电路直接接到VCC,那么在设置配置选项时一定要开启低电压复位功能,不开启容易上电复位不良。下面将主要选项设定列举如下:
PA3/PFD: Enable PFD
Pull-High PB: Enable
Pull-High PC: Disable
Pull-High PD: Enable
OSC: Crystal
WDT clock source: WDTOSC
WDT: Enable
LVR: Enable
LVR voltage: 3.2V
CLRWDT: Two Instructions.
软件整体规划及模块化分解

  将复杂的功能分解,通过变量传递各模块之间的关联内容,模块内部则尽量独立完成,这样让程序的可移植性提高,调试更快。把复杂的问题简单化是程序编写的重要原则。

1)主程序
  通过调用各子程序,整合各模块的功能。数码管扫描显示对时间要求比较高,而且各个公共端要平均分配时间,所以主程序执行周期选择固定周期。另外编码开关也是扫描检测方式,当编码开关旋转很快时,脉冲频率较高,扫描周期也不能太长,综合整体,主程序选择4ms为执行周期,但显示和按键及编码开关则执行2次,相当于2ms的扫描周期。

  如果用4MHz的晶振,4ms时间可以执行4000条指令,程序设计合理情况下完全可以运行完各子程序,不担心出现当处理事件多时显示闪烁等问题。

2)编码开关、按键及门状态检测
  因编码开关、按键及门状态检测I/O都同显示驱动I/O复用,所以需统一处理。
先关闭显示COM,检测SEG上的状态,再关闭SEG,再检测COM上的状态。

  此部分程序还要完成按键检测及消抖动处理、编码开关的检测、门状态去抖动检测,以有效按键变量、编码开关左右旋转标志、门状态等为输出。其它子程序根据按键、编码开关操作和门状态执行对应的操作和功能。

3)过零检测及过零触发
  过零检测在外部中断程序中完成,中断后根据当前运行状态设置散热风扇半功率、全功率和关三种状态。开和关状态直接设置控制光耦状态,当需要半功率时,需要记录中断次数,调整导通和关闭周期,这里没有用调整可控硅导通移相的方法调功,可减少电磁辐射。

4)按键设置
  按键操作设置程序的输入条件为有效的按键和编码开关左右旋转标志,再细分每个按键分别处理,在什么条件下设置对应的工作时间、输出模式、显示模式、蜂鸣器鸣叫等。

5)显示状态设置
  设置4字节保存显示数字部分内容,另2字节保存四周图标变量,由于四周的图标有闪烁和不闪烁状态,另2字节设置图标的闪烁状态。

6)显示输出扫描
  根据显示状态变量的8字节变量内容,设置数码管对应COM和SEG,扫描显示输出。

7)加热输出及功率控制设置
  加热和功率控制程序通过统一的变量输入,设置当前的微波、烧烤、热风还是几种混合加热,以及设置内灯及散热风扇输出等。

8)温度检测及计算
  设置A/D转换,检测热敏电阻的值,并滤波处理,以及开路短路保护检测。其输出为故障状态标志和当前炉腔温度。在热风烘烤输出程序中根据温度设置对应的加热状态。

9)时钟、定时及运行时间计算及对应输出模式切换
  程序中关于时间的设置很多,大多都在这个子程序中完成,如时钟计算、预约比较、倒计时、自动功能的多段加热模式切换等。

10)蜂鸣器设置
  两个变量buz_n,buz_long来设置蜂鸣器鸣叫次数和单声鸣叫长度。可单独设置buz_long值为单声的鸣叫,在上电和按键操作时设置单声鸣叫。当定时结束或定时启动或故障提示等情况时,需要设置鸣叫多时,设置buz_n值就可以了。

11)定时中断子程序
  定时中断子程序相对很简单,只设置中断次数记录就可以了。由于蜂鸣器鸣叫频率为2KHz,所以定时中断时间为250us。

  其中内容比较多的部分是:按键操作、显示状态设置、时钟、定时及运行时间计算及对应输出模式切换、加热输出及功率设置等部分。

  在软件的编写中,变量规划很重要,下面还列出了几个典型的变量规划:
  整个产品的主要工作模式用run_state来记录:
run_state equ [40h]
s_hotfan equ run_state.0  ;热风烘烤
s_micro equ run_state.1   ;微波
s_grill equ run_state.2   ;烧烤
s_mix equ run_state 3    ;混合模式
s_auto equ run_state.4   ;自动解冻
s_mu equ run_state.5   ;自动菜单工作模式
s_fast equ run_state.6   ;快速启动模式
显示模式用dsp_state来记录:
dsp_state equ [41h]
s_time equ dsp_state.0   ;显示时钟状态
s_timer equ dsp_state.1   ;显示定时时间状态
s_off_t equ dsp_state.2   ;显示倒计时状态
s_code equ dsp_state.3   ;显示菜单或工作模式状态

  加热模式heat_mode变量来控制当前的输出,其具体数据说明如下:

0则关闭所有输出。

bit0_bit3(10_1)保存微波100% /90% /80% /70% /60% /50% /40% /30% /20% /10% /10档,即最后4bit来记录微波输出功率,在自动解冻、自动菜单、混合等非简单微波模式时,加热功率输出时只需要判断此变量,就直接设置微波输出。

bit4_bit5保存烧烤功率100%和50%。

bit7保存热风烘烤输出。

  当有混合状态时,则同时设置对应的位就可以了。

  合理设计变量对整个程序的编写很有用,同时也是对产品功能的规划和理解的具体化,找出主要的和关键的控制关系,设计合适的、适当通用的算法。而且对于经常编写同类产品时,移植程序变得很简单;比如将此产品数码管换为LCD显示时,基本上只需要将显示输出部分修改为驱动显示IC或显示RAM就可以了,其显示得内容还是显示时间、定时、倒计时时间、菜单或模式,只需要修改对应得显示表就可以了。

程序编写和程序调试

  软件简单规划后,就需要具体的编写,将任务分解后,每部分已经比较简单了,调试时可以考虑各子程序单独调试,人为模拟输入各种情况下的数据及状态,检查输出是否正确。再将相关联的一起调试。除非很有把握,不要将程序全编写完了再调试,那样就不知道到底哪里有问题。

程序简单题纲如下:
;定义常量,某些固定的值,多次用到或经常修改的常量,单独定义后调用。
buz_l0 equ 50d  ;50*4=200ms设置所有默认蜂鸣器鸣叫声音长度。
sw_t0 equ 70d  ;有效按键响应时间,按键去抖动时间
。。。。。。
;定义I/O,将各输入/输出单独按功能或原理图网络标号定义,当原理图修改时方便软件修改
buz_p equ pa.3
grill_p equ pc.0
micro_p equ pc.1
......
;定义变量,
run_state equ [40h]  ;或则用自动变量定义
......
;程序开始
org 0h
jmp start_l
org 04H   ;外部中断向量
jmp int_set  ;跳转过零中断处理程序
org 08H   ;定时中断向量,中断周期为250us
mov temp_a,a ;保存
mov a,status
mov temp_s,a
inc t_int0  ;每次中断0.25us
mov a,temp_s
mov status,a
mov a,temp_a
reti
;中断处理程序,注意先保存用到的ACC和标志寄存器status,返回前恢复
int_set:
......;中断处理程序,设置风扇输出
reti
;主程序开始
start_l:
;初始化RAM、I/O、timer、中断等,一般先将通用RAM全清零
;注意继电器等关键变量的初始化,否则上电时继电器可能会跳一下。
;初始化某些特殊变量
;主循环程序部分
main:
call sw_in_set;注意按键设置会将显示关闭,则显示输出程序在后
call dsp_out_set;显示扫描程序
call sw_out_set;按键功能及状态设置
call ad_tem_set;A/D转换及温度计算
call dsp_state_set;显示状态计算
main_delay_2ms:
mov a,t_int0;0.25*8=2 等待2ms时间到
sub a,8
snz c
jmp main_delay_2ms
call sw_in_set;注意按键设置会将显示关闭,则显示输出程序在后
call dsp_out_set;调用显示扫描程序
call heat_out _set;调用加热状态及功率设置
call buz_set;调用蜂鸣器设置子程序
call time_set
main_delay_4ms:
mov a,t_int0  ;0.25ms*16=4ms 等待4ms时间到
sub a,16
snz c
jmp main_delay_2ms
clr t_int0
jmp main
;各子程序分列后面
sw_in_set:;按键检测、编码开关检测、门状态检测
......
ret
dsp_out_set:;显示扫描程序
......
ret
sw_out_set:;按键功能及状态设置
......
ret
ad_tem_set:;A/D转换及温度计算
......
ret
dsp_state_set:;显示状态计算
......
ret
heat_out _set:;调用加热状态及功率设置
......
ret
buz_set:;蜂鸣器设置子程序
......
ret
time_set:;时间及定时处理程序
......
ret
;程序中会用到很多表,为调用方便,则将其放到最后页面
org 0f00h
dsp_code_l0:
dc 10011111b;0
......
end;程序结束

关键字:单片机  按键  变量 引用地址:用HT46X23设计微波炉控制器实例分析

上一篇:一种智能电梯语音系统的设计
下一篇:模拟音频芯片在数据采集过程二次通讯中的应用

推荐阅读最新更新时间:2024-05-03 10:58

MSP430单片机各种寄存器总结(5)——Timer_A0
参考资料: 王宏波老师的PPT MSP430F6638用户手册 王宏波老师实验教程 本章最新更新日期:2018.12.22 第五章 Timer_A0寄存器 5.1 TA0CTL 【注意】Timer_A0有两种中断,一种是TAIFG,一种是TAxCCR0 CCIFG 5.2 TA0R TA0的16位计数器,这个没啥好说的 我起啦,一枪秒啦,有什么好说的 5.3 TA0CCTLn(n=0~6) 5.4 TA0CCRn 这个就是存放比较寄存器的值,可以用来设置周期和占空比 5.5 TA0IV TAIV中断的中断矢量寄存器,当除TA0CCR0之外的中断标志位置位时,这里面的值就会改
[单片机]
MSP430<font color='red'>单片机</font>各种寄存器总结(5)——Timer_A0
用于单片机的以太网网关--网络通
    摘要: “网络通”是基于普通单片机的廉价以太网测控网关。它可以将具有RS-232、RS-485等接口的测控设备简单而且直接地连接在以太网(因特网)上,利用丰富的现成的以太网资源,组成一系列以太网的分布式测控系统。     关键词: 以太网分布式测控系统 以太网测控网关 网关 网络通 1 概 述   利用现有以太网(因特网)的丰富资源,组建以太网分布式测控系统是一种低成本、高可靠性、快捷的技术方案。组建以太网分布式测控系统的关键设备是以太网测控网关,而以太网测控网关的组成方式有以下三种。   第一种是在20世纪90年代中期,人们采用PC机+网卡+采集插卡组成以太网测控网关,进行协议转换,将由现场
[应用]
将节能进行到底 Silicon Labs 32位低功耗MCU上市
Silicon Labs推出基于ARM Cortex-M0+处理器的节能32位MCU(微控制器)。EFM32 Zero Gecko MCU系列产品设计旨在为广泛的电池供电型应用达到最低系统功耗,例如便携式健康和健身产品、智能手表、运动跟踪器、智能电表、安全系统和无线传感器节点以及由能源收集系统供电的无电池系统。 新型的Zero Gecko系列产品是Energy Micro开拓性的EFM32 Gecko产品组合中的最新成员。该系列产品包括16种具有成本效益的MCU产品,为帮助物联网(IoT)中可连接设备实现尽可能的最低功耗而进行了重新设计。 Silicon Labs亚太地区MCU资深市场经理彭志昌向记者介绍:“Zero Ge
[单片机]
单片机CCFL控制器改善大屏幕LCD TV的图像质量
虽然LCD背光有多种方式,例如LED、EL、CCFL等,但对于大尺寸LCD屏来说,由于CCFL发光效率高而成为主流背光光源。传统的LCD屏主要用于笔记本电脑或台式电脑,背光组件在有一定亮度的前提下,还要尺寸小和重量轻等,大多采用侧面背光方式(CCFL灯管安装在屏的二边或四周,通过导光板将光漫射到整个屏幕后面);而LCD TV特别是大尺寸LCD TV,由于对显示亮度(450cd/m2)、视角广角(170%26;#176;)、图像对比度(500:1)等有更高的要求,因而需要采用光源利用率更高的垂直背光技术。 1 垂直背光 垂直背光,顾名思义,是将CCFL灯管直接安装在LCD屏后面,并利用全反射膜将发散到其他方向的光线反射到屏幕
[应用]
51单片机基础之DHT11温湿度传感器
接线: 代码: main.c文件 /* 使用DHT11模块,检测温湿度,在lcd1602上面显示,因为1602显示不是每次都能出来,所以加了串口打印,会更加直观。 */ #include reg51.h #include lcd.h #include intrins.h #include stdio.h sbit Temp_data=P3^6; //信号引脚 unsigned int rec_dat ; unsigned char rec_dat_lcd0 ; unsigned char rec_dat_lcd1 ; unsigned char rec_dat_lcd2 ; unsigned ch
[单片机]
51<font color='red'>单片机</font>基础之DHT11温湿度传感器
μC/OS-II在51单片机上的移植
μC/OS-II是一种公开源代码、结构小巧、具有可剥夺实时内核的嵌入式开发系统,代码简短、条理清晰、实时性及安全性能很高,绝大部分代码用C编写,现已被移植到多种处理器的构架中。随着51单片机片内资源的日益丰富,在51单片机上移植μC/OS-II已成为可能,植入系统后,由系统来管理软件与硬件资源,简化应用程序的设计,并且使应用系统功能更加完善。因此在51单片机上移植μC/OS-II具有十分重要的意义。 1 μC/OS实时操作系统概述 μC/OS-II实时操作系统是一种可移植、可固化、可裁剪即可剥夺型的多任务实时内核,适用于各种微处理器和微控制器。μC/OS-II主要包括任务调度、时间管理、内存管理、事件管理(信号量、邮箱、消
[单片机]
μC/OS-II在51<font color='red'>单片机</font>上的移植
51单片机-IIC&EEPROM合成文件
1.浅释E2Write函数 宋老师的例程lesson14_3和lesson14_4里的“E2Write(unsigned char *buf, unsigned char addr, unsigned char len)”书写内容是不一样的,lesson14_4的E2Write函数比lesson14_3的E2Write函数运行高效,lesson14_3的E2Write函数是每写入一个字节就要经历起始信号,停止信号,写入下一个字节又要把这些步骤经历一遍。而lesson14_4的E2Write函数支持EEPROM页写入(参考《手把手教你学51单片机》文档14.3.3节),所以在建立起文件时我们选用lesson14_4的E2Writ
[单片机]
51<font color='red'>单片机</font>-IIC&EEPROM合成文件
C语言在8051单片机上的扩展
直接访问寄存器和端口 定义 sfr P0 0x80 sfr P1 0x81 sfr ADCON; 0xDE sbit EA 0x9F 操作 ADCON = 0x08 ; P1 = 0xFF ; io_status = P0 ; EA = 1 ; 在使用了interrupt 1 关键字之后,会自动生成中断向量 在 ISR中不能 与其他 后台循环代码 (the background loop code) 共享局部变量 因为 连接器 会复用 在RAM中这些变量的 位置 ,所以它们会有不同的意义,这取决于当前使用的不同的函数 复用变量对 RAM有
[单片机]
小广播
最新手机便携文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved