天津工程师范学院2009届本科生毕业设计
5.2 液晶显示子程序流程图
液晶显示模块HY-19264内有一个忙标志位ACC.7,它反映了控制器HD61202内部运行时序状态。当ACC.7=1时,表示内部操作正在运行,不能接受外部数据;当ACC.7=0时,表示已准备好接收,可以随时接收单片机发来的数据和命令,这是HY-19264向单片机发出的唯一联络信号。液晶显示子程序流程图见图5-2。
写入相应的数据 延时1ms ACC.7=0? 检测忙信号 延时1ms 对HY-19264初始化 写入显示设置命令 入口 N Y 获得显示RAM地址
图5-2 液晶显示子程序流程图
返回主程序 数据显示完毕 20
天津工程师范学院2009届本科生毕业设计
5.3 键盘驱动程序
键盘驱动程序包括四个子程序: 5.3.1 初始化子程序
void KeyBoardInit(void) {
PORT_Line &= 0xc3;//输出低电平 }
如上所示程序,键盘初始化子程序定义IO的输入输出属性及初始电平值。
DDR_Line |= 0x3c;//输出 PORT_Row = 0xff;//上拉 DDR_Row = 0x00;//输入
5.3.2 按下判断子程序
uint8 Key_Down(void) //判键盘是否活动函数 {
PORT_Line &= 0xc3;//输出低电平 }
该程序应该在主循环中循环调用,当有按键按下时,程序返回1,否则返回0。
if (PIN_Row!=0xff) //如果有键按下 {return 1;} else
{return 0;} //否则返回0
5.3.3 等待抬起子程序
uint8 WaitKeyUp(void) {
uint16 i,j;
i=0; {
21
while(Key_Down())
天津工程师范学院2009届本科生毕业设计
i++; }
当调用该程序时,过程会被阻塞,一直到按键抬起,程序才会返回1,过程恢复;如果等待超时,程序返回0,过程也会恢复。
}
if(i>65530){i=0;j++;if(j>10){return 0;}}
return 1;
5.3.4 键盘扫描子程序
void Key(void) {
if(key_1==0) {key1_flay=1;} if(key1_flay==1)
{ key1_flay=0; a++; a=a&0x0f; delay1(100);
switch(a) {
单
独
脱
水
////////////////////////
//////////////////////////////////////////////
case 0x01: xygz(3,4,fenhao[1]); xygz(3,6,fenhao[1]); xygz(3,2,hz[12]);
a=1; break;
经
济
xygz(3,2,fenhao[1]);
//////////////////////////
/////////////////////////////////////////////////
case
0x02:
xygz(3,6,fenhao[1]);
xygz(3,4,hz[12]);
a=2; break; //
标
准
xygz(3,4,fenhao[1]);
/////////////////////////// case xygz(3,6,hz[12]);
a=0;break;
// default: break;
0x03:
////////////////////////////////////////////////
xygz(3,2,fenhao[1]);
}
22
天津工程师范学院2009届本科生毕业设计
}
if(key_2==0) {key2_flay=1;} if(key2_flay==1)
{ key2_flay=0; a=a&0x0f; delay1(100); switch(a)
} 调用该程序,程序会扫描当前按键并返回键值。 {
case 0x02: TR0=1;bai=0;miao=0;break; ///经济/// }
case 0x01: TR0=1;bai=0;miao=0;break; ////单独脱水// case 0x00: TR0=1;bai=0;miao=0;break; ////标准///// }
5.4 键盘子程序流程图
下图为键盘子程序流程图,此流程图的含义是:当有按键按下时,程序开始进行判断是哪个按键按下,判断完毕后则转向相应的键处理子程序,进行字符的输入或命令的处理,并通过按键4把要发送的数据进行CRC校验编码,再把编码后的数据发送出去。
有按键按判断是哪个按键按下 按 键 1 按 键 2 按 键 3 模式选择 确定键 图5-4 键盘子程序流程图
暂停键 23
天津工程师范学院2009届本科生毕业设计
6测试结果及分析
6.1 硬件电路测试
本设计中将控制模块和电机驱动模块分开设计,控制模块通过单片机和液晶来显示各种功能,测试的步骤如下:
(1) 将控制模块和电机驱动模块焊好,检查确认无虚焊、粘焊;
(2) 先对控制模块上电进行测试,主要是测试控制模块的定时器的使用,测试方法是将控制模块的定时器与秒表同时打开,并将程序写到AT89S52上,然后用秒表测试定时是否准确;
(3) 将显示模块与控制模块连接起来,上电进行测试,按照程序,上电时处于正常显示状态,看是否与程序吻合;
(4) 确认显示模块上电处于正常显示状态后,可测试驱动模块,如果按下模式选择按键,可以选择模式,则说明显示电路正常,此外,在没有接上驱动模块收时,仍会选择模式。
6.2 系统测试
6.2.1 测试方法
(1) 首先让电路正常工作,选择模式后,按开始键,开始工作。
(2) 在工作期间,可以随时按暂停键来暂停,洗衣机须停止工作,再按该键,洗衣机又能按原来所选择的工作方式继续工作
(3) 用秒表来测试洗衣机的进水时间、侵泡时间、洗衣时间等,以测试时间的准确性。
6.2.2 功能测试及分析
(1) 洗衣时正、反转驱动时间各为3秒,间歇时间为2秒。
(2) 标准程序、经济程序和单独程序。标准程序是进水→洗涤/ 漂洗→排水→脱水,经济程序是进水→洗涤 →结束(留水不排不脱) ,单独程序是排水→脱水→结束。
(3) 经测试定时器定时非常精确,如洗衣时间的定时,各个功能模块一一实现。
24