單片機應用課程設計數(shù)字電子鐘設計_第1頁
單片機應用課程設計數(shù)字電子鐘設計_第2頁
單片機應用課程設計數(shù)字電子鐘設計_第3頁
單片機應用課程設計數(shù)字電子鐘設計_第4頁
單片機應用課程設計數(shù)字電子鐘設計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、單片機應用課程設計系部名稱: 機械工程系 專業(yè)班級: 機 自 083 學 號: 學生姓名: 指導教師: 2011年06月中原工學院信息商務學院課程設計 緒論20世紀末,電子技術獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代電子產(chǎn)品性能進一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。 時間對人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當前的時間。忘記了要做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可能釀成大禍。目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著C

2、MOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。下面是單片機的主要發(fā)展趨勢。單片機應用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術也稱為微控制技術1,是傳統(tǒng)控制技術的一次革命。單片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。 數(shù)字電子鐘的應用數(shù)字鐘已成為人們?nèi)粘I钪校罕夭豢缮俚谋匦杵?,廣泛用于個人

3、家庭以及車站、碼頭、劇場、辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。由于數(shù)字集成電路技術的發(fā)展和采用了先進的石英技術4,使數(shù)字鐘具有走時準確、性能穩(wěn)定、攜帶方便等優(yōu)點,它還用于計時、自動報時及自動控制等各個領域。 數(shù)字電子鐘的意義數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數(shù)字鐘的精度超過老式鐘表, 鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、定時開關烘箱、通斷動力設備、

4、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎的。因此,研究數(shù)字鐘及擴大其應用,有著非常現(xiàn)實的意義。2 整體方案設計設計任務:請設計一個基于單片機的電子時鐘,畫出PROTEL硬件電路圖、編寫相應的軟件,完成電子時鐘的任務,并進行PROTEUS仿真。設計要求:1.啟動時顯示制作的年、月、日、制作者的學號等信息;2.24小時計時功能(精確到秒);3.整點報時功能;4.對時、分、秒進行校準; 單片機模塊驅(qū)動模塊按鍵模塊LED 顯示模塊時 鐘 模 塊電源模塊 圖1 系統(tǒng)整體框圖整個系統(tǒng)用單片機作為中央控制器,由單片機執(zhí)行采集芯片內(nèi)部時鐘信號,時鐘信號通過單片機I/O口傳給單片機,單片機

5、模塊控制驅(qū)動模塊驅(qū)動顯示模塊,通過顯示模塊來實現(xiàn)信號的輸出、LED的顯示及相關的控制功能。系統(tǒng)設有按鍵模塊用于對時間進行調(diào)整及擴展多個小鍵盤7,系統(tǒng)整體框圖如圖1所示。2.1 單片機AT89C52和基本結構9AT89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM)。主要性能有:兼容MCS51指令系統(tǒng)、32個雙向I/O口、256x8bit內(nèi)部RAM、3個16位可編程定時/計數(shù)器中斷、時鐘頻率0-24MHz、2個串行中斷、可編程UART串行通道、2個外部中斷源、6個中斷源、2個讀寫中斷口線

6、、3級加密位、低功耗空閑和掉電模式、軟件設置睡眠和喚醒功能。8052單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:中央處理器:中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負責控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。數(shù)據(jù)存儲器(RAM):8052內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,

7、而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結果或用戶定義的字型表。圖2-1 單片機8052的內(nèi)部結構程序存儲器(ROM):8052共有4096個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。定時/計數(shù)器(ROM):8052有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:8052共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。全雙工串行口:8052內(nèi)置一個全雙工串行通信口,用于與其它設備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當同步移位器使用。中斷系

8、統(tǒng):8052具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時鐘電路:8052內(nèi)置最高頻率達12MHz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8052單片機需外置振蕩電容。單片機的結構有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結構,另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結構,即普林斯頓(Princeton)結構。INTEL的MCS-52系列單片機采用的是哈佛結構的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機則采用普林斯頓結構。圖2-2 MCS-52系列單

9、片機的內(nèi)部結構MCS-52的引腳說明:MCS-52系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用。現(xiàn)在我們對這些引腳的功能加以說明:MCS-51的引腳說明:MCS-52系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用?,F(xiàn)在我們對這些引腳的功能加以說明:圖2-3 單片

