关于51单片机矩阵键盘的问题。 51单片机矩阵键盘调试问题

\u5173\u4e8e51\u5355\u7247\u673a\u7684\u95ee\u9898\uff0c\u72ec\u7acb\u952e\u76d8\u548c\u77e9\u9635\u952e\u76d8\u600e\u4e48\u540c\u65f6\u4f7f\u7528\uff1f\u61c2\u7684\u6765\u5e2e\u5e2e\u5fd9\u554a\uff01

\u4f60\u662f\u4e0d\u662f\u6309\u4e0b\u4e0b\u65b9\u7684\u56db\u4e2a\u6309\u952e\u4e5f\u4f1a\u8ba91\uff0c2\uff0c3\uff0c4\u706f\u4eae\u8d77\u6765\uff1f
\u4f60\u53ef\u4ee5\u4e0d\u8981\u5b9a\u4e49\u5728\u540c\u4e00\u4e2a\u5f15\u811a\u4e0a\u8fde\u8d77\u6765\u4e00\u4e2a\u5f15\u811a\u7684\u56db\u4e2a\u6309\u952e\uff0c\u4f60\u8bd5\u8bd5\u63a7\u52368\u4e2a\u5355\u7247\u673a\u4e0d\u540c\u5f15\u811a\u4e0a\u7684\u6309\u952e\u7f16\u7a0b\u4e00\u4e0b\u8bd5\u4e00\u8bd5\u3002
\u7a0b\u5e8f\u4e0a\uff0c\u4f60\u7684\u72ec\u7acb\u6309\u952e\u7a0b\u5e8f\u548c\u77e9\u9635\u952e\u76d8\u7a0b\u5e8f\u8981\u5206\u5f00\uff0c\u72ec\u7acb\u952e\u76d8\u7684\u7a0b\u5e8f\u9ad8\u4f4e\u56db\u4f4d\u5224\u65ad\u662f\u76f8\u53cd\u7684\uff0c\u8fd9\u4e2a\u4e00\u5b9a\u8981\u6ce8\u610f\u3002\u4f60\u53ef\u4ee5\u8ba9\u72ec\u7acb\u6309\u952e\u5728\u90a3\u91cc\u626b\u63cf\uff0c\u77e9\u9635\u952e\u76d8\u7528\u6807\u5fd7\u4f4d\u626b\u63cf\u4e00\u4e0b\uff0c\u4e00\u65e6\u6807\u5fd7\u4f4d\u7f6e\u4f4d\u624d\u626b\u63cf\u77e9\u9635\uff0c\u5c31\u5dee\u4e0d\u591a\u4e86\u3002
\u6700\u597d\u4e8b\u524d\u68c0\u67e5\u4e00\u4e0b\u4f60\u7535\u8def\u8fde\u63a5\u65b9\u5f0f\uff0c\u5206\u6790\u4e00\u4e0b\uff0c\u770b\u4e0d\u89c1\u4f60\u7684\u539f\u7406\u56fe\uff0c\u4e0d\u592a\u597d\u8bf4\uff0c\u5148\u8bd5\u8bd5\u4e0a\u9762\u7684\u65b9\u6cd5\u5427\u3002
\u4e00\u5b54\u4e4b\u89c1\uff0c\u5e0c\u671b\u5bf9\u4f60\u6709\u5e2e\u52a9\u5427\u3002

