51单片机用C语言怎么样把八位二进制转换成十进制

如题所述

//*********************************************************************/
// 函数名称:void Htod(ulong L)
// 将int型二进制数 L 转换为单字节BCD码,将对应的ASCii码存入显示区 Buf
// 转换原理:除十取余
// 入口参数:L是int型变量 d 是位数
// 返回参数:无,修改全局变量BUF的值
void Htod(uint L)
{
uchar i;
ulong M=0;
for (i=0;i<6;i++) // 缓冲区清零
Buf[i]=0;

Buf[0]=L/10000L; // 最高位
L-=(Buf[0]*10000L);
Buf[0]+=0x30; // 变为ASCII码
Buf[1]='.'; // 加小数点
Buf[2]=L/1000L;
L-=(Buf[2]*1000L);
Buf[2]+=0x30;
Buf[3]=L/100;
L-=(Buf[3]*100);
Buf[3]+=0x30;
Buf[4]=L/10;
L-=(Buf[4]*10);
Buf[4]+=0x30;
Buf[5]=L+0x30;
}
//*********************************************************************/
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-09
请问你要这个二进制做什么呢?如果拿来显示,不用转化了,把这个二进制变量直接拿来用。
芯片值的数值转换的话,芯片的PDF有详细例程的
第2个回答  2011-08-09
51 中 2进制和10进制可以直接进行运算 ,比较等。无需转化
第3个回答  2011-08-09
51中的二进制和十进制是可以直接进行运算的。

单片机C语言中将二进制数转化为十进制的办法
按照如下步骤即可用C语言把二进制数转换成十进制数的程序:1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用了一个for循环语句,用于输入八位二进制数。在scanf函数里,在%d之间加一个1,然后使用printf函数输出,并且调用Sum函数,数组名作为实参。

基本的单片机C语言编程问题P1=0xff高电平
51单片机是8位的,意思就是每一组端口都有8个位;转换成2进制为1111 1111,10进制为255,16进制为0xff,比如我现在要让P1口全亮(高电平为亮),那么是不是P1^0到P1^7这个8个端口全部为1,那么就为:P1 = 2#1111 1111;但是在keil软件中不可以用2进制表示,那么我们就用10进制或16进制来赋值,P1 = ...

C语言编单片机程序怎样将二进制转化成十进制
c=(x%100)\/10;d=x%10;这样,a=2,b=2,c=2,d=7,将a,b,c,d显示出来就是了。

单片机怎样用C语言实现二进制转十进制并在LCD中显示
假设被转换的二进制数为temp unsigned char i=0;unsigned char dis_buf[3];for(i = 0; i < 3;i++){ dis_buf[i]=temp % 10;temp \/ =10;} for(i = 0; i < 3;i++){ lcd_write((dis_buf[2-i])+'0');}

单片机中使用C语言对二进制的处理
在C中以0开头的是8进制,00111111,转换为16进制是9249H,给P0赋值,取低8位刚好是0x49

...这是你帮别人回答的问题 我想知道 用C语言是怎么做到的
用C语言,也是把一个变量,分解成个十百千万位数,一位一位的显示。在:http:\/\/hi.baidu.com\/%D7%F6%B6%F8%C2%DB%B5%C0\/blog\/item\/e9a4f10963e835c463d98677.html 中,有一段即是:void W_LCD_X1_Dat(uchar sec){ W_LCD_Com(0xc0 + 7);W_LCD_Dat(0x30 + sec \/ 10000);W_...

PIC单片机 C语言编程实现二进制转化为十进制
十进制0到9,这10个数字,要对应10种不同组合的管脚输出.与其这样,直接用二进制中的0-9,对应10种不同组合的管脚输出就可以了.0000 0000--0---对应数码管输出0;0000 0001--1---对应数码管输出1;0000 0010--2---对应数码管输出2;0000 0011--3---对应数码管输出3;...0000 1000--8---...

单片机C51如何将ADC0809转换过来的值0--255处理成0到100
如果C51 .这其实是一件很简单的事..采集回来的数十val 最后转成的舒适 ddd 那么 ddd = val * 100 \/255 就可以了 如果觉得这样计算量比较大的话.那么 损失一点精度用 移位 ddd = val * 100 >> 8; 就可以了.你说说的dptr那是用汇编写的结果.用c语言这些东西都不需要考虑的.\/\/\/ 如...

c语言流水灯八位二进制程序
看来你是初学单片机,更是对c语言不懂,需要倍加努力了!led=led-1的意思就是把led-1这个值赋值给led例如led=0xff(换成十进制255)减去1之后等于254把这个254赋值给led while(led==0)在c语言中俩个等号才是相等,它在这里的意思 就是判断是不是led全部点亮了,如果是等全部亮了,延时一会然后用...

51单片机c语言程序
unsigned char是8位但从0到255,unsignde int 16位从0到65535;楼主程序中的TH0\/TL0是8位uchar型;tmp是16位uint型。tmp=TL0|(TH0<<8);这句在执行时先进行类型转换,把TL0\/TH0暂时转换成16位uint型数据,(高位补0),再给TH0左移8位,和TL0相“或”,得到的是16位uint数据,赋给tmp....

相似回答