10、機的引腳圖Pin9:RESET/Vpd復位信號復用腳,當8052通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復位。初始化后,程序計數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8052的初始態(tài)。8051的復位方式可以是自動復位,也可以是手動復位,。此外,RESET/V還是一復用腳,VCC掉電其間,此腳可接上備用電源,以保證單片機內(nèi)部RAM的數(shù)據(jù)不丟失。圖2-4 上電自動和

11、手動復位電路圖圖2-5 內(nèi)部和外部時鐘方式圖Pin30:ALE/PROG當訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ALE會跳過一個脈沖。 如果單片機是EPROM,在編程其間,PROG將用于輸入編程脈沖。Pin29:PSEN當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。Pin31:EA/Vpp程序存儲

12、器的內(nèi)外部選通線,8051和8751單片機,內(nèi)置有4kB的程序存儲器,當EA為高電平并且程序地址小于4kB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,EA端必須接地。2 數(shù)碼管顯示選擇方案方案一:靜態(tài)顯示。靜態(tài)顯示,即當顯示器顯示某一字符時,相應的發(fā)光二極管恒定導通或截止。該方式每一位都需要一個8 位輸出口控制。靜態(tài)顯示時較小電流能獲得較高的亮度,且字符不閃爍。但因當所需顯示的位數(shù)較多時,靜態(tài)顯示所需的I/O口數(shù)較大,造成資源的浪費6。方案二:動態(tài)顯示。即各位數(shù)碼管輪流點亮,

13、對于顯示器各位數(shù)碼管,每隔一段延時時間循環(huán)點亮一次。顯示器的亮度與導通電流、點亮時間及間隔時間的比例有關動態(tài)顯示節(jié)省了I/O口,降低了能耗8。從節(jié)省單片機芯片I/O口和降低能耗角度出發(fā),電子鐘數(shù)碼管顯示選擇設計采用方案二。3 數(shù)字鐘的硬件設計3.1 單片機最小系統(tǒng)單片機最小系統(tǒng):單片機的最小系統(tǒng)是由電源、復位、晶振、/EA=1組成,下面介紹一下每一個組成部分1.電源引腳VCC40電源端GND20接地端工作電壓為5V,另有AT89LV51工作電壓則是2.7-6V, 引腳功能一樣。 2.外接晶體引腳10XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應

14、直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。系統(tǒng)的時鐘電路設計是采用的內(nèi)部方式,即利用芯片內(nèi)部的振蕩電路。AT89單片機內(nèi)部有一個用于構成振蕩器的高增益反相放大器。引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外晶體諧振器一起構成一個自激振蕩器。外接晶體諧振器以及電容C1和C2構成并聯(lián)諧振電路,接在放大器的反饋回路中。對外接電容的值雖然沒有嚴格的要求,但電容的大小會影響震蕩器頻率的高低、震蕩器的穩(wěn)定性、起振的快速性和

15、溫度的穩(wěn)定性。因此,此系統(tǒng)電路的晶體振蕩器的值為12MHz,電容應盡可能的選擇陶瓷電容,電容值約為22F。在焊接刷電路板時,晶體振蕩器和電容應盡可能安裝得與單片機芯片靠近,以減少寄生電容,更好地保證震蕩器穩(wěn)定和可靠地工作。3. 復位RST在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現(xiàn)在此引腿時,將使單片機復位,只要這個腳保持高電平,51芯片便循環(huán)復位。復位后P0P3口均置1引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器SFR全部清零。當復位腳由高電平變?yōu)榈碗娖綍r,芯片為ROM的00H處開始運行程序。復位是由外部的復位電路來實現(xiàn)的。片內(nèi)復位電路是復位引腳RST通過一個斯密特觸發(fā)器

16、與復位電路相連,斯密特觸發(fā)器用來抑制噪聲,它的輸出在每個機器周期的S5P2,由復位電路采樣一次15。復位電路通常采用上電自動復位和按鈕復位兩種方式,此電路系統(tǒng)采用的是上電與按鈕復位電路。當時鐘頻率選用6MHz時,C取22F,RS約為200,RK約為1K。復位操作不會對內(nèi)部RAM有所影響。圖3-2 晶振連接的內(nèi)部、外部方式圖圖3-3 常用復位電路圖11(1) P0端口P0.0-P0.7 P0是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅(qū)動8個TTL。對內(nèi)部Flash程序存儲器編程時,接收指令字節(jié);校驗程序時輸出指令字節(jié),要求外接上拉電阻。在訪問外部程

