① 求由51單片機控制4x4鍵盤輸入,4個數碼管(採用動態掃描)顯示 c語言編程思路!
定義一個10個元素的數組static unsigned char m_arrDigital[10],做一個數碼管0~9的位段表。前提是你的數碼管接在同一組IO上,比如P0。
定義一個4個元素的數據staticunsigned charm_arrValue[4],可初始化為0,對應於數碼管的4位。刷新數碼管時依次取這個數組中的值。
掃描按鍵,一般也是接到同一組IO上,比如P1,可以是高4位輸出,低4位輸入。
轉換按鍵值,並把值寫入m_arrValue[0]中,在寫之前先把m_arrValue的前3個元素依次往後移一位,比如這樣寫:*((uisigned long *)m_arrValue) <<= 8;
把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 這個網站,這個程序員問答網站有很多大神,你復制一下發過來,我讓朋友現在就幫你答