洗衣机面板的控制设计.docx
《洗衣机面板的控制设计.docx》由会员分享,可在线阅读,更多相关《洗衣机面板的控制设计.docx(21页珍藏版)》请在冰豆网上搜索。
洗衣机面板的控制设计
洗衣机控制面板设计
近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同时带动传统控制检测的日新月异,在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用.仅单片机方面的知识是不够的还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
洗衣机的出现给人们的生活带来诸多的方便。
本文首先描述系统硬件工作原理,并附以系统结构框图加以说明着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程。
其次,详细的阐述了程序的各个模块和实现过程本设计以数字集成电路技术为基础,单片机技术为核心。
一、洗衣机控制面板设计任务及技术要求
1主要内容
设计一个用单片机控制的洗衣机控制面板。
以单片机为主控制器,扩展必要的外部电路,设计制作一个洗衣机控制面板。
(1)洗涤按钮洗涤时间20分钟。
洗涤种类有:
强洗、弱洗、轻柔等。
通过按键改变洗涤种类。
(2)洗涤时洗涤指示灯亮:
强洗时强洗指示灯亮;弱洗时,弱洗指示灯亮;轻柔时,轻柔指示灯亮。
(3)有启动/停止按钮控制:
第一次启动时,标准洗涤;工作时,再按停止按键停止工作。
默认洗涤时间为20分钟。
2工程技术方案
目前国内市场上有很多种类的洗衣机,采用的控制系统也各不相同,基于学习与实际的情况,本设计采用AT89S52系列单片机来实现洗衣机控制器的各控制要求。
此设计以单片机为主体配以各种控制电路,构成洗衣机的程序控制系统。
当有故障时,在排除了机械系统和程控器外接部件后。
一般来说,先检测判定单片机外围控制电路,正常后,再判断单片机的故障。
程序控制系统接受来自操作面板的动作指令,传送出相应的执行命令,并发出声音报警。
重新控制系统的这些功能是由它的各种控制电路相互配合工作来实现的。
二、系统概述
1系统设计要求
洗衣机控制面板主要包括:
功能键选择键时间调整键复位键
设计内容:
设计一个用单片机控制的洗衣机控制面板。
以单片机为主控制器,扩展必要的外部电路,设计创作一个洗衣机控制器。
完成一次洗涤过程需要的动作有:
(1)进水动作进行洗涤时,桶内的水量必须达到水位设定要求。
洗衣机的进水和水位判断,是由水位开关和进水阀的开合来进行控制的,当桶内没有水或水量达不到设定水位时,单片机程序奖可在进水阀闭合,开始注水,当桶内的水位达到设定水位时,水位开关受压闭合,程序就可进行下一步处理。
(2)排水动作进入脱水动作前应先排水。
为了避免空排水及排水不完造成对电机的损害。
洗衣机能够根据实际水量对排水时间进行动态控制。
(3)洗涤动作洗涤动作指的是点击周期性的“正传—停止—反转—停止”。
不同的洗衣过程,控制电机执行“正传—停止—反转—停止”的时间是不同的。
(4)脱水动作排水结束后进入脱水动作,脱水是通过电机的正转来实现的,同时要求排水阀一直打开。
脱水结束后,发出报警,并自动关闭排水阀。
(5)其他动作洗衣机控制面板上还配有启动,停止电源,强洗,弱洗按钮。
2系统构成部件
主控制系统运用的是AT89S52单片机其主要控制的对象包括:
洗衣时间,洗衣种类及电机.。
这些被控对象是根据不同的洗衣程序来设定他们不同的工作状况和工作时间的,同时需要液晶显示不同的工作状态及运行时间。
发光二极管用来指示洗涤速度及洗涤种类;按键用来控制程序的运行和洗涤种类和洗涤时间;蜂鸣器用来进行程序运行提示及故障报警。
下面是洗衣机控制器系统控制框图:
各框图的作用包括:
a)单片机电路单片机电路是程序控制的中心。
它把计算机的各种功能电路都集成在一块芯片上。
单片机根据输入指令和检测信号,调出内部的相应程序,通过电路处理后输出各种控制信号,是洗衣机自动完成操作过程。
如果单片机自己出现故障或控制电路传送给单片机的信号不正确,洗衣机就不能正常工作。
b)直流电源电路这是为单片机及其外围控制电路提供晓以电压直流电源的电路,它将输入的220V交流电经过变压、整流、滤波-稳压后,变为稳定的低压直流电,送给单片机、显示电路等。
c)复位电路此电路的作应是复位。
在单片机接上电源以后,或电源出现过低电压时,将单片机存储器复位,使其各项参数处于初始位置,即处于开机时的标准程序状态,以消除某种原因的程序紊乱。
d)时钟电路由晶振元件与单片机内部电路组成,产生的振荡频率为单片机提供时钟信号,供单片机计时和定时。
e)按键输入电路按键开关按照一定的矩阵排列,当按键被按动时,其接通的信号将输送到单片机。
单片机将对应的调出内部软件进行工作,使洗衣机进入相应的洗涤程序。
f)显示电路显示电路由发光二极管按一定的矩阵排列而成,它是程序控制系统向用户直接观察到洗衣机的工作状态的窗口。
预设工作程序时,可根据指示灯的闪亮来判断洗衣机是否接受了指令;还可以通过指示灯的显示来判断洗衣机工作是否正常。
g)报警电路此电路在洗衣机中起提示和报警作用。
根据程序安排和软件设置,当洗衣完成后,洗衣机将发出声音以提示用户洗衣完成。
三、系统硬件电路的设计
1单片机控制部分—单片机AT89S52
AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。
单片机采用AT89S52,其采用最小化应用系统设计。
P0口和P2口作为共阳LED数码管驱动用。
P1口作为16键的键盘接口,其中T0-T3分别为百位,个位,小数位的频率操作键。
百位数只能是0或1。
当百位数为0时,十位数为8或9;当百位数为1时,十位数只能为0。
个位及小数位为0-9之中任意数。
T4-T14为发射频率预置键,T15为单声道/立体声控制键。
P3.0,P3.1和P3.2作为与BH1415F的通信端口,用于传送发射频率控制数据;P3.3用于立体声发射指标。
芯片内部结构及性能
AT89S52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时器/计数器、并行I/O口、串行I/O口和中断系统等几大单元以及数据总线、地址总线和控制总线三大总线构成。
图4-1为单片机内部结构框图[13]。
(1)中央处理器
中央处理器(CPU)是整个单片机的核心部件,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
(2)程序存储器
AT89S52共有8KB个E2PROM,用于存放用户程序,原始数据或表格。
(3)数据存储器(RAM)
AT89S52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
内部结构框图
(4)并行输入输出口
AT89S52共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
(5)串行输入输出口
AT89S52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
(6)定时/计数器
AT89S52有三个16位的可编程定时/计数器,以实现定时或计数功能,并以其定时或计数结果对单片机进行控制。
(7)中断系统
AT89S52具备较完善的中断功能,有两个外中断、三个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有两级的优先级别选择。
(8)主要性能
·8KB可改编程序Flash存储器(可经受1000次的写入/擦除周期)
·全静态工作:
0Hz~24MHz
·三级程序存储器保密
·128×8字节内部RAM
·32条可编程I/O线
·2个16位定时器/计数器
·6个中断源
·可编程串行通道
·片内时钟振荡器
AT89S52的引脚及功能
AT89S52芯片引脚图
(1)电源和晶振
VCC:
供电电压。
GND:
接地。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
(2)I/O口
①P0口
P0口的字节地址为80H,位地址为80H~87H。
P0口既可以作为通用I/O口使用,也可以作为单片机系统的地址/数据线使用。
当作为输出口使用时,由于输出电路是漏极开路,必须外接上拉电阻才能有高电平输出。
②P1口
P1口的字节地址为90H,位地址为90H~97H。
P1口只能作为通用I/O口使用。
当作为输出口使用时,已能对外提供推拉电流负载,外电路无需再接上拉电阻;当作为输入口使用时,应先向其锁存器写入“1”,使输出驱动电路的FET截止。
③P2口
P2口的字节地址为0A0H,位地址为0A0H~0A7H。
P2口用于为系统提供高位地址,但只作为地址线使用而不作为数据线使用。
此外,P2口也可作为通用I/O口使用。
④P3口
P3口的字节地址为0B0H,位地址为0B0H~0B7H。
P3口可以作为通用I/O口使用,但在实际应用中它的第二功能信号更为重要。
P3口引脚的第二功能,如下所示:
表4-1P3端口的特殊功能
端口引脚
兼用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
(3)4根控制线
①RST:
复位信号。
保持RST脚两个机器周期以上的高电平,就可以完成CPU系统复位操作,使系统的一些单元内容回到规定值。
②/PSEN:
外部程序存储器读选通信号。
在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。
③/EA/VPP:
访问程序存储器控制信号。
当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当/EA为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。
④ALE/PROG:
地址锁存控制信号。
在系统扩展时,ALE用于控制P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。
此外由于ALE是以六分之一晶振频率的固定频率输出的正脉冲,因此也可作为外部时钟或外部定时脉冲使用.
单片机时钟信号
四、工作原理
字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:
HD44780内置了DDRAM、CGROM和CGRAM。
DDRAM就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下表:
也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码(指A的字模代码,0x20~0x7F为标准的ASCII码,通过这个代码,在CGROM中查找到相应的字符显示)就行了。
DDRAM地址与显示位置的对应关系
事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码,见字模关系对照表)并不能显示1出来。
这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。
依次类推。
大家看一下控制指令的的8条:
DDRAM地址的设定,即可以明白是怎么样的一回事了),1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形(无汉字),如下表所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
在向DDRAM写C51字符代码程序时甚至可以直接用P1='A'这样的方法。
PC在编译时就把“A”先转为41H代码了。
字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。
后面我会详细说的。
0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。
那么如何对DDRAM的内容和地址进行具体操作呢?
HD44780的指令集及其设置说明,请浏览该指令集,并找出对DDRAM的内容和地址进行操作的指令。
共11条指令:
HD44780的指令集
1.清屏指令
功能:
<1>清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;
<2>光标归位,即将光标撤回液晶显示屏的左上方;
<3>将地址计数器(AC)的值设为0。
2.光标归位指令
功能:
<1>把光标撤回到显示器的左上方;
<2>把地址计数器(AC)的值设置为0;
<3>保持DDRAM的内容不变
3.进入模式设置指令
功能:
设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
参数设定的情况如下所示:
位名 设置
I/D 0=写入新数据后光标左移
1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动
1=写入新数据后显示屏整体右移1个字
4.显示开关控制指令
功能:
控制显示器开/关、光标显示/关闭以及光标是否闪烁。
参数设定的情况如下:
位名 设置
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标闪烁 1=光标不闪烁
5.设定显示屏或光标移动方向指令
功能:
使光标移位或使整个显示屏幕移位。
参数设定的情况如下:
S/C R/L 设定情况
0 0 光标左移1格,且AC值减1
0 1 光标右移1格,且AC值加1
1 0 显示器上字符全部左移一格,但光标不动
1 1 显示器上字符全部右移一格,但光标不动
6.功能设定指令
功能:
设定数据总线位数、显示的行数及字型。
参数设定的情况如下:
位名 设置
DL 0=数据总线为4位
1=数据总线为8位
N 0=显示1行
1=显示2行
F 0=5×7点阵/每字符
1=5×10点阵/每字符
7.设定CGRAM地址指令
功能:
设定下一个要存入数据的CGRAM的地址。
8.设定DDRAM地址指令
功能:
设定下一个要存入数据的CGRAM的地址。
(注意这里我们送地址的时候应该是0x80+Address,这也是前面说到写地址命令的时候要加上0x80的原因)
9.读取忙信号或AC地址指令
功能:
<1>读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;
当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
<2>读取地址计数器(AC)的内容。
10.数据写入DDRAM或CGRAM指令一览
功能:
<1>将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
<2>将使用者自己设计的图形存入CGRAM。
11.从CGRAM或DDRAM读出数据的指令一览
功能:
读取DDRAM或CGRAM中的内容。
基本操作时序:
读状态 输入:
RS=L,RW=H,E=H
输出:
DB0~DB7=状态字
写指令 输入:
RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码
输出:
无
读数据 输入:
RS=H,RW=H,E=H
输出:
DB0~DB7=数据
写数据 输入:
RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据
输出:
无
键盘部分
1单片机键盘和键盘接口概述
单片机使用的键盘可分为独立式和矩阵式两种。
独立式实际上就是一组相互独立的按键,这些按键可直接与单片机的I/O接口连接,其方法是每个按键独占一条口线,接口简单[12]。
矩阵式键盘也称行列式键盘,因为键的数目不多,所以键采用独立式(如图4-7所示)。
键盘接口电路图
按一个键到键的功能被执行主要应包括两项工作:
一是键的识别,即在键盘中找出被按的是哪个键,通过接口电路来实现;另一项是键功能的实现,通过执行中断服务程序来完成。
下面来介绍键盘接口问题[13]。
具体来说,键盘接口应完成以下操作功能:
a键盘扫描,以判定是否有键被按下(称之为“闭合键”)。
b键识别,以确定闭合键的行列位置。
c产生闭合键的键码。
d排除多键、串键(复按)及去抖动。
这些内容通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完成。
但具体那些由硬件完成由软件完成,要看接口电路的情况。
总的原则是,硬件复杂软件就简单,硬件简单软件就得复杂一些。
2单片机键盘接口和键功能的实现
(1)键盘接口处理内容
①键扫描
键盘上的键按行列组成矩阵,在行列的交点上都对应有一个键。
为判定有无键按下(闭合键)以及被按键的位置,可使用两种方法:
扫描法和翻转法,其中
扫描法使用较为普遍。
②去抖动
当扫描表明有键被按下之后,紧接着应进行去抖动处理。
因为常用键盘的键实际上就是一个机械开关结构,被按下时,由于机械接触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动,如图4-8所示。
抖动时间长短与键的机械特性有关,一般为5~10ms。
而键的稳定闭合时间和操作者按键动作有关,大约为十分之几到几秒不等。
图4-6键闭合和断开时的电压抖动
③键码计算
被按键确定下来之后,接下来的工作是计算闭合键的键码,因为有了键码,才能通过散转指令把程序执行转到闭合键所对应的中断服务程序上去。
也可以直接使用该闭合键的行列值组合产生键码,但这样做会使各子程序的入口地址比较散乱,给JMP指令的使用带来不便。
所以通常都是以键的排列顺序安排键号,这样安排,使键码既可以根据行号列号以查表求得,也可以通过计算得到。
若各行的首号依次是00H,04H,08H,0CH。
若列号按0~3顺序,则键码的计算公式为:
键码=行首号+列号
④等待键释放
计算键码之后,再以延时后进行扫描的方法等待键释放。
等待键释放是为了保证键的一次闭合仅进行一次处理。
综上所述,键盘接口处理的核心内容是测试有无闭合键,对闭合键进行去抖动处理,求得闭合键的键码。
为了使键盘操作更稳定可靠,还可以加一些附加功能。
例如屏蔽功能:
在对一个闭合键已进行处理时,再按下其它键不会产生影响;对于一个键,不管按下多长时间,仅执行一次键处理子程序等。
(2)键盘接口的控制方式
在单片机的运行过程中,何时执行键盘扫描和处理,可有以下3种情况:
①随机方式,每当CPU空闲时执行键盘扫描程序。
②中断方式,每当有键闭合时才向CPU发出中断请求,中断响应后执行键盘扫描程序。
③定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机定时器完成。
(3)键处理子程序
在计算机中每一个键都对应一个处理子程序,得到闭合键的键码后,就可以根据键码,转相应的键处理子程序(分支是使用JMP等散转指令实现的),进行字符、数据的输入或命令的处理,这样就可以实现相应键所设定的功能[14]。
3单元电源电路设计
由于采用单片机控制的数字调频台功耗很小,可用7805三端稳压块分别对单片机和BH1415F电路单独供电,电源变压器功率大于10W即可。
为了能够让单片机和调频发射部分更好,更稳定地工作,采用了图4-10所示单元电源电路,由电源变压器、桥堆和滤波电容器所组成。
电源变压器的初级电压输入为220V,次级输出电压为12V[15][16]。
由于单片机所需的是+5V电源,经滤波电容和三端稳压集成电路MC7812后可得到+12V电压,MC7812能将15V~25V的直流电压变换成12V的稳定电压,在12V的电压中含有少量的低频成分和接收外界的高频成分,再经后一级滤波后送三端稳压集成电路7805,7805能将大于7V~15V的直流电压变换成5V的稳定电压。
同时由于电流较大导致三端稳压集成电路MC7812和7805过热,为了确保电路工作正常,给两个芯片分别加上散热片。
电源电路图
直流稳压电源的检测
本系统对电源要求高,因为稳定性和可靠性在发射电路重要意义。
为了提高稳定性,所以采用如图4-10的稳压电源,电源电路的主要部件采用集成的三端稳压器件如7812与7805,稳压电源输入电压范围宽,输出电压稳定,抗干扰能力强,以满足调频发射机的要求[12]。
数字万用表对稳压电源的测试结果:
表4-5稳压电源的测试结果
输入级(原)
滤波稳压输出
输出级
+12V直流稳压电源
220V
11.99V
4.99V
五、系统程序的设计
首先,进行整个程序的初始化,开机时先显示一下“088.0”,然后进入查键和显示函数的循环。
当有按键按下时,程序判断是哪个键被按下,然后执行相应的按键功能,并调用数码显示,显示所设置的发射频率;当没有键按下时,返回键盘扫描,再判断是否有键被按下。
本次程序设计的整体流程图,如图5-1所示:
5.2延时子程序
延时函数在本系统中主要用于1ms的显示延时和10ms的按键消抖。
5.3查键子程序
系统采用独立式键盘