前言
本教程基于B站江协科技课程进行个人学习整理,专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题,也助力新手快速掌握51单片机核心知识,实现从C语言理论到单片机实践应用的高效过渡 。
1.知识补充:
BCD码
1.BCD(Binary-Coded Decimal)码即二-十进制编码,是用4位二进制数来表示1位十进制数中的0到9这10个数码。
2.例:0001 0011表示13,1000 0101表示85,0001 1010不合法,理由如下:
对于BCD码转换为十进制数,采用按位权展开相加的方法,每4位一组代表一个十进制数位上的数字。
对于BCD码0001 0011:
从右到左,每4位一组,这里分成两组0001和0011。
0001这4位二进制数,根据二进制转十进制公式aₙ2ⁿ+aₙ₋₁2ⁿ⁻¹+…+a₁2¹+a₀2⁰(其中aᵢ为二进制位上的数字),可得0×2³+0×2²+0×2¹+1×2⁰ = 1,代表十进制数个位上的数字1。
0011同理,0×2³+0×2²+1×2¹+1×2⁰ = 3,代表十进制数十位上的数字3。
组合起来就是1×10 + 3×1 = 13。
对于BCD码1000 0101:
分成两组1000和0101。
1000转换为十进制,1×2³+0×2²+0×2¹+0×2⁰ = 8,代表十进制数十位上的数字8。
0101转换为十进制,0×2³+1×2²+0×2¹+1×2⁰ = 5,代表十进制数个位上的数字5。
组合起来就是8×10 + 5×1 = 85。
对于0001 1010不合法,是因为在BCD码中,每4位二进制数表示0到9这10个数字,而1010对应的十进制数是1×2³+0×2²+1×2¹+0×2⁰ = 10,超过了9,不符合BCD码的编码规则,所以是不合法的BCD码 。
综上,BCD码转换为十进制数,就是先将BCD码按4位一组拆分,将每组4位二进制转换为十进制数,再按所在数位组合成最终的十进制数,且每组4位二进制表示的数不能超过9。
3.在十六进制中的体现:0x13表示13,0x85表示85,Ox1A不合法
4.BCD码转十进制:DEC=BCD/16*10+BCD%16;(2位BCD)
解释:
BCD/16将BCD的高四位提取,再*10就是十进制十位的数
BCD%16将BCD的低四位提取,就是十进制个位的数
两者相加,就是一个完整的两位十进制数字
十进制转BCD码:BCD=DEC/10*16+DEC%10;(2位BCD)
解释:将上述反过来。