熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2018-1-6 19:28
正文摘要:這個(gè)程序中是鍵盤連接P1.0-P1.7的時(shí)候用的,而我的電路因?yàn)槟承┰蜴I盤連接的是P1.1-P1.7和P5.4,求助大佬這部分程序應(yīng)該怎么改 |
建議7個(gè)按鍵都換個(gè)引腳,如果不想換的話就定義一個(gè)類似于“anjian 5=P4^5”的,然后把那個(gè)P1口控制不了的功能接P4^5 |
才接觸,學(xué)習(xí)了 |
wulin 發(fā)表于 2018-1-6 20:31 還沒試,先感謝一下大佬 ![]() |
110011 發(fā)表于 2018-1-6 20:26 用的是stc的15f2k16s2,有p5.4 |
le51 發(fā)表于 2018-1-6 19:52 用的是stc的15f2k16s2,p1.0是pwm輸出口,要用到 |
異組端口組成4*4矩陣鍵盤的端口狀態(tài)讀寫方法 #include <AT89X51.H> #define uint unsigned int //宏定義數(shù)據(jù)類型uint #define uchar unsigned char //宏定義數(shù)據(jù)類型uchar sbit code0=P3^0; //定義4*4鍵盤端口 sbit code1=P3^1; sbit code2=P3^2; sbit code3=P3^3; sbit code4=P3^4; sbit code5=P3^5; sbit code6=P2^2; sbit code7=P2^4; uchar key=0xff; //鍵值變量初始值 void PX(uchar i) //寫入8位數(shù)據(jù) { code0=i&0x01;i>>=1; code1=i&0x01;i>>=1; code2=i&0x01;i>>=1; code3=i&0x01;i>>=1; code4=i&0x01;i>>=1; code5=i&0x01;i>>=1; code6=i&0x01;i>>=1; code7=i&0x01; } uchar PD() //讀取8位數(shù)據(jù) { uchar i; i=code7; i=(i<<1)|code6; i=(i<<1)|code5; i=(i<<1)|code4; i=(i<<1)|code3; i=(i<<1)|code2; i=(i<<1)|code1; i=(i<<1)|code0; return i; } void key_scan() //矩陣鍵盤掃描函數(shù) { uchar temp1,temp2,temp3; //臨時(shí)變量 static bit sign=0; //按鍵自鎖標(biāo)志 static uint count=0; //消抖計(jì)數(shù)變量 PX(0xf0); //先給矩陣端口賦一個(gè)初值0xf0 if(PD()!=0xf0) //判斷矩陣端口不等于所賦初值,說明有健按下 { if(sign==0) //如果按鍵自鎖標(biāo)志為0 { count++; //消抖計(jì)數(shù) if(count>=1000) //消抖計(jì)數(shù)自>=200,估算主循環(huán)周期調(diào)整 { //摒棄Delay延時(shí)方式, count=1000; //防止溢出 sign=1; //按鍵自鎖標(biāo)志置1,鍵不抬起,按其他鍵無效 temp1=PD(); //temp1保存矩陣端口高4位變化 PX(0x0f); //再給矩陣端口賦值0x0f temp2=PD(); //temp2保存矩陣端口低4位變化 temp3=temp2|temp1; //temp3=高4位+低4位 key=temp3; //保存鍵值 } } } else //按鍵抬起 { sign=0; //按鍵自鎖標(biāo)志清0 count=0; //消抖計(jì)數(shù)清0 } } void main() { while(1) { key_scan(); //鍵盤掃描 P1=key; //LED低電平亮顯示鍵值 } } |
單片機(jī)哪來的P5.4啊 |
我想問一下你的P1.0怎么用的 |
首先在函數(shù)聲明時(shí),應(yīng)該先要對P5.4進(jìn)行聲明和定義,sbit “某一位”=P5^4;然后具體程序具體看 |
Powered by 單片機(jī)教程網(wǎng)