1、 基于AT89C51单片机,利用定时器设计一个两位数码管显示电路。 设计要求:每隔2S显示数字加1,显示初值

我下周就要用了,麻烦大家了谢谢啊... 我下周就要用了 ,麻烦大家了 谢谢啊 展开
 我来答
yying0907
2011-10-07 · 超过13用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:33.6万
展开全部

这个我仿真过了   是有用的,,,是从00开始显示 到了99会从新开始从00开始加

#include<reg51.h>

#define uchar unsigned char 

#define uint unsigned int

uchar code disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code bit_tab[]={0xfe,0xfd};

uchar disp_buf[2];

uchar shu;

uchar count;

void delay(uchar x)

{

              uchar i,j;

              for(i=0;i<x;i++)

              for(j=0;j<120;j++);

}

void conv(uchar flag)

{

              disp_buf[0]=flag/10;

              disp_buf[1]=flag%10;

}

void display()

{

               uchar tem,wei;

               P2=bit_tab[wei];

               tem=disp_buf[wei];

               P0=disp[tem];

               wei++;

               if(wei==2)

                  wei=0;

}

void time0(void) interrupt 1

{

              TH0=(65536-50000)/256;

              TL0=(65536-50000)%256;

              if(++count==40)

              {

                  count=0;

                  shu++;

                  if(shu==99)

                     shu=0;

               }

}

void time1(void) interrupt 3

{

              TH1=(65536-5000)/256;

              TL1=(65536-5000)%256;

              display();

}

void init()

{

              TMOD=0x11;

              EA=1;

              ET0=1;

              ET1=1;

              TR1=1;

              TR0=1;

}

main()

{

              init();

              while(1)

              {

                             conv(shu);

              }

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式