单片机STC89C52显示0-99的C语言程序

我用的是2位共阳数码管,晶振电路和复位电路其他的都弄好了,就差数码管的程序了,电路图
详细电路图如图示,不知道有没有问题

第1个回答  2012-10-23
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit sm1= P3^7;
sbit sm2=P3^6;
sbit sm3=P3^5;
sbit sm4=P3^4;
sbit led=P2^7;
unsigned char table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
unsigned char table2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };
void delay(uint a)
{
while(a--);

}
void main()
{

uint n;
uchar i,k;

k=0;
while(1)
{
for(i=0;i<10;i++)
{

for(k=0;k<10;k++)
{
for(n=0;n<400;n++)
{
P0=table1[k];
sm2=0;
delay(100);
sm2=1;
P0=table2[i];
sm1=0;
delay(100);
sm1=1;
delay(100);
}
}
}

}

}
第2个回答  2012-10-18
#include <reg51.h>
sbit p10=P0^0 ; //数码管1 公共端
sbit p11=P0^1 ; //数码管2 公共端
#define uchar unsigned char
#define uint unsigned int
uchar DSY_ge[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
uchar DSY_shi[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=200;i>0;i--);
}
}
void Delay(uint x)
{
uchar i;
while(x--)
{
for(i=100;i>0;i--);
}
}
void main()
{
uchar i,m=0,n=0;
P1=0;
p10=1;
p11=1;
P2=DSY_ge[0]; //
while(1)
{
p10=0;
p11=1;
P2=DSY_ge[m]; //
Delay(100) ;
p10=1;
p11=0;
P2=DSY_shi[n++];
Delay(100) ;
if(n==9)
{
m++;
n==0;
}
if(m==9)
m=0;
}
}追问

用你的程序不行啊,你看一下我的电路图对不对

谢谢啦!

第3个回答  2023-03-11
单片机STC89C52显示0-99的C语言程序可以参考以下代码:
#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};
uchar num=0;void delay(uint z){
uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);
}void main(){ while(1)
{
P2=table[num/10];
P1=table[num%10];
delay(500);
num++; if(num==100) num=0;
}
第4个回答  2012-10-24
自己搞搞就会了本回答被提问者采纳
第5个回答  2012-10-19
比较简单追问

那麻烦大哥给做一下,详细电路图在上面,谢谢啦!

相似回答