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