1.延时函数:i==500
2.从一个LED变到另一个LED间要添加延时函数(间隔要适度),否则变化太快仿佛在抖动。
3.key()函数中添加while(KEY==0); 检测按键是否弹起,否则按键计数可能不对
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- void delay()
- {
- uchar a,b;
- for(a=500;a;a--)
- {
- for(b=500;b;b--);
- }
- }
- void main()
- {
- unsigned char count=0;
- unsigned char num=0;
- while(1){
- while(((num%3)==0)&&(P2!=0xFE))
- {
- P0=~(0x01<<count);
- delay();
- count++;
- if(count>=8)
- count=0;
- }
- while(((num%3)==1)&&(P2!=0xFE))
- {
- P0=~(0x80>>count);
- delay();
- count++;
- if(count>=8)
- count=0;
- }
- while(((num%3)==2)&&(P2!=0xFE))
- {
- P0=~(0x01<<count);
- delay();
- count=count+2;
- if(count==8){
- count=1;
- }
- if(count==9){
- count=0;
- }
- }
- if(P2==0xFE){
- num=num+1;
- }
- while(P2==0xFE);
- }
- }
复制代码
所有资料51hei附件下载:
实验三.zip
(61.61 KB, 下载次数: 15)
|