17、序和外部數(shù)據(jù)存儲器時,P0口是分時轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。(2) P1端口P1.0P1.7 P1是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收低8位地址信息。(3) P2端口P2.0P2.7 P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收高8位地址和控制信息。在訪問外部程序和16位外部數(shù)據(jù)存儲器時,P2口送出高8位地址。而在訪問8位

18、地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。(4) P3端口P3.0P3.7 P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL。端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接控制信息。除此之外P3端口還用于一些專門功能,具體請看下表。 表3-1P3端口引腳兼用功能表P3引腳兼用功能串行通訊輸入(RXD)串行通訊輸出(TXD)外部中斷0( INT0)外部中斷1(INT1)定時器0輸入(T0)定時器1輸入(T1)外部數(shù)據(jù)存儲器寫選通WR外部數(shù)據(jù)存儲器寫選通RD3.1.1 在DS1302的引腳排列,其中Vcc1為后備電源,VC

19、C2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次

20、數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。SCLK始終是輸入端。 2DS1302與CPU的連接17實際上,在調(diào)試程序時可以不加電容器,只加一個32.768kHz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入DS18B20,同時顯示實時溫度。只要占用CPU一個口線即可。 LCD還可以換成LED,還可以使用北京衛(wèi)信杰科技發(fā)展生產(chǎn)的10位多功能8段液晶顯示模塊LCM101,內(nèi)含看門狗 (WDT)/時鐘發(fā)生器及兩種頻率

21、的蜂鳴器驅(qū)動電路2,顯示清晰。 DS1302時鐘芯片最小系統(tǒng)電路3.1 LED顯示電路顯示器普遍地用于直觀地顯示數(shù)字系統(tǒng)的運行狀態(tài)和工作數(shù)據(jù),按照材料及產(chǎn)品工藝,單片機應用系統(tǒng)中常用的顯示器有: 發(fā)光二極管LED顯示器、液晶LCD顯示器、CRT顯示器等。LED顯示器是現(xiàn)在最常用的顯示器之一,如下圖所示。圖3-4 LED顯示器的符號圖發(fā)光二極管(LED)由特殊的半導體材料砷化鎵、磷砷化鎵等制成,可以單獨使用,也可以組裝成分段式或點陣式LED顯示器件(半導體顯示器)。分段式顯示器(LED數(shù)碼管)由7條線段圍成8字型,每一段包含一個發(fā)光二極管。外加正向電壓時二極管導通,發(fā)出清晰的光。只要按規(guī)律控制各

22、發(fā)光段亮、滅,就可以顯示各種字形或符號12。LED數(shù)碼管有共陽、共陰之分。圖是共陽式、共陰式LED數(shù)碼管的原理圖和符號.圖3-5 共陽式、共陰式LED數(shù)碼管的原理圖和數(shù)碼管的符號圖顯示電路顯示模塊需要實時顯示當前的時間,即時、分、秒,因此需要6個數(shù)碼管,另需兩個數(shù)碼管來顯示橫。采用動態(tài)顯示方式顯示時間,硬件連接如下圖所示,時的十位和個位分別顯示在第一個和第二個數(shù)碼管3,分的十位和個位分別顯示在第四個和第五個數(shù)碼管,秒的十位和個位分別顯示在第七個和第八個數(shù)碼管,其余數(shù)碼管顯示橫線。LED顯示器的顯示控制方式按驅(qū)動方式可分成靜態(tài)顯示方式和動態(tài)顯示方式兩種。對于多位LED顯示器,通常都是采用動態(tài)掃描

23、的方法進行顯示,其硬件連接方式如下圖所示。 圖3-6 數(shù)碼管的硬件連接示意圖數(shù)碼管使用條件16:a、段及小數(shù)點上加限流電阻 b、使用電壓:段:根據(jù)發(fā)光顏色決定; 小數(shù)點:根據(jù)發(fā)光顏色決定c、使用電流:靜態(tài):總電流 80mA(每段 10mA);動態(tài):平均電流 4-5mA 峰值電流 100mA數(shù)碼管使用注意事項說明:()數(shù)碼管表面不要用手觸摸,不要用手去弄引角;()焊接溫度:度;焊接時間:()表面有保護膜的產(chǎn)品,可以在使用前撕下來。4 軟件設計與流程圖4.1 軟件設計系統(tǒng)的軟件設計也是工具系統(tǒng)功能的設計。單片機軟件的設計主要包括執(zhí)行軟件(完成各種實質(zhì)性功能)的設計和監(jiān)控軟件的設計。單片機的軟件設計

