展开全部
/*************************************/
#include <REG52.h> //通用89C52头文件
sbit Axs=P3^4;//个位
sbit Bxs=P3^5;//十位
sbit Cxs=P3^6;//百位
sbit Dxs=P3^7;//千位
char table[10]={0xd7,0x14,0xcd,0x5d,0x1e,0x5b,0xdb,0x15,0xdf,0x5f};//数码管显示编码
int k,n;
void MScomm(void);//初始化
void YS(char hs);//延时函数
void XS(int xs);//显示函数
/*************************************/
void main(void)//主函数
{
n=0;
MScomm();//串口初始化
while(1)//主循环
{
XS(k);
}
}
/*************************************/
void ser() interrupt 1//中断方式
{
TH0=(65536-922)/256;// 1毫秒初值
TL0=(65536-922)/256;//晶振12M
n++; if(n>100)//如果达到指定时间
{n=0;k++;}//1000为1秒
if(k>9999){k=0;}
}
/*************************************/
void MScomm(void)//串口初始化
{
TMOD=0x01;//定时器0工作方式1
EA=1;//
ET0=1;//
TH0=(65536-922)/256;// 1毫秒
TL0=(65536-922)/256;
TR0=1; //启动定时器T1
}
/*************************************/
void XS(int xs) //显示子函数
{
char d1,d2,d3,d4;
d4=(xs/1)%10; //取个位 %求余
d3=(xs/10)%10; //取十位
d2=(xs/100)%10; //取百位
d1=(xs/1000)%10; //取千位
P1=table[d4]; Axs=0; YS(10); Axs=1;//个位显示
P1=table[d3]; Bxs=0; YS(10); Bxs=1;//十位显示
P1=table[d2]; Cxs=0; YS(10); Cxs=1;//百位显示
P1=table[d1]; Dxs=0; YS(10); Dxs=1;//千位显示
}
/*************************************/
void YS( char hs)//延时函数
{
char hk;
for(;hs>0;hs--)
{ for(hk=200;hk>0;hk--); }// 10
}
/*************************************/
///////////////////////////////////////
送你啦,哈哈
只不过我用的数码管编码和你的可能不一样,根据你那实际情况修改一下即可
还有你使用的段位控制引脚
#include <REG52.h> //通用89C52头文件
sbit Axs=P3^4;//个位
sbit Bxs=P3^5;//十位
sbit Cxs=P3^6;//百位
sbit Dxs=P3^7;//千位
char table[10]={0xd7,0x14,0xcd,0x5d,0x1e,0x5b,0xdb,0x15,0xdf,0x5f};//数码管显示编码
int k,n;
void MScomm(void);//初始化
void YS(char hs);//延时函数
void XS(int xs);//显示函数
/*************************************/
void main(void)//主函数
{
n=0;
MScomm();//串口初始化
while(1)//主循环
{
XS(k);
}
}
/*************************************/
void ser() interrupt 1//中断方式
{
TH0=(65536-922)/256;// 1毫秒初值
TL0=(65536-922)/256;//晶振12M
n++; if(n>100)//如果达到指定时间
{n=0;k++;}//1000为1秒
if(k>9999){k=0;}
}
/*************************************/
void MScomm(void)//串口初始化
{
TMOD=0x01;//定时器0工作方式1
EA=1;//
ET0=1;//
TH0=(65536-922)/256;// 1毫秒
TL0=(65536-922)/256;
TR0=1; //启动定时器T1
}
/*************************************/
void XS(int xs) //显示子函数
{
char d1,d2,d3,d4;
d4=(xs/1)%10; //取个位 %求余
d3=(xs/10)%10; //取十位
d2=(xs/100)%10; //取百位
d1=(xs/1000)%10; //取千位
P1=table[d4]; Axs=0; YS(10); Axs=1;//个位显示
P1=table[d3]; Bxs=0; YS(10); Bxs=1;//十位显示
P1=table[d2]; Cxs=0; YS(10); Cxs=1;//百位显示
P1=table[d1]; Dxs=0; YS(10); Dxs=1;//千位显示
}
/*************************************/
void YS( char hs)//延时函数
{
char hk;
for(;hs>0;hs--)
{ for(hk=200;hk>0;hk--); }// 10
}
/*************************************/
///////////////////////////////////////
送你啦,哈哈
只不过我用的数码管编码和你的可能不一样,根据你那实际情况修改一下即可
还有你使用的段位控制引脚
追问
谢谢
追答
恩,不必客气
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询