单片机按键扫描原理,51单片机按键扫描程序

酒店配备的充电器,扫描上面的二扫码收费。打开盒子看到里面电路板很简单,主要就是中间那个单片机芯片,再没有其他芯片,作为一个电子爱好者,不理解这样一个简单的电路板,没有GPRS模块,是怎么获知手机端扫过二维码后云端的信息的的,知道的大神抽空出来给大家科普一。

1、单片机利用中断扫描独立式按键

不用delay,那可以启动一个定时器,定时20ms,在检测这个按键是否按下就可以了吧。你定时器中断后,扫描下即便扫描到有按键按下先做个标记,等待下次中断进入后,根据标记先判断是否按键还处于按下状态,是的话,经过你的再次定时器中断,也已经实现了消抖延时的作用。此时可以采集按键值。

2、单片机矩阵键盘按键行列逐级扫描法

你把十六进制换成2进制,全部读一遍程序就明白了。提问者看错程序了,这是四乘四的矩阵,高四位低四位,不是高八位,全部八位都置1就扫描不到按键操作了。unsignedcharKeyScan(void)//键盘扫描函数,使用行列逐级扫描法{unsignedcharVal;KeyPort0xf0;//这句其实就是整体看看是否有键按下,四行全送0,有键按下,高四位肯定不为全1if(KeyPort!0xf0)//表示有按键按下{DelayMs(10);//去抖if(KeyPort!0xf0){//表示有按键按下KeyPort0xfe;//检测第一行if(KeyPort!0xfe){ValKeyPort&0xf0;Val+0x0e;//相当于检测到第一行有键按下,键值列(高四位)+行(低四位)while(KeyPort!0xfe);DelayMs(10);//去抖while(KeyPort!0xfe);returnVal;}。

3、单片机键盘扫描程序

ucharcodeact[4]{0xfe,0xfd,0xfb,0xf7};charscan_key(void){uchari,in,ini,inj;bitfind0;for(i0;i<4;i++){//额,先给你解释下4*4P1act[i];//开通读取,并输出高电平delay(10);//延时inP1;//读取单片机值并赋值给in,四种情况4个按键。

未经允许不得转载:获嘉县中茂网络有限公司 » 单片机按键扫描原理,51单片机按键扫描程序

相关文章