• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      20. 數字鐘﹝★﹞
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/5/5 19:08:02] 級別[0] [評論] [收藏]
       
      1. 實驗任務
      (1.       開機時,顯示12:00:00的時間開始計時;
      (2.       P0.0/AD0控制“秒”的調整,每按一次加1秒;
      (3.       P0.1/AD1控制“分”的調整,每按一次加1分;
      (4.       P0.2/AD2控制“時”的調整,每按一次加1個小時;
      2. 電路原理圖
      圖4.20.1
      3. 系統板上硬件連線
      (1.       把“單片機系統”區域中的P1.0-P1.7端口用8芯排線連接到“動態數碼顯示”區域中的A-H端口上;
      (2.       把“單片機系統:區域中的P3.0-P3.7端口用8芯排線連接到“動態數碼顯示”區域中的S1-S8端口上;
      (3.       把“單片機系統”區域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導線連接到“獨立式鍵盤”區域中的SP3、SP2、SP1端口上;
      4. 相關基本知識
      (1.       動態數碼顯示的方法
      (2.       獨立式按鍵識別過程
      (3.       “時”,“分”,“秒”數據送出顯示處理方法
      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
              DIV 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
              DIV 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
              DIV 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語言源程序
      #include <AT89X51.H>
      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%10;
                    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%10;
                    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%10;
                    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%10;
            dispbuf[1]=second/10;
            dispbuf[3]=minite%10;
            dispbuf[4]=minite/10;
            dispbuf[6]=hour%10;
            dispbuf[7]=hour/10;
          }
      }
      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版