的单片机全自动洗衣机设计北理工.docx
- 文档编号:24743095
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:19
- 大小:202.38KB
的单片机全自动洗衣机设计北理工.docx
《的单片机全自动洗衣机设计北理工.docx》由会员分享,可在线阅读,更多相关《的单片机全自动洗衣机设计北理工.docx(19页珍藏版)》请在冰豆网上搜索。
的单片机全自动洗衣机设计北理工
全自动洗衣机课程设计
基于51单片机,C语言实现。
基本要求
模拟全自动洗衣机工作过程。
以电机替代洗衣机电机。
显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。
显示工作剩余时间(洗衣程序可自定义,时间精度:
秒)。
洗衣时交替正、反转。
扩展要求
洗衣和脱水时电机转速不同。
增加水位传感器输入。
故障报警。
增加声音提示。
其它自定义功能。
设计用Preteus仿真:
仿真图如下:
C文件函数代码:
#include
//****************************//
#defineucharunsignedchar
#defineuintunsignedint
//*******************************//
//***************************//
sbitmo_r=P3^2。
//电机右控制线
sbitmo_l=P3^3。
//电机左控制线
//****************************//
sbitkey_menu=P3^4。
//菜单按键
sbitkey_on=P3^5。
//开始按键
sbitkey_off=P3^6。
//结束按键
sbitkey_se=P3^7。
//菜单选择按键
//***************************//
sbitled_in=P0^0。
//进水指示灯
sbitled_xi=P0^1。
//洗衣指示灯
sbitled_pao=P0^2。
//泡洗指示灯
sbitled_xx=P0^3。
//脱水指示灯
sbitled_out=P0^4。
//出水指示灯
sbitled_over=P0^5。
//洗衣结束指示灯
sbitled_work=P0^6。
//电机工作指示灯
sbitled_wring=P0^7。
//报警指示灯
sbitother=P3^1。
//脱水电源控制开关
sbitanther=P3^0。
//洗衣电源控制开关
//******************************//
ucharcodenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。
//
//*****************************//
charsec=0。
//时间秒
charmin=0。
//时间分
ucharcount=0。
//中断计数
ucharflag0=0。
//洗衣机工作状态标志
ucharflag1=0。
//进水次数标志
ucharflag2=0。
//出水次数标志
ucharflag3=0。
//泡洗次数标志
ucharerr=0。
//报警标志
ucharquan=0。
//正反转计数
//**********************************//
//函数声明
//*************************************//
voiddelay()。
//延时函数
voidin()。
//进水子程序
voidout()。
//出水子程序
voidover()。
//结束子程序
voidxi()。
//洗衣子程序
voidpao()。
//泡衣子程序
voidxx()。
//脱水子程序
voidon()。
//工作on处理子程序
voidse()。
//显示菜单选择
voidSEG_display()。
//显示时间子程序
voidkey_scan()。
//按键扫描子程序
//*****************************//
//延时函数
//****************************//
voiddelay(uinti)
{
uintx,y。
for(x=i。
x>0。
x--)
for(y=120。
y>0。
y--)。
}
//******************************//
//工作on处理子程序
//********************************//
voidon()
{
TMOD=0x01。
TH0=(65536-50000)/256。
TL0=(65536-50000)%256。
EA=1。
ET0=1。
TR0=1。
P0=0xff。
if(flag0==0)
in()。
if(flag0==1)
xi()。
if(flag0==2)
pao()。
if(flag0==3)
xx()。
if(flag0==4)
out()。
}
//*******************************//
//结束子程序
//*********************************//
voidover()
{other=0。
anther=0。
P0=0xff。
mo_r=0。
mo_l=0。
led_over=0。
EA=0。
}
//*********************************//
//进水子程序
//*********************************//
voidin()
{anther=0。
other=0。
P0=0xff。
led_in=0。
flag1++。
mo_r=0。
mo_l=0。
min=0。
sec=8。
}
//*********************************//
//洗衣子程序
//*********************************//
voidxi()
{anther=1。
other=0。
P0=0xff。
led_work=0。
led_xi=0。
mo_r=1。
mo_l=0。
min=1。
sec=36。
quan=0。
}
//*********************************//
//泡衣子程序
//*********************************//
voidpao()
{
anther=1。
other=0。
P0=0xff。
led_pao=0。
led_work=0。
flag3++。
mo_r=1。
mo_l=0。
min=1。
sec=35。
quan=0。
}
//*********************************//
//脱水子程序
//*********************************//
voidxx()
{other=1。
anther=0。
P0=0xff。
led_xx=0。
mo_r=0。
mo_l=1。
min=0。
sec=50。
}
//*********************************//
//出水子程序
//*********************************//
voidout()
{anther=0。
other=0。
P0=0xff。
led_out=0。
flag2++。
mo_r=0。
mo_l=0。
min=0。
sec=5。
}
//*********************************//
//显示菜单选择
//*********************************//
voidse()
{
P0=0xff。
if(flag0>=5)
flag0=0。
if(flag0==0)
{
led_in=0。
}
if(flag0==1)
{
led_xi=0。
}
if(flag0==2)
{
led_pao=0。
}
if(flag0==3)
{
led_xx=0。
}
if(flag0==4)
{
led_out=0。
}
}
//********************************//
//菜单处理子程序
//**********************************//
voidmenu()
{
min=0。
sec=0。
mo_r=0。
mo_l=0。
SEG_display()。
while
(1)
{
if(key_on==0)
{
delay(5)。
if(key_on==0)
{
while(!
key_on)。
on()。
break。
}
}
//**************************//
if(key_off==0)
{
delay(5)。
if(key_off==0)
{
while(!
key_off)。
over()。
break。
}
}
//****************************//
if(key_se==0)
{
delay(5)。
if(key_se==0)
{
while(!
key_se)。
flag0++。
se()。
}
}
}
}
//*********************************//
//按键扫描子程序
//*********************************//
voidkey_scan()
{
if(key_menu==0)
{
delay(5)。
if(key_menu==0)
{
while(!
key_menu)。
menu()。
}
}
//********************************//
if(key_on==0)
{
delay(5)。
if(key_on==0)
{
while(!
key_on)。
on()。
}
}
//*********************************//
if(key_off==0)
{
delay(5)。
if(key_off==0)
{
while(!
key_off)。
over()。
}
}
}
//*******************************//
//显示子程序
//*********************************//
voidSEG_display()
{
P1=0x01。
P2=num[min/10]。
delay(10)。
P1=0x02。
P2=num[min%10]。
delay(10)。
P1=0x04。
P2=num[sec/10]。
delay(10)。
P1=0x08。
P2=num[sec%10]。
delay(10)。
}
//*********************************//
//主函数
//*********************************//
voidmain()
{
led_in=0。
anther=0。
other=0。
while
(1)
{
SEG_display()。
key_scan()。
}
}
//**********************************//
//定时器0中断处理程序
//**********************************//
voidtimer0()interrupt1
{
TH0=(65536-50000)/256。
TL0=(65536-50000)%256。
count++。
if(count==20)
{
count=0。
sec--。
if((flag0==1)||(flag0==2))
{
quan++。
switch(quan)
{
case1:
mo_r=1。
mo_l=0。
break。
case10:
mo_r=0。
mo_l=0。
break。
case15:
mo_r=0。
mo_l=1。
break。
case25:
mo_r=0。
mo_l=0。
break。
default:
。
}
if(quan==30)
{
quan=0。
}
}
//**********************************//
if((sec==0)&&(min!
=0))
{
min--。
sec=59。
}
//**********************************//
if((sec<0)&&(min==0)&&(flag0==0))//进水结束
{
switch(flag1)
{
case1:
flag0=1。
xi()。
break。
case2:
flag0=2。
pao()。
break。
case3:
flag0=2。
pao()。
break。
case4:
flag0=2。
pao()。
break。
default:
err=1。
led_wring=0。
}
}
//**********************************//
if((sec<0)&&(min==0)&&(flag0==1))//洗衣结束
{
flag0=4。
out()。
}
//**********************************//
if((sec<0)&&(min==0)&&(flag0==2))//泡衣结束
{
switch(flag3)
{
case1:
flag0=4。
out()。
break。
case2:
flag0=4。
out()。
break。
case3:
flag0=4。
out()。
break。
default:
err=1。
led_wring=0。
}
}
//**********************************//
if((sec<0)&&(min==0)&&(flag0==4))//出水结束
{
switch(flag2)
{
case1:
flag0=0。
in()。
break。
case2:
flag0=0。
in()。
break。
case3:
flag0=0。
in()。
break。
case4:
flag0=3。
xx()。
break。
default:
err=1。
led_wring=0。
}
}
//***********************************//
if((sec<0)&&(min==0)&&(flag0==3))
{sec=0。
over()。
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 全自动 洗衣机 设计 北理工
![提示](https://static.bdocx.com/images/bang_tan.gif)