单片机实验二进制到BCD转换?
有个问题必须先核实,这个16位二进制数是有符号数还是无符号数?这个问题影响到电路的具体设计,因为你需要一个除法器,关于除法器的设计自行去搜索,最简单的是原码加减交叉除法器。 有了除法器,下面开始转换。 一,16位二进制数除以10,将得到的余数取低四位,得到第一个BCD码。 二,将上次除法运算的商再除以10,取余数低4位,得到第二个BCD码。 依次类推,直到商小于10,除法就做完了。16位二进制能表示的最大数是65535,所以你需要进行五次除法运算。结果是五个bcd码,一共有20位。因为你只显示两个BCD,所以将高12位的信号用或门连起来,作为溢出信号,输出给bcd码led,当溢出信号为1时,led显示E,表示错误。 说了老半天,想起你可能是说的软件实现。其实基本过程差不多,就是做除法。至于如何压缩BCD码,你可以用表示高位的bcd码乘以16或左移4位,然后与表示低位的BCD码做按位或运算,就能得到压缩的BCD码。 在软件中如何显示压缩的BCD码呢?得设计一个译码模块,先将的压缩BCD码扩展成8位一个,过程与上面相反。弄好后,然后和00110000做按位或运算,就能得到这个BCD码的ASCII码。
单片机走马灯实验灯亮原理?
跑马灯可以用MCS-51单片机控制一个LED点阵来实现,一个简单的跑马灯,每一个小方格代表一个发光二极管,黑色代表相应位置的发光二极管被点亮,白色的空格表示未被点亮。
从时刻1到时刻4这段时间LED点阵变化的情况,也就是每过一个时间片,“ ”向左移动一个位置,因此如果有11个类似的时刻,看上去就是“ ”从右边移入从左边移出,有从而产生跑马灯的效果