温州科技职业学院毕业论文(设计)
附录四:C语言程序
#include
#define uc unsigned char #define ui unsigned int sbit change
= P1^0;//手动自动切换按键(默认自动)
sbit led_zhishi = P1^1; //遥控器指示灯 sbit in_back = P1^2;//手动后退按键 sbit led_back sbit out_back sbit in_go sbit led_go sbit out_go sbit limit_go sbit light
= P1^3;//前进限位指示灯 = P3^0;//电机控制反转 = P3^2;//手动前进按键 = P3^3; //后退限位指示灯 = P3^4; //电机控制正转 = P3^5;//前进限位开关 = P3^6;//光敏电阻
//头文件
sbit limit_back = P3^1;//后退限位开关
bit bdata flag1,flag2,change_flag,flag_shan,flag_shan1,flag_shan2; uc m,n,shan;
void delay(ui x)//延时函数 { }
void work()//工作函数 {
ui i,j;
for(i=0;i if(change==0)//判断切换是否按下 { 30 温州科技职业学院毕业论文(设计) } delay(50); if(change==0) change_flag=~change_flag;//手动,自动切换 while(!change);//释放 led_zhishi=change_flag; if(change_flag==0)//自动模式 { if(light==0)//夜间(无光)时关闭窗帘 { delay(50); if(light==0) { } if((limit_go==0)&&(flag_shan==0)) { } else if(limit_go==1) { } out_go=1; out_back=0; led_back=1; led_go=0; flag_shan=0; out_go=1; out_back=1; led_go=1; for(shan=0;shan<6;shan++) { } flag_shan=1; led_go=~led_go; delay(500); 31 温州科技职业学院毕业论文(设计) } } else if(light==1)//白天(有光)时打开窗帘 { } delay(50); if(light==1) { } if((limit_back==0)&&(flag_shan==0)) { } else if(limit_back==1) { } out_go=0; out_back=1; led_back=0; led_go=1; flag_shan=0; out_go=1; out_back=1; led_back=1; for(shan=0;shan<6;shan++) { } flag_shan=1; led_back=~led_back; delay(500); else if(change_flag==1)//手动模式 { if((in_go==0)&&(limit_go==1))//关闭是否按下 { delay(50); 32 温州科技职业学院毕业论文(设计) } if((in_go==0)&&(limit_go==1)) { } while(!in_go);//释放 out_go=1; out_back=~out_back;//按一下打开,再按一下,停止 led_back=1; led_go=out_back; flag_shan1=0; else if((in_back==0)&&(limit_back==1))//打开是否按下 { } if((limit_go==0)&&(flag_shan1==0)) { delay(5); if((limit_go==0)&&(flag_shan1==0)) { out_back=1; led_go=1; for(shan=0;shan<6;shan++) { delay(50); if((in_back==0)&&(limit_back==1)) { } while(!in_back);//按键释放 out_back=1; out_go=~out_go;//按一下关闭,再按一下,停止 led_go=1; led_back=out_go; flag_shan2=0; 33 温州科技职业学院毕业论文(设计) } } } } } led_go=~led_go; delay(500); flag_shan1=1; if((limit_back==0)&&(flag_shan2==0)) { } delay(5); if((limit_back==0)&&(flag_shan2==0)) { } out_go=1; led_back=1; for(shan=0;shan<6;shan++) { } flag_shan2=1; led_back=~led_back; delay(500); void main()//主函数 { } while(1)//进入死循环 { } work();//调用工作函数 34