求52单片机流水灯程序

求52单片机流水灯程序,第1张

//单片机流水灯程序,是学习单片机的最简单的程序。

//流水灯

#include <REG51.h> //51头文件

#define DY_PORT P1 //设置LED连接的I/O组

#define DY_SPEED  100 //设置每一个明亮级的停留时间(值域:0~65535)

void delay (unsigned int a){ // 1ms延时程序

unsigned int i

while( --a != 0){

for(i = 0i <600i++)

}    

}

void main(void){

unsigned int i

unsigned int temp

while(1){

temp=0x01

for(i=0i<8i++){ //8个流水灯逐个闪动

DY_PORT=~temp

delay(DY_SPEED)  //调用延时函数

temp<<=1

}

temp=0x80

for(i=0i<8i++){ //8个流水灯反向逐个闪动

DY_PORT=~temp

delay(DY_SPEED)  //调用延时函数

temp>>=1

}

temp=0xFE

for(i=0i<8i++){ //8个流水灯依次全部点亮

DY_PORT=temp

delay(DY_SPEED)  //调用延时函数

temp<<=1

}

temp=0x7F

for(i=0i<8i++){ //8个流水灯依次反向全部点亮

DY_PORT=temp

delay(DY_SPEED)  //调用延时函数

temp>>=1

}

}

}

怎么个控制法,按一下,流水灯停下,再按一下开始,

还是按一下对应亮一个或亮下一个

还是想知道怎么用按键

教你用按键的方法,功能你自己去实现。把io口拉高电平后,接按键,如果按键按下,会接地,读出的io口电平会变为低,这样就可以判断说法按下按键,但要一直重复读取io口数据,而且要防抖动。

   unsigned int temp,k=9

P2=0xff//用P2检测键盘

temp=P2

temp=temp&0xff

   if (temp!=0xff)//接地了,有按下

   {

     delayxms(10)//等键盘稳定,以确认不是误按、抖动

 temp=P2//再次检测

 temp=temp&0xff //防抖 ,确认是按下

 if (temp!=0xff)//确认不是误按、抖动

 {

   switch (temp)

   {

     case 0xfe:k=0break

 case 0xfd:k=1break//不同情况做出不同处理,变为0的是按下的键

 case 0xfb:k=2break

 case 0xf7:k=3break

 case 0xef:k=4break

 case 0xdf:k=5break

 case 0xbf:k=6break

 case 0x7f:k=7break

   }

 }

     }

   }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8087667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存