電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

用單片機(jī)AT89C51設(shè)計(jì)的數(shù)字鐘,AT89C51 Digital Clock

作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2018-02-22

用單片機(jī)AT89C51設(shè)計(jì)的數(shù)字鐘,AT89C51 Digital Clock

關(guān)鍵字:AT89C51,電子鐘電路圖,51單片機(jī)

1.實(shí)驗(yàn)任務(wù)
(1).開(kāi)機(jī)時(shí),顯示12:00:00的時(shí)間開(kāi)始計(jì)時(shí);
(2).P0.0/AD0控制“秒”的調(diào)整,每按一次加1秒;
(3).P0.1/AD1控制“分”的調(diào)整,每按一次加1分;
(4).P0.2/AD2控制“時(shí)”的調(diào)整,每按一次加1個(gè)小時(shí);
2.電路原理圖



用單片機(jī)AT89C51設(shè)計(jì)的數(shù)字鐘,AT89C51 Digital Clock       


3.系統(tǒng)板上硬件連線(xiàn)
(1).把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線(xiàn)連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的A-H端口上;
(2).把“單片機(jī)系統(tǒng):區(qū)域中的P3.0-P3.7端口用8芯排線(xiàn)連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的S1-S8端口上;
(3).把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導(dǎo)線(xiàn)連接到“獨(dú)立式鍵盤(pán)”區(qū)域中的SP3、SP2、SP1端口上;
4.相關(guān)基本知識(shí)
(1).動(dòng)態(tài)數(shù)碼顯示的方法
(2).獨(dú)立式按鍵識(shí)別過(guò)程
(3).“時(shí)”,“分”,“秒”數(shù)據(jù)送出顯示處理方法
5.程序框圖
6.匯編源程序
SECOND          EQU 30H
MINITE                    EQU 31H
HOUR            EQU 32H
HOURK          BIT P0.0
MINITEK        BIT P0.1
SECONDK        BIT P0.2
DISPBUF            EQU 40H
DISPBIT            EQU 48H
T2SCNTA            EQU 49H
T2SCNTB            EQU 4AH
TEMP              EQU 4BH
 
        ORG 00H
        LJMP START
        ORG 0BH
        LJMP INT_T0
START:  MOV SECOND,#00H
        MOV MINITE,#00H
        MOV HOUR,#12
        MOV DISPBIT,#00H
        MOV T2SCNTA,#00H
        MOV T2SCNTB,#00H
        MOV TEMP,#0FEH
        LCALL DISP
        MOV TMOD,#01H
        MOV TH0,#(65536-2000) / 256
        MOV TL0,#(65536-2000) MOD 256
        SETB TR0
        SETB ET0
        SETB EA
WT:    JB SECONDK,NK1
        LCALL DELY10MS
        JB SECONDK,NK1
        INC SECOND
        MOV A,SECOND
        CJNE A,#60,NS60
        MOV SECOND,#00H
NS60:  LCALL DISP
        JNB SECONDK,$
NK1:    JB MINITEK,NK2
        LCALL DELY10MS
        JB MINITEK,NK2
        INC MINITE
        MOV A,MINITE
        CJNE A,#60,NM60
        MOV MINITE,#00H
NM60:  LCALL DISP
        JNB MINITEK,$
NK2:    JB HOURK,NK3
        LCALL DELY10MS
        JB HOURK,NK3
        INC HOUR
        MOV A,HOUR
        CJNE A,#24,NH24
        MOV HOUR,#00H
NH24:  LCALL DISP
        JNB HOURK,$
NK3:    LJMP WT
DELY10MS:
        MOV R6,#10
D1:    MOV R7,#248
        DJNZ R7,$
        DJNZ R6,D1
        RET
DISP: 
        MOV A,#DISPBUF
        ADD A,#8
        DEC A
        MOV R1,A
        MOV A,HOUR
        MOV B,#10
        p AB
        MOV @R1,A
        DEC R1
        MOV A,B
        MOV @R1,A
        DEC R1
        MOV A,#10
        MOV @R1,A
        DEC R1
        MOV A,MINITE
        MOV B,#10
        p AB
        MOV @R1,A
        DEC R1
        MOV A,B
        MOV @R1,A
        DEC R1
        MOV A,#10
        MOV @R1,A
        DEC R1
        MOV A,SECOND
        MOV B,#10
        p AB
        MOV @R1,A
        DEC R1
        MOV A,B
        MOV @R1,A
        DEC R1
        RET
INT_T0:
        MOV TH0,#(65536-2000) / 256
        MOV TL0,#(65536-2000) MOD 256
        MOV A,#DISPBUF
        ADD A,DISPBIT
        MOV R0,A
        MOV A,@R0
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        MOV P1,A
        MOV A,DISPBIT
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV P3,A
        INC DISPBIT
        MOV A,DISPBIT
        CJNE A,#08H,KNA
        MOV DISPBIT,#00H