24、通常要考慮以下幾個方面的問題:(1)根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個相對獨立的部分,設計出合理的總體結構,使軟件開發(fā)清晰、簡潔和流程合理;(2)培養(yǎng)良好的編程風格,如考慮結構化程序設計、實行模塊化、子程序化。既便于調(diào)試、鏈接,又便于移植和修改;(3)建立正確的數(shù)學模型,通過仿真提高系統(tǒng)的性能,并選取合適的參數(shù);(4)繪制程序流程圖;(5)合理分配系統(tǒng)資源;(6)為程序加入注釋,提高可讀性,實施軟件工程;(7)注意軟件的抗干擾設計,提高系統(tǒng)的可靠性。4 流程圖這次的數(shù)字電子鐘設計用到很多子程序,它們的流程圖如下所示。 主程序是先開始,然后啟動中斷顯示學號和日期,之后恢復中斷進行計時,每當

25、達到整點時蜂鳴器就會鳴叫,期間還可以調(diào)試,完成后就可以顯示時間。數(shù)字電子鐘是一個將“ 時”,“分”,“秒”顯示于人的視覺器官的計時裝置。它的計時周期為24小時,顯示滿刻度為23時59分59秒,另外還有校時功能。因此,一個基本的數(shù)字鐘電路主要由顯示器“時”,“分”,“秒”和單片機,還有校時電路組成。8個數(shù)碼管的段選接到單片機的P0口,位選接到單片機的P2口。數(shù)碼管按照數(shù)碼管動態(tài)顯示的工作原理工作,將標準秒信號送入“秒單元”,“秒單元”采用60進制計數(shù)器,每累計60秒發(fā)出一個“分脈沖”信號,該信號將作為“分單元”的時鐘脈沖。“分單元”也采用60進制計數(shù)器,每累計60分鐘,發(fā)出一個“時脈沖”信號,該

26、信號將被送到“時單元”?!皶r單元”采用24進制計時器,可實現(xiàn)對一天24小時的累計。顯示電路將“時”、“分”、“秒”通過七段顯示器顯示出來。了解中斷,有助于我們對單片機的學習。中斷是一個過程,當中央處理器CPU在處理某件事情時,外部又發(fā)生了另一緊急事件,請求CPU暫停當前的工作而去迅速處理該緊急事件。處理結束后,再回到原來被中斷的地方,繼續(xù)原來的工作。引起中斷的原因或發(fā)出中斷請求的來源,稱為中斷源19。單片機一般允許有多個中斷源,當幾個中斷源同時向CPU請求中斷時,就存在CPU優(yōu)先響應哪一個中斷請求源的問題(優(yōu)先級問題),一般根據(jù)中斷源的輕重緩急排隊,優(yōu)先處理最緊急事件的中斷請求,于是便規(guī)定每一

27、個中斷源都有一個中斷優(yōu)先級別,并且CPU總是響應級別最高的中斷請求。 系統(tǒng)初始化,調(diào)用顯示子程序循環(huán)次數(shù)加1系統(tǒng)初始化,調(diào)用顯示子程序循環(huán)次數(shù)加1是否滿1秒?秒值加1N分值加1是否滿60m?N小時加1是否滿24h?NY整點時,蜂鳴器響顯示緩沖單元清零返回是否滿60s?數(shù)字電子時鐘主流程序圖開始開始開始保護現(xiàn)場,開啟中斷調(diào)用顯示學號,年月日的程序完成?關閉現(xiàn)場,返回YN顯示學號,日期的中斷子程序流程圖 按一下S1,按一下S1,調(diào)時按兩下S1,調(diào)分按三下S1調(diào)秒按下S2,加1 按下S3,減1保護現(xiàn)場開始中斷返回中斷程序,調(diào)接時間的流程圖 5 系統(tǒng)仿真5.1 PROTEUS軟件介紹Proteus軟件

