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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3153|回復: 10
收起左側

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

[復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
ID:207108 發表于 2018-1-6 19:28 | 顯示全部樓層 |閱讀模式
這個程序中是鍵盤連接P1.0-P1.7的時候用的,而我的電路因為某些原因鍵盤連接的是P1.1-P1.7和P5.4,求助大佬這部分程序應該怎么改
QQ截圖20180106192205.png
回復

使用道具 舉報

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啊
回復

使用道具 舉報

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低電平亮顯示鍵值
        }                                                                               
}
回復

使用道具 舉報

ID:207108 發表于 2018-1-7 13:06 | 顯示全部樓層
le51 發表于 2018-1-6 19:52
我想問一下你的P1.0怎么用的

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

使用道具 舉報

ID:207108 發表于 2018-1-7 13:06 | 顯示全部樓層
110011 發表于 2018-1-6 20:26
單片機哪來的P5.4啊

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

使用道具 舉報

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

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

使用道具 舉報

ID:272670 發表于 2018-1-7 13:48 | 顯示全部樓層
才接觸,學習了
回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区三区四区五区六区 | 国产精品1区2区 | 一本一道久久a久久精品蜜桃 | 成人在线亚洲 | 黄视频网站在线 | 国产一区精品在线 | 午夜视频在线免费观看 | 亚洲自拍偷拍av | 亚洲精品一区二区三区中文字幕 | 99久久婷婷国产综合精品电影 | 91精品国产91久久综合桃花 | 最新国产在线 | 国产精品国产a级 | 亚洲国产精品久久久久秋霞不卡 | 三区四区在线观看 | 国产精品入口 | 91在线视频网址 | 天天操天天拍 | 亚洲美乳中文字幕 | 欧美一级片 | 一级在线观看 | 久久www免费人成看片高清 | 久久精品国产亚洲夜色av网站 | 亚洲美女一区二区三区 | 特黄毛片 | 欧美一区二区三区国产精品 | 国产在线97 | 国产精品99999 | 国产精品国产三级国产aⅴ原创 | 另类专区亚洲 | 欧美一级淫片007 | 日本黄色高清视频 | 一区二区三区免费 | 青娱乐av| 怡红院怡春院一级毛片 | 不卡一区二区在线观看 | 亚洲一区二区中文字幕 | 国产精品1区 | 亚洲乱码一区二区三区在线观看 | 国产综合久久久久久鬼色 | 免费人成激情视频在线观看冫 |