久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3052|回復: 10
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
這個程序中是鍵盤連接P1.0-P1.7的時候用的,而我的電路因為某些原因鍵盤連接的是P1.1-P1.7和P5.4,求助大佬這部分程序應該怎么改

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

5#
ID:213173 發表于 2018-1-6 20:31 | 只看該作者
異組端口組成4*4矩陣鍵盤的端口狀態讀寫方法
#include <AT89X51.H>
#define uint unsigned int                         //宏定義數據類型uint
#define uchar unsigned char                 //宏定義數據類型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位數據
{   
    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位數據
{
        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()                                                //矩陣鍵盤掃描函數
{
        uchar temp1,temp2,temp3;                //臨時變量
        static bit sign=0;                                //按鍵自鎖標志
        static uint count=0;                        //消抖計數變量
        PX(0xf0);                                                //先給矩陣端口賦一個初值0xf0
        if(PD()!=0xf0)                                         //判斷矩陣端口不等于所賦初值,說明有健按下
        {
                if(sign==0)                                        //如果按鍵自鎖標志為0
                {
                        count++;                                //消抖計數
                        if(count>=1000)                        //消抖計數自>=200,估算主循環周期調整
                        {                                                //摒棄Delay延時方式,
                                count=1000;                        //防止溢出
                                sign=1;                                //按鍵自鎖標志置1,鍵不抬起,按其他鍵無效
                                temp1=PD();                        //temp1保存矩陣端口高4位變化
                                PX(0x0f);                        //再給矩陣端口賦值0x0f
                                temp2=PD();                        //temp2保存矩陣端口低4位變化
                                temp3=temp2|temp1;        //temp3=高4位+低4位
                                key=temp3;                        //保存鍵值
                        }
                }
        }
        else                                                         //按鍵抬起
        {
                sign=0;                                                //按鍵自鎖標志清0
                count=0;                                        //消抖計數清0
        }
}
void main()
{        
        while(1)               
        {
                key_scan();                                        //鍵盤掃描
                P1=key;                                                //LED低電平亮顯示鍵值
        }                                                                               
}
回復

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

還沒試,先感謝一下大佬
回復

使用道具 舉報

9#
ID:272670 發表于 2018-1-7 13:48 | 只看該作者
才接觸,學習了
回復

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲激情在线视频 | 欧美专区在线视频 | 国产成人精品免高潮在线观看 | 精品一区二区三区免费视频 | 一级片在线视频 | 精品国产区 | 成人在线观看黄 | 免费视频一区二区 | 日韩精品视频一区二区三区 | 欧美日韩国产精品一区 | 亚洲国产欧美91 | 国内自拍真实伦在线观看 | 黄网站在线播放 | 在线免费观看a级片 | 视频在线观看一区 | 精品国产91 | 1区2区3区视频 | 夜夜草 | 成人午夜电影网 | 午夜精品久久久久99蜜 | 亚洲视频免费在线看 | 中文字幕国产高清 | 在线久草 | 久久久999成人 | 日韩免费一区 | 红桃视频一区二区三区免费 | 国产免费一区二区三区 | 亚洲综合热 | 国产精品成人在线 | 男人av网 | 男女羞羞视频免费看 | 国产三区av | av网站推荐| 亚洲日本成人 | 九色porny自拍视频 | 日韩欧美网 | 91精品国产91久久久久久 | 国产精品视频一区二区三 | 国产精品视频一二三区 | 亚洲精品成人av | 久久99蜜桃综合影院免费观看 |