28、是Labcenter Electronics公司的一款電路設計與仿真軟件,它包括ISIS、ARES等軟件模塊,ARES模塊主要用來完成PCB的設計,而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術,它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機芯片,比如MCS-51系列、PIC系列等等,以及單片機外圍電路,比如鍵盤、LED、LCD等等。通過Proteus軟件的使用我們能夠輕易地獲得一個功能齊全、實用方便的單片機實驗室14。5 電子鐘系統(tǒng)PROTEUS仿真用PROTEUS軟件,根據(jù)數(shù)字電子鐘的原理圖,畫出仿真圖,得到的圖如下所示 6 原理電路6

29、.1 總原理電路 6 單片機最小系統(tǒng)和蜂鳴器系統(tǒng)的電路 元件清單圖名稱數(shù)量型號芯片1片AT89S52六位一體數(shù)碼管1個共陰極按鍵4個晶振2個12M電容2個30p蜂鳴器1個排阻8個220歐電阻11個1.5k發(fā)光三極管7個 單片機最小系統(tǒng)蜂鳴器最小系統(tǒng)7 調(diào)試與功能說明7.1 電路調(diào)試把相應編譯好的目標程序代碼加載到單片機芯片AT89C52,可接上5V電壓源即開始進行硬件電路的調(diào)試工作。如果顯示結果不符合設計要求,即檢查電路各連接點是否正確連接,再次進行硬件電路的調(diào)試工作,或是檢查代碼程序是否符合硬件電路的設計,若有錯即進行相應的修改,編譯后,再進行硬件電路的調(diào)試工作。如此反復操作,直到調(diào)試出正確

30、結果18。7 軟件調(diào)試(1) 在計算機上運行程序調(diào)試軟件Keil,進行程序調(diào)試,若顯示0錯誤(S),0警(S)即證明程序代碼正確。(2)在Proteus軟件畫好的電路原理圖中加載程序代碼到單片機芯片AT89C52中,進行模擬仿真。若出現(xiàn)錯誤,查看錯誤后進行相應修改再進行調(diào)試與模擬仿真,直到調(diào)試出正確結果。7.1 系統(tǒng)性能測試與功能說明走時:默認為走時狀態(tài),按24小時制分別顯示“時時-分分-秒秒”,有2個“-”動態(tài)顯示,時間會按實際時間以秒為最少單位變化。走時調(diào)整:按S1對時進行調(diào)整,按一下S2加一時,按一下S3減一時;同理按兩下S1實現(xiàn)對分的調(diào)節(jié);按三下實現(xiàn)對秒的調(diào)節(jié),從而達到快速設定時間的目

31、的。時間是一個基本物理量,具有連續(xù)、自動流逝、不重復等特性。我國時間基準來自國家授時中心,人們?nèi)粘J褂玫臅r鐘就是以一定的精度與該基準保持同步的。結合時間概念和誤差理論,可以定義電子鐘的走時誤差S=S1-S2,S1表示程序?qū)嶋H運行計算所得的秒;S2表示客觀時間的標準秒。S0時表示電子鐘秒單元數(shù)值刷新滯后,即走時誤差為“慢”;反之,S0表示秒單元數(shù)值的刷新超前,即走時誤差為“快”。本次設計的單片機電子鐘系統(tǒng)中,其誤差主要來源包括晶體頻率誤差,定時器溢出誤差,延遲誤差。晶體頻率產(chǎn)生震蕩,容易產(chǎn)生走時誤差;定時器溢出的時間誤差,本應這一秒溢出,但卻在下一秒溢出,造成走時誤差;延遲時間過長或過短,都會造

32、成與基準時間產(chǎn)生偏差,造成走時誤差8 軟件調(diào)試問題及解決8.1 軟件調(diào)試問題及解決軟件程序的調(diào)試一般可以將重點放在分模塊調(diào)試上,統(tǒng)調(diào)是最后一環(huán)。軟件調(diào)試可以采取離線調(diào)試和在線調(diào)試兩種方式。前者不需要硬件仿真器,可借助于軟件仿真器即可;后者一般需要仿真系統(tǒng)的支持。本次課題,Keil軟件來調(diào)試程序,通過各個模塊程序的單步或跟蹤調(diào)試,使程序逐漸趨于正確,最后統(tǒng)調(diào)程序。仿真部分采用Proteus6 professional軟件,此軟件功能強大且操作較為簡單,可以很容易的實現(xiàn)各種系統(tǒng)的仿真。首先打開Proteus6 professional軟件,在元件庫中找到要選用的所有元件,然后進行原理圖的繪制;繪制

