xqnx.net
当前位置:首页 >> 52单片机矩阵键盘程序 >>

52单片机矩阵键盘程序

#include <reg51.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char//uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09}; uchar code table[10] = {0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf

这个是单独的键盘扫描子程序,你可以借鉴一下..我使用的P3口接的矩阵键盘,你可以根据需要适当改变. 还要注意我的键值可能和你不一样,这就要看你的硬件电路是怎么设计的了.uint keyscan(void)//键盘扫描函数,使用行列反转扫描法 { uint

以下程序除了你所提出的要求外,多了个把按的数发送到串口的功能.#include #include /*******************************************/#define uchar unsigned char#define uint

和其他矩阵键盘一样的咯,行扫描或者列扫描咯

了了了了了了了了了了了了了了考虑吐了老K了了了了了了了了路图兔兔KTV图兔兔图兔兔图ill里好highhill了了了了了啦啦阿拉巴啊2了了了了了了了了了了了了了了了了了了了了了了了了吐了了了了了了了了了了了了了了了了了了了图兔兔了了了了了了了了了了了了了了了了了了了了了了了了了了了他了了了了考虑了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了阿狸了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了了

你好:看你对定时器中断不是很了解,我可以给你一个详细的解释:首先了解一下51单片机的周期,51单片机的机器周期计算方式是12/晶振(hz),也就是说单片机每隔这么一段时间会让定时寄存器加1,如果是12mhz晶振,就是1us定时寄存

这也收费,太缺德了.哥给你!uchar keyval(){ uchar a,b,i; b=0xfe; for(i=0;i&lt;4;i++) //i为行号 { KEY=b;a=KEY; if((a&amp;0x10)==0) keynum=i*4; //第一列 if((a&amp;0x20)==0) keynum=i*4+1; //第二列 if((a&amp;0x40)==0) keynum=i*4+2; //第

楼主的疑问是正确的,程序需要修改:main: mov p1, #0f0h ;在p1.0~p1.3输出低电平. mov r7, #0ffh ;key:djnz r7, key ;延时. mov a, p1 ;读p1,如有按键,高四位将有0 cpl a ;求反,有按键时,高四位将有1 anl a, #0f0h ;低四位置为0,高四位不变. jz ekey ;全0就是没有按键,退出.

我给你一个我自己写的吧有注释 假设按下的是S1键进行如下检测(4*4键盘) 先在P3口输出 p3 00001111 低四位 行会有变化 cord_h =00001111&00001110 =00001110 if!=00001111 延时0.1us cord_h=00001110&00001111=00001110 if!=

用 PROTEUS 软件仿真的:

网站首页 | 网站地图
All rights reserved Powered by www.xqnx.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com