
按键程序
#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键附近。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)