<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開(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)板上硬件連線
      (1).把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的A-H端口上;
      (2).把“單片機(jī)系統(tǒng):區(qū)域中的P3.0-P3.7端口用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的S1-S8端口上;
      (3).把“單片機(jī)系統(tǒng)”區(qū)域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導(dǎo)線連接到“獨(dú)立式鍵盤”區(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
    4. 上一篇文章:
    5. 下一篇文章: 沒(méi)有了
    6. 請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁(yè)面
      下到頁(yè)底
      晶體管查詢
      主站蜘蛛池模板: 99久久综合狠狠综合久久aⅴ| 综合在线视频精品专区| 久久综合久久综合久久综合| 国产精品国色综合久久| 99久久综合国产精品免费| 色偷偷91久久综合噜噜噜噜| 久久久久久久综合色一本| 国产成人亚洲综合无| 久久综合狠狠色综合伊人| 色综合久久中文字幕| 亚洲国产精品综合一区在线| 亚洲综合色视频在线观看| 久久综合久久精品| 中文字幕色综合久久| 国产尹人香蕉综合在线电影| 久久婷婷五月综合色奶水99啪| 一本久道久久综合狠狠躁AV | 一本久久a久久精品综合香蕉 | 色爱无码AV综合区| 丁香五月缴情综合网| 亚洲综合小说另类图片动图| 亚洲国产天堂久久综合网站| 久久婷婷五月综合成人D啪| 色先锋资源久久综合5566| 亚洲综合在线一区二区三区 | 亚洲综合久久1区2区3区| 综合网日日天干夜夜久久| av一本久道久久综合久久鬼色| 亚洲综合色一区二区三区| 成人综合久久综合| 久久亚洲精品高潮综合色a片| 综合五月激情五月开心婷婷| 伊人色综合久久天天| 亚洲日韩在线中文字幕综合| 色婷婷狠狠久久综合五月| 青青草原综合久久大伊人导航| 乱色熟女综合一区二区三区| 国产综合一区二区在线观看| 精品久久久久久综合日本| 98精品国产综合久久| 国产亚洲综合精品一区二区三区|