单片机定时器,编译后数码管不显示

2019-07-15 20:54发布

本帖最后由 tangbenchang 于 2014-2-14 15:48 编辑

程序如图所示,使用定时器做数码管显示,从0-9。编译成功,仿真的时候数码管不显示,调试发现定时器不工作的样子。烦请各位指点迷津。
QQ图片20140214154748.jpg QQ图片20140214154738.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
xjtuwm@
1楼-- · 2019-07-17 10:44
 精彩回答 2  元偷偷看……
me860
2楼-- · 2019-07-17 12:59
xjtuwm@ 发表于 2014-2-23 17:39
我也写了一个程序,可是也是好像不计数,定时器也依次打开关闭,变量也定义为全局变量了,还是不行啊,不计 ...

P0=shuma[offset]; //你的shuma[offset]中,offset没有操作,当然没有变化了,参照楼主写的那个显示函数就行
星无泪
3楼-- · 2019-07-17 16:54
xjtuwm@ 发表于 2014-2-23 17:39
我也写了一个程序,可是也是好像不计数,定时器也依次打开关闭,变量也定义为全局变量了,还是不行啊,不计 ...

#include<reg52.h>

#define uchar unsigned char
#define uint unsigned int

uint offset=0;
uint count=0;

void init_sys();
void shumaguan();
void display(uint offset);
void timer0();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}

sbit dula=P2^5;
sbit wela=P2^6;


uchar code shuma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0X89,0X7F,0XBF};


void main()
{
init_sys();
while(1)
{
  shumaguan();
}

}
void init_sys()
{
dula=0;
wela=0;
TMOD=0x01;
TH0=0x3c;
TL0=0xB0;
TR0=1;
}

void init_timer0()
{
   TH0=0x3c;
   TL0=0xB0;
   TR0=1;
}

void shumaguan()
{
//uint count=0;
  if(TF0==1)
   {
    count++;
        TF0=0;
        TR0=0;
        //TH0=0x3c;
    //TL0=0xB0;
        init_timer0();
        }
        if(count==20)
        {
         count=0;
         display(offset);你的计数时间到了,变量offset没有加1,它的初始值是零,显示的肯定是零。
        }
}

void display(uint offset)
{
wela=0;
dula=0;
P0=0xdd;
wela=1;
delay(1);
wela=0;
P0=shuma[offset];这里的变量offset时间到了没加1,初始值是0显示肯定是0
dula=1;
delay(1);
dula=0;
}

xjtuwm@
4楼-- · 2019-07-17 18:49
星无泪 发表于 2014-2-23 19:51
#include

#define uchar unsigned char

糊涂糊涂了,忘了++了,明天试一下也不知道行不行
xjtuwm@
5楼-- · 2019-07-17 19:45
me860 发表于 2014-2-23 19:46
P0=shuma[offset]; //你的shuma[offset]中,offset没有操作,当然没有变化了,参照楼主写的那个显示函数 ...

对的对的,忘了++
tangbenchang
6楼-- · 2019-07-18 01:25
 精彩回答 2  元偷偷看……

一周热门 更多>