一张图搞懂什么是BCD8421编码

文章解释了BCD8421编码系统如何用四位二进制数表示一位十进制数,举例说明如何将十进制数如10转换成BCD8421编码,即00010000。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图所示 BCD8421编码的意义是 用四位二进制数表达一位的十进制数 因此十进制下的0~9在BCD8421编码下与其二进制表达是一样的 而多位的十进制数 比如说“10” 则需要将它拆分成两个单独的数“1”和“0” 分别用BCD8421编码表示这两个数 十进制“1” -> 0001 十进制“0” -> 0000 因此“10”的BCD8421编码为 00010000 

以下是使用C51单片机控制PC输出字符和驱动LED数管显示相应8421BCD的程序: ``` #include <reg52.h> // 定义串口通信参数 #define BAUDRATE 9600 #define FOSC 11059200L #define TIMER1_RELOAD (65536L - (FOSC / 12L / BAUDRATE)) // 定义IO口及数管对应的BCD sbit LED_D1 = P1^0; sbit LED_D2 = P1^1; sbit LED_D3 = P1^2; sbit LED_D4 = P1^3; unsigned char code LED_TBL[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00 }; // 初始化函数 void Init() { // 设置串口参数 SCON = 0x50; // 8位数据,可变波特率 TMOD &= 0x0f; // 确定计数模式 TMOD |= 0x20; // 设置定时器1为8位自动重装模式 TH1 = TL1 = TIMER1_RELOAD; // 初始化定时器1计数值 TR1 = 1; // 启动定时器1 ES = 1; // 允许串口中断 EA = 1; // 允许总中断 } // 串口中断服务函数 void Serial_ISR() interrupt 4 { if (RI) { RI = 0; // 清除接收标志位 // 接收到字符后,驱动LED数管显示相应的BCD switch(SBUF) { case '0': LED_D1 = LED_D2 = LED_D3 = 1; LED_D4 = 0; break; case '1': LED_D1 = 0; LED_D2 = LED_D3 = LED_D4 = 1; break; case '2': LED_D1 = LED_D2 = 1; LED_D3 = LED_D4 = 0; break; case '3': LED_D1 = LED_D2 = LED_D3 = 1; LED_D4 = 0; break; case '4': LED_D1 = 0; LED_D2 = LED_D3 = 1; LED_D4 = 0; break; case '5': LED_D1 = LED_D3 = 1; LED_D2 = LED_D4 = 0; break; case '6': LED_D1 = LED_D3 = 1; LED_D2 = LED_D4 = 0; break; case '7': LED_D1 = LED_D2 = LED_D3 = 0; LED_D4 = 1; break; case '8': LED_D1 = LED_D2 = LED_D3 = LED_D4 = 0; break; case '9': LED_D1 = LED_D2 = LED_D3 = 1; LED_D4 = 0; break; default: break; } } } // 主函数 void main() { Init(); // 初始化 while (1); } ``` 需要注意的是,此程序中使用了定时器1来实现串口通信的波特率控制,因此需要在程序中使用定时器1的中断服务函数来处理串口接收事件。同时,程序中使用了一个LED_TBL数组来存储每个数字对应的BCD值,以便驱动LED数管进行显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

做模拟IC的KS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值