33、好后再選擇wave6000已經(jīng)編譯好的*.hex文件,選擇運行,觀察顯示結果,根據(jù)顯示的結果和課題的要求再修改程序,再運行查,直到滿足要求5。9 結論我在這一次數(shù)字電子鐘的設計過程中,很是受益匪淺。通過對自己在大學三年時間里所學的知識的回顧,并充分發(fā)揮對所學知識的理解和對畢業(yè)設計的思考及書面表達能力,最終完成了。這為自己今后進一步深化學習,積累了一定寶貴的經(jīng)驗。撰寫論文的過程也是專業(yè)知識的學習過程,它使我運用已有的專業(yè)基礎知識,對其進行設計,分析和解決一個理論問題或?qū)嶋H問題,把知識轉(zhuǎn)化為能力的實際訓練。培養(yǎng)了我運用所學知識解決實際問題的能力。通過這次課程設計我發(fā)現(xiàn),只有理論水平提高了;才能夠?qū)?/p>

34、課本知識與實踐相整合,理論知識服務于教學實踐,以增強自己的動手能力。這個實驗十分有意義 我獲得很深刻的經(jīng)驗。通過這次課程設計,我們知道了理論和實際的距離,也知道了理論和實際想結合的重要性,也從中得知了很多書本上無法得知的知識。我們的學習不但要立足于書本,以解決理論和實際教學中的實際問題為目的,還要以實踐相結合,理論問題即實踐課題,解決問題即課程研究,學生自己就是一個專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學習就應該采取理論與實踐結合的方式,理論的問題,也就是實踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強我們的動手能力和解決問題的能力。受時間

35、和經(jīng)驗限制,本系統(tǒng)有不足和需改進的地方:1單片機最小系統(tǒng)電路與顯示器之間的線路多而且比較雜亂,這主要是和我們的經(jīng)驗不足所致。老師也給許多指導,這是使我們受益匪淺。2元器件的分布不合理,接線端口的不正確使用,在實際的工作中要求是相當高的,我們從每一次課程設計汲取教訓,多思考比較簡單而又高效的接線方法,我們總結此類問題,找出合適的方法。3我們采用C語言程序,拋棄了繁瑣的匯編程序,但是也存在很多問題。關于消息響應機制:本次設計中在消息響應方面處理還有所欠缺。真正的消息響應機制應該是由一個獨立的進程不斷循環(huán)接收外部事件,并在接收到外部事件的同時把消息傳遞給主程序進行處理。本次試驗只是在程序中加入判斷,

36、該判斷基本能夠達到類似的效果。但是日后如果對系統(tǒng)進行改進,現(xiàn)有的機制肯定不能滿足需求。因此須采用獨立線程進行消息的響應。4. 關于時間的控制:本次設計中采用的是C語言的循環(huán)來實現(xiàn)時間的控制,精度方面通過硬件調(diào)試已經(jīng)基本滿足要求。若日后對時間精度有更高的要求還需要再程序上加以改進13。A.智能校正。通過實際測試在積累一定時間差后程序自動進行校正。 。通過使用更穩(wěn)定更精確的晶振和對程序更加精確的時間控制來滿足設計要求10 致謝首先衷心地感謝我的指導老師孫繼衛(wèi)老師。從理論上的探討到實際問題的解決,孫老師的悉心指導和建議給了我極大的幫助和支持,使我受益匪淺,在此論文完成之際,謹向?qū)O老師致以深深的謝意和

37、崇高的敬意。在這個過程中,孫繼衛(wèi)老師給了我極大的幫助,不僅是知識上的,更有很多心理上的支持,她引導我在各種雜事比較多的情況下能踏踏實實做點屬于自己的工作,讓我學會了自主學習。此外衷心感謝在本次課程設計中指點和幫助我的其他老師與同學!感謝學院為我們提供了良好課程設計儀器設備及學習環(huán)境。11 參考文獻 1 倪曉軍,章韻單片機原理與接口技術教程北京:清華大學出版社,200992 王華祥現(xiàn)代傳感技術及應用北京:化學工業(yè)出版社,200873 康華光電子技術基礎(數(shù)字部分)第五版北京:高等教育出版社,200614 康華光電子技術基礎(模擬部分)第五版北京:高等教育出版社,200615 陳正義單片機控制實習