KNA:    INC T2SCNTA
        MOV A,T2SCNTA
        CJNE A,#100,DONE
        MOV T2SCNTA,#00H
        INC T2SCNTB
        MOV A,T2SCNTB
        CJNE A,#05H,DONE
        MOV T2SCNTB,#00H
        INC SECOND
        MOV A,SECOND
        CJNE A,#60,NEXT
        MOV SECOND,#00H
        INC MINITE
        MOV A,MINITE
        CJNE A,#60,NEXT
        MOV MINITE,#00H
        INC HOUR
        MOV A,HOUR
        CJNE A,#24,NEXT
        MOV HOUR,#00H
NEXT:  LCALL DISP
DONE:  RETI
TABLE:  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
TAB:    DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
        END

程序:7.C語(yǔ)言源程序

7.C語(yǔ)言源程序
#include
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
                              0x66,0x6d,0x7d,0x07,
                              0x7f,0x6f,0x77,0x7c,
                              0x39,0x5e,0x79,0x71,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
                            0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0,0,16,0,0,16,0,0};
unsigned char dispbitcnt;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;
unsigned char mstcnt;
unsigned char i,j;
void main(void)
{
  TMOD=0x02;
  TH0=0x06;
  TL0=0x06;
  TR0=1;
  ET0=1;
  EA=1;
  while(1)
    {
      if(P0_0==0)
        {
          for(i=5;i>0;i--)
          for(j=248;j>0;j--);
          if(P0_0==0)
            {
              second++;
              if(second==60)
                {
                  second=0;
                }
              dispbuf[0]=second;
              dispbuf[1]=second/10;
              while(P0_0==0);
            }
        }
      if(P0_1==0)
        {
          for(i=5;i>0;i--)
          for(j=248;j>0;j--);
          if(P0_1==0)
            {
              minite++;
              if(minite==60)
                {
                  minite=0;
                }
              dispbuf[3]=minite;
              dispbuf[4]=minite/10;
              while(P0_1==0);
            }
        }
      if(P0_2==0)
        {
          for(i=5;i>0;i--)
          for(j=248;j>0;j--);
          if(P0_2==0)
            {
              hour++;
              if(hour==24)
                {
                  hour=0;
                }
              dispbuf[6]=hour;
              dispbuf[7]=hour/10;
              while(P0_2==0);
            }
        }
    }
}
void t0(void) interrupt 1 using 0
{
  mstcnt++;
  if(mstcnt==8)
    {
      mstcnt=0;
      P1=dispcode[dispbuf[dispbitcnt]];
      P3=dispbitcode[dispbitcnt];
      dispbitcnt++;
      if(dispbitcnt==8)
        {
          dispbitcnt=0;
        }
    }
  tcnt++;
  if(tcnt==4000)
    {
      tcnt=0;
      second++;
      if(second==60)
        {
          second=0;
          minite++;
          if(minite==60)
            {
              minite=0;
              hour++;
              if(hour==24)
                {
                  hour=0;
                }
            }
        }
      dispbuf[0]=second;
      dispbuf[1]=second/10;
      dispbuf[3]=minite;
      dispbuf[4]=minite/10;
      dispbuf[6]=hour;
      dispbuf[7]=hour/10;
    }
}

 

Tags:單片機(jī),數(shù)字時(shí)鐘,c語(yǔ)言程序  
責(zé)任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒(méi)有了
  • 請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
    1分 2分 3分 4分 5分

    還可以輸入 200 個(gè)字
    [ 查看全部 ] 網(wǎng)友評(píng)論
    關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線(xiàn)幫助 - 文章列表
    返回頂部
    刷新頁(yè)面
    下到頁(yè)底
    晶體管查詢(xún)
    亚洲美女精品视频| 中文字幕精品一区二区精品| 在线视频你懂的国产福利| 中文字幕理伦午夜福利片| 成人爱做日本视频免费| 中文字幕被公侵犯的漂亮人妻| 成年在线网站免费观看无广告| 久久久久亚洲av无码尤物| 成人爽a毛片在线视频| 中文字幕人成乱码中国| 好男人官网在线播放| 一级做a爱一区| 在线观看亚洲成人| 99久re热视频这里只有精品6| 国产精品无码V在线观看| 4hu四虎永久免在线视| 国产日产欧美精品| 蜜臀AV一区二区| 国产乱子伦一区二区三区| 精品国产污污免费网站入口| 午夜羞羞视频在线观看| 激情综合色五月丁香六月亚洲| 亚洲综合色视频在线观看| 欧美一线不卡在线播放| 亚洲一区二区三区影院| 日本在线电影一区二区三区| 久久久久久久性| 女人洗澡一级毛片一级毛片| a级毛片无码免费真人久久| 国产精品无码素人福利免费| 黄网站色视频免费观看| 国产午夜精品理论片| 纯爱无遮挡h肉动漫在线播放| 医生系列小说合集| 欧美综合婷婷欧美综合五月| 亚洲国产精品综合久久久| 日韩一区二区三区精品| 久久aⅴ免费观看| 天天干天天做天天操| 99re免费在线视频| 国产探花在线观看|