数码管编码表

1、共阳:
             char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
2、共阴:
            char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用循环实现单片机数码管动态显示代码,从左到右闪烁流水: ```c #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code LED_TBL[] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90 }; // 数码管显示,0~9的编码 void delay(uint t) { while(t--); } void main() { uchar i, j, k; uchar led_buf[8] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; while(1) { for(i = 0; i < 8; i++) { led_buf[i] = ~led_buf[i]; // 取反,实现闪烁效果 for(j = 0; j < 8; j++) { P2 = 0xff; // 关闭所有数码管 for(k = 0; k < 8; k++) { P1 = LED_TBL[led_buf[k]]; // 显示数码 P2 = ~(1 << k); // 选中对应的数码管 delay(100); // 延时,控制流水速度 } } } } } ``` 代码解析: 首先,定义了一个数码管显示 `LED_TBL`,其中存储了每个数字的编码,用于数码管的显示。 然后,定义了一个延时函数 `delay`,用于控制流水速度。 接着,在主函数中,定义了一个 `led_buf` 数组,用于存储每个数码管的状态。初始状态为全亮。 然后,进入一个无限循环。在循环中,先通过一个 `for` 循环,将 `led_buf` 数组中的每个元素取反,实现闪烁效果。然后,再通过三个嵌套的 `for` 循环,实现从左到右的流水显示。 其中,最内层的 `for` 循环用于控制选中哪个数码管,将对应的数码管置为低电平,其他数码管均为高电平。 中间层的 `for` 循环用于遍历 `led_buf` 数组,根据数组元素的值,显示相应的数字。 最外层的 `for` 循环用于控制流水的次数,即从左到右的循环次数。 注意:上述代码中,使用了位运算符 `~` 和 `<<`,来实现数码管的选中和取反操作。其中,`~` 示按位取反,`<<` 示左移。如果不熟悉位运算符,建议先学习一下。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值