
C51 的两个数码管显示0~99的C语言程序
3个回答
展开全部
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar j,k,shi,ge;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uchar i) //延时程序
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display (uchar shi,uchar ge) //数码管显示程序(第c个数码管显示r)
{
dula=0;
P0=table[shi]; //数码管十位段信号输出
dula=1;
P0=0xff; //消影
wela=0;
P0=0xfe; //数码管位信号输出
wela=1;
delay(5);
dula=0;
P0=table[ge]; //数码管个位段信号输出
dula=1;
P0=0xff; //消影
wela=0;
P0=0xff; //数码管位信号输出
wela=1;
delay(5);
}
void main()
{
while(1)
{
display (shi,ge);
delay(200); //延时
delay(200);
delay(200);
delay(200);
delay(200);
}
}
自己写的仅供查考
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar j,k,shi,ge;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管编码
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uchar i) //延时程序
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display (uchar shi,uchar ge) //数码管显示程序(第c个数码管显示r)
{
dula=0;
P0=table[shi]; //数码管十位段信号输出
dula=1;
P0=0xff; //消影
wela=0;
P0=0xfe; //数码管位信号输出
wela=1;
delay(5);
dula=0;
P0=table[ge]; //数码管个位段信号输出
dula=1;
P0=0xff; //消影
wela=0;
P0=0xff; //数码管位信号输出
wela=1;
delay(5);
}
void main()
{
while(1)
{
display (shi,ge);
delay(200); //延时
delay(200);
delay(200);
delay(200);
delay(200);
}
}
自己写的仅供查考
追问
我用的是共阳数码管,你写的是共阴数码管
追答
哦 那你加个取反或者重写table

2025-04-09 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,...
点击进入详情页
本回答由意法半导体提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询