基于51单片机的可控流水灯程序 添加了花样和速度按钮
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):
单片机源程序如下:
- #include <reg51.h>
- #include <intrins.h>
- unsigned char led []= {0xfe, 0xfd, 0xfb, 0xf7, 0xef,0xdf, 0xbf, 0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7, 0xfb,0xfd,0xfe,
- 0xfe,0xfb,0xef,0xbf, 0x00,0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e, 0x0f,0xf0,0xfe,0x7f,0xfd,0xbf,0xfb,0xdf,0xf7,0x00};
- sbit P3_2 =P3^2;
- char x = 0;
- char k= 0;
-
- char b=200;
- void delay(unsigned char time) // 延时函数
- {
- unsigned char i=0;
- for (;time>0;time--)
- for (i=0;i<=200;i++);
- }
- key0() interrupt 0{ //每按一下花样加1
- x++;
- if (x == 6) //花样到六时,LED黑屏,再按一下花样重新开始
- x = 0;
- delay (300);
- }
- key1() interrupt 2{b=b+2000; //控制流水灯速度,没按一下加200
- if (b==8200)
- b=200;
- }
- void main (){
- IT0 = 1;
- IT1=1;
- EX0 = 1;
- EX1 = 1;
- EA = 1;
- P2 = 0xff; //初始时LED全黑
-
- while(1){
- if(P3_2==0){
- switch(x){ //花样
- case 0: P2 = 0xff;break;
- case 1: for(k=0;k<=7;k++){
- if(x == 1) //花样切换(打断正在进行的花样)
- {P2 = led [k];
- delay (200);}} break;
- case 2:for (k=8;k<=15;k++){
- if(x == 2){P2 = led [k] ;delay (b);}}break;
- case 3: for(k=16;k <=19;k++){
- if(x == 3){
- P2 = led [k];delay (b);}}break;
- case 4: for(k=20;k <=27;k++){
- if(x == 4){
- P2 = led [k];delay (b);}}break;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
改--实验一 添加了花样和速度按钮.zip
(18.24 KB, 下载次数: 23)
|