新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 00-59秒計時器(利用軟件延時)

        00-59秒計時器(利用軟件延時)

        作者: 時間:2011-02-27 來源:網絡 收藏

        1. 實驗任務

        如下圖所示,在AT89S51P0P2端口分別接有兩個共陰數碼管,P0口驅動顯示秒時間的十位,而P2口驅動顯示秒時間的個位。

        2. 電路原理圖

        4.11.1

        3. 系統板上硬件連線

        (1. 把“系統”區域中的P0.0/AD0P0.7/AD7端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個ah端口上;要求:P0.0/AD0對應著a,P0.1/AD1對應著b,……P0.7/AD7對應著h

        (2. 把“系統”區域中的P2.0/A8P2.7/A15端口用8芯排線連接到“四路靜態數碼顯示模塊”區域中的任一個ah端口上;要求:P2.0/A8對應著aP2.1/A9對應著b,……P2.7/A15對應著h

        4. 程序設計內容

        (1. 在設計過程中我們用一個存儲單元作為秒計數單元,當一秒鐘到來時,就讓秒計數單元加1,當秒計數達到60時,就自動返回到0,從新秒計數。

        (2. 對于秒計數單元中的數據要把它十位數和個數分開,方法仍采用對10整除和對10求余。

        (3. 在數碼上顯示,仍通過查表的方式完成。

        (4. 一秒時間的產生在這里我們采用軟件精確延時的方法來完成,經過精確計算得到1秒時間為1.002秒。

        DELY1S: MOV R5,#100

        D2: MOV R6,#20

        D1: MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D1

        DJNZ R5,D2

        RET

        5. 程序框圖

        4.11.2

        6. 匯編源程序

        Second EQU 30H

        ORG 0

        START: MOV Second,#00H

        NEXT: MOV A,Second

        MOV B,#10

        DIV AB

        MOV DPTR,#TABLE

        MOVC A,@A+DPTR

        MOV P0,A

        MOV A,B

        MOVC A,@A+DPTR

        MOV P2,A

        LCALL DELY1S

        INC Second

        MOV A,Second

        CJNE A,#60,NEXT

        LJMP START

        DELY1S: MOV R5,#100

        D2: MOV R6,#20

        D1: MOV R7,#248

        DJNZ R7,$

        DJNZ R6,D1

        DJNZ R5,D2

        RET

        TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

        END

        7. C語言源程序

        #include AT89X51.H>

        unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,

        0x6d,0x7d,0x07,0x7f,0x6f};

        unsigned char Second;

        void delay1s(void)

        {

        unsigned char i,j,k;

        for(k=100;k>0;k--)

        for(i=20;i>0;i--)

        for(j=248;j>0;j--);

        }

        void main(void)

        {

        Second=0;

        P0=table[Second/10];

        P2=table[Second%10];

        while(1)

        {

        delay1s();

        Second++;

        if(Second==60)

        {

        Second=0;

        }

        P0=table[Second/10];

        P2=table[Second%10];

        }

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 神农架林区| 疏附县| 龙州县| 马龙县| 昆明市| 洛阳市| 彩票| 平阳县| 古丈县| 广南县| 永登县| 裕民县| 白沙| 武安市| 西丰县| 四子王旗| 新沂市| 永和县| 连云港市| 海安县| 天津市| 新建县| 翁牛特旗| 兰州市| 合川市| 红原县| 太仆寺旗| 海晏县| 恩施市| 灵寿县| 五指山市| 沙河市| 会同县| 察雅县| 绥芬河市| 微山县| 小金县| 都匀市| 阿合奇县| 洪雅县| 林芝县|