//单片机流水灯程序,是学习单片机的最简单的程序。
//流水灯
#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
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)