先大白话讲BCD 码是什么BCD 码 用 4 位二进制表示 1 个十进制数字就是单片机专门用来存数字 0~9的格式。比如数字12普通二进制00001100BCD 码0001 00101 和 2 分开存用途显示时间、日期、数码管、键盘输入// BCD 码与十进制互相转换 完整代码带超详细注释 // 功能十进制数字 转 BCD 码 // 输入0~99 的十进制数 // 输出对应的 BCD 码 unsigned char DecimalToBCD(unsigned char num) { // 先取十位num / 10然后左移4位放到高4位 // 再取个位num % 10放在低4位 // 最后按位或组合成一个字节的 BCD 码 return ((num / 10) 4) | (num % 10); } // 功能BCD 码 转 十进制数字 // 输入BCD 码如 0x23 代表 23 // 输出十进制数字 unsigned char BCDToDecimal(unsigned char bcd) { // 1. bcd 4 // 右移4位 → 取出高4位也就是 十位 // 2. (bcd 4) * 10 // 十位数字 ×10变成几十 // 3. bcd 0x0F // 只保留低4位 → 取出个位 // 4. 十位×10 个位 最终十进制数 return ((bcd 4) * 10) (bcd 0x0F); } // 以下是测试主函数可直接运行看结果 int main(void) { unsigned char dec_num 46; // 十进制数字 46 unsigned char bcd_data; // 用来存 BCD 码 unsigned char result; // 用来存转换回的十进制 // 十进制 → BCD bcd_data DecimalToBCD(dec_num); // 46 会变成 0x46 // BCD → 十进制 result BCDToDecimal(bcd_data); // 0x46 会变回 46 while(1) { // 死循环嵌入式程序通用结构 } }