为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

洗衣机程序

2017-11-29 17页 doc 33KB 25阅读

用户头像

is_624976

暂无简介

举报
洗衣机程序洗衣机程序 单片机课程设计 课程: 单片机设计及应用 题目: 洗衣机程序 院系: 信息工程学院电子信息工程系 班级: 电子03班 学号: 200824103335 姓名: 熊骥一 程序部分: #include void delay(unsigned int z); //延时z毫秒子函数 void init(); //初始化子函数 void write_com(unsigned char x); //写LCD指令子函数 void write_dat(unsigned char y); //写LCD数据子...
洗衣机程序
洗衣机程序 单片机课程 课程: 单片机设计及应用 题目: 洗衣机程序 院系: 信息工程学院电子信息工程系 班级: 电子03班 学号: 200824103335 姓名: 熊骥一 程序部分: #include void delay(unsigned int z); //延时z毫秒子函数 void init(); //初始化子函数 void write_com(unsigned char x); //写LCD指令子函数 void write_dat(unsigned char y); //写LCD数据子函数 char keyscan(); //键盘按键扫描子函数 void key1_down(); //key1键响应子函数 void key2_down(); //key2键响应子函数 void key3_down(); //key3键响应子函数 void key4_down(); //key4键响应子函数 void showtime(unsigned char n); //显示时间子函数 void clock1(); //洗涤环节时钟 void clock2(); //漂洗环节时钟 void clock3(); //甩干环节时钟 unsigned char code string[]="WASHING MASHION"; unsigned char code string1[]="3:00"; unsigned char code string2[]="WASHING"; unsigned char code string3[]="RINSING"; unsigned char code string4[]="DRYING"; unsigned char code string5[]="FINISH"; sbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2; sbit key1=P1^4; sbit key2=P1^5; sbit key3=P1^6; sbit key4=P1^7; unsigned char xidi=3,piaoxi=3,shuaigan=3; char second=0; unsigned char count=0; void main() { init(); while(1) { char x; x=keyscan(); switch(x) { case 1: key1_down(); break; case 2: key2_down(); break; case 3: key3_down(); break; case 4: key4_down(); break; } } } void init() //初始化:设定液晶参数,显示初始化界面, 开中断,设定时器0初值 { unsigned char i=0; RS=0; RW=0; EN=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x80+0); while(string[i]!='\0') { write_dat(string[i]); i++; } i=0; write_com(0x80+0x40+6); while(string1[i]!='\0') { write_dat(string1[i]); i++; } TMOD=0x01; TH0=0x94; TL0=0x93; EA=1; ET0=1; TR0=0; } void delay(unsigned int z) //延时z毫秒子函数 { unsigned int x,y; for(x=z;x>0;x--) for(y=342;y>0;y--); } void write_com(unsigned char x) //写LCD指令子函数 { RS=0; RW=0; EN=0; P0=x; delay(5); EN=1; delay(5); EN=0; } void write_dat(unsigned char x) //写LCD数据子函数 { RS=1; RW=0; EN=0; P0=x; delay(5); EN=1; delay(5); EN=0; } char keyscan() //键盘按键扫描子函数 { unsigned char z=0; if(key1==0) { delay(5); //防抖动 if(key1==0) { while(key1==0); //手离开按键,表示按键完毕 z=1; } return z; } if(key2==0) { delay(5); if(key2==0) { while(key2==0); z=2; } return z; } if(key3==0) { delay(5); if(key3==0) { while(key3==0); z=3; } return z; } if(key4==0) { delay(5); if(key4==0) { while(key4==0); z=4; } return z; } return z; } void timer0() interrupt 1 //定时器0中断函数 { TH0=0x94; TL0=0x93; count++; } void clock1() //clock1、clock2、clock3与定时器配合起计时作用 { //假设定时器0设定为每100ms溢出一次, if(count>=10) //每溢出一次,全局变量count+1 { //当count=10,则经过一秒,second-1.如此计时 count=0; if(second==0) { second=59; xidi--; } else second--; } } void clock2() { if(count>=10) { count=0; if(second==0) { second=59; piaoxi--; } else second--; } } void clock3() { if(count>=10) { count=0; if(second==0) { second=59; shuaigan--; } else second--; } } void showtime(unsigned char n) { unsigned char shi,ge; shi=second/10; ge=second%10; write_com(0x80+0x40+6); write_dat(0x30+n); write_com(0x80+0x40+8); write_dat(0x30+shi); write_com(0x80+0x40+9); write_dat(0x30+ge); } void key1_down() { unsigned char i=0; TR0=1; while(1) { if(xidi>0||xidi==0&&second>0) //洗涤中 { write_com(0x01); //清屏 write_com(0x80+5); //先写入固定部分, while(string2[i]!='\0') //下边showtime中显示变化部分 { write_dat(string2[i]); i++; } i=0; write_com(0x80+0x40+6); while(string1[i]!='\0') { write_dat(string1[i]); i++; } i=0; while(xidi>0||xidi==0&&second>0) //此处用while循环:因为上边有清屏动 作 { //若不加while循环,液晶屏会不停闪 烁 clock1(); showtime(xidi); } } else if(piaoxi>0||piaoxi==0&&second>0) //洗涤完毕,漂洗中 { write_com(0x01); write_com(0x80+5); while(string3[i]!='\0') { write_dat(string3[i]); i++; } i=0; write_com(0x80+0x40+6); while(string1[i]!='\0') { write_dat(string1[i]); i++; } i=0; while(piaoxi>0||piaoxi==0&&second>0) { clock2(); showtime(piaoxi); } } else if(shuaigan>0||shuaigan==0&&second>0) //洗涤漂洗完毕,甩干中 { write_com(0x01); write_com(0x80+5); while(string4[i]!='\0') { write_dat(string4[i]); i++; } i=0; write_com(0x80+0x40+6); while(string1[i]!='\0') { write_dat(string1[i]); i++; } i=0; while(shuaigan>0||shuaigan==0&&second>0) { clock3(); showtime(shuaigan); } } else //工作完成 { TR0=0; write_com(0x01); write_com(0x80+5); while(string5[i]!='\0') { write_dat(string5[i]); i++; } break; } } } void key2_down() //key2、key3只能在洗衣机开始工作前按下有效 { char i=0,j=0; if(xidi==3) //设定洗涤时间 xidi=4; else if(xidi==4) xidi=5; else xidi=3; write_com(0x0c); //显示设定洗涤时间的界面 write_com(0x01); //清屏,否则屏上很混乱 write_com(0x80+5); while(string2[i]!='\0') { write_dat(string2[i]); i++; } write_com(0x80+0x40+6); while(string1[j]!='\0') { write_dat(string1[j]); j++; } write_com(0x80+0x40+6); write_dat(0x30+xidi); } void key3_down() { char i=0,j=0; if(piaoxi==3) piaoxi=4; else if(piaoxi==4) piaoxi=5; else piaoxi=3; write_com(0x0c); write_com(0x01); write_com(0x80+5); while(string3[i]!='\0') { write_dat(string3[i]); i++; } write_com(0x80+0x40+6); while(string1[j]!='\0') { write_dat(string1[j]); j++; } write_com(0x80+0x40+6); write_dat(0x30+piaoxi); } void key4_down() { char i=0,j=0; if(shuaigan==3) shuaigan=4; else if(shuaigan==4) shuaigan=5; else shuaigan=3; write_com(0x0c); write_com(0x01); write_com(0x80+5); while(string4[i]!='\0') { write_dat(string4[i]); i++; } write_com(0x80+0x40+6); while(string1[j]!='\0') { write_dat(string1[j]); j++; } write_com(0x80+0x40+6); write_dat(0x30+shuaigan); } 程序: 开始 键盘扫描函数 Key2按下改变洗涤时间 Key3按下改变漂洗时间 Key4按下改变甩干时间 Key1按下 否 洗涤完成洗涤计时 否漂洗完成漂洗计时 否甩干完成甩干计时
/
本文档为【洗衣机程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索