<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          數(shù)字鐘

          作者: 時間:2011-02-27 來源:網(wǎng)絡 收藏

          1.實驗任務

          (1. 開機時,顯示120000的時間開始計時;

          (2. P0.0/AD0控制“秒”的調(diào)整,每按一次加1秒;

          (3. P0.1/AD1控制“分”的調(diào)整,每按一次加1分;

          (4. P0.2/AD2控制“時”的調(diào)整,每按一次加1個小時;

          2.電路原理圖

          4.20.1

          3.系統(tǒng)板上硬件連線

          (1. 把“系統(tǒng)”區(qū)域中的P1.0P1.7端口用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的AH端口上;

          (2. 把“系統(tǒng):區(qū)域中的P3.0P3.7端口用8芯排線連接到“動態(tài)數(shù)碼顯示”區(qū)域中的S1S8端口上;

          (3. 把“系統(tǒng)”區(qū)域中的P0.0/AD0、P0.1/AD1P0.2/AD2端口分別用導線連接到“獨立式鍵盤”區(qū)域中的SP3、SP2SP1端口上;

          4.相關(guān)基本知識

          (1. 動態(tài)數(shù)碼顯示的方法

          (2. 獨立式按鍵識別過程

          (3. “時”,“分”,“秒”數(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

          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;

          }

          }



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();