c语言怎么弄小数点,数码管小数点

1.显示小数点

我们可能忽略了数码管上还有一段发光二极管,这个在它的右下角,平时我们点亮这个小点是用来表示数字的小数点。要想让这个小数点即使显示的数字一直变但它还是保持常亮状态有什么办法吗。

我们不可能为每一个数字再弄一个带小数点的真值表数组,这样太麻烦了,熟悉C语言知识的话,我们用另一种方法。

大家要明白这个知识点:(0x7F)&(0xC0)=0x40

用二进制表示

0111 1111

&

1100 0000

=

0100 0000

01000000(0x40)就是使数码管显示0的同时还显示小数点了

30c9f9df5a065a792371782fa923d66a.png

所以不管是0xC0还是要显示其他数字,我们只要“0x7F & LedBuff[x]”就能保持住小数点常亮了。

2.代码#include 

sbit ADDR2 = P1^2;

sbit ADDR1 = P1^1;

sbit ADDR0 = P1^0;

sbit ENLED = P1^4;

sbit ADDR3 = P1^3;

unsigned char code LedChar[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//数码管状态值初始化

unsigned char LedBuff[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};//数码管显示缓存区

void delay_ms(unsigned int x)

{

unsigned int i,j;

if(x==1000)

{

for(i=0;i<19601;i++)//延时1s

{

for(j=5;j>0;j--);

}

}

else while(x--)for(j=115;j>0;j--);

}

void main()

{

unsigned char Second=0;

ADDR3 = 1;//使能三八译码器

ENLED = 0;//

ADDR2 = 0;//*************************

ADDR1 = 0;//三八译码器的IO0输出低电平

ADDR0 = 0;//*************************

while(1)

{

LedBuff[0]=LedChar[Second];

P0=0x7F & LedBuff[0];

Second++;

if(Second>=10)Second=0;

delay_ms(1000);

}

}

因为代码功能只是显示一个数码管,所以不需要快速切换三八译码器的其他IOx输出低电平,也就可以用“delay_ms(1000);”。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值