找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3165|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

求助大佬簡單的單片機(jī)鍵盤c語言編程問題

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 5 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
這個(gè)程序中是鍵盤連接P1.0-P1.7的時(shí)候用的,而我的電路因?yàn)槟承┰蜴I盤連接的是P1.1-P1.7和P5.4,求助大佬這部分程序應(yīng)該怎么改

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

QQ截圖20180106192205.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:272479 發(fā)表于 2018-1-6 19:47 | 只看該作者
首先在函數(shù)聲明時(shí),應(yīng)該先要對(duì)P5.4進(jìn)行聲明和定義,sbit “某一位”=P5^4;然后具體程序具體看
回復(fù)

使用道具 舉報(bào)

板凳
ID:157238 發(fā)表于 2018-1-6 19:52 | 只看該作者
我想問一下你的P1.0怎么用的
回復(fù)

使用道具 舉報(bào)

地板
ID:272508 發(fā)表于 2018-1-6 20:26 | 只看該作者
單片機(jī)哪來的P5.4啊
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 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;                //臨時(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低電平亮顯示鍵值
        }                                                                               
}
回復(fù)

使用道具 舉報(bào)

6#
ID:207108 發(fā)表于 2018-1-7 13:06 | 只看該作者
le51 發(fā)表于 2018-1-6 19:52
我想問一下你的P1.0怎么用的

用的是stc的15f2k16s2,p1.0是pwm輸出口,要用到
回復(fù)

使用道具 舉報(bào)

7#
ID:207108 發(fā)表于 2018-1-7 13:06 | 只看該作者
110011 發(fā)表于 2018-1-6 20:26
單片機(jī)哪來的P5.4啊

用的是stc的15f2k16s2,有p5.4
回復(fù)

使用道具 舉報(bào)

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

還沒試,先感謝一下大佬
回復(fù)

使用道具 舉報(bào)

9#
ID:272670 發(fā)表于 2018-1-7 13:48 | 只看該作者
才接觸,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

10#
ID:266764 發(fā)表于 2018-1-7 22:05 | 只看該作者
建議7個(gè)按鍵都換個(gè)引腳,如果不想換的話就定義一個(gè)類似于“anjian 5=P4^5”的,然后把那個(gè)P1口控制不了的功能接P4^5
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表