基于单片机的全自动洗衣机控制系统的设计 - 本科毕业设计论文 联系客服

发布时间 : 星期五 文章基于单片机的全自动洗衣机控制系统的设计 - 本科毕业设计论文更新完毕开始阅读1222bc6110661ed9ad51f361

基于单片机的全自动洗衣机控制系统的设计

附录一 系统电路图

37

基于单片机的全自动洗衣机控制系统的设计

附录二 源程序

/*=======================================

全自动洗衣机控制程序

=========================================*/

#include #include

#define uchar unsigned char #define uint unsigned int

sbit dula = P2^6; //段锁存。P0是数码管数据端 sbit wela = P2^7; sbit beep = P2^3; sbit diola= P2^5; //LED指示灯锁存

sbit mod_hou = P1^0; //厚物指示 sbit mod_bao = P1^1; //薄物指示 sbit mod_rewash = P1^2; //漂洗指示 sbit mod_dry = P1^3; //甩干指示 sbit mod_pause =P1^4; //暂停指示 sbit mod_stop = P1^5; //停止指示 sbit mod_error= P1^6; //错误指示

sbit mola = P2^4; //伺服控制的锁存器使能 sbit molf = P1^0; sbit mort = P1^1; sbit mosp = P1^2; sbit wtin = P1^3; sbit wtot = P1^4; sbit adwr = P3^6; //ADC的控制针 sbit adrd = P3^7;

uint mh, ml, sh, sl;

uchar we, du, count, fen, miao; //LED位锁,段锁,中断计数,分,秒 uchar key_num, mod_flag, tmp_mod; //按键返回值,模式标志,临时模式标志 uchar adc_rewash, adc_display_mod; //AD判断是否漂洗,AD结果是否显示; uchar adc_samp; //ADC转换结果变量 uchar wt_h, wt_m, wt_l; //水位指示:高,中,低,水位标志 uchar action_mod, wt_io_action; //工作标志缓存,进排水动作标志

38

基于单片机的全自动洗衣机控制系统的设计

uchar rewash_times; //记录漂洗次数 bit flag_1s; //1s标志位 uint flag_1s_counter; //1s计数

uchar code table_of_duanma[] = { //共阴码段 0x3f, 0x06, 0x5b, 0x4f, // 0, 1, 2, 3, 0x66, 0x6d, 0x7d, 0x07, // 4, 5, 6, 7, 0x7f, 0x6f, 0x40, 0x00 }; // 8, 9, -, ,

//=== 延时子程序 ==================================== void delay(uchar z) { uchar x, y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

//=== 蜂鸣子程序 ==================================== void beep_on(uchar beep_mod) //蜂鸣器发声模式:

{ //1-短促(按键响应 和 模式切换) 2-稍长(结束提示) 3-很长(报警) uchar bp_ct; //计算发声次数的局部变量 switch(beep_mod) { case 1: { //模式 1 -短促(用于按键) for( bp_ct=3;bp_ct>0;bp_ct-- ) { beep = 0; delay(100); beep = ~beep; } beep = 1; } break; case 2: { //模式 2 -稍长(结束提示) for( bp_ct=5;bp_ct>0;bp_ct-- ) { beep = 0; delay(500); beep = ~beep; } beep = 1; } break;

39

基于单片机的全自动洗衣机控制系统的设计

case 3: { //模式 3 -很长(报警) for( bp_ct=7;bp_ct>0;bp_ct-- ) { beep = 0; delay(500); beep = ~beep; } beep = 1; } break; default:{ //其他情况视为错误,长2声 for( bp_ct=11;bp_ct>0;bp_ct-- ) { beep = 0; delay(500); } beep = 1; } break; } }

//=== 系统初始化 ============================== void init() { P0 = 0x00; //端口臵位,防止干扰 P1 = 0xff; P2 = 0x00; wela = 0; dula = 0; diola= 0; mola = 0; //关闭电机控制,等待指令操作 beep_on(2); //开机声音响应 beep = 1; //关闭蜂鸣器 rewash_times = 0; //漂洗次数初值:0次 key_num=16; //按键返回值:无按键 mod_flag=1; //模式标志 tmp_mod=0; //临时模式寄存标志

40