找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4162|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

求助大神STC89C52單片機,用數(shù)碼管顯示時間,請看程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:87568 發(fā)表于 2015-8-27 15:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STC89C52單片機,用數(shù)碼管顯示時間,請看程序:
#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);
  }
}
          

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:79908 發(fā)表于 2015-8-27 22:05 | 只看該作者
時間是0到59,并沒有60啊,-1+1 =0
回復(fù)

使用道具 舉報

板凳
ID:84033 發(fā)表于 2015-8-27 22:24 | 只看該作者
其實這個問題不是很復(fù)雜,具體的可見郭天祥老師的51單片機視頻教程
回復(fù)

使用道具 舉報

地板
ID:58502 發(fā)表于 2015-8-28 00:03 | 只看該作者
這個有點小錯誤,shi,fen,miao是uchar類型,范圍只能是0-255,不能是負數(shù),所以miao=-1是錯誤的,需要改類型為signed char有符號的,至于為什么是-1問題就在于miao++在后面,-1+1=0,如果把miao++放前面的話就可以使用0和60
回復(fù)

使用道具 舉報

5#
ID:87568 發(fā)表于 2015-8-28 13:02 | 只看該作者
liaolinhui 發(fā)表于 2015-8-28 00:03
這個有點小錯誤,shi,fen,miao是uchar類型,范圍只能是0-255,不能是負數(shù),所以miao=-1是錯誤的,需要改 ...

謝謝,你糾正了我的錯誤
回復(fù)

使用道具 舉報

6#
ID:97097 發(fā)表于 2015-11-29 18:33 | 只看該作者
受用了  謝謝 了
回復(fù)

使用道具 舉報

7#
ID:230798 發(fā)表于 2017-9-22 17:43 | 只看該作者
fm=0代表的什么意思
回復(fù)

使用道具 舉報

8#
ID:234962 發(fā)表于 2017-9-22 19:51 | 只看該作者
這個不懂啊
回復(fù)

使用道具 舉報

9#
ID:234985 發(fā)表于 2017-9-22 21:59 | 只看該作者
uchar沒有負數(shù)吧
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表