共阴极数码管显示原理(74HC595)

使用的数码管是共阳数码管,所以设置为低电平(0)的段才会被点亮

编码顺序为dp g f e d c b a,但观察数码管的亮灭是按照a到g,比如要显示P,那么就是除了c、d其他都要亮,故编码为10001100,在keil中写0x0C

dp为0时表示带小数点

(74HC595)上升沿有效

### 阴极数码管编码方式 对于阴极数码管,其工作原理是将所有发光二极管的阴极连接在一起并接地(GND),而未连接的一端则分别对应不同的段选信号。当某个段选引脚被拉高至高电平时,该段对应的发光二极管会被点亮。 以下是阴极数码管显示数字 `0` 到 `9` 的典型编码表: | 显示字符 | a | b | c | d | e | f | g | |----------|------|------|------|------|------|------|------| | 0 | ON | ON | ON | ON | ON | OFF | OFF | | 1 | OFF | ON | ON | OFF | OFF | OFF | OFF | | 2 | ON | ON | OFF | ON | ON | OFF | ON | 基于此逻辑,可以编写如下 C 语言代码实现阴极数码管的编码定义: ```c // 定义阴极数码管显示字符的字模数据 unsigned char code segment_code[] = { 0x3F, // '0' 0x06, // '1' 0x5B, // '2' 0x4F, // '3' 0x66, // '4' 0x6D, // '5' 0x7D, // '6' 0x07, // '7' 0x7F, // '8' 0x6F // '9' }; ``` 上述数组中的每一个十六进制数代表一个特定字符的段选码[^3]。例如,`0x3F` 对应于字符 `'0'`,它表示点亮所有的段除 `g` 和 `dp` 外的所有其他段。 ### 示例代码说明 假设我们使用的是 STM32 或者 51 单片机来控制阴极数码管,则可以通过配置 GPIO 口输出相应的高低电平来驱动数码管。下面是一个简单的例子展示如何利用定时器中断更新数码管上的数值: ```c #include <reg52.h> sbit DIO = P2^0; // 假设P2.0作为数据输入/输出口 sbit CLK = P2^1; // 假设P2.1作为时钟同步信号 void TM1640_Write(unsigned char data){ unsigned char i; for(i=0;i<8;i++) { CLK = 0; if(data & 0x80) DIO = 1; else DIO = 0; CLK = 1; data <<= 1; } } void DisplayNumber(unsigned char num){ TM1640_Write(segment_code[num]); // 发送段码给TM1640芯片 } ``` 以上程序片段展示了向 TM1640 驱动芯片发送命令的过程以及调用预定义好的段码函数完成指定数字的显示功能[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值