基于宏景科技的stc实验箱4,编写C语言实现8个7段数码管同时显示相同的数字0-9,并每隔1秒变换一次;
时间: 2024-02-12 13:03:51 浏览: 122
——自动生成绩效反馈表-e-PM全员绩效管理解决方案
好的,以下是C语言代码实现:
```
#include<reg52.h> //头文件
#include<intrins.h>
#define uchar unsigned char //宏定义
sbit LSA=P2^2; //定义LS138译码器的三个片选端口
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(unsigned int i) //延时函数
{
while(i--);
}
void display(int n) //数码管显示函数
{
int i,j,k; //循环计数变量
for(i=0;i<8;i++) //共8个数码管
{
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[n%10]; //显示个位数字
delay(500); //延时一段时间
P0=0x00; //关闭显示
n/=10; //除以10后取整,显示十位数字
}
}
void main()
{
int i=0; //计数变量
while(1)
{
display(i); //调用数码管显示函数
i++;
if(i==10) //0~9循环显示
i=0;
delay(1000); //每隔1秒变换一次
}
}
```
注:代码中使用了STC89C52单片机和74HC138译码器,需要根据实际情况修改引脚。
阅读全文