找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3819|回复: 8
收起左侧

求助大神STC89C52单片机,用数码管显示时间,请看程序

[复制链接]
ID:87568 发表于 2015-8-27 15:55 | 显示全部楼层 |阅读模式
STC89C52单片机,用数码管显示时间,请看程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar num,a,a1,b,b1,c,c1;
uchar shi,fen,miao;
sbit fm=P3^4;

void delay(uchar time)
{
  uchar i,j;
  for(i=time;i>0;i--)
    for(j=110;j>0;j--);
}

void init()
{
  TMOD=0x01;
  TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;
  EA=1;
  ET0=1;
  TR0=1;
}

void display(char a,a1,b,b1,c,c1)
{
  P1=0x00;
  P2=table[a];
  delay(5);
  P1=0x01;
  P2=table[a1];
  delay(5);
  P1=0x02;
  P2=0x40;
  delay(5);

  P1=0x03;
  P2=table;
  delay(5);
  P1=0x04;
  P2=table[b1];
  delay(5);
  P1=0x05;
  P2=0x40;
  delay(5);

  P1=0x06;
  P2=table[c];
  delay(5);
  P1=0x07;
  P2=table[c1];
  delay(5);
}

void t0_time() interrupt 1
{
  TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;
  num++;
}

void main()
{
  init();
  shi=15;
  fen=31;
  miao=00;
  while(1)
  {
    if(num==20)
        {
          num=0;
          if(miao==59)   //问题一:为什么miao==59而不等于60
          {
            miao=-1;     //问题二:为什么不是miao=0
            if(fen==59)
            {
                  fen=-1;
              if(shi==24)
                   shi=-1;
                  shi++;
                 }
                 fen++;
                 if(fen==50){fm=0;delay(80);fm=1;}
           }
           miao++;
         }
   a=shi/10;
   a1=shi%10;
   b=fen/10;
   b1=fen%10;
   c=miao/10;
   c1=miao%10;
   display(a,a1,b,b1,c,c1);
  }
}
          

回复

使用道具 举报

ID:79908 发表于 2015-8-27 22:05 | 显示全部楼层
时间是0到59,并没有60啊,-1+1 =0
回复

使用道具 举报

ID:84033 发表于 2015-8-27 22:24 | 显示全部楼层
其实这个问题不是很复杂,具体的可见郭天祥老师的51单片机视频教程
回复

使用道具 举报

ID:58502 发表于 2015-8-28 00:03 | 显示全部楼层
这个有点小错误,shi,fen,miao是uchar类型,范围只能是0-255,不能是负数,所以miao=-1是错误的,需要改类型为signed char有符号的,至于为什么是-1问题就在于miao++在后面,-1+1=0,如果把miao++放前面的话就可以使用0和60
回复

使用道具 举报

ID:87568 发表于 2015-8-28 13:02 | 显示全部楼层
liaolinhui 发表于 2015-8-28 00:03
这个有点小错误,shi,fen,miao是uchar类型,范围只能是0-255,不能是负数,所以miao=-1是错误的,需要改 ...

谢谢,你纠正了我的错误
回复

使用道具 举报

ID:97097 发表于 2015-11-29 18:33 | 显示全部楼层
受用了  谢谢 了
回复

使用道具 举报

ID:230798 发表于 2017-9-22 17:43 | 显示全部楼层
fm=0代表的什么意思
回复

使用道具 举报

ID:234962 发表于 2017-9-22 19:51 | 显示全部楼层
这个不懂啊
回复

使用道具 举报

ID:234985 发表于 2017-9-22 21:59 | 显示全部楼层
uchar没有负数吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表