
这个是44的矩阵键盘,代码自己改一下就可以了
#include<reg51h>
#include<intrinsh>
#define uint unsigned int
#define uchar unsigned char
uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Delay_1ms(uint i)//1ms延时
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
uchar Keyscan(void)
{
uchar i,j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7}; //让矩阵键盘的每行分别为低电平
for(j=0; j<4; j++)
{
P1 = Buffer[j];
temp = 0x10;
for(i=0; i<4; i++)
{
if(!(P1 & temp)) //判断P1口高4位某一列为低电平
{
return (i+j4); //返回键码
}
temp <<= 1;
}
}
}
void Main(void)
{
uchar Key_Value; //读出的键值
while(1)
{
P1 = 0xf0;
{
Delay_1ms(20); //按键消抖
if(P1 != 0xf0) //第二次判断有无按键按下
{
Delay_1ms(20); //按键消抖
if(P1 != 0xf0) //第三次判断有无按键按下
{
Key_Value = Keyscan();
}
}
}
P0 = table[Key_Value];
P2 = 0x07;
}
}
下面是一个我机子上调试好的8255程序、希望对你有所帮助。、 祝你好运~~~ 8255扫描键盘、显示程序 利用8255可编程并行口做一个扫描键盘实验, 把按键输入的键码,显示在由8279控制的七段数码管上。 8255PA口做键盘输入线,PB口作扫描线
代码很好写,但是关键是你的数码管属于硬件
也就是说,至少要知道 *** 作你数码管的API才行啊。
或者说要怎样传送数据给你的数码管,你的数码管需要接受怎样的数据。
键盘扫描很简单,给你个代码。
要求引用头文件
#include <iostream>
using namespace std;
#include <conioh>//kbhit API头文件
#include <timeh>
#include <windowsh>
#define ESC 0x1b
void loop()
{
int i;
if( kbhit() ) //判断是否有键盘按键按下。
{
char ch;
ch = getch(); //获取按下的键值
if( ESC == ch )//判断是否是你要的键,我以ESC为例
{
cout<<"ESC"<<endl;
system("pause");
}
}
while( !kbhit() )//没有按键是的 *** 作
{
balabalabala
}
}
int main()
{
loop();
}
以上就是关于单片机(AT89C51)外接键盘4*3扫描C程序全部的内容,包括:单片机(AT89C51)外接键盘4*3扫描C程序、用8255的C口做键盘扫描,怎么写程序、求编写一个键盘数码块扫描实验的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)