38、D頁碼1486 譚炳煜怎樣撰寫科學論文M2版沈陽:遼寧人民出版社,1982::567 劉湘濤,江世明單片機原理與應用M北京:電子工業(yè)出版社,20068 HYPERLINK :/epub t result2王椏楠信息系統(tǒng)災難恢復能力評估方法研究D 北京:華北電力大學,2006 9 張毅剛, 彭喜源,潭曉昀MCS-51 單片機應用設計M 哈爾濱:哈爾濱工業(yè)大學出版社199710 皮紅梅,李英順單片機開發(fā)中的定時方法沈陽石油化工高等??茖W校學報2002 年12 月11 H.G.CragonThe Elements of Single-Chip Microcomputer Architecture.

39、Computer,1980 (13)274112 Mark E.Buccini.Digital countdown timer never needs battery replacement.END,2005 (11):798013 盧超.基于單片機的數(shù)字電子鐘的設計與制作.大慶師范學院學報,2006(5):4914 Scott Edwards. Crystal-Controlled Oscillator Is Heartbeat of 60-hour Timer. The Nuts and Volts of BASIC Stamps,1996(1):9510315 向繼文,廖立新.基于AT8

40、9S51 的電子鐘系統(tǒng)設計.機電產(chǎn)品開發(fā)與創(chuàng)新,2007(2):626316 劉盛雄,周奇,韋云隆.基于單片機的數(shù)字式電子鐘的設計與制作.重慶工學院學報,2006(8):9117 潘永雄.新編單片機原理與應用. 第2版.西安:西安電子科技大學出版社 200618 樊金榮,謝智文. 數(shù)字倒計時秒表的設計與實現(xiàn).中南民族大學計算機科學學院院報,2005(1):626319 魏立峰,王寶興.單片機原理與應用技術M .北京:北京大學出版社,2006. 12 附錄#include #include ds1302.h#define KeyPort P3 /按鍵端口#define DataPort P0 /

41、數(shù)據(jù)端口sbit LATCH1=P22;/段鎖存sbit LATCH2=P23;/位鎖存sbit P2_0=P20;/報警sbit P2_5=P25;sbit P2_7=P27;unsigned int panduan,baojing;unsigned int bian1;/調(diào)時unsigned int bian2,bian3,bian4,bian5,bian6;/鬧鐘bit ReadTimeFlag;/定義讀時間標志unsigned int xianshi,shijian;/顯示學好是用unsignedcharcode dofly_DuanMa10=0 x3f,0 x06,0 x5b,0 x

42、4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/ 顯示段碼值09unsigned char code dofly_WeiMa=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/位碼unsigned char TempData8; /存儲顯示值的全局變量void DelayUs2x(unsigned char t);/us級延時函數(shù)聲明 void DelayMs(unsigned char t); /ms級延時void Display(unsigned char FirstBit,unsigned char Num)

43、;/數(shù)碼管顯示函數(shù)+報警函數(shù) unsigned char KeyScan(void);/鍵盤掃描void Init_Timer0(void);/定時器初始化void main (void)unsigned char num;/鍵盤掃描Init_Timer0(); /定時器初始化Ds1302_Init(); / DS1302初始化Ds1302_Write_Time();/向DS1302寫入時鐘數(shù)據(jù)while (1) /主循環(huán) num=KeyScan(); switch(num) case 1:bian1+;if(bian1=4)bian1=0;break;/設置時間case 2:if(bian1

44、=1) /設置時間加1 time_buf14+;if(time_buf14=24)time_buf14=0; Ds1302_Write_Time();/小時 else if(bian1=2) time_buf15+;if(time_buf15=60)time_buf15=0; Ds1302_Write_Time();/分 else if(bian1=3) time_buf16+;if(time_buf16=60)time_buf15=0; Ds1302_Write_Time(); /秒 break;case 3:if(bian1=1) /設置時間減1 time_buf14-;if(time_b

45、uf14=255)time_buf14=23; Ds1302_Write_Time();/小時 else if(bian1=2) time_buf15-;if(time_buf15=255)time_buf15=59; Ds1302_Write_Time();/分 else if(bian1=3) time_buf16-;if(time_buf16=255)time_buf15=59; Ds1302_Write_Time(); /秒 break; case 4:bian2+;if(bian2=2)bian2=0;break;/切換顯示、鬧鈴case 5:bian3+;if(bian3=4)bi

