用c51语言控制stc89c52单片机实现静态数码管从99减到0显示
时间: 2024-05-15 11:19:47 浏览: 193
以下是使用C语言编写的代码,可以实现静态数码管从99减到0显示:
#include<reg52.h>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit LED=P0;
unsigned char code table[] = { // 数码管显示表
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void delay(unsigned int i) // 延时函数
{
while(i--);
}
void display(unsigned char num) // 数码管显示函数
{
unsigned char ge,shi;
ge = num % 10; // 取个位数
shi = num / 10; // 取十位数
LSA=0;LSB=0;LSC=0; // 显示第一位数码管
LED=table[ge];
delay(1000); // 延时1ms
LSA=1;LSB=0;LSC=0; // 显示第二位数码管
LED=table[shi];
delay(1000); // 延时1ms
}
void main()
{
unsigned char i,j;
for(i=99;i>0;i--) // 从99减到0
{
for(j=0;j<100;j++) // 循环100次,延长每个数字的显示时间
{
display(i);
}
}
}
代码中使用了一个延时函数和一个数码管显示函数。延时函数使用了一个while循环,循环次数取决于传入的参数i的大小。数码管显示函数根据传入的数字,分别显示该数字的十位和个位。循环中先设置LSA、LSB、LSC三个引脚控制数码管显示的位置,然后根据传入的数字,在显示表中查找对应的数码管显示值。最后加上一个延时函数,延时1ms,就可以看到数码管在显示数字了。循环结束后,数码管就会从99逐渐减到0。
相关推荐














