AT89S52单片机0~999计数显示C语言程,起始显示000,一直到999

急需!!!!!... 急需!!!!! 展开
 我来答
休闲居大伟
推荐于2017-09-11 · TA获得超过5419个赞
知道大有可为答主
回答量:6865
采纳率:91%
帮助的人:1.1亿
展开全部
/*************************************/

#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
}
/*************************************/
///////////////////////////////////////

送你啦,哈哈

只不过我用的数码管编码和你的可能不一样,根据你那实际情况修改一下即可

还有你使用的段位控制引脚
追问
谢谢
追答
恩,不必客气
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式