❶ 51单片机显示小数问题
浮点运算有精度问题,四舍五入呀,像这样改:
if(t>=0)
a=t*100;//
else
a=(-t)*100;
改为
if(t>=0)
a=(t+0.005)*100;//
else
a=(-t+0.005)*100;
❷ 单片机数码管显示小数
我不懂你的电路图是怎么接的,但是数码管的小数点是这样的
P0=table1[ge];你这个是寻址的后面加个点就得了
给为 P0=table1[ge]+0x80;或者P0=table1[ge]|0x80应该都一样的;
0x80就是那个点亮,不懂你是公阳还是共阴的,
如果是公阳的是0x7f。。。和共阴的相反
❸ 单片机 LCD1602 C语言小数怎么表示
1.首先你定义的speed是无符号字符型
在执行speed=1.1*ncounter
后speed的值也是整数,小数后面的数会被省略,你需要将speed定义为小数型:float
speed;
2.你的ncounter是多大的数?是否比speed最大范围值大,如果大可能数据就乱了!
dian=speed*10,dian这个数也要同上考虑
3.小数点的数可以考虑使用:
dian=(speed%1)*10;//取出小数点后一位的数乘以10,变成整数显示,你要显示成小数显示程序里前面加个点的符号隔开就行了!
❹ 单片机数码管小数点的显示
程序如下:
#include<reg52.h>
#include<intrins.h>
sbit an=P3^0;
sbit wei=P3^1;
unsigned char code table[] = {
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71 };
void delay(void)
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<110;j++);
}
void show6led(float num)
{
unsigned char i;
i=num;
an=1;
P2=table[i]+0x80; //显示个位和小数点
an=0;
P2=0xff; //先关闭led
wei=1;
P2=0xfb; //段选3
wei=0;
delay();
P2=0xff;
P3=0xff; //这两句非常重要,主要是清屏消隐
num=num-i;
num=num*10;
i=num;
an=1;
P2=table[i];
an=0;
P2=0xff;
wei=1;
P2=0xf7; //段选4,十分位
wei=0;
delay();
P2=0xff;
P3=0xff;
num=num-i;
num=num*10;
i=num;
an=1;
P2=table[i];
an=0;
P2=0xff;
wei=1;
P2=0xef; //段选5,百分位
wei=0;
delay();
P2=0xff;
P3=0xff;
num=num-i;
num=num*10;
i=num;
an=1;
P2=table[i];
an=0;
P2=0xff;
wei=1;
P2=0xdf; //段选6,千分位
wei=0;
delay();
P2=0xff;
P3=0xff;
}
main()
{
float number;
number=3.718;
while(1)
{
show6led(number);
}
}
数码管工作原理
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示)。
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
❺ 单片机C语言显示小数
给你个流程思路吧。ad采集电压信号,转换的数据是根据参考电压比较得到的。如果你的参考电压是5V,用的是12位AD,现在转换的结果为0x00ff,那么当前的电压就是0xo0ff*5000/4096
(mv)=311mv=0.311V,
至于怎么显示,那要看你的数码管位数以及要显示的数据范围。
可以用定小数点显示,也可以用动态小数点显示。思路都是把当前小数换成需要的整数,保留固定的有效数字。然后去显示小数点。思路就是这样。希望能帮到你。
❻ 单片机数码管小数点闪烁
假设4个数码管,每个亮2ms,一轮扫描共亮8ms,我们可以让其以120次为周期(0.96s),扫描前60次小数点亮,后60次小数点不亮,这样小数点就 以大约1HZ的速度闪烁。
例如,小数点在第二位,数码管七段码table[]中不含小数点
显示部分如下
if(a<60)
{dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2])|0x80;//第二位多个小数点
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
else {dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2]); //第二位无小数点
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
if(a==120) a=0;//120次后重新归零
❼ 51单片机数码管小数点不显示
摘要 您好!可以另制一个带小数点的7段(实际是8段)码表,需小数点时就用这个表格,不要小数点时用另一个表格
❽ 单片机进栈为什么是小数
常用的波特率有误差的,用小数表示更准确减少误差。
单机片进栈显示小数后期可四舍五入转换成整数,浮点运算有精度问题。小数在单片机中有一个单独的分类,我们称之为浮点型数据。之所以说是浮点型,是因为在小数的显示过程中,小数点会出现在不同的位置,小数表示用起来也很方便。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
❾ 单片机板显示小数0.0——9.9,应该怎么做
显示 00~99,即可。
小数点可以单独用一个LED表示。
❿ 51单片机ds18b20小数显示1602
发出存在脉冲。
51单片机ds18b20小数显示1602是因为出现了发出存在脉冲导致的。
1602液晶模块高精度4位小数显示,温度分辨率0.0625℃,液晶模块第一行显示的是DS18B20的64位激光序列号,液晶模块第二行显示的是实际温度。