STC12C12C5A60S2四位共阳极数码管动态显示C语言程序
时间: 2023-08-10 09:03:18 浏览: 250
day01_am_v1.zip_EV_AM_V115_STC12C5A60S2-AD
以下是STC12C12C5A60S2四位共阳极数码管动态显示的C语言程序:
```c
#include <STC12C5A60S2.h>
#define uint unsigned int
#define uchar unsigned char
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示0~9的值
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void DigDisplay(uchar i) //数码管显示函数
{
switch(i) //通过P2口的三个引脚控制数码管的哪一位显示
{
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;
}
}
void main()
{
uchar ge,shi,bai,wei; //定义个位、十位、百位、千位的数码管显示值
uint i=0,j=0,k=0; //定义三个计数器变量
while(1)
{
for(wei=0;wei<4;wei++) //在四个数码管中依次显示
{
for(k=0;k<100;k++) //延时
{
for(j=0;j<100;j++)
{
for(i=0;i<100;i++);
}
}
switch(wei) //根据不同位数的数值,显示对应的数码管
{
case(0):ge++;if(ge==10)ge=0;P0=table[ge];break;
case(1):shi++;if(shi==10)shi=0;P0=table[shi];break;
case(2):bai++;if(bai==10)bai=0;P0=table[bai];break;
case(3):wei++;if(wei==10)wei=0;P0=table[wei];break;
}
DigDisplay(wei); //显示当前位数的数码管
}
}
}
```
注意:这段代码是基于STC12C5A60S2单片机的,如果使用其他单片机需要对IO口进行修改。同时,这段代码只是一个简单的数码管动态显示程序,如果需要进行更复杂的操作可以根据具体需求进行改进。
阅读全文