十四管脚的数码管效果还是不错的~

十四管脚的数码管效果还是不错的~值得收藏在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个基于Keil C51的例子代码,实现了使用4x4矩阵键盘控制数码管显示数字1~16的功能,并采用反转法检测形式: ```c #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit KEY_ROW_1 = P1^0; sbit KEY_ROW_2 = P1^1; sbit KEY_ROW_3 = P1^2; sbit KEY_ROW_4 = P1^3; sbit KEY_COL_1 = P1^4; sbit KEY_COL_2 = P1^5; sbit KEY_COL_3 = P1^6; sbit KEY_COL_4 = P1^7; sbit LED_DATA = P2^0; sbit LED_CLK = P2^1; sbit LED_LATCH = P2^2; uchar key_prev, key_now; // 上一次和当前检测到的按键值 uchar led_data = 0x01; // 数码管显示的初始数字为1 void KeypadScan() { uchar rows = 0x0f, cols = 0xf0; uchar i, j; for (i = 0; i < 4; i++) { rows = _crol_(rows, 1); // 行扫描 cols = 0xf0; if (rows == 0x0e) { KEY_ROW_1 = 0; } else { KEY_ROW_1 = 1; } if (rows == 0x0d) { KEY_ROW_2 = 0; } else { KEY_ROW_2 = 1; } if (rows == 0x0b) { KEY_ROW_3 = 0; } else { KEY_ROW_3 = 1; } if (rows == 0x07) { KEY_ROW_4 = 0; } else { KEY_ROW_4 = 1; } for (j = 0; j < 4; j++) { if ((cols & 0x80) == 0x80) { if ((rows & 0x08) == 0x08) { key_now = i * 4 + j + 1; // 检测到按键 } } cols = _crol_(cols, 1); // 列扫描 } } } void LedDisplay() { uchar i; for (i = 0; i < 8; i++) { LED_CLK = 0; if ((led_data & 0x80) == 0x80) { LED_DATA = 1; } else { LED_DATA = 0; } led_data = _crol_(led_data, 1); LED_CLK = 1; } LED_LATCH = 0; LED_LATCH = 1; } void main() { while (1) { KeypadScan(); if (key_now != 0 && key_now != key_prev) { // 有按键按下且不是重复按下 led_data = key_now; // 数码管显示的数字为按键值 key_prev = key_now; } LedDisplay(); } } ``` 该代码中,定义了矩阵键盘的行列引脚和数码管的数据、时钟和锁存引脚,并通过`KeypadScan`函数实现了矩阵键盘的扫描和按键检测,通过`LedDisplay`函数实现了数码管的显示。 在`main`函数中,不断循环调用`KeypadScan`和`LedDisplay`函数,当检测到有按键按下且不是重复按下时,将按键值作为数码管显示的数字,并显示在数码管上。 需要注意的是,该代码仅为示例代码,实际应用中需要根据具体硬件平台和需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rambo-Lamborghini

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值