单片机独立键盘输入数码管显示 使用独立键盘输入,实现按键复用,并在数码管上显示。

单片机独立键盘输入数码管显示 使用独立键盘输入,实现按键复用,并在数码管上显示。,第1张

这个就两个功森如悔能,一个是键盘扫描,二是数码管显示,这样的程序网上一大把,

按键程序

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

uchar pre_peyno=16keyno=16

void delayms(int x)

{

uchar i

while(x--)

{

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

}

}

void ked_scan()

{

uchar m

P2=0x0f

if(P2&0x0f!=0x0f)

delayms(2)

if(P2&0x0f!=0x0f)

m=P2^0x0f

switch(m)

{

case1:keyno=0break

case2:keyno=1break

case4:keyno=2break

case8:keyno=3break

default:keyno=16

}

P2=0xf0

delayms(1)

m=P2>>4^0x0f

m=m+10

switch(m)

{

case1:keyno=0break

case2:keyno=4break

case4:keyno=8break

case8:keyno=12break

}

}

main()

{

P2=0xff

while(1)

{

uchar i

switch(keyno)

{

case0:P2=0x00break

case1:P2=0xfefor(i=0i<7i++){P2=_crol_(P2,1)delayms(150)}break

case2:P2=0x7ffor(i=0i<7i++)P2=_cror_(p2,1)delayms(150)}break

case16:P2=0xffbreak

}

}

数码管程序

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^7

sbit wela=P2^6

unsigned char code num[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71}

#define uint unsigned int

void delay(uint x)

{

while(x--)

}

void main()

{

while(1)

{

P0=0xfe

wela=1

wela=0

P0=num[1]

dula=1

dula=0

delay(1000)

P0=0xfd

wela=1

wela=0

P0=num[2]

dula=1

dula=0

delay(1000)

}

}

以上两个程序是参考程序,不过还橡宴得此正根据自己的实际电路改改,不能直接运用。

你的描述不详:下面我给出方法,自已参考:

1:主持人端有一个单片机设备 且设备有一个或多个按键,单个按键,那么就做成按键复用,如果是多个按键,那就可以按要求设置按键功能和数量。参赛队每队一个设备,如果不方便能过连线来通讯,就采用无线通讯,抢答端只需一个按键按键,同时在野乎按键里或边上用指示灯来指示状诚。

2:逻辑,当主持人按下抢答键时,主持人端设备向8个参赛队发送抢答开始信号数据,参赛队8个设备向主持端应答,判断收到应答后配陵,开始计时10秒,某一队按下按键时,这队会向主持端发送本队的编号即可,说到这里,后面的基本上都是一样的颂卖悉原理,就是收发数据,应答,判断数据类型和功能。即可达到你的要求。

有的笔橘禅记本或者散渗台式机键盘的F1-F12是和电脑功能键复用的。冲伍脊想用F5可能还需要配合Fn按键一起使用。

你可以找找你的键盘上是不是有Fn键 我的在F12右边,也有的在Windows徽标键或者ALT、CTRL键附近。


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

原文地址: https://outofmemory.cn/yw/12382361.html

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

发表评论

登录后才能评论

评论列表(0条)

保存