新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 台湾省| 怀集县| 澄城县| 汝南县| 阿城市| 镇赉县| 巴塘县| 横峰县| 酉阳| 无棣县| 新和县| 宿州市| 巩留县| 来凤县| 林芝县| 莫力| 棋牌| 阳原县| 霍邱县| 虎林市| 泸西县| 南雄市| 衡东县| 镇赉县| 宁城县| 九龙城区| 融水| 黔西县| 昆山市| 敖汉旗| 都江堰市| 武穴市| 天峻县| 宕昌县| 宜章县| 临江市| 邹平县| 洛南县| 海门市| 清丰县| 灵山县|