预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于单片机的LED路灯时控光控模拟系统设计原理图中的滑动变阻器实际使用光敏电阻。程序如下#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitkey_0=P2^3;sbitkey_1=P2^2;sbitkey_2=P2^1;sbitkey_3=P2^0;sbitwela_0=P2^7;sbitwela_1=P2^6;sbitwela_2=P2^5;sbitwela_3=P2^4;sbitludeng=P1^0;sbitinlamp1=P1^2;sbitinlamp2=P1^4;sbitguangmin=P1^6;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedinthour,min,STH,STM,LH,LM,f1,f0;uintaa;voiddelay(uintu)//延时子程序{uintx,y;for(x=u;x>0;x--)for(y=110;y>0;y--);}voiddisplay(ucharh,ucharm)//动态扫描子程序,扫描周期为50ms{ucharhhour,lhour,hmin,lmin;hhour=h/10;lhour=h%10;hmin=m/10;lmin=m%10;P0=table[hhour];P2=0x8f;//P0口加上拉电阻才能显示高电平。不然是高阻态。delay(2);P0=table[lhour];P2=0x4f;delay(2);P0=table[hmin];P2=0x2f;delay(2);P0=table[lmin];P2=0x1f;delay(2);}voidmain(){EA=1;TMOD=0x11;TH0=0x4b;TL0=0xfd;TH1=0x4b;TL1=0xfd;TR0=1;TR1=1;ET0=1;ET1=1;EX0=1;EX1=1;IT0=1;IT1=1;PX0=1;PX1=0;hour=12;min=0;STH=19;STM=0;LH=5;LM=0;aa=0;while(1){if(key_0==0){delay(2);if(key_0==0){hour++;}//在检测按键按下时,按键需要一个消除//抖动的延时if(hour==24)hour=0;while(key_0!=1)display(hour,min);}if(key_1==0){delay(2);if(key_1==0){min++;}if(min==60)min=0;while(key_1!=1)display(hour,min);}if(hour==STH)//条件符合点亮路灯{if(min==STM)ludeng=0;TR1=0;}if(hour==LH)//条件符合熄灭路灯{if(min==LM)ludeng=1;TR1=1;}display(hour,min);}}voidtime1()interrupt3{TH1=0x3c;TL1=0xb0;f1=guangmin;if(ludeng==1){switch(f1){case1:ludeng=0;break;case0:ludeng=1;break;default:break;}}if(ludeng==0){switch(f1){case1:ludeng=0;break;case0:ludeng=1;break;default:break;}}}voidtime()interrupt1//定时器0用来控制实时时间{TH0=0x3c;TL0=0xb0;aa++;if(aa==600){aa=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;}}}}voidtimedot()interrupt0//设置点亮时间{inlamp1=0;inlamp2=1;while(key_2==1){if(key_0==0){delay(2);if(key_0==0)STH++;if(STH==24)STH=0;while(key_0!=1)display(STH,STM);}if(key_1==0){delay(2);if(key_1==0)STM++;if(STM==60)STM=0;while(key_1!=1)display(STH,STM);}display(STH,STM);}inlamp1=1;}voidtimelong()interrupt2//设置熄灭时间{inlamp2=0;while(key_2==1){if(key_0==0){delay(2);if(key_0==0)LH++;if(LH==24)LH