標(biāo)題: 求助大佬簡單的單片機(jī)鍵盤c語言編程問題 [打印本頁]

作者: wdg    時間: 2018-1-6 19:28
標(biāo)題: 求助大佬簡單的單片機(jī)鍵盤c語言編程問題
這個程序中是鍵盤連接P1.0-P1.7的時候用的,而我的電路因為某些原因鍵盤連接的是P1.1-P1.7和P5.4,求助大佬這部分程序應(yīng)該怎么改

QQ截圖20180106192205.png (26.1 KB, 下載次數(shù): 34)

QQ截圖20180106192205.png

作者: mike1    時間: 2018-1-6 19:47
首先在函數(shù)聲明時,應(yīng)該先要對P5.4進(jìn)行聲明和定義,sbit “某一位”=P5^4;然后具體程序具體看
作者: le51    時間: 2018-1-6 19:52
我想問一下你的P1.0怎么用的
作者: 110011    時間: 2018-1-6 20:26
單片機(jī)哪來的P5.4啊
作者: wulin    時間: 2018-1-6 20:31
異組端口組成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;                //臨時變量
        static bit sign=0;                                //按鍵自鎖標(biāo)志
        static uint count=0;                        //消抖計數(shù)變量
        PX(0xf0);                                                //先給矩陣端口賦一個初值0xf0
        if(PD()!=0xf0)                                         //判斷矩陣端口不等于所賦初值,說明有健按下
        {
                if(sign==0)                                        //如果按鍵自鎖標(biāo)志為0
                {
                        count++;                                //消抖計數(shù)
                        if(count>=1000)                        //消抖計數(shù)自>=200,估算主循環(huán)周期調(diào)整
                        {                                                //摒棄Delay延時方式,
                                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;                                        //消抖計數(shù)清0
        }
}
void main()
{        
        while(1)               
        {
                key_scan();                                        //鍵盤掃描
                P1=key;                                                //LED低電平亮顯示鍵值
        }                                                                               
}
作者: wdg    時間: 2018-1-7 13:06
le51 發(fā)表于 2018-1-6 19:52
我想問一下你的P1.0怎么用的

用的是stc的15f2k16s2,p1.0是pwm輸出口,要用到
作者: wdg    時間: 2018-1-7 13:06
110011 發(fā)表于 2018-1-6 20:26
單片機(jī)哪來的P5.4啊

用的是stc的15f2k16s2,有p5.4

作者: wdg    時間: 2018-1-7 13:08
wulin 發(fā)表于 2018-1-6 20:31
異組端口組成4*4矩陣鍵盤的端口狀態(tài)讀寫方法
#include
#define uint unsigned int                         //宏定義數(shù)據(jù)類型u ...

還沒試,先感謝一下大佬
作者: libaoqingxxp    時間: 2018-1-7 13:48
才接觸,學(xué)習(xí)了
作者: 孤狼131    時間: 2018-1-7 22:05
建議7個按鍵都換個引腳,如果不想換的話就定義一個類似于“anjian 5=P4^5”的,然后把那個P1口控制不了的功能接P4^5




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1