久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)數(shù)字鐘設(shè)計(jì)

作者:89s51   來源:不詳   點(diǎn)擊數(shù):  更新時(shí)間:2007年05月16日   【字體:

1.實(shí)驗(yàn)任務(wù)

(1.       開機(jī)時(shí),顯示12:00:00的時(shí)間開始計(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.電路原理圖

圖4.20.1

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í)別過程

(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

        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;

              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;

    }

}  

關(guān)閉窗口
主站蜘蛛池模板: 国产成人自拍一区 | 久久精彩视频 | 一级特黄视频 | 成人精品一区二区三区 | 中文字幕乱码亚洲精品一区 | 国产精品一区二区三区在线播放 | 久久偷人 | www.久久久久久久久久久 | 在线国产小视频 | 国产成人综合在线 | 国产精品久久 | 成人h动漫亚洲一区二区 | 日韩精品一区二区三区四区视频 | 亚洲超碰在线观看 | 亚洲喷水 | 99久久夜色精品国产亚洲96 | 在线观看 亚洲 | 国产精品无码专区在线观看 | 欧美激情视频一区二区三区在线播放 | 日韩一区精品 | 欧美精品一区三区 | 日本不卡一区 | 欧美一级片久久 | 亚洲一区二区视频在线观看 | 国产成人精品久久二区二区91 | 婷婷五月色综合 | 亚洲精品一区二区网址 | 亚洲一区久久 | 日本视频在线播放 | 九九热在线免费观看 | 精品视频一区二区三区在线观看 | 黄色一级免费 | 国产精品中文字幕一区二区三区 | 日本在线视频一区二区 | 成人免费视频在线观看 | 九色在线视频 | 毛片一级片 | 特黄小视频 | 午夜免费影视 | 夜夜爽99久久国产综合精品女不卡 | 中文字幕第49页 |