单片机C语言显示小数

我用ADC0808采集电压信号51单片机读取电压数据,请问我如何换算这个数据,比如我要测量4.87V电压,如何计算出这个值,如何显示在数码管上。程序算法上应该怎么算,主要是计算跟分离各个数位上的数

给你个流程思路吧。ad采集电压信号,转换的数据是根据参考电压比较得到的。如果你的参考电压是5V,用的是12位AD,现在转换的结果为0x00ff,那么当前的电压就是0xo0ff*5000/4096 (mv)=311mv=0.311V, 至于怎么显示,那要看你的数码管位数以及要显示的数据范围。 可以用定小数点显示,也可以用动态小数点显示。思路都是把当前小数换成需要的整数,保留固定的有效数字。然后去显示小数点。思路就是这样。希望能帮到你。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-04
你放大100被 , 计算出的 值就是487了 ,然后显示在数码管上,小数点显示在固定的位置
第2个回答  2011-08-04
单片机c 语言有浮点运算,但建议不要用,一般在可控位长下,放大x倍(精度),转成10进制后可显示,
第3个回答  2011-08-05
单片机里的数据最好都用整数来运算,是小数的就放大成整数,显示只是在对应的数码管上将点显示出来就行。

单片机C语言显示小数
ad采集电压信号,转换的数据是根据参考电压比较得到的。如果你的参考电压是5V,用的是12位AD,现在转换的结果为0x00ff,那么当前的电压就是0xo0ff*5000\/4096 (mv)=311mv=0.311V, 至于怎么显示,那要看你的数码管位数以及要显示的数据范围。 可以用定小数点显示,也可以用动态小数点显示。思路都是...

单片机 LCD1602 C语言小数怎么表示
dian=(speed%1)*10;\/\/取出小数点后一位的数乘以10,变成整数显示,你要显示成小数显示程序里前面加个点的符号隔开就行了!

C51单片机的简单显示程序(有小数点)C语言程序
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9unsigned char time,sec=30,scanled;unsigned char disdat[6]={1,2,3,4,5,6};sbit keys=P1^0;sbit keyc=P1^1;sbit fmq=P3^0;void t1isr() interrupt 3 \/\/显示{ TH1=0xec; ...

急求急求 在线等!单片机用C语言 题目:显示精度为0.01 求程序!用C51做...
TL0=(65536-50000)%256; TH1=(65536-5000)\/256; TL1=(65536-5000)%256; IT0=1; EX0=1; TR1=1; ET0=1; ET1=1; EA=1; while(1) { switch(keyval) { case 0:TR0=1;break; case 1:TR0=0;break; case 2:TR0=0;cnt=0;break; default:...

单片机c语言小数点后两位需要显示,怎么编程?
unsigned long x,y;x=9999;y=9999;x*=y;y=x%100;x\\=100;if (y>=50)x++;\/\/x中为结果,因为没有浮点又要保留两位小数,所以用大100倍的整数表示。

单片机数码管显示0到999c语言程序怎么编
unsigned int time=0,s,sz;delay(unsigned int k){ unsigned int i,j;for(i=0;i<k;i++)for(j=0;j<125;j++);}INT_0()interrupt 0 { delay(10);if(INT0==0){sz++; if(sz>2){sz=0;}}} void T0_int()interrupt 1{ TH0=(65535-50000)\/256;\/\/设置初值 TL0=(65535-50000...

求:用单片机C语言编一位数码管的数字显示 要求可以从0变化到9
\/\/1位静态显示 include<reg52.h> include<intrins.h> \/\/p0接数码管的A~H;uchar led[]={0xA0,0xBD,0x64,0x2C,0x39, 0x2A, 0x22,0xBC,0x20,0x28};\/\/0-9数字摸。unsigned int dat;main(){while(){ P0=led(dat);\/\/显示dat变量,这里只能显示数字0~9;} } ...

单片机STC89C52显示0-99的C语言程序
define uchar unsigned char define uint unsigned int sbit sm1= P3^7;sbit sm2=P3^6;sbit sm3=P3^5;sbit sm4=P3^4;sbit led=P2^7;unsigned char table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };unsigned char table2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,...

就是个很简单的单片机C语言子程序,总是报错‘ ’:bad opernd type 调试...
楼上说的对,不能用浮点型的吧,如果是数码管显示小数的话,可以先把小数如1.15,扩大100倍为115,再分别分离出百位:1,十位:1,个位:5,根据情况添加小数点显示

单片机 C语言 从AD得到一个8位二进制数 0x00~0xff 想把它换算成小数显示...
unsigned int j;unsigned char k, l, m, n = P1; \/\/从P1口读到的8位二进制数 n = 168; \/\/ 168 \/ 255 = 0.65 j = 100 * n; \/\/0 ~ 25500,需要用16位数的变量 k = j \/ 25500; \/\/整数0~1 j = j % 25500; \/\/余数0~25499,需要用16位数的变量 l ...

相似回答