51单片机求助

怎样用51单片机C语言实现十进制数到BCD码的转换???
我就是用CD4511驱动数码管,当时我定义了一个BCD数组BCD[]={0,1,2,3,4,5,6,7,8,9}
然后想用P1口输出BCD码到CD4511译码,怎样转换呢???

4511的输入要是BCD码,BCD码绝不是二楼说的八进制,BCD码是基于二进制的十进制,就是用4位的二进制数表示1位的十进制数,比如十进制78用BCD码表示就是01111000,也可以写成78H,前者是二进制,后者是十六进制。也就是说,在编程中要给P1口赋值12的时候,不能写成0x0C,而要写成0x12,当然,10以下的就体现不出来什么,因为十进制和十六进制对于10以下的数表示方法一样。程序上的转换就是把十进制数(两位数)除以10得到的值左移4位,然后和这个数除以10的余数相或,得到的就是它的BCD码。自己体会下,其实很简单,祝成功~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-14
运用c语言不存在10进制或者16进制,你这是刚从汇编转c语言所遇到的问题,在c语言中不管你用哪种进制表示的数都是一样的,多写些程序就能明白。本回答被网友采纳
第2个回答  2011-01-14
BCD[]={0,1,2,3,4,5,6,7,8,9}
这本来就是BCD码呀。
第3个回答  2011-01-14
BCD码是八进制,应该理解了吧
相似回答