C语言如何编程让一个按键轮流点灯。按一下1灯亮,在按下1灯灭2灯亮,在按下3灯亮,1 2灯是灭,一直到8个灯

C语言如何编程让一个按键轮流点灯。按一下1灯亮,在按下1灯灭2灯亮,在按下3灯亮,1 2灯是灭,一直到8个灯,第1张

C51独立按键的识别示例程序

每按一次独立键盘的S2键,与P1口相连的一个发光二极管往下移动一位。

#include <reg52.h>

sbit BY1=P3^4 //定义按键的输入端S2键

unsigned char count//按键计数,每按一下,count加1

unsigned char temp

unsigned char a,b

void delay10ms(void) //延时程序

{

unsigned char i,j

for(i=20i>0i--)

for(j=248j>0j--)

}

key() //按键判断程序

{

if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口//直接接地,此时检测P3.4肯定为低电平。

{

delay10ms()//延时,软件去干扰

if(BY1==0) //确认按键按下

{

count++ //按键计数加1

if(count==8) //计8次重新计数

{

count=0 //将count清零

}

}

while(BY1==0)//等待按键释放,如果键未释放则一直在此等待。

}

}

move()//广告灯向下移动移动函数

{

a=temp<<count //这三句为一个循环移位,相当于前面提到的

b=temp>>(8-count)// _crol_()函数

P1=a|b

}

main()

{

count=0 //初始化参数设置

temp=0xfe

P1=0xff

P1=temp

while(1) //永远循环,扫描判断按键是否按下

{

key() //调用按键识别函数

move() //调用广告灯移动函数

}

}

#include<reg52.h>

sbit D1=P1^0

sbit D2=P1^1

sbit D3=P1^2

sbit D4=P1^3

sbit D5=P1^4

sbit D6=P1^5

sbit D7=P1^6

sbit D8=P1^7

void delay(unsigned int z)

void main()

{ while(1)

{ D1=0

delay(100)

D1=1

delay(100)

D2=0

delay(100)

D2=1

delay(100)

D3=0

delay(100)

D3=1

delay(100)

D4=0

delay(100)

D4=1

delay(100)

D5=0

delay(100)

D5=1

delay(100)

D6=0

delay(100)

D6=1

delay(100)

D7=0

delay(100)

D7=1

delay(100)

D8=0

delay(100)

D8=1

delay(1000)

D8=0

delay(500)

D8=1

delay(500)

D7=0

delay(500)

D7=1

delay(500)

D6=0

delay(500)

D6=1

delay(500)

D5=0

delay(500)

D5=1

delay(500)

D4=0

delay(500)

D4=1

delay(500)

D3=0

delay(500)

D3=1

delay(500)

D2=0

delay(500)

D2=1

delay(500)

D1=0

delay(500)

D1=1

delay(500)

}

}

void delay(unsigned int z)

{ unsigned int x,y

for(x=zx>0x--)

for(y=124y>0y--)

}

这个是PI口延时点亮的程序 虽然繁琐但是便于直观


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存