用51单片机编程控制共阴极8位数码管显示00-00-00使用74HC138翻译器代码
时间: 2023-08-19 09:05:50 浏览: 147
以下是使用51单片机编程控制共阴极8位数码管显示00-00-00使用74HC138翻译器的代码:
```
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^4;
sbit D6=P1^5;
sbit D7=P1^6;
sbit D8=P1^7;
sbit S1=P2^0;
sbit S2=P2^1;
sbit S3=P2^2;
uchar code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar i,j,k;
while(1)
{
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
for(k=0;k<10;k++)
{
D1=1;D2=1;D3=1;D4=1;D5=1;D6=1;D7=1;D8=1;
S1=1;S2=1;S3=1;
switch(k)
{
case 0:S1=0;S2=0;S3=0;break;
case 1:S1=1;S2=0;S3=0;break;
case 2:S1=0;S2=1;S3=0;break;
case 3:S1=1;S2=1;S3=0;break;
case 4:S1=0;S2=0;S3=1;break;
case 5:S1=1;S2=0;S3=1;break;
case 6:S1=0;S2=1;S3=1;break;
case 7:S1=1;S2=1;S3=1;break;
}
D1=0;P0=duan[i];delay(5);D1=1;
D2=0;P0=duan[j];delay(5);D2=1;
D3=0;P0=0x40;delay(5);D3=1;
D4=0;P0=duan[k];delay(5);D4=1;
D5=0;P0=duan[i];delay(5);D5=1;
D6=0;P0=duan[j];delay(5);D6=1;
D7=0;P0=0x40;delay(5);D7=1;
D8=0;P0=duan[k];delay(5);D8=1;
}
}
}
}
}
```
其中,duan数组存储了0~9及空格所对应的数码管段码,delay函数用于延时,S1、S2、S3分别对应74HC138译码器的A、B、C三个输入端口,D1~D8分别对应8位共阴极数码管的8个数码位端口。程序通过三层循环实现了00-00-00的逐位显示。
阅读全文