在不知道键值情况下,如何调用键盘

#include <conio.h>

void main(void)
{
 int i;
 while(kbhit()==0);
 i=getch();
 if(!i)
 {
  i=getch();
  printf("%d",i);
 }
 else
  printf("%c",i);
}

 

运用 while(kbhit()==0);
 i=getch();

在进行判断;

好的,我来回答你的问题。 以下是51单片机按下按键显示对应的数码管键值,带有键盘扫描以及数码管显示函数的代码实现: ``` #include <reg52.h> #define uchar unsigned char #define uint unsigned int sbit key1 = P2^0; sbit key2 = P2^1; sbit key3 = P2^2; sbit key4 = P2^3; sbit dp = P1^7; sbit d1 = P1^6; sbit d2 = P1^5; sbit d3 = P1^4; sbit d4 = P1^3; uchar code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; uchar keyValue = 0; void delay(uint xms) { uint i, j; for(i = xms; i > 0; i--) { for(j = 110; j > 0; j--); } } void keyScan() { if(key1 == 0) { delay(5); if(key1 == 0) { while(!key1); keyValue = 1; } } else if(key2 == 0) { delay(5); if(key2 == 0) { while(!key2); keyValue = 2; } } else if(key3 == 0) { delay(5); if(key3 == 0) { while(!key3); keyValue = 3; } } else if(key4 == 0) { delay(5); if(key4 == 0) { while(!key4); keyValue = 4; } } } void display() { d1 = d2 = d3 = d4 = 1; switch(keyValue) { case 1: d1 = 0; P0 = table[1]; break; case 2: d2 = 0; P0 = table[2]; break; case 3: d3 = 0; P0 = table[3]; break; case 4: d4 = 0; P0 = table[4]; break; default: d1 = d2 = d3 = d4 = 1; P0 = 0x00; break; } } void main() { while(1) { keyScan(); display(); } } ``` 这段代码实现了按下按键后显示对应的数码管键值,其中包括键盘扫描函数和数码管显示函数。 在主函数中,我们不断地调用keyScan和display函数,其中keyScan函数用于扫描按键,如果检测到有按键按下,则将对应的键值存储在keyValue变量中;display函数用于根据keyValue变量的值在数码管中显示对应的数字。 需要注意的是,为了保证数码管中的数字显示清晰,我们需要在数码管的最高位(即P1.7)上加上小数点,所以我们在代码中定义了一个dp变量,并在display函数中将其赋值给P1.7。 希望能够帮到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值