共阳极、共阴极数码管编码表(0~9、A~P……全亮)

共阳极:

位选为高电平(即1)选中数码管,

各段选为低电平(即0接地时)选中各数码段。

uchar code table[]={
	0xc0//0
	0xf9//1
	0xa4//2
	0xb0//3
	0x99//4
	0x92//5
	0x82//6
	0xf8//7
	0x80//8
	0x90//9
	0x88//A
	0x83//B
	0xc6//C
	0xa1//D
	0x86//E
	0x8e, //F
	0x8c, //P
	0xc1,//U
	0x91,//Y
	0x7c,//L
	0x00,//全亮
	0xff  //熄灭
};

共阴极:
位选为低电平(即0)选中数码管,

各段选为高电平(即1接+5V时)选中各数码段。

uchar code leddata[]={
	0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0x76,  //"H"
    0x38,  //"L"
    0x37,  //"n"
    0x3E,  //"u"
    0x73,  //"P"
    0x5C,  //"o"
    0x40,  //"-"
    0x00  //熄灭
	};

以下是使用循环实现单片机数码管动态显示代码,从左到右闪烁流水: ```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` 循环用于控制流水的次数,即从左到右的循环次数。 注意:上述代码中,使用了位运算符 `~` 和 `<<`,来实现数码管的选中和取反操作。其中,`~` 示按位取反,`<<` 示左移。如果不熟悉位运算符,建议先学习一下。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

莫余

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

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

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

打赏作者

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

抵扣说明:

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

余额充值