logo资料库

基于51单片机的雨刮程序.doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
执行 FL 模式 Main 程序初始化 判断外部中 是 断 0 否 判断按键 执 行 按 键 所 对 应的子程序 终止
#include #define uint unsigned int #define uchar unsigned char uint code table[]={0xfe,0xfd,0xfb}; uchar code tableOff[]={0x3f,0x71,0x71}; uchar code tableInt[]={0x06,0x54,0x78}; uchar code tableLo[]={0x38,0x5c}; uchar code tableHi[]={0x76,0x06}; uchar code tableFL[]={0x71,0x38}; uint t,num,sw,tt,ss; sbit slow=P1^0; sbit shigh=P1^1; sbit f=P1^2; sbit sw1=P3^0; sbit sw2=P3^1; sbit sw3=P3^6; sbit sw4=P3^7; void Init(void); void delay(uint); void display(void); void scan(void); void Off(void); void Int(void); void Lo(void); void Hi(void); void FL(void); main() { Init(); TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; EX0=1; IT0=1; scan(); while(1) { if(sw==5) {
FL(); } if(sw!=5) { scan(); switch(sw) { case 1: Off(); Int(); case 2: case 3: Lo(); case 4: Hi(); break; break; break; break; } } } } void Init(void) { P1=0x00; ss=0; t=0; num=0; tt=0; } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=100;y>0;y--); } void display(void) { if(sw==1) { P2=table[0]; P0=tableOff[0]; delay(5); P2=table[1]; P0=tableOff[1]; delay(5); P2=table[2]; P0=tableOff[2];
delay(5); } if(sw==2) { P2=table[0]; P0=tableInt[0]; delay(5); P2=table[1]; P0=tableInt[1]; delay(5); P2=table[2]; P0=tableInt[2]; delay(5); } if(sw==3) { P2=table[0]; P0=tableLo[0]; delay(5); P2=table[1]; P0=tableLo[1]; delay(5); } if(sw==4) { P2=table[0]; P0=tableHi[0]; delay(5); P2=table[1]; P0=tableHi[1]; delay(5); } if(sw==5) { P2=table[0]; P0=tableFL[0]; delay(5); P2=table[1]; P0=tableFL[1]; delay(5); } } void scan(void) {
if(sw1==0) sw=1; if(sw2==0) sw=2; if(sw3==0) sw=3; if(sw4==0) sw=4; } void Off(void) { display(); slow=0; shigh=0; f=0; } void Int(void) { display(); if(t>=0&&t<5) { slow=1; shigh=0; f=0; } if(t>=5&&t<10) slow=0; } void Lo(void) { display(); slow=1; shigh=0; f=0; } void Hi(void) { display(); slow=0; shigh=1; f=0; } void FL(void) {
display(); slow=0; if(tt>=50&&tt<=350) { shigh=1; if(tt==350) { shigh=0; tt=360; } } else shigh=0; f=1; } void exter0() interrupt 0 { ss++; ss=ss%2; if(ss==1) else sw=5; scan(); t=0; tt=0; num=0; } void time0() interrupt 1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; num++; if(sw==5) tt++; if(num==100) { num=0; if(sw==2) { t++; t=t%10; } } }
Protuse 仿真截图: 1、 off 模式—停止 2、Int 模式—间歇低速旋转
3、Lo 模式—低速旋转 4、Hi 模式—高速旋转
分享到:
收藏