新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機秒表的程序設計

        基于51單片機秒表的程序設計

        作者: 時間:2012-07-09 來源:網絡 收藏

        1.設計目的:

        (1)利用單片機中斷和計數方式實現秒、分定時。

        (2)通過LED顯示程序的調整,熟悉8155與8051,8155與LED的接口技術,熟悉LED動態顯示的控制過程。

        (3)通過鍵盤程序的調整,熟悉8155與矩陣式鍵盤的接口技術,熟悉鍵盤掃描原理。

        (4)通過閱讀和調試簡易整體程序,學會如何編制含LED動態顯示、鍵盤掃描和中斷等多種功能的綜合程序,初步體會大型程序的編制和調試技巧。

        2. 設計步驟與要求

        (1)要求:以8位LED右邊2位顯示秒,左邊6位顯示0,實現計時顯示。以4×4矩陣鍵盤的KE0、KE1、KE2等3鍵分別實現啟動、停止、清零等功能。

        (2)方法:用單片機定時器T0中斷方式,實現1秒定時;利用單片機定時器1方式3計數,實現60秒計數。用動態顯示方式實現計時顯示,用鍵盤掃描方式取得KE0、KE1、KE2的鍵值,用鍵盤處理程序實現秒表的啟動、停止、清零等功能。

        (3)軟件設計:軟件整體設計思路是以鍵盤掃描和鍵盤處理作為主程序,LED動態顯示作為子程序。二者間的聯系是:主程序查詢有無按鍵,無按鍵時,調用二次LED動態顯示子程序(約延時8ms)后再回到按鍵查詢狀態,不斷循環;有按鍵時,LED動態顯示子程序作為按鍵防抖延時被連續調用二次(約延時16ms),待按鍵處理程序執行完后,再回到按鍵查詢狀態,同時兼顧了按鍵掃描取值的準確性和LED動態顯示的穩定性。秒定時采用定時器T0中斷方式進行,60秒計數由定時器1采用方式3完成,中斷及計數的開啟與關閉受控于按鍵處理程序。由上述設計思路可設計出軟件流程圖如圖1.1所示。

        (5)程序編制:編程時置KE0鍵為“啟動”,置KE1鍵為“停止”,置KE2鍵為“清零”,因按鍵較少,在處理按鍵值時未采用散轉指令“JMP”,而是采用條件轉移指令“CJNE”,每條指令后緊跟著一條無條件跳轉指令“AJMP”,轉至相應的按鍵處理程序,如不是上述3個按鍵值則跳回按鍵查詢狀態。8位LED顯示的數據由顯示緩沖區30H~37H單元中的數據決定,順序是從左至右,動態顯示時,每位顯示持續時間為1ms,1ms延時由軟件實現,8位顯示約耗時8ms。主程序、按鍵查詢子程序采用第0組工作寄存器,顯示子程序采用第1組工作寄存器。1秒定時采用定時器T0方式1中斷,每50ms中斷一次,用21H做50 ms計數單元,每20次為一個循環,計滿20次,60秒計數單元(20H)計數1次。60秒計數采用定時器T1方式2計數,計數脈沖采用軟件置位、復位P3.5口的方法實現,用20H單元做60秒計數單元,如定時器T1溢出,則20H單元被清零,20H單元的數據采用十進制計數,該數據被拆成個位和十位兩個數據后分別送至顯示緩沖區的30H、31H單元。

        按照上述思路可編制源程序如下:

        ORG 0000H

        AJMP MAIN

        ORG 000BH

        AJMP CONT

        燃氣報警器相關文章:燃氣報警器原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 攀枝花市| 商城县| 中宁县| 陇南市| 昌江| 思茅市| 南丹县| 土默特左旗| 敦化市| 台湾省| 鄂伦春自治旗| 中超| 米易县| 雅安市| 平昌县| 金塔县| 昌平区| 郁南县| 安岳县| 五莲县| 奈曼旗| 嘉义县| 大关县| 通城县| 湘阴县| 沂源县| 专栏| 鲁山县| 芮城县| 昌都县| 闽侯县| 杭锦旗| 南昌市| 中卫市| 平泉县| 永州市| 晋宁县| 土默特右旗| 鄄城县| 临沭县| 莒南县|