当前位置:首页 » 编程语言 » 4x4键盘扫描c语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

4x4键盘扫描c语言

发布时间: 2022-03-05 20:10:50

① 求由51单片机控制4x4键盘输入,4个数码管(采用动态扫描)显示 c语言编程思路!

  1. 定义一个10个元素的数组static unsigned char m_arrDigital[10],做一个数码管0~9的位段表。前提是你的数码管接在同一组IO上,比如P0。

  2. 定义一个4个元素的数据staticunsigned charm_arrValue[4],可初始化为0,对应于数码管的4位。刷新数码管时依次取这个数组中的值。

  3. 扫描按键,一般也是接到同一组IO上,比如P1,可以是高4位输出,低4位输入。

  4. 转换按键值,并把值写入m_arrValue[0]中,在写之前先把m_arrValue的前3个元素依次往后移一位,比如这样写:*((uisigned long *)m_arrValue) <<= 8;

  5. 把m_arrValue中的值显示到数码管上,m_arrValue[0]对应最右一位,m_arrValue[3]对应最左一位。m_arrValue可以作为m_arrDigital的索引。

② 求一个4x4矩阵键盘扫描c程序

1、若键盘不能使用,建议多换几个接口试试
2、或者安装驱动人生这个软件,打开检测一下外设驱动看看打印机的驱动需要安装吗
3、你扫描,这个是能扫描的硬件设备吗?
4、那建议你去这个扫描设备的官网下载驱动安装

③ 寻单片机“经典键盘”的扫描程序(要C语言的)

uchar keyscan()
{
uchar key,i,keyscan;
P3=0x3d; //准备读取P3.2~P3.5 51的I/0为准双向I/0口 作为输入是最好先将其置1
//读取接地按键值
if((P1&0x3d)!=0x3d){ //若无按键按下 P3.2~P3.5为高
delay(); //延时去抖动
if((P1&0x3d)!=0x3d){//判断哪个按键按下
key=P1&0x3d;
return key;
}
}

keyscan=0x3D;
for(i=0;i<4;i++){
P1=keyscan; //输出I/O口扫描 输出 判断
if(P1!=keyscan){ //读取I/O口,看输出扫P1.0~P1.5的值是否与扫描不同
key=P1&0x3D; //转换扫描码
return key;
}
keyscan=(keyscan<<1)|0x01; //逐行输出扫描 0
}
return 0;
}

④ 4*3矩阵键盘扫描C语言

循环加判断
int i,j;
for(i = 0; i < 3; i ++) //行
{
for(j = 0; j < 4; j++) //列
{
if(条件)
//todo
}
}

⑤ 本人初学单片机,现请求各位大侠,有没有MCS51机的外部中断法4X4键盘扫描汇编语言程序

这个是我以前做的扫描法,电路如图所示,程序附上。

ORG00H

LJMPMAIN

ORG30H

MAIN:LCALLLOOP1

LCALLDELAY

LCALLLOOP1

LCALLLOOP2

LCALLLOOP3

LJMPMAIN

LOOP1:MOVP2,#0F0H;判断有键按下?

MOVA,P2

MOVB,A

MOVP2,#0FH

MOVA,P2

ORLA,B

MOV30H,A

CJNEA,#0FFH,LOOP11

LJMPMAIN

LOOP11:RET

LOOP2:MOVR3,#00H;比较计算得出键值

LOOP21:MOVA,R3

INCR3

MOVDPTR,#TAB

MOVCA,@A+DPTR

CJNEA,30H,LOOP21

RET

LOOP3:MOVA,R3;数码管显示

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVP1,A

;MOVP1,#0F1H

RET

DELAY:;延时R5×10MS

MOVR6,#50

DELAY1:MOVR7,#100

DJNZR7,$

DJNZR6,DELAY1

RET

TAB:

DB0EEH,0EDH,0EBH,0E7H

DB0DEH,0DDH,0DBH,0D7H

DB0BEH,0BDH,0BBH,0B7H

DB07EH,07DH,07BH,077H

TAB1:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H

DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH

这个是我以前做的扫描法,电路如图所示,程序附上。

⑥ 求把这段4x4键盘显示的汇编语言的改写成C语言

这程序,有点滥。

得重新编写。

⑦ 根据这个c语言程序,写一个汇编的独立键盘扫描程序。 图中是一个按键的,求写出有4个按键的汇编键盘扫

楼主的要求,不够详尽。

http://blog.163.com/asm_c/blog/static/2482031132014427210656/

参考。

⑧ 求一个单片机4X4矩阵键盘扫描程序,C语言的。

淘bao 旺铺: 广州华电 单片机学习板 单片机外围学习模块/传感器模块
//4*4键盘检测程序,按下键后相应的代码显示在数码管上
#include<reg51.h>
sbit beep=P2^3;
sbit la=P2^6;
sbit wela=P2^7;
unsigned char i=100;
unsigned char j,k,temp,key;
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
display(unsigned char num)
{
P0=table[num];
la=1;
la=0;
P0=0xc0;
wela=1;
wela=0;
}
void main()
{
la=0;
wela=0;
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
P1=0xfe;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
break;
case 0xdd:
key=5;
break;
case 0xbd:
key=6;
break;
case 0x7d:
key=7;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
break;
case 0xdb:
key=9;
break;
case 0xbb:
key=10;
break;
case 0x7b:
key=11;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
display(key);
}
}
}
}

⑨ C51单片机4X4矩阵键盘检测程序问题

可以参考:
http://hi..com/%d7%f6%b6%f8%c2%db%b5%c0/blog/item/ef086222268d4f4eac34de59.html
程序中,读取4*4矩阵键盘的函数,可以得到0~f,和16。
当读出为16的时候,即是按键放手了,可以执行对应的功能程序。

⑩ C语言中读取键盘扫描码的问题

这个 C 语言的问题你可以发到shx.io 这个网站,这个程序员问答网站有很多大神,你复制一下发过来,我让朋友现在就帮你答