服务器主板数码管显示ff,大神们来看看为什么要关闭所有数码管?P2=0xff这条

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

还有下一条P0=0xff是消影吗?

void DisplaySecond(unsigned char s)

{

P25=0;

P26=1;

P27=1; //P2.6引脚输出低电平, DS6点亮

P0=Tab[s/10]; //显示十位

delay();

delay();

delay();

P25=1;

P26=0;

P27=0; //P2.7引脚输出低电平, DS7点亮

P0=Tab[s%10]; //显示个位

delay();

delay();

delay();

P2=0xff; //关闭所有数码管

P0=0xff;

delay();

delay();

delay();

}

/******************************************************************

函数功能:显示分钟的子程序

入口参数:m

********************************************************************/

void DisplayMinute(unsigned char m)

{

P25=0;

P26=0;

P27=1; // P2.3引脚输出低电平, DS3点亮

P0=Tab[m/10]; //显示个位

delay();

delay();

delay();

delay();

P25=0;

P26=1;

P27=0; // P2.4引脚输出低电平, DS4点亮

P0=Tab1[m%10];

delay();

delay();

delay();

P2=0xff; //关闭所有数码管

P0=0xff;

delay();

delay();

delay();

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是51单片机的代码实现: ```c #include <reg51.h> // 数码管阳极连接,定义数码管显示0~9的段码值 unsigned char code numTable[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(unsigned int t) // 延时函数 { unsigned int i, j; for (i = t; i > 0; i--) for (j = 110; j > 0; j--); } void main() { unsigned char i = 0; while (1) { P0 = numTable[i % 10]; // 显示个位数 P2 = 0xfe; // 选择第一位数码管 delay(1); // 延时 P2 = 0xff; // 关闭所有数码管 P0 = numTable[i / 10]; // 显示十位数 P2 = 0xfd; // 选择第二位数码管 delay(1); // 延时 P2 = 0xff; // 关闭所有数码管 P0 = numTable[0]; // 显示小数点 P2 = 0xfb; // 选择第三位数码管 delay(1); // 延时 P2 = 0xff; // 关闭所有数码管 i++; // 循环显示 } } ``` 其中,`numTable`数组是用来存储显示0~9的数码管段码值的。`delay`函数是为了让数码管显示出来的数字能够被人眼识别,因为人眼对数字的刷新频率有限制。在`main`函数中,先显示个位数,然后选择第一位数码管,延时一段时间,再关闭所有数码管;然后显示十位数,选择第二位数码管,延时一段时间,再关闭所有数码管;最后显示小数点,选择第三位数码管,延时一段时间,再关闭所有数码管;最后循环显示。注意,这里的位选引脚P2需要设置为反向输出,即使用`P2 = 0xfe`选择第一位数码管,使用`P2 = 0xfd`选择第二位数码管,使用`P2 = 0xfb`选择第三位数码管,因为数码管的位选引脚是阳的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值