(西安电子科技大学机电工程学院,陕西西安710071)
中图分类号:TP13文献标识码:ADOI:10.19358/j.issn.1674-7720.2017.07.030
引用格式:张哲,李智,管四海.基于STC89C52的智能全自动洗衣机控制系统设计[J].微型机与应用,2017,36(7):102-105.
0引言
为了有效解决以上问题,本文利用HC05蓝牙模块、矩阵式键盘、LCD1602液晶显示屏和红外热释电传感器,基于STC89C52设计了一种智能控制系统。其中,利用HC-05蓝牙模块以及矩阵式键盘分别实现无线移动终端控制洗衣操作以及近距离人机操作;利用LCD1602液晶显示屏以清晰的英文标识显示当前的工作状态并配有高亮度的背光,结合红外热释传感器为洗衣机的操作提供极大的便利。
1控制系统的总体设计
此控制系统由STC89C52、蓝牙串口电路、电机驱动电路、矩阵键盘电路、LCD1602液晶显示模块、红外热释电模块和报警电路组成,系统框图如图1。
2主要硬件设计
2.1STC89C52单片机系统
STC89C52系统主要由微控制器(MCU)、时钟电路和复位电路组成。STC89C52完全兼容8051单片机的特点,其主要参数为:时钟频率最高可达80MHz;内置有5个中断源,分为两个优先级,每个中断源的优先级是可以编程的,4个8位输入/输出口(P0,P1,P2,P3);有一个全双工的串行口,其有4种工作方式,可通过设置SMOD寄存器进行配置;有3个16位的定时器/计数器[2]。由于STC89C52单片机除P0口外内部均嵌有上拉电阻,因此对于P0口在其外部必须接上拉电阻以保证电平的可靠性。其次,其复位电路采用上电给电容充电进而自动复位的方式。此外其串口(P3.1,P3.2)连接蓝牙模块的串口(TXD,RXD),P2口接洗衣机的功能键盘,P0口作为液晶的数据总线,P1.7口作为其报警电路的蜂鸣器控制端。
2.2蓝牙串口电路
蓝牙通信的原理类似于单片机和计算机之间的串口通信,二者之间的通信需要借助串口,其通信示意图如图2[3]。
图2中GND表示单片机和HC-05系统的参考地,TXD是串行发送引脚,RXD是串行接收引脚。HC05和单片机之间通信,为保证电源基准相同,故将单片机的GND与HC-05的GND连接起来。其次为构建通信通道,将单片机的接收引脚与HC05的发送引脚连接起来,作为单片机的接收通道;将图2蓝牙接线示意图单片机的发送引脚和HC-05的接收引脚连接起来,作为单片机的发送通道。HC05蓝牙串口电路原理图如图3。
2.3红外热释模块
红外热释传感器的原理[4]是通过其内部传感器感知人体发射的红外光谱从而产生高电平信号,当人离开传感器的感应区则自动关闭高电平,输出低电平。此外,红外热释传感器微功耗,静态电流只有65mA。其VCC接电源正极,GND接电源负极,OUT1接1kΩ的限流电阻后接LED小灯。
2.4电机驱动电路
STC89C52输出的高电压为5V,低电压为0V,电流为10~20mA。然而直流电机的启动电流为200~400mA,不足以驱动电机运行,故选取L298电机驱动模块以放大电流。直流电机PWM控制系统的主要功能包括:通过控制两个输入引脚的电平信号控制直流电机的正转、反转和急停,且可通过调整电压大小调整电机的转速,能方便地实现电机的智能控制[5],其控制功能见表1。
L298中的ENA、ENB为使能端口,ENA用来控制左边的电机,ENB用来控制右边的电机;IN1、IN2、IN3、IN4为控制引脚,用来设置三极管的开关状态。通过H桥来控制电机的运行,当使能端为高电平时控制有效;使能端为低电平时,输入端对电机的控制失效[6]。输入端的一个引脚接PWM信号,另一个输入端接低电平时电机正转;当该引脚输入低电平另一个引脚输入PWM信号时,电机朝另一个方向运行。当两个输入端的电平信号相同时,电机快速停止。引脚以及功能如表2所示。
3软件设计
3.1软件整体结构设计
3.2蓝牙串口程序
特率=(2SMOD/32)×(T1的溢出率)[2],设置本系统波特率为9600b/s;在使用串口时,当接收到或者发送完数据后,会对标志位进行置1,但是串口中断不会像定时器中断自动地对标志位进行清0,需要软件对标志位进行清0。蓝牙串口接收数据的具体流程如图5所示。
3.3矩阵键盘子程序
矩阵键盘由16个按键组成,由于单片机的引脚有限,故将其设置成4行4列,进行行扫描或列扫描以减少对IO口的使用。此外,为避免按键按下时出现抖动,因此需要去抖处理。按键扫描如图6所示,按键去抖流程图如图7所示。
3.4LCD1602液晶显示
LCD1602液晶[5]内部带有80B的显示RAM,用来发送数据,它的结构如图8。
第一行地址是0X00~0X27,第二行是0X40~0X67H,其中第一行0X00H~0X0F是与液晶上第一行16个字符显示位置相对应的,第二行0X40H~0X4F是与第二行16个字符显示位置相对应的。而每行多出来的一部分是为了显示移动字幕[7]。
基本操作时序:
读状态:
输入:RS=L,R/W=H,E=H;
输出:D0~D7状态字;
读数据:
输入:RS=H,R/W=H,E=H;
输出:无;
写指令:
输入:RS=L,R/W=L,E=H,D0~D7=指令码;
输出:D0~D7数据;
写数据:
输入:RS=H,R/W=L,E=H,D0~D7=数据;
输出:无。
操作1602液晶显示的流程如下:
(1)通过RS信号确定是向LCD写数据还是写命令;
(2)读写模式设置(R/W)为写模式,即将R/W设置为低电平;
(3)将数据或者命令送达数据总线上;
(4)给使能信号端EN一个高电平信号,将数据送入LCD的RAM,完成写操作。
4实验结果与分析
为了进一步验证本文设计的控制系统简便有效,利用Keil编写程序并进行Proteus仿真,仿真结果显示洗衣机运行正常、液晶显示信息正确。根据原理图以及仿真图制作硬件模拟实物,通过Ecilpse编写蓝牙串口Android版软件,在非开阔的环境下对不同距离的通信情况进行测试,通过手机蓝牙串口软件控制全自动洗衣机的运行,观察能够操作洗衣机的极限距离。
参考文献
[1]刘晓彤.基于Proteus的全自动洗衣机控制系统设计[J].微计算机信息,2012:28(9):146-148.
[2]温宗周.孟建华.单片机原理与接口技术[M].北京:中国电力出版社,2009.
[3]赵勇.嵌入式系统蓝牙模块设计[D].北京:北京交通大学,2007.
[4]徐青山,李正云.红外热释电人体感应饮水机智能控制开关:中国,CN201830232[P].2010-10-29.
[5]刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现[J].微计算机信息,2007,23(2):49-53.
[6]彭鸿才.电机原理及拖动[M].北京:机械工业出版社,2007.
[7]NXP.NXPSemiconductors“TJA1042Rev.7-8”[S].2012.