51单片机按下按键数码管加一

按键检测函数在我一节(独立按键)有介绍,数码管相关的知识在(静态数码管)这一章有介绍。

要想按下按键数码管加一,我们只需要一个标记位就可以了。开始定义这个变量的初始值为0。每当按键按下,数码管显示数字之后,然后这个变量就加一。当这个变量大于9之后,对这个变量清0,就可以实现当按到第11下的时候,数码管显示0.

代码如下

好的,我可以为您提供一个简单的C语言代码示例,实现51单片机从0-9按键按下加一的功能。请参考以下代码: ```c #include <reg51.h> // 定义按键扫描函 unsigned char keyscan(void) { unsigned char val; // 列循环扫描按键 P1 = 0xFE; val = P1 & 0xF0; if (val != 0xF0) { val |= P1 & 0x0F; while ((P1 & 0xF0) != 0xF0); return val; } P1 = 0xFD; val = P1 & 0xF0; if (val != 0xF0) { val |= P1 & 0x0F; while ((P1 & 0xF0) != 0xF0); return val; } P1 = 0xFB; val = P1 & 0xF0; if (val != 0xF0) { val |= P1 & 0x0F; while ((P1 & 0xF0) != 0xF0); return val; } P1 = 0xF7; val = P1 & 0xF0; if (val != 0xF0) { val |= P1 & 0x0F; while ((P1 & 0xF0) != 0xF0); return val; } return 0; } void main(void) { unsigned char num = 0; unsigned char key; while (1) { key = keyscan(); if (key != 0) { if (key == 0x7B) { // 按下字键1 num = (num + 1) % 10; } else if (key == 0x77) { // 按下字键0 num = 0; } } // 在数码管上显示当前字 P0 = ~num; } } ``` 以上代码中,我们首先定义了一个按键扫描函`keyscan()`,该函用于扫描4x4矩阵按键,并返回按下的键值。然后在`main()`函中,我们循环调用`keyscan()`函,判断是否有按键按下。如果按下的是字键1,则将当前字加1;如果按下的是字键0,则将当前字清零。最后,我们将当前字通过P0口输出到数码管上显示。 注意,以上代码中的按键扫描代码仅适用于4x4矩阵按键,如果您使用的按键类型不同,可能需要进行相应的修改。另外,您也可以根据需要添加其他的功能代码,比如按下按键时的提示音、按键防抖等等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值