|
摘 要 近年來隨著計算機在社會領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機的應(yīng)用正在不斷地走向深入,本設(shè)計中以單片機的發(fā)展過程和發(fā)展方向為背景,中斷的工作原理和操作方法,以單片機(AT89C52)為核心,結(jié)合相關(guān)的元器件數(shù)碼顯示器,再配以相應(yīng)的軟件,使它具有時,分,秒顯示的功能,并且時,分,秒還可以調(diào)整。此次設(shè)計電子數(shù)字鐘是為了解電子數(shù)字鐘的原理,通過Keil C51編譯軟件,再利用Proteus仿真軟件仿真原理圖使我們掌握用單片機制作數(shù)字鐘. 關(guān)鍵詞: AT89C52、Keil C51、Proteus 目 錄摘 要 目 錄 一、設(shè)計目的與背景 1.1 設(shè)計目的 1.2 設(shè)計背景 1.3 數(shù)字鐘的意義 二、設(shè)計內(nèi)容及要求 2.1 任務(wù)及要求 2.2 系統(tǒng)功能說明 三、整體設(shè)計方案 3.1 單片機的基本介紹 3.1.1 單片機的特點 3.1.2 單片機的主要應(yīng)用領(lǐng)域 3.2 單片機的結(jié)構(gòu) 3.2.1 MCS-52單片機內(nèi)部結(jié)構(gòu) 3.2.3 MCS-52的引腳說明 3.3 硬件設(shè)計 3.3.1 硬件設(shè)計的原則 3.3.2 單片機的型號選擇 3.3.3 LED數(shù)碼管 3.3.4 按鍵控制電路 3.4 軟件設(shè)計 3.4.1 軟件程序設(shè)計 3.4.2 定時中斷程序設(shè)計 四、電路設(shè)計和仿真實現(xiàn) 4.1 電路設(shè)計原理: 4.2 Proteus軟件介紹 4.3 Keil C調(diào)試環(huán)境介紹 4.4電路連接圖 五、總結(jié) 附錄 附錄1 軟件設(shè)計代碼 一、設(shè)計目的與背景
1.1 設(shè)計目的(1)通過對課題設(shè)計方案的分析、選擇、比較、熟悉單片機用系統(tǒng)開發(fā)、研制的過程,軟硬件設(shè)計的方法、內(nèi)容及步驟。 (2)培養(yǎng)針對課題需要,選擇和查閱有關(guān)手冊、圖表及文獻資料的自學(xué)能力,提高組成系統(tǒng)、編程、調(diào)試的動手能力; (3)提高綜合及靈活運用所學(xué)知識解決工業(yè)控制的能力,培養(yǎng)動手能力和實際應(yīng)用能力。 1.2 設(shè)計背景目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。下面是單片機的主要發(fā)展趨勢。單片機應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。 單片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。 1.3 數(shù)字鐘的意義數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時、分、秒的數(shù)字顯示計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關(guān)烘箱、通斷動力設(shè)備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴大其應(yīng)用,有著非常現(xiàn)實的意義。 二、設(shè)計內(nèi)容及要求
2.1 任務(wù)及要求①通過單片機內(nèi)定時器控制走時,準(zhǔn)確持續(xù)走時,調(diào)時不影響走時。 ②在八個數(shù)碼管上顯示時、分、秒及兩個杠。 ③含有鬧鐘功能,可以設(shè)定鬧鈴時間。 ④到達鬧鐘時刻蜂鳴器警報。 2.2 系統(tǒng)功能說明電子鐘的格式為:XX-XX-XX ,由左向右分別為:時、分、秒。完成顯示由秒01一直加1至59,再恢復(fù)為00;分加1,由00至01,一直加1至59,再恢復(fù)00;時加1,時由00加至23之后秒、分、時全部清零。 三、整體設(shè)計方案本課題整體設(shè)計方案分為硬件設(shè)計和軟件設(shè)計。 硬件電路設(shè)計主要是用單片機和LED顯示屏連接組成,另外加入按鍵,開關(guān),蜂鳴器等;軟件編程設(shè)計室用C編程,Keil C51調(diào)試。 3.1 單片機的基本介紹 單片機微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片機微型計算機簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。 通常,單片機由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計算機的基本功能部件[1]:中央處理器、存儲器和I/O接口電路等。因此,單片機只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機控制系統(tǒng)。 3.1.1 單片機的特點 單片機經(jīng)過三代的發(fā)展,正朝著多功能、高性能、低電壓、低功耗、低價格、大存儲容量、強大的I/O功能及較好的結(jié)構(gòu)兼容性方向發(fā)展。其發(fā)展趨勢不外乎以下幾個方面: 1、多功能 單片機中盡可能地把所需要的存儲器和I/O口都集成在一塊芯片上,使得單片機可以實現(xiàn)更多的功能。比如A/D、PWM、PCA(可編程計數(shù)器陣列)、WDT(監(jiān)視定時器---看家狗)、高速I/O口及計數(shù)器的捕獲/比較邏輯等。 有的單片機針對某一個應(yīng)用領(lǐng)域,集成了相關(guān)的控制設(shè)備,以減少應(yīng)用系統(tǒng)的芯片數(shù)量。例如,有的芯片以51內(nèi)核為核心,集成了USB控制器、SMART CARD接口、MP3解碼器、CAN或者I C總線控制器等,LED、LCD或VFD顯示驅(qū)動器也開始集成在8位單片機中。 2、高效率和高性能 為了提高執(zhí)行速度和執(zhí)行效率,單片機開始使用RISC、流水線和DSP的設(shè)計技術(shù),使單片機的性能有了明顯的提高,表現(xiàn)為:單片機的時鐘頻率得到提高;同樣頻率的單片機運行效率也有了很大的提升;由于集成度的提高,單片機的尋址能力、片內(nèi)ROM(FLASH)和RAM的容量都突破了以往的數(shù)量和限制。 由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開始使用高級語言(如C語言)來開發(fā)單片機的程序。使用高級語言可以降低開發(fā) 難度,縮短開發(fā)周期,增強軟件的可讀性和可移植性,便于改進和擴充功能。 3、低電壓和低功耗 單片機的嵌入式應(yīng)用決定了低電壓和低功耗的特性。由于CMOS等工藝的大量采用,很多單片機可以在更低的電壓下工作(1.2V或0.9V),功耗已經(jīng)降低到uA級。這些特性使得單片機系統(tǒng)可以在更小電源的支持下工作更長的時間。 4、低價格 單片機應(yīng)用面廣,使用數(shù)量大,帶來的直接好處就是成本的降低。目前世界各大公司為了提高競爭力,在提高單片機性能的同時,十分注意降低產(chǎn)品的價格。 3.1.2 單片機的主要應(yīng)用領(lǐng)域(1)家用電器領(lǐng)域 用單片機控制系統(tǒng)取代傳統(tǒng)的模擬和數(shù)字控制電路,使家用電器(如洗衣機、空調(diào)、冰箱、微波爐、和電視機等)功能更完善,更加智能化和易于使用。 (2)辦公自動化領(lǐng)域 單片機作為嵌入式系統(tǒng)廣泛應(yīng)用于現(xiàn)代辦公設(shè)備,如計算機的鍵盤、磁盤驅(qū)動、打印機、復(fù)印機、電話機和傳真機等。 (3)商業(yè)應(yīng)用領(lǐng)域 商業(yè)應(yīng)用系統(tǒng)部分與家用和辦公應(yīng)用系統(tǒng)相似,但更加注重設(shè)備的穩(wěn)定性、可靠性和安全性。商用系統(tǒng)中廣泛使用的電子計量儀器、收款機、條形碼閱讀器、安全監(jiān)測系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)和冷凍保鮮系統(tǒng)等,都采用了單片機構(gòu)成的專用系統(tǒng)。與通用計算機相比,這些系統(tǒng)由于比較封閉,可以更有效地防止病毒和電磁干擾等,可靠性更高。 (4)工業(yè)自動化 在工業(yè)控制和機電一體化控制系統(tǒng)中,除了采用工控計算機外,很多都是以單片機為核心的單片機和多機系統(tǒng)。 (5)智能儀表與集成智能傳感器 目前在各種電氣測量儀表中普遍采用了單片機應(yīng)用系統(tǒng)來代替?zhèn)鹘y(tǒng)的測量系統(tǒng),使得測量系統(tǒng)具有存儲、數(shù)據(jù)處理、查詢及聯(lián)網(wǎng)等智能功能。將單片機和傳感器相結(jié)合,可以構(gòu)成新一代的智能傳感器。它將傳感器變換后的物理量作進一步的變化和處理,使其成為數(shù)字信號,可以遠(yuǎn)距離傳輸并與計算機接口。 (6)現(xiàn)代交通與航空航天領(lǐng)域 通常應(yīng)用于電子綜合顯示系統(tǒng)、動力監(jiān)控系統(tǒng)、自動駕駛系統(tǒng)、通信系統(tǒng)以及運行監(jiān)視系統(tǒng)等。這些領(lǐng)域?qū)w積、功耗、穩(wěn)定性和實時性的要求往往比商用系統(tǒng)還要高,因此采用單片機系統(tǒng)更加重要。 3.2 單片機的結(jié)構(gòu)
3.2.1 MCS-52單片機內(nèi)部結(jié)構(gòu) 8052單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。 1. 中央處理器[3]: 中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。 2.?dāng)?shù)據(jù)存儲器(RAM) 8052內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。如圖1 
圖1 單片機8052的內(nèi)部結(jié)構(gòu) 3.程序存儲器(ROM): 8052共有4096個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。 4.定時/計數(shù)器: 8052有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。 5.并行輸入輸出(I/O)口: 8052共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。 6.全雙工串行口: 8052內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。 7.中斷系統(tǒng): 8052具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。 8.時鐘電路: 8052內(nèi)置最高頻率達12MHz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8052單片機需外置振蕩電容。 單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。 Intel的MCS-52系列單片機采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機則采用普林斯頓結(jié)構(gòu)。 下圖2是MCS-52系列單片機的內(nèi)部結(jié)構(gòu)示意圖。 
圖2 MCS-52系列單片機的內(nèi)部結(jié)構(gòu) 3.2.3 MCS-52的引腳說明MCS-52系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用。現(xiàn)在我們對這些引腳的功能加以說明。如圖3 
圖3 單片機的引腳圖 P0端口[P0.0-P0.7]:P0是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅(qū)動8個TTL。 對內(nèi)部Flash程序存儲器編程時,接收指令字節(jié);校驗程序時輸出指令字節(jié),要求外接上拉電阻。 在訪問外部程序和外部數(shù)據(jù)存儲器時,P0口是分時轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。 P1端口[P1.0-P1.7]:P1是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收低8位地址信息。 P2端口[P2.0-P2.7]:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收高8位地址和控制信息。 在訪問外部程序和16位外部數(shù)據(jù)存儲器時,P2口送出高8位地址。而在訪問8位地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。 P3端口[P3.0—P3.7]:是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。 對內(nèi)部Flash程序存儲器編程時,接控制信息。除此之外P3端口還用于一些專門功能,見表1。
表1 P3端口引腳兼用功能表 Pin 9: RESET復(fù)位信號復(fù)用腳,當(dāng)8052通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8052的初始態(tài)。 Pin30: ALE/ 當(dāng)訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當(dāng)作一個時鐘向外輸出。更有一個特點,當(dāng)訪問外部程序存儲器,ALE會跳過一個脈沖。 對Flash 存儲器編程期間,該引腳還用于輸入編程脈沖 (PROG)。 如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一 條MOVX 和MOVC 指令才能將ALE 激活。此外,該引腳會被微 拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE 禁止位無效。 Pin29: 當(dāng)訪問外部程序存儲器時,此腳輸出負(fù)脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。 Pin31: EA/Vpp程序存儲器的內(nèi)外部選通線,8051和8751單片機,內(nèi)置有4kB的程序存儲器,當(dāng)EA為高電平并且程序地址小于4kB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,EA端必須接地。 3.3 硬件設(shè)計3.3.1 硬件設(shè)計的原則在性價比滿足應(yīng)用系統(tǒng)要求的情況下,選擇更可靠,更熟悉的單片機縮短研制周期。盡可能選擇自己較為熟悉的應(yīng)用電路,以提高系統(tǒng)的可靠性。 單片機內(nèi)部的資源與外部的擴展資源應(yīng)在滿足系統(tǒng)設(shè)計的基礎(chǔ)上留有余地,為進一步的升級和擴展提供方便。 應(yīng)充分的結(jié)合軟件方案考慮硬件的結(jié)構(gòu),通常硬件功能較完善,其相應(yīng)的軟件程序就簡單,但硬件的成本較高,而功能較低,其相應(yīng)的軟件就復(fù)雜,其實際常用軟件代替硬件來降低成本。 整個系統(tǒng)相關(guān)的器件盡可能的做到性能相匹配。 3.3.2 單片機的型號選擇目前,我國生產(chǎn)很多型號的單片機,在此,我們采用型號為AT89C52的單片機。因為AT89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-52指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89C52提供了高性價比的解決方案。 AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規(guī)方法進行編程,但不可以在線編程(S系列的才支持在線編程)。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。 AT89C52主要功能特性: · 兼容MCS51指令系統(tǒng) · 8k可反復(fù)擦寫(>1000次)Flash ROM · 32個雙向I/O口 · 256x8bit內(nèi)部RAM · 3個16位可編程定時/計數(shù)器中斷 · 時鐘頻率0-24MHz · 2個串行中斷 · 可編程UART串行通道 · 2個外部中斷源 · 共8個中斷源 · 2個讀寫中斷口線 · 3級加密位 · 低功耗空閑和掉電模式 · 軟件設(shè)置睡眠和喚醒功能 3.3.3 LED數(shù)碼管LED數(shù)碼管是顯示常用電子元器件,它是由發(fā)光二極管構(gòu)成的,亦稱半導(dǎo)體數(shù)碼管。將條狀發(fā)光二極管按照共陰極(負(fù)極)或共陽極(正極)的方法連接,組成“8”字,再把發(fā)光二極管另一電極作筆段電極,就構(gòu)成了LED數(shù)碼管。 下面將介紹它的性能特點: (1)能在低電壓、小電流條件下驅(qū)動發(fā)光,能與CMOS、ITL電路兼容。 (2)發(fā)光響應(yīng)時間極短(<0.1μs),高頻特性好,單色性好,亮度高。 (3)體積小,重量輕,抗沖擊性能好。 (4)成本低,壽命長,使用壽命在10萬小時以上,甚至可達100萬小時。 首先介紹一下七段數(shù)碼管的引腳圖,如圖4。 圖4 七段數(shù)碼管引腳圖 數(shù)碼管使用條件: A、段及小數(shù)點上加限流電阻。 B、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點:根據(jù)發(fā)光顏色決定。 C、使用電流:靜態(tài):總電流 80mA(每段 10mA); 動態(tài):平均電流 4-5mA 峰值電流100mA。 LED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數(shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。如圖5 
A、共陰極七段數(shù)碼管 B、共陽極七段數(shù)碼管 圖5 將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。以共陰式為例,如把陰極接地,在相應(yīng)段的陽極接上正電源,該段即會發(fā)光。當(dāng)然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如我們將"b"和"c"段接上正電源,其它端接地或懸空,那么"b"和"c"段發(fā)光,此時,數(shù)碼管顯示將顯示數(shù)字“1”。而將"a"、"b"、"d"、"e"和"g"段都接上正電源,其它引腳懸空,此時數(shù)碼管將顯示“2”。其它字符的顯示原理類同。 對于多位LED顯示器,通常都是采用動態(tài)掃描的方法進行顯示。 3.3.4 按鍵控制電路當(dāng)用手按下一個鍵時,如圖6所示,往往按鍵在閉合位置和斷開位置之間跳幾下才穩(wěn)定到閉合狀態(tài)的情況;在釋放一個鍵時,也回會出現(xiàn)類似的情況,這就是抖動。這是使用按鍵控制不可避免的問題。 抖動的持續(xù)時間隨鍵盤材料和操作員而異,不過通常總是不大于10ms。很容易想到,抖動問題不解決就會引起對閉合鍵的識別。用軟件方法可以解決抖動問題,這就是通過延遲10ms來等待抖動消失,這之后,在讀入按鍵碼。 
圖 6 3.4 軟件設(shè)計3.4.1 軟件程序設(shè)計 本設(shè)計的軟件程序包括主程序、定時中斷子程序、時鐘顯示子程序和延時子程序等等。 主程序是先開始執(zhí)行的,然后啟動定時器,定時器啟動后在進行按鍵檢測,檢測完后,就可以顯示時間。 按鍵處理是先檢測秒按鍵是否按下,分按鍵如果按下,分就加1,如果沒有按下,就檢測時按鍵是否按下;時按鍵如果按下,時就加1,如果沒有按下,就把時間顯示出來。 定時器中斷是先檢測1秒是否到,1秒如果到,秒單元就加1;如果沒到,就檢測1分鐘是否到,1分鐘如果到,分單元就加1;如果沒到,就檢測1小時是否到,1小時如果到,時單元就加1,如果沒到,就顯示時間。 時間顯示是先秒個位計算顯示,然后是秒十位計算顯示,再是分個位計算顯示,再然后是分十位顯示,再就是時個位計算顯示,最后是時十位顯示。 主程序流程圖,如圖6 圖6 源程序流程圖 3.4.2 定時中斷程序設(shè)計單片機的定時功能也是通過計數(shù)器的計數(shù)來實現(xiàn)的,此時的計數(shù)脈沖來自單片機的內(nèi)部,即每個機器周期產(chǎn)生一個計數(shù)脈沖,也就是每經(jīng)過1個機器周期的時間,計數(shù)器加1。 如果89C52采用的12MHz晶體,則計數(shù)頻率為1MHz,即每過1us的時間計數(shù)器加1。這樣可以根據(jù)計數(shù)值計算出定時時間,也可以根據(jù)定時時間的要求計算出計數(shù)器的初值。89C52單片機的定時器/計數(shù)器具有4種工作方式,其控制字均在相應(yīng)的特殊功能寄存器中,通過對特殊功能寄存器的編程,可以方便的選擇定時器/計數(shù)器兩種工作模式和4種工作方式。 定時器/計數(shù)器工作在方式0時,為13位的計數(shù)器,由TLX(X=0、1)的低5位和THX的高8位所構(gòu)成。TLX低5位溢出則向THX進位,THX計數(shù)溢出則置位TCON中的溢出標(biāo)志位TFX. 當(dāng)定時器/計數(shù)器工作于方式1,為16位的計數(shù)器。本設(shè)計師單片機多功能定時器,所以MCS-51內(nèi)部的定時器/計數(shù)器被選定為定時器工作模式,計數(shù)輸入信號是內(nèi)部時鐘脈沖,每個機器周期產(chǎn)生一個脈沖使計數(shù)器增1。 四、電路設(shè)計和仿真實現(xiàn)4.1 電路設(shè)計原理:1. 將整個硬件系統(tǒng)劃分為若干功能單元電路,繪出整個系統(tǒng)邏輯電路圖,注明各交單元電路間接口信號 ; 2. 完成各單元電路設(shè)計,包括選擇合適的各類元器件和電路板設(shè)計(元件布局和走線)。 3.整個硬件圖由七段數(shù)碼管、89C52單片機、按鍵、電容、電解電容、石英晶振、電阻、排阻、和蜂鳴器組成。 4.2 Proteus軟件介紹Proteus軟件是Labcenter Electronics公司的一款電路設(shè)計與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設(shè)計,而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機芯片,比如MCS-51系列、PIC系列等等,以及單片機外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個功能齊全、實用方便的單片機實驗室。 4.3 Keil C調(diào)試環(huán)境介紹Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻 4.4電路連接圖Proteus仿真和Keil C聯(lián)調(diào) 用PROTUES軟件,根據(jù)數(shù)字電子鐘的原理圖,畫出仿真圖,得到的圖如下所示。
圖7 電路連接圖 五、總結(jié)從任務(wù)要求出發(fā),分析如何實現(xiàn)功能,通過這次課程設(shè)計使我對單片機有了深入的認(rèn)識,特別是對定時中斷方式有了直觀的認(rèn)識,設(shè)計數(shù)字鐘我們用單片機內(nèi)部定時\計數(shù)器,通過設(shè)置定時器產(chǎn)生精確的定時中斷,達到計時的目的。 這個數(shù)字鐘還可以進一步的加入功能,在以后的設(shè)計中,逐漸增加其他的功能,比如說加溫度檢測,加秒表和顯示日期和星期等來進一步完善這個電子鐘。
附錄2 Proteus仿真圖
完整的Word格式文檔51黑下載地址:
|