89c51数码管自加自减
时间: 2024-01-19 15:44:30 浏览: 54
以下是89c51单片机控制数码管自加自减的示例代码:
```c
#include <REGX52.H>
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char code table[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90
}; // 数码管显示0~9的编码
void delay(unsigned int i)
{
while(i--);
}
void display(unsigned char num)
{
unsigned char i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):LSA=0;LSB=0;LSC=0;break;
case(1):LSA=1;LSB=0;LSC=0;break;
case(2):LSA=0;LSB=1;LSC=0;break;
case(3):LSA=1;LSB=1;LSC=0;break;
case(4):LSA=0;LSB=0;LSC=1;break;
case(5):LSA=1;LSB=0;LSC=1;break;
case(6):LSA=0;LSB=1;LSC=1;break;
case(7):LSA=1;LSB=1;LSC=1;break;
}
P0=table[num];
delay(500); // 数码管显示持续时间
P0=0x00;
}
}
void main()
{
unsigned char num=0; // 初始数字为0
while(1)
{
display(num); // 显示数字
num++;
delay(1000); // 数字改变间隔时间
if(num==10) num=0; // 数字循环变化
}
}
```
该代码实现了数码管从0开始自加,当数字达到9时,回到0重新开始自加。每个数字的显示持续时间为500ms,数字之间的变化间隔为1000ms。您可以根据实际需求调整这些时间参数。
阅读全文