\u2026\u2026 P1=0xdf; temp=P1; temp=temp&0x0f; if(temp!=0x0f) { delay10ms(); temp=P1; P1=temp&0x0f;\uff0d\uff0d\u9519\u4e86 if(temp!=0x0f) { temp=P1;\u2026\u2026\u5e94\u4e3a\uff1a temp=temp&0x0f;

(1)P3口是准双向IO口(注意与双向IO口的区别),它 的硬件结构决定着,读取之前先写1,再读取,读取的结果才可能是正确的,你可以区域查查书。
(2)4X4 矩阵键盘的8根线直接连在IO上,而独立按键有一根线固定是接地的,这就意味着必须采取扫面或者线反转的方法。比如其中一根行线赋0,相当于这一行的四个按键变成了四个独立按键,在读取列线的值就知道了究竟哪个按键被按下了。 此时P3口就出现了特定的电平组合,相当于特征码了,然后再认为映射一下功能就可以了。

大概看了下 ,你这个矩阵键盘是4x4的键盘,P3口的高四位和低四位组成的行列键盘,其实这个比较简单,P3=FE=11111110,这段是判断按键是否在第一行(假定低四位为行,高四位为列),依次类推,P3=FD=11111101,这段是判断按键是否在第二行,直到低四位扫描完,就确定了是在哪一行按下的键,接下来判断哪里列,原理还一样,这样就把哪个按键确定下来了,中间那个DELAY(5)你应该知道是防抖动的延时程序

单片机矩阵键盘,如上述是 4x4 的矩阵键盘,
P3=0xfe; //比如这里 1111 1110 这是扫描第一组 4 个键,按下 4 个键 读到的数据为
1110 1110 (0xee)、1101 1110 (0xde)、1011 1110 (0xbe)、0111 1110 (0x7e)
P3=0xfd; //比如这里 1111 1101 这是扫描第二组 4 个键,按下 4 个键 读到的数据为
1110 1101 (0xed)、1101 1101 (0xdd)、1011 1101 (0xbd)、0111 1101 (0x7d)
P3=0xfb; //比如这里 1111 1011 这是扫描第三组 4 个键,按下 4 个键 读到的数据为
1110 1011 (0xeb)、1101 1011 (0xdb)、1011 1011 (0xbb)、0111 1011 (0x7b)
P3=0xf7; //比如这里 1111 0111 这是扫描第二组 4 个键,按下 4 个键 读到的数据为
1110 0111 (0xe7)、1101 0111 (0xd7)、1011 0111 (0xb7)、0111 0111 (0x77)
这样可以得到 16 个键值。如果不用 4 次扫描 就不能得到 16 种状态。

当检测按键时用的是它的输入功率,先把按键的一端接地,另一端与单片机的某个I/0口相连,开始时先给该I/0口赋一高电平,然后让单片机不断地检测该I/0口是否变为低电平,当按键闭合时,即相当于该I/0口通过按键与地相连,变成低电平,程序一旦检测到I/0变为低电平则说明按键被按下,然后执行相应的指令。

  • 鍏充簬51鍗曠墖鏈虹煩闃甸敭鐩樼殑闂銆
    绛旓細锛1锛塒3鍙f槸鍑嗗弻鍚慖O鍙o紙娉ㄦ剰涓庡弻鍚慖O鍙g殑鍖哄埆锛夛紝瀹 鐨勭‖浠剁粨鏋勫喅瀹氱潃锛岃鍙栦箣鍓嶅厛鍐1锛屽啀璇诲彇锛岃鍙栫殑缁撴灉鎵嶅彲鑳芥槸姝g‘鐨勶紝浣犲彲浠ュ尯鍩熸煡鏌ヤ功銆傦紙2锛4X4 鐭╅樀閿洏鐨8鏍圭嚎鐩存帴杩炲湪IO涓婏紝鑰岀嫭绔嬫寜閿湁涓鏍圭嚎鍥哄畾鏄帴鍦扮殑锛岃繖灏辨剰鍛崇潃蹇呴』閲囧彇鎵潰鎴栬呯嚎鍙嶈浆鐨勬柟娉曘傛瘮濡傚叾涓竴鏍硅绾胯祴0锛岀浉褰撲簬...
  • C51鍗曠墖鏈4X4鐭╅樀閿洏妫娴嬬▼搴闂
    绛旓細temp=temp&0xf0; //temp&1111 0000锛0涓庝换浣曟暟缁撴灉涓0锛屾妸temp鍙橀噺鐨勪綆鍥涗綅灞忚斀浜嗭紝楂樺洓浣嶅洜涓轰换浣曟暟涓1绛変簬瀹冩湰韬紝鎵浠ユ妸楂樺洓浣嶅搴旂殑绔彛鐘舵佽杩涙潵銆倃hile(temp!=0xf0) //涓婃澶勭悊鍚庯紝楂樺洓涓轰笉鍏ㄤ负1锛岃鏄庢湁鎸夐敭鎸変笅锛堢粨鍚鐭╅樀閿洏鐨鐢佃矾缁撴瀯鎵嶈兘鐞嗚В锛岃繖閲屼笉鏂逛究涓婂浘锛墈 delay(5);temp=P...
  • 51鍗曠墖鏈璺眰瑙g瓟杩欎釜閿洏闂
    绛旓細鐭╅樀閿洏杩欎釜涓滆タ鏄緢绠鍗曠殑锛屽氨鏄埄鐢ㄢ滅嚎涓庘濄傝鏄庣櫧鐐瑰氨鏄紑鍏崇殑涓绔帴P1涓绔帴P5,褰撳紑鍏虫寜涓嬫椂P1鍜孭5鍚屾椂琚疆1.鍚岀悊锛屽綋绋嬪簭妫娴嬪埌P1锛孭5琚疆1涔嬪悗鐭ラ亾鏄鎸夐敭琚寜涓嬨傝嚦浜4*3杩樻槸4*4閮芥槸涓鏍风殑
  • 51鍗曠墖鏈濡備綍鐢鐭╅樀閿洏杈撳叆鏁板,鏈鍚庤祴鍊煎埌涓涓彉閲忎笂
    绛旓細浣犲仛鐭╅樀閿洏妫娴嬬殑鏃跺欙紝浼氳Е鍙戠浉鍏崇殑IO鍙g殑鐘舵侊紝閫氳繃鍒嗘瀽IO鍙o紝灏辫兘鐭ラ亾閭d釜閿寜涓嬶紱瀹氫箟涓涓彉閲忥紝灏嗘寜涓嬬殑閿艰祴缁欏彉閲忓氨琛屼簡
  • 51鍗曠墖鏈虹煩闃甸敭鐩妫娴嬫柟闈鐨勯棶棰
    绛旓細绗竴涓闂锛屽簲璇ユ槸鑰冭檻濡傛灉鍏堝紑閿佸瓨鍣紝鍦ㄩ偅涓鏃跺埢锛孭0鐨勫艰繕鏄笂涓娆$粰P0璧嬬殑鍊硷紝涓嬪湪涓鏉¤鍙ユ墠灏嗚繖娆$殑鍊肩粰P0锛岃繖鏍蜂細閫犳垚鏁扮爜绠$殑浣欒緣锛岄潤鎬佹樉绀虹殑鏃跺欙紝鍥犱负澶揩鐪嬩笉鍒帮紝鍔ㄦ佹樉绀烘椂锛屽氨浼氭瘮杈冩槑鏄句簡銆傜浜屼釜闂浠栫殑绋嬪簭搴旇妫娴嬬殑鏄珮鍥涗綅锛屾槸鍚﹁鎷変綆锛屽洜涓簍emp鍜0xf0涓庯紝浣庡洓浣嶄笉绠℃槸...
  • 51鍗曠墖鏈虹煩4X4闃甸敭鐩樼殑绗竴鎺掓寜閿病鍙嶅簲銆
    绛旓細浣犱粩缁嗙湅涓涓嬭祫鏂欏氨浼氬彂鐜拌繖涓棶棰樻槸寮鍙戞澘鐨勯棶棰锛屽氨鏄粬鐢ㄥ埌鐨勪竴涓姱鐗囦細鎶鍗曠墖鏈P3鍙g殑鏌愪釜寮曡剼缃珮锛屽鑷閿洏涓嶅ソ浣匡紝瑙e喅鏂规硶鏄笅杞藉畬绋嬪簭涔嬪悗鎷旀帀涓嬭浇USB绾匡紝鍙繚鐣欎緵鐢礥SB绾垮啀鍋氭祴璇
  • 鍏充簬51鍗曠墖鏈,c51缂栫▼,鐭╅樀閿洏缈昏浆鎵弿鐨勯棶棰銆傝瑙i噴涓嬪浘鐗囦腑涓,鎴...
    绛旓細鏄綅杩愮畻锛&浣嶄笌杩愮畻锛寍浣嶆垨杩愮畻銆0x琛ㄧず鍗佸叚杩涘埗銆0x0f杞崲鎴愪簩杩涘埗鏄00001111銆0xff杞崲鎴愪簩杩涘埗鏄11111111銆&杩愮畻锛屽綋鐩稿悓浣嶇疆閮戒负1鏃舵墠涓1锛屽惁鍒欎负0銆傚00011010&00001111=00001010銆倈杩愮畻锛屽綋鐩稿悓浣嶇疆鏈変竴涓负1鍒欎负1,鍚﹀垯閮戒负0鏃跺垯涓0,濡 00101010|00001100=00101110銆
  • 51鍗曠墖鏈4 x 4鐭╅樀閿洏鐨妫娴嬩腑P3=0xfe,temp=P3;鐪嬭В閲妋s绗簩姝ユ槸鎶...
    绛旓細杩欎釜闂鏄繖鏍风殑锛岄鍏鍗曠墖鏈鐨刢璇█鍜岀數鑴戠殑缂栬瘧鍣ㄤ笉鏄竴鏍风殑锛屼綘瑕佽冭檻纭欢锛屼笅闈㈡鍏ユ棰橈細P3=0xfe; //P3绛変簬0xfe temp=P3; //temp绛変簬P3绛変簬0xfe temp=temp&0xf0; //鍒拌繖閲岋紝濡傛灉浣犳寜涓鐭╅樀閿洏鐨绗竴涓敭锛岄偅涔坱emp绛変簬0xee temp=0xee&0xf0=0xe0 while(temp!=0xf0) //浣犺繖閲屾墦閿...
  • c51鍗曠墖鏈鐭╁舰閿洏妫娴闂 鎬ユ!!!
    绛旓細棣栧厛绗竴涓闂搴旇鏄閫夊啓浜0x02..鍏跺疄鍓嶉潰宸茬粡鍐欎簡鏁扮粍浜嗙洿鎺ュ紩鐢ㄤ笉灏卞ソ浜嗗槢銆傜劧鍚庢槸鐭╅樀閿洏鎵弿鐨勯儴鍒嗭紝浣犲啓鐨勬槸0x7f锛岀煩闃甸敭鐩樻壂鎻忕殑鍘熺悊搴旇鏄粠搴曞洓浣嶈疆娴佽緭鍏ヤ綆鐢靛钩锛岀劧鍚庡啀浠庨珮鍥涗綅杩涜璇诲彇鏁版嵁锛屾娴嬪埌浣庣數骞虫椂锛岃鏄庤鎸夐敭琚寜涓嬨傞偅涔堝湪浣犵殑 P1=0x7f;temp=P1;temp=temp&0x0f;鍚庨潰...
  • 51鍗曠墖鏈虹殑鐭╅樀閿洏鐢靛钩鍙樺寲鐤戦棶
    绛旓細杩欐槸鍥犱负鍗曠墖鏈虹殑 涓婃媺鐢垫祦灏忥紙涓鑸负 鍑犲崄~鍑犵櫨寰畨锛夛紝涓嬫媺鐢垫祦澶э紙涓 鍑犱釜姣畨~浜屽崄姣畨锛夈
  • 扩展阅读:51单片机编程常见问题 ... 单片机编程题100题 ... 51单片机面试常用问题 ... 单片机程序代码例题 ... 单片机4x4矩阵键盘两位 ... 监控矩阵键盘图片 ... 单片机答疑有关问题 ... 答辩答不上来 怎么圆场 ... 51单片机矩阵键盘密码锁 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网