-
设置键盘程序?
这是设计,对吧? 应根据键盘电路进行设计。 不同的电路导致不同的程序。
-
用C的话来说; 这是反转线法; 转到**查找一些信息; 源程序很简单,高四低四; 不要自己编造,浪费你的时间。 当你使用它时,你可以使用它;
-
这与设置无关,但您需要在上面写一个键盘扫描仪!
-
源程序不会发布,所以让我们谈谈这个想法。
按键扫描:一般按键的模式为行列扫描模式,假设5*5键盘一共25个按键,占用51个单片机和10个IO口。
扫描方式 一般采用定时扫描方式,在定时中断中进行按键扫描操作。
可以先将第一行的io口设置为0,然后扫描列中的5个io口,看看哪一个是0,表示按下了这个位置的按钮。
然后将第二行的 io 设置为 0,重复上述判断。
依次扫描其余三个。
当然,要想做好,就得加防抖,重复按键判断,长按键操作处理。
-
#include""
#define uint unsigned int#define uchar unsigned charuchar key;
uchar code tab=;
void delay(uchar z)
void display(uchar num)void keys():扫描密钥。
while(temp!=0xf0)等待密钥释放}}p3=0xfd;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
while(temp!=0xf0)等待密钥被释放} }p3=0xfb;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
while(temp!=0xf0)等待密钥释放}}p3=0xf7;
temp=p3;
temp=temp&0xf0;
if(temp!=0xf0)
while(temp!=0xf0)等待密钥被释放}}}void main()}
-
网上有很多,自己找吧。
-
P2的按键扫描与实时时钟模块共享IO,虽然概率很小,但仍有误触发和数据读取错误的几率。
-
前面的宏定义 define k p0
您的密钥正在使用 P3 端口。
-
uchar code act[4]=;
char scan_key(void)}}
if(find==0)return-1;返回值为-1,返回1为正常返回,返回-1为异常返回程序只是程序编写的标准,即没有键。
return(ini*4+inj);i 是上四位数字的判断,j 是后四位数字的判断。
0 1 2 3 为零 0,1,2,3 如果开关 0 打开,则 p4 为 0,即 1110 1110
4 5 6 7 向右移动补 1,得到 1111 1110,j 为 0
8 9 A b 开关 1 打开 p5 为 0,即 1101 1110,右移 1111 1101
c d e f 可以判断 j 为 1,也可以推断出 1 一样。
p4 5 6 7
按照这个想法,4个端口只能实现4个开关4*4=16,2*2=4必须改变思维方式,如果是因为端口太紧,可以使用P3端口,或者使用分压读取AD判断按钮(AD键盘)。
-
根据图中所示的接线方法,此程序中至少有 4 列键盘。 如果你想把它改成你为键盘图示的程序,我会写一个,不调试可能会有问题。 尝试使用示例程序的样式。
uchar code act[3]=;
char scan_key(void)}}if(find==0)return-1;
return(ini*4+inj);}
-
这本书上的键盘扫描仪本身并不是很有效。
键盘扫描的基本思想是将整个键盘视为一个整体,并使用变量来存储每个键的状态,一个键对应 1 位。
例如:如果有 8 个键,设置一个无符号 char 变量来存储其状态,该变量需要设置 3,一个用于当前键状态(命名为 cur)(全局变量),一个用于第一个扫描按钮(命名为 a)(临时变量)和一个用于扫描后去抖动的键(命名为 b)(临时变量)取一个, 比较 a,cur 相同,相同表示密钥没有变化,退出密钥扫描否则延迟 10ms 借记,取 B,比较 a,b 相同,相同的密钥更改有效,cur=a;执行密钥更改处理**。 否则,密钥将被错误触发,密钥扫描将被退出。
当然,这是基本思想,**延时也可以优化,涉及计时器,有很多字。
-
uchar code act[4]=;
char scan_key(void)}}
if(find==0)return-1;返回值为-1,返回1为正常返回,返回-1为异常返回程序只是程序编写的标准,即没有键。
return(ini*4+inj);i 是上四位数字的判断,j 是后四位数字的判断。
0 1 2 3 为零 0,1,2,3 如果开关 0 打开,则 p4 为 0,即 1110 1110
4 5 6 7 向右移动补 1,得到 1111 1110,j 为 0
8 9 A b 开关 1 打开 p5 为 0,即 1101 1110,右移 1111 1101
c d e f 可以判断 j 为 1,也可以推断出 1 一样。
p4 5 6 7
按照这个想法,4个端口只能实现4个开关4*4=16,2*2=4必须改变思维方式,如果是因为端口太紧,可以使用P3端口,或者使用分压读取AD判断按钮(AD键盘)。
-
发一张键盘部分的截图,蚊子描述不容易理解。
键盘程序与硬件链接有很大关系。
-
哪些系列的MCU有P4端口?
-
只有30分钟,我想找人教你。
-
你用低位,你为什么要放高位,看你的程序有点不清楚! ~
您的 P3 端口是集合的最低位,您的情况不是这样的。
你的这个时间可能是一个无休止的循环。
-
是不是第一个函数被调用了,然后就进入了一个无限循环,所以第二个函数就调用不了了。
-
首先,微控制器引脚默认输出高电量。 让键盘控制一行(假设第n行)的引脚为0,然后按该行上的一个键,然后逐个检查低电平(假设检测为m列),这样就按了nm键。 这个想法是使行为低并检查列(反之亦然)。
-
建议看一下行列式键盘的工作原理。
首先,您必须打开 Total Break EA
其次,打开五个小中断:et0、et1、es、int0、int1,一旦与中断对应的接口收到重要电平,它就会启动。 >>>More
AT89C52 C 系列是早期产品。 没有了编程和看门狗,为了区别于早期产品,将新产品改为具有看门狗和ISP功能的AT89S52,ISP就是编程的意思。早期是晶格的专利技术,现在被大量使用。 >>>More