资源描述:
《中断方式流水灯设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于51单片机中断流水灯设计1.实验任务利用单片机AT89C51与LED设计一串流水灯,要求至少26个灯,三种流水模式。2.电路原理图3.1)P0,P2口控制16个灯;2)P1.5,P1.7为两个指示的灯;3)两个按键接两个外部中断;4.c语言程序设计#include#includesbitkey1=P1^0;sbitkey2=P1^2;sbitkey3=P1^4;sbitW1=P1^5;sbitW3=P1^7;unsignedchari,j,k,m,n,temp,y,v,u;inta[]
2、={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};intb[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voidInitInt0(void);voiddelay02s(void)//延时0.2秒子程序{unsignedchari,j,k;//定义3个无符号字符型数据。for(i=20;i>0;i--)//作循环延时for(j=20;j>0;j--)for(k=248;k>0;k--);}voidInitInt0(void){IT0=1;//设置中断0
3、为跳变触发方式IT1=1;//设置中断1为跳变触发方式IE=0x85;//CPU开放中断,允许INT0、INT1中断IP=0x04;}voidInt0Interrupt(void)interrupt0//实现要求子程序(key1按下时实现逐盏点亮,逐盏灭掉){P0=0xff;//发光二极管全灭while(!key1)delay02s();while(key1==1){while(1){P0=a[m];P2=a[m];P3=a[m];W3=0;delay02s();P0=0xff;P2=0xff;P3=0xff;delay02s(
4、);P0=a[m];P2=a[m];P3=a[m];m++;if(m==8)m=0;}//逐盏点亮、闪烁,逐盏灭掉}}voidInt1Interrupt(void)interrupt2{P2=0xff;//发光二极管全灭while(!key3)delay02s();while(key3==1){while(1){P0=0xaa;P2=0xaa;P3=0xaa;W1=0;W3=1;delay02s();delay02s();delay02s();delay02s();P0=0x55;P2=0x55;P3=0x55;delay02s
5、();delay02s();delay02s();delay02s();temp=0xfe;P0=temp;P2=temp;P3=temp;delay02s();for(y=1;y<8;y++){u=temp<>(8-y);P0=u
6、v;P2=u
7、v;P3=u
8、v;delay02s();}for(y=1;y<8;y++){u=temp>>y;v=temp<<(8-y);P0=u
9、v;P2=u
10、v;P3=u
11、v;delay02s();}}}}voidmain(){InitInt0();while(1){P0=0
12、xff;}}