46、an3=0;break;/設置鬧鐘時間case 6:if(bian3=1) /加1 bian4+;if(bian4=24)bian4=0;/小時 else if(bian3=2) bian5+;if(bian5=60)bian5=0;/分 else if(bian3=3) bian6+;if(bian6=60)bian6=0; /秒 break;case 7:if(bian3=1) /減1 bian4-;if(bian4=255)bian4=23;/小時 else if(bian3=2) bian5-;if(bian5=255)bian5=59;/分 else if(bian3=3) bian

47、6-;if(bian6=255)bian6=59; /秒 break;case 8:panduan+;if(panduan=2)panduan=0; if(panduan=1) baojing=1; else baojing=0; default:break; if(ReadTimeFlag=1) ReadTimeFlag=0; Ds1302_Read_Time(); if(shijian=0)/顯示制作著學號前六位 TempData0=0 x5b;/2 TempData1=0 x3f;/0 TempData2=0 x3f;/0 TempData3=0 x7f;/8 TempData4=0 x

48、7f;/8 TempData5=0 x3f;/0 else if(shijian=1)/顯示制作著學號后六位 TempData0=0 x07;/7 TempData1=0 x5b; /2 TempData2=0 x66;/4 TempData3=0 x4f;/3 TempData4=0 x3f;/0 TempData5=0 x6f;/9 else if(shijian=2)/顯示制作年、月、日 TempData0=dofly_DuanMatime_buf11/10;/年 TempData1=dofly_DuanMatime_buf11%10; TempData2=dofly_DuanMatim

49、e_buf12/10;/月 TempData3=dofly_DuanMatime_buf12%10; TempData4=dofly_DuanMatime_buf13/10;/日 TempData5=dofly_DuanMatime_buf13%10; else if(shijian=3)/顯示周 秒 TempData0=0 x40; TempData1=dofly_DuanMatime_buf17%10;/周 TempData2=0 x40;/加入- TempData3=0; TempData4=dofly_DuanMatime_buf16/10;/秒 TempData5=dofly_Dua

50、nMatime_buf16%10; else if(shijian=4) if(bian2=0)/設置時間 if(bian1=0)/正常顯示 TempData0=dofly_DuanMatime_buf14/10;/時 TempData1=dofly_DuanMatime_buf14%10; TempData2=dofly_DuanMatime_buf15/10;/分 TempData3=dofly_DuanMatime_buf15%10; TempData4=dofly_DuanMatime_buf16/10;/秒 TempData5=dofly_DuanMatime_buf16%10; e

51、lse if(bian1=1)/調(diào)時 TempData0=dofly_DuanMatime_buf14/10;/時 TempData1=dofly_DuanMatime_buf14%10; TempData2=0 x40;/分 TempData3=0 x40; TempData4=0 x40;/秒 TempData5=0 x40; else if(bian1=2)/調(diào)分 TempData0=0 x40;/時 TempData1=0 x40; TempData2=dofly_DuanMatime_buf15/10;/分 TempData3=dofly_DuanMatime_buf15%10; T

52、empData4=0 x40;/秒 TempData5=0 x40; else if(bian1=3)/調(diào)秒 TempData0=0 x40;/時 TempData1=0 x40; TempData2=0 x40;/分 TempData3=0 x40; TempData4=dofly_DuanMatime_buf16/10;/秒 TempData5=dofly_DuanMatime_buf16%10; else if(bian2=1)/設置鬧鐘 if(bian3=0) TempData0=dofly_DuanMabian4/10;/時 TempData1=dofly_DuanMabian4%10; TempData2=dofly_DuanMabian5/10;/分 TempData3=dofly_DuanMabian5%10; TempData4=dofly_DuanMabian6/10;/秒 TempData5=dofly_DuanMabian6%10; else if(bian3=1)/設置小時 TempData0=dofly_DuanMabian4/10;/時 TempData1=dofly_DuanMa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論