![基于51單片機(jī)數(shù)字時(shí)鐘 課程設(shè)計(jì)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ec38b241-d606-4531-a3e4-662785302ffe/ec38b241-d606-4531-a3e4-662785302ffe1.gif)
![基于51單片機(jī)數(shù)字時(shí)鐘 課程設(shè)計(jì)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ec38b241-d606-4531-a3e4-662785302ffe/ec38b241-d606-4531-a3e4-662785302ffe2.gif)
![基于51單片機(jī)數(shù)字時(shí)鐘 課程設(shè)計(jì)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ec38b241-d606-4531-a3e4-662785302ffe/ec38b241-d606-4531-a3e4-662785302ffe3.gif)
![基于51單片機(jī)數(shù)字時(shí)鐘 課程設(shè)計(jì)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ec38b241-d606-4531-a3e4-662785302ffe/ec38b241-d606-4531-a3e4-662785302ffe4.gif)
![基于51單片機(jī)數(shù)字時(shí)鐘 課程設(shè)計(jì)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/20/ec38b241-d606-4531-a3e4-662785302ffe/ec38b241-d606-4531-a3e4-662785302ffe5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)設(shè)計(jì)與制作技術(shù)報(bào)告同組姓名: 呂正春.葛文青.季開偉. 李治.劉嘯.單媛媛.高田田 班 級(jí): 08電信轉(zhuǎn)本1班 題 目: 電子時(shí)鐘 任課教師: 謝軍 2011 年 12月16日9設(shè)計(jì)主要內(nèi)容和完成功能本文介紹了一款多功能數(shù)字時(shí)鐘系統(tǒng)的軟件設(shè)計(jì)。該系統(tǒng)能夠顯示當(dāng)前日期、時(shí)間,并且具有日期、時(shí)間設(shè)置等功能。該系統(tǒng)采用AT89S52單片機(jī),利用液晶顯示器LCD1602顯示數(shù)字時(shí)鐘的結(jié)果。本系統(tǒng)的軟件設(shè)計(jì)使用C語(yǔ)言進(jìn)行編程,利用Keil軟件編程環(huán)境對(duì)源程序進(jìn)行編譯。系統(tǒng)的軟件程序主要包括主程序LCD1602顯示程序、日期時(shí)間調(diào)整等子程序的設(shè)計(jì)。該系統(tǒng)具有友好的用戶界面、操作簡(jiǎn)單、性能穩(wěn)定。該數(shù)字
2、時(shí)鐘系統(tǒng)能夠長(zhǎng)期、連續(xù)、可靠、穩(wěn)定地工作,同時(shí)系統(tǒng)還具有功耗低等特點(diǎn),便于攜帶、使用方便。目錄1設(shè)計(jì)方案論證41.1 編程語(yǔ)言方案論證41.1.1 匯編語(yǔ)言41.1.2 C語(yǔ)言41.2 顯示方式方案論證51.2.1 利用LED數(shù)碼管顯示結(jié)果51.2.2 利用LCD液晶顯示結(jié)果61.3 系統(tǒng)仿真方式方案論證61.3.1 利用Proteus軟件仿真實(shí)現(xiàn)61.3.2 手工焊接電路板72系統(tǒng)硬件設(shè)計(jì)82.1 系統(tǒng)硬件組成及結(jié)構(gòu)框圖82.2 單片機(jī)存儲(chǔ)器結(jié)構(gòu)及復(fù)位電路與時(shí)鐘電路82.3 LCD1602的結(jié)構(gòu)及工作原理103系統(tǒng)軟件設(shè)計(jì)113.1 系統(tǒng)軟件設(shè)計(jì)概述113.2 系統(tǒng)主程序設(shè)計(jì)114系統(tǒng)調(diào)試1
3、24.1 系統(tǒng)硬件調(diào)試124.2 軟件調(diào)試134.2.1 軟件編程環(huán)境keil介紹134.2.2 軟件調(diào)試154.3 Proteus與Keil連接調(diào)試結(jié)果16結(jié)論16附錄A Proteus仿真圖17附錄B 實(shí)物圖2附錄C 系統(tǒng)源程序部分代碼21設(shè)計(jì)方案論證1.1 編程語(yǔ)言方案論證1.1.1 匯編語(yǔ)言匯編語(yǔ)言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言。在匯編語(yǔ)言中,用助記符(Memoni)代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼。這樣用符號(hào)代替機(jī)器語(yǔ)言的二進(jìn)制碼,就把機(jī)器語(yǔ)言變成了匯編語(yǔ)言。于是匯編語(yǔ)言亦稱為符號(hào)語(yǔ)言。使用匯編語(yǔ)言編寫的程序,機(jī)器不
4、能直接識(shí)別,要由一種程序?qū)R編語(yǔ)言翻譯成機(jī)器語(yǔ)言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語(yǔ)言處理系統(tǒng)軟件。匯編程序把匯編語(yǔ)言翻譯成機(jī)器語(yǔ)言的過程稱為匯編。 匯編語(yǔ)言比機(jī)器語(yǔ)言易于讀寫、調(diào)試和修改,同時(shí)具有機(jī)器語(yǔ)言全部?jī)?yōu)點(diǎn)。但在編寫復(fù)雜程序時(shí),相對(duì)高級(jí)語(yǔ)言代碼量較大,而且匯編語(yǔ)言依賴于具體的處理器體系結(jié)構(gòu),不能通用,匯編語(yǔ)言直接同計(jì)算機(jī)的底層軟件甚至硬件進(jìn)行交互,它具有如下一些優(yōu)點(diǎn): (1)能夠直接訪問與硬件相關(guān)的存儲(chǔ)器或I/O端口。(2)能夠不受編譯器的限制,對(duì)生成的二進(jìn)制代碼進(jìn)行完全的控制。(3)能夠?qū)﹃P(guān)鍵代碼進(jìn)行更準(zhǔn)確的控制,避免因線程共同訪問或者硬件設(shè)備共享引起的死鎖。(4
5、)能夠根據(jù)特定的應(yīng)用對(duì)代碼做最佳的優(yōu)化,提高運(yùn)行速度。(5)能夠最大限度地發(fā)揮硬件的功能。同時(shí)還應(yīng)該認(rèn)識(shí)到,匯編語(yǔ)言是一種層次非常低的語(yǔ)言,它僅僅高于直接手工編寫二進(jìn)制的機(jī)器指令碼,但是不可避免地也存在一些缺點(diǎn):(1)編寫的代碼非常難懂,不好維護(hù)。(2)很容易產(chǎn)生錯(cuò)誤,難于調(diào)試。(3)只能針對(duì)特定的體系結(jié)構(gòu)和處理器進(jìn)行優(yōu)化。(4)開發(fā)效率很低,時(shí)間長(zhǎng)且單調(diào)。 1.1.2 C語(yǔ)言C語(yǔ)言是Combined Language(組合語(yǔ)言)的中英混合簡(jiǎn)稱。是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫
6、不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語(yǔ)言,歸納起來(lái)C 語(yǔ)言具有下列特點(diǎn):(1)C是中級(jí)語(yǔ)言。它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。(2)C是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C 語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,使程序完全結(jié)構(gòu)化。(3)C語(yǔ)言功能齊全。具有
7、各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語(yǔ)言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大。(4)C語(yǔ)言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。通過以上兩種語(yǔ)言的比較,可以看出,C語(yǔ)言要優(yōu)于匯編語(yǔ)言,編寫時(shí)連貫性好,容易理解,而且在修改過程中可以很快發(fā)現(xiàn)問題所在,修改簡(jiǎn)便。本次設(shè)計(jì)選用C語(yǔ)言作為編程語(yǔ)言。1.2 顯示方式方案論證1.2.1 利用LED數(shù)碼管顯示結(jié)果數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二
8、極管單元(多一個(gè)小數(shù)點(diǎn)顯示),七段數(shù)碼管是指每只數(shù)碼管由7條LED組成,使用時(shí),接通相對(duì)應(yīng)的數(shù)段,則可得到09一系列數(shù)字;按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。LED數(shù)碼管的主要特點(diǎn)如下:(1)能在低電壓、小電流條件下驅(qū)動(dòng)發(fā)光,能與CMOS、ITL電路兼容。 (2)發(fā)光響應(yīng)時(shí)間極短(<01µs),高頻特性好,單色性好,亮度高。 (3)體積小,重量輕,抗沖擊性能好。 (4)壽命長(zhǎng),使用壽命在10萬(wàn)小時(shí)以上,甚至可達(dá)100萬(wàn)小時(shí),成本低。1.2.2 利用LCD液晶顯示結(jié)果液晶是介于固態(tài)和液態(tài)之間的晶狀物質(zhì),它兼
9、有液體的流動(dòng)性和晶體的光學(xué)特性。液晶顯示器(LCD)自20世紀(jì)60年代末問世以來(lái),其優(yōu)異的顯示性能決定了它在顯示領(lǐng)域具有光明的發(fā)展前景。在人類生活各顯示領(lǐng)域已經(jīng)得到了廣泛的應(yīng)用?,F(xiàn)已成為應(yīng)用非常廣泛的一種平板型顯示器件。其功能特點(diǎn):(1)液晶顯示器屬于被動(dòng)發(fā)光型顯示器件,它本身不發(fā)光,只能反射或透射外界光線,因此環(huán)境亮度愈高,顯示愈清晰。其亮暗對(duì)比度可達(dá)100:1。(2)驅(qū)動(dòng)電壓低(一般為3V6V),驅(qū)動(dòng)電流小,微功耗,能夠用CMOS、TTL電路直接驅(qū)動(dòng)。(3)必須采用交流驅(qū)動(dòng)方式,驅(qū)動(dòng)電壓波形為不含直流分量的方波或其他較復(fù)雜波形,頻率約30Hz300Hz。(4)體積小、重量輕,像素尺寸小,分
10、辨率高。顏色分單色(黑白)、彩色兩種。通過以上兩種顯示器件的比較,LCD液晶顯示要優(yōu)于LED數(shù)碼管,LCD驅(qū)動(dòng)電壓低、驅(qū)動(dòng)電流小,微功耗,顯示效果直觀,而且被動(dòng)顯示(無(wú)眩光,不刺激人眼,不會(huì)引起眼睛疲勞),顯示信息量大(因?yàn)橄袼乜梢宰龅煤苄。?。故?duì)比之下本次設(shè)計(jì)選用LCD液晶顯示作為顯示器件。1.3 系統(tǒng)仿真方式方案論證1.3.1 利用Proteus軟件仿真實(shí)現(xiàn)Proteus 是英國(guó)Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路。Proteus 是電子技術(shù)工程師,電子設(shè)計(jì)專業(yè)帶來(lái)很大幫助的軟件。單片機(jī)、數(shù)
11、/模電路等仿真,還具有示波器器等虛擬軟件。是一款仿真和分析功能強(qiáng)大的軟件。Proteus 實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合,支持AVR/PIC/8051/52主流單片機(jī)系統(tǒng)的仿真,有強(qiáng)大的原理圖繪制功能。其功能特點(diǎn)如下:(1)原理圖布局;(2)PCB自動(dòng)或人工布線;(3)SPICE電路仿真。Proteus革命性的特點(diǎn):(1)C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。(2) 目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯
12、片。(3)支持大量的存儲(chǔ)器和外圍芯片。上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。1.3.2 手工焊接電路板焊接是一門科學(xué),他的原理是通過加熱的烙鐵將固態(tài)焊錫絲加熱熔化,再借助于助焊劑的作用,使其流入被焊金屬之間,待冷卻后形成牢固可靠的焊接點(diǎn)。當(dāng)焊料為錫鉛合金焊接面為銅時(shí),焊料先對(duì)焊接表面產(chǎn)生潤(rùn)濕,伴隨著潤(rùn)濕現(xiàn)象的發(fā)生,焊料逐漸向金屬銅擴(kuò)散,在焊料與金屬銅的接觸面形成附著層,使兩則牢固的結(jié)合起來(lái)。所以焊錫是通過潤(rùn)濕、擴(kuò)散和冶金結(jié)合這三個(gè)物理,化學(xué)過程來(lái)完成的 經(jīng)過對(duì)Proteus軟件仿真和手工焊接的對(duì)
13、比,雖然Proteus軟件仿真在應(yīng)用范圍上比較廣泛,實(shí)現(xiàn)的功能也很強(qiáng)大,但我認(rèn)為手工焊接才能正真鍛煉自己的動(dòng)手動(dòng)腦能力,也使自己在以前的實(shí)習(xí)中學(xué)到的焊接技術(shù)得到更進(jìn)一步的提升,故本次設(shè)計(jì)選用手工焊接電路板作為最終實(shí)現(xiàn)方案。 2系統(tǒng)硬件設(shè)計(jì)2.1 系統(tǒng)硬件組成及結(jié)構(gòu)框圖數(shù)字時(shí)鐘設(shè)計(jì)包括以下幾部分:時(shí)鐘模塊,按鍵輸入模塊,顯示模塊。然后把鍵盤輸入、顯示、計(jì)時(shí)、鬧鐘等數(shù)據(jù)通過串行通信傳輸給主單片機(jī)進(jìn)行顯示。其總體框圖如圖2.1所示 單片機(jī)AT89S52 功能鍵顯示1602USB電源 加1鍵 減1鍵 圖2.1 結(jié)構(gòu)框圖該系統(tǒng)采用了AT89S52單片機(jī)系統(tǒng)來(lái)控制系統(tǒng)的工作,這樣就可以根據(jù)自己和場(chǎng)合的需要
14、實(shí)時(shí)顯示時(shí)鐘、日歷等,如果選用液晶顯示電路,還可以進(jìn)行文字顯示,用于溫馨提示,消息或新聞的發(fā)布等。該系統(tǒng)由于采用了單片機(jī)的軟件編程實(shí)現(xiàn)控制各模塊電路的工作,并且可以通過按鍵進(jìn)行參數(shù)的設(shè)置,實(shí)現(xiàn)了自動(dòng)控制,使得該系統(tǒng)變得更加完整,功能更多,同時(shí)可以進(jìn)行擴(kuò)展。2.2 單片機(jī)存儲(chǔ)器結(jié)構(gòu)及復(fù)位電路與時(shí)鐘電路MCS-51器件有單獨(dú)的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器。外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器都可以64K尋址。程序存儲(chǔ)器:如果EA引腳接地,程序讀取只從外部存儲(chǔ)器開始。對(duì)STC89C51,如果EA接VCC,程序讀寫先從內(nèi)部存儲(chǔ)器(地址為0000H1FFFH)開始,接著從外部尋址,尋址地址為:2000H-FFFFH。數(shù)
15、據(jù)存儲(chǔ)器:STC89C51 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲(chǔ)器。高128字節(jié)與特殊功能寄存器重疊。也就是說(shuō)高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當(dāng)一條指令訪問高于7FH的地址時(shí),尋址方式?jīng)Q定CPU訪問高128字節(jié)RAM還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。例如,直接尋址指令MOV 0A0H, #data訪問0A0H(P2口)存儲(chǔ)單元,使用間接尋址方式訪問高128字節(jié)RAM。例如,下面的間接尋址方式中,R0內(nèi)容為0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV R0, #data堆棧操作也是簡(jiǎn)介尋址方式。因此,高12
16、8字節(jié)數(shù)據(jù)RAM也可用于堆??臻g。復(fù)位是單片機(jī)的初始化操作,只要給RESET引腳加上兩個(gè)機(jī)器周期以上的高電平信號(hào),就可使STC89C51單片機(jī)復(fù)位。復(fù)位的主要功能是把程序計(jì)數(shù)器(PC)初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序,同時(shí)復(fù)位操作還對(duì)一些寄存器有影響。STC89C51的復(fù)位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的,復(fù)位電路分為上電復(fù)位和按鍵復(fù)位兩種方式。其電路圖2.2所示.圖2.2 復(fù)位電路單片機(jī)的時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。常見的時(shí)鐘電路有兩種方式,一種是內(nèi)部時(shí)鐘方式,另一種是外部時(shí)鐘方式。本系統(tǒng)選用內(nèi)部時(shí)鐘方式,STC89C51內(nèi)部有
17、一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個(gè)穩(wěn)定的自激振蕩器, STC89C51時(shí)鐘電路如圖2.3所示。電路中的電容的取值通常在20pF30pF之間,對(duì)外接電容的值沒有嚴(yán)格的要求,但電容的大小會(huì)影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。由于單片機(jī)要進(jìn)行串行通信,為了獲得準(zhǔn)確的波特率,選擇晶振的頻率為12MHz。圖2.3 時(shí)鐘電路2.3 LCD1602的結(jié)構(gòu)及工作原理LCD1602可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0-D7,和RS、R/W、EN三個(gè)控制端口,工作電壓
18、為5V,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光。該模塊也可以只用D4-D7作為四位數(shù)據(jù)分兩次傳送。這樣的話可以節(jié)省MCU的I/O口資源。LCD1602引腳說(shuō)明如表2.4所示:表2.4 LCD液晶顯示器各引腳功能及結(jié)構(gòu)編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1VSS電源地9D2雙向數(shù)據(jù)口2VDD電源正極10D3雙向數(shù)據(jù)口3VL對(duì)比度調(diào)節(jié)11D4雙向數(shù)據(jù)口4RS數(shù)據(jù)/命令選擇12D5雙向數(shù)據(jù)口5R/W讀/寫選擇13D6雙向數(shù)據(jù)口6E模塊使能端14D7雙向數(shù)據(jù)口7D0雙向數(shù)據(jù)口15BLK背光源地8D1雙向數(shù)據(jù)口16BLA背光源正極注意事項(xiàng):從該模塊的正面看,引腳排列從右向左為:15腳、16腳,然后才是114腳(線路板
19、上已經(jīng)標(biāo)明)。VDD:電源正極,4.55.5V,通常使用5V電壓;VL:LCD對(duì)比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為05V。接正極時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,但對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,因此通常使用一個(gè)10K的電位器來(lái)調(diào)整對(duì)比度,或者直接串接一個(gè)電阻到地;RS:MCU寫入數(shù)據(jù)或者指令選擇端。MCU要寫入指令時(shí),使RS為低電平;MCU要寫入數(shù)據(jù)時(shí),使RS為高電平;R/W:讀寫控制端。R/W為高電平時(shí),讀取數(shù)據(jù);R/W為低電平時(shí),寫入數(shù)據(jù);E:LCD模塊使能信號(hào)控制端。寫數(shù)據(jù)時(shí),需要下降沿觸發(fā)模塊。D0D7:8位數(shù)據(jù)總線,三態(tài)雙向。如果MCU的I/O口資源緊張的話,該模塊也可以只使用4位數(shù)據(jù)線D4
20、D7接口傳送數(shù)據(jù)。本充電器就是采用4位數(shù)據(jù)傳送方式;BLA: LED背光正極。需要背光時(shí),BLA串接一個(gè)限流電阻接VDD,BLK接地,實(shí)測(cè)該模塊的背光電流為50mA左右;BLK: LED背光地端。LCD1602與單片機(jī)連接如圖2.5所示。+5P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5 MCUVDD D7 D6 VL D5 D4 D3VSS D2BLK D1 D0 EBLA R/W RS LCD1602 2 3 1K 1 16 GND 6 15 5 4圖2.5 LCD與單片機(jī)連接圖4 系統(tǒng)軟件設(shè)計(jì)3系統(tǒng)軟件設(shè)計(jì)3.1 系統(tǒng)軟件設(shè)計(jì)概述該軟件系統(tǒng)的設(shè)計(jì)
21、主要包含以下幾個(gè)子程序模塊:初始化程序模塊、按鍵掃描子程序模塊、顯示程序模塊等。通過系統(tǒng)的源程序代碼能夠?qū)崿F(xiàn)以下功能:a.能正常顯示時(shí)間、日期、星期。b.對(duì)錯(cuò)誤的時(shí)間進(jìn)行修改3.2 系統(tǒng)主程序設(shè)計(jì) 程序首先進(jìn)行初始化,在主程序的循環(huán)程序中首先調(diào)用數(shù)據(jù)處理程序,然后調(diào)用顯示程序,再判斷是否有按鍵按下。若有按鍵按下則轉(zhuǎn)到相應(yīng)的功能程序執(zhí)行,沒有按鍵按下則調(diào)用時(shí)間程序。若沒到則循環(huán)執(zhí)行。計(jì)時(shí)中斷服務(wù)程序完成秒的計(jì)時(shí)及向分鐘、小時(shí)的進(jìn)位和日期、星期的進(jìn)位。調(diào)時(shí)閃爍中斷服務(wù)程序用于被調(diào)單元的閃爍顯示。調(diào)時(shí)程序用于調(diào)整分鐘、小時(shí);整日期的程序用于調(diào)整年、月、日;主要由main( )組成通過對(duì)相關(guān)子程序的調(diào)
22、用,如圖3.2所示。實(shí)現(xiàn)了對(duì)時(shí)間的設(shè)置與修改、LCD顯示數(shù)值等主要功能。相關(guān)的調(diào)整是靠對(duì)功能鍵的判斷來(lái)實(shí)現(xiàn)的。開 始初始化時(shí)鐘子程序按鍵掃描子程序延時(shí)子程序結(jié)束圖3.2 主程序流程圖4系統(tǒng)調(diào)試 4.1 系統(tǒng)硬件調(diào)試1)顯示器部分調(diào)試為了使調(diào)試順利進(jìn)行,首先單片機(jī)與LCD顯示分離,這樣就可以用靜態(tài)方法先測(cè)試LCD顯示,分為兩個(gè)步驟:第一,對(duì)其進(jìn)行初始化(即寫入命令控制字,最好定義為輸出方式)后;第二,將單片機(jī)與LCD結(jié)合起來(lái),借助開發(fā)機(jī),通過編制程序進(jìn)行調(diào)試。若調(diào)試通過后,就可以編制應(yīng)用程序了。2)鍵盤調(diào)試一般顯示器調(diào)試通過后,鍵盤調(diào)試就比較簡(jiǎn)單,完全可以借助于顯示器,利用程序進(jìn)行調(diào)試。利用開發(fā)
23、裝置對(duì)程序進(jìn)行設(shè)置斷點(diǎn),通過斷點(diǎn)可以檢查程序在斷點(diǎn)前后的鍵值變化,這樣可知鍵盤工作是否正常。4.2 軟件調(diào)試4.2.1 軟件編程環(huán)境keil介紹a. Keil工程的建立從桌面上直接雙擊uVision的圖標(biāo)以啟動(dòng)該軟件。UVison啟動(dòng)后,程序窗口的左邊有一個(gè)工程管理窗口,該窗口有3個(gè)標(biāo)簽,分別是Files、Regs、和Books。(1)源文件的建立使用菜單“File->New”或者點(diǎn)擊工具欄的新建文件按鈕,即可在項(xiàng)目窗口的右側(cè)打開一個(gè)新的文本編輯窗口,在該窗口中輸入?yún)R編語(yǔ)言源程序,保存該文件,注意必須加上擴(kuò)展名(匯編語(yǔ)言源程序一般用.asm或a51為擴(kuò)展名)。(2)建立工程文件點(diǎn)擊“Pr
24、oject->New Project”菜單,出現(xiàn)一個(gè)對(duì)話框,要求給將要建立的工程起一個(gè)名字,你可以在編輯框中輸入一個(gè)名字(設(shè)為321),不需要擴(kuò)展名。點(diǎn)擊“保存”按鈕,出現(xiàn)第二個(gè)對(duì)話框,如圖4.2所示。圖4.2 選擇目標(biāo)CPU選擇ATMEL公司的STC89C51芯片。點(diǎn)擊ATMEL前面的“+”號(hào),點(diǎn)擊其中的STC89C51,然后再點(diǎn)擊“確定”按鈕,回到主界面,點(diǎn)擊工程窗口的文件頁(yè)的“Target1”,前面的“+”號(hào),可以看到下一層的“Source Group1”,點(diǎn)擊“Source Group1”使其反白顯示,然后,點(diǎn)擊鼠標(biāo)右鍵,出現(xiàn)一個(gè)下拉菜單,如圖4.3所示。選中其中的“Add fi
25、le to Group Source Group1”,出現(xiàn)一個(gè)對(duì)話框,點(diǎn)擊對(duì)話框中“文件類型”后的下拉列表,找到并選中“*.C Source File(*.C)”,這樣,在列表框中就可以找到exam1.asm文件了。 圖4.3 加入文件雙擊exam1.C文件,將文件加入項(xiàng)目,然后點(diǎn)擊“Close”即可返回主界面,返回后,點(diǎn)擊“Source Group 1”前的加號(hào),會(huì)發(fā)現(xiàn)exam1.C文件已在其中。雙擊文件名,即打開該源程序。b. 工程的詳細(xì)設(shè)置工程建立好以后,還要對(duì)工程進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。首先點(diǎn)擊左邊Project窗口的Target 1,然后使用菜單“Project->Opt
26、ion for targettarget1”即出現(xiàn)對(duì)工程設(shè)置的對(duì)話框,這個(gè)對(duì)話框可謂非常復(fù)雜,共有8個(gè)頁(yè)面,要全部搞清可不容易,好在絕大部份設(shè)置項(xiàng)取默認(rèn)值就行了。設(shè)置對(duì)話框中的Target頁(yè)面,如圖4.4所示。圖4.4 對(duì)目標(biāo)進(jìn)行設(shè)置Xtal后面的數(shù)值是晶振頻率值,默認(rèn)值是所選目標(biāo)CPU的最高可用頻率值,一般將其設(shè)置成與你的硬件所用晶振頻率相同,如果沒必要了解程序執(zhí)行的時(shí)間,也可以不設(shè),這里設(shè)置為12MHZ。設(shè)置對(duì)話框中的Out Put頁(yè)面,如圖4.5所示,這里面也有多個(gè)選擇項(xiàng),其中Creat Hex file用于生成可執(zhí)行代碼文件(可以用編程器寫入單片機(jī)芯片的HEX格式文件,文件的擴(kuò)展名為.
27、HEX),默認(rèn)情況下該項(xiàng)未被選中,如果要寫片做硬件實(shí)驗(yàn),就必須選中該項(xiàng)。其余均保持默認(rèn)情況,設(shè)置完成后按確認(rèn)返回主界面,工程文件建立、設(shè)置完畢。圖4.5對(duì)輸出進(jìn)行控制c. 編譯、連接在設(shè)置好工程后,即可進(jìn)行編譯、連接。選擇菜單Project->Build target,對(duì)當(dāng)前工程進(jìn)行連接。 圖4.6有關(guān)編譯、連接、項(xiàng)目設(shè)置的工具條以上操作也可以通過工具欄按鈕直接進(jìn)行。圖4.6是有關(guān)編譯、設(shè)置的工具欄按鈕,從左到右分別是:編譯、編譯連接、全部重建、停止編譯和對(duì)工程進(jìn)行設(shè)置。4.2.2 軟件調(diào)試通過keil軟件上的編譯,對(duì)編寫好的軟件進(jìn)行編譯,很容易就會(huì)發(fā)現(xiàn)自己在編寫程序上的錯(cuò)誤,然后根據(jù)提
28、示找到問題的相應(yīng)行,進(jìn)行檢查,排除問題。一般會(huì)遇到丟失分號(hào)和未定義的問題,只要仔細(xì)檢查,基本上問題都會(huì)排除,在軟件編譯沒有錯(cuò)誤后,點(diǎn)擊左邊Project窗口的Target 1,然后使用菜單“Project->Option for target target1”即出現(xiàn)對(duì)工程設(shè)置的對(duì)話框,點(diǎn)擊選中Output選項(xiàng)欄中Creat Hex file前面的框,點(diǎn)擊編譯連接生成”*.HEX”文件,至此,軟件部分的調(diào)試就基本結(jié)束。4.3 Proteus與Keil連接調(diào)試結(jié)果點(diǎn)擊仿真按鈕,則將出現(xiàn)本程序的主界面,即時(shí)間顯示界面,結(jié)果如圖4.14所示:圖4.14 Proteus仿真圖6 結(jié)論結(jié)論本系統(tǒng)利用
29、了ATC89S52芯片,設(shè)計(jì)出了一個(gè)數(shù)字時(shí)鐘系統(tǒng),該系統(tǒng)的功能基本符合設(shè)計(jì)任務(wù)的要求。實(shí)現(xiàn)了時(shí)、分、秒、日、月、星期、年的調(diào)整,實(shí)現(xiàn)了鬧鐘功能,根據(jù)Protel畫出的電路原理圖,利用C語(yǔ)言在編程軟件Keil上編譯程序。在硬件的調(diào)試過程中有一下心得體會(huì):1)排除邏輯故障這類故障往往由于設(shè)計(jì)和加工制板過程中工藝性錯(cuò)誤所造成的。主要包括錯(cuò)線、開路、短路。排除的方法是首先將加工的印制板認(rèn)真對(duì)照原理圖,看兩者是否一致。應(yīng)特別注意電源系統(tǒng)檢查,以防止電源短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線和控制總線)是否存在相互之間短路或與其它信號(hào)線路短路。必要時(shí)利用數(shù)字萬(wàn)用表的短路測(cè)試功能,可以縮短排
30、錯(cuò)時(shí)間。2)排除元器件失效造成這類錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買來(lái)時(shí)就已壞了;另一個(gè)畢業(yè)設(shè)計(jì)(論文)獨(dú)創(chuàng)性聲明是由于安裝錯(cuò)誤,造成器件燒壞??梢圆扇z查元器件與設(shè)計(jì)要求的型號(hào)、規(guī)格和安裝是否一致。在保證安裝無(wú)誤后,用替換方法排除錯(cuò)誤。3)排除電源故障在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V4.8V之間屬正常。若有高壓,聯(lián)機(jī)仿真器調(diào)試時(shí),將會(huì)損壞仿真器等,有時(shí)會(huì)使應(yīng)用系統(tǒng)中的集成塊發(fā)熱損壞附錄A Proteus仿真圖附錄B 實(shí)物圖 附錄附錄C 系統(tǒng)源程序部分代碼 #include<reg5
31、2.h>#define uchar unsigned charvoid write_hms(uchar,uchar);void time_setup();uchar a,count,hh,mm,ss,year,year0=20,year1=8,mon=8,day=13,flagy,flagw=3,flagk;uchar code table0=" 2008-08-13 WED"uchar code table1=" 00:00:00"sbit RS=P20; sbit LE=P21; sbit kfun=P22; sbit kadd=P23; sb
32、it ksub=P24; void delay(uchar z) uchar x,y; for(x=z;x>0;x-) for(y=110;y>0;y-); void write_com(uchar com) RS=0; P0=com; delay(5); LE=1; delay(5); LE=0; void write_data(uchar Data) RS=1; P0=Data; delay(5); LE=1; delay(5); LE=0; void init() LE=0;/初始化使能信號(hào) write_com(0x38);/設(shè)置顯示模write_com(0x0c); wri
33、te_com(0x06);/屏幕移動(dòng)操 write_com(0x80);/寫入數(shù)據(jù)地 write_com(0x01);/清屏 /寫入初始化顯示值 write_com(0x80); for(a=0;a<15;a+) write_data(table0a); delay(5); write_com(0x80+0x40); for(a=0;a<12;a+) write_data(table1a); delay(5); TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; hh=23; mm
34、=58; ss=56; year=year0*100+year1;flagy=(year%4=0&&year%100!=0)|(year%400=0); write_hms(0x40+3,hh); write_hms(0x40+6,mm); write_hms(0x40+9,ss); void write_hms(uchar addr,uchar Data) uchar shi,ge; shi=Data/10; ge=Data%10; write_com(0x80+addr); write_data(0x30+shi); write_data(0x30+ge); write_c
35、om(0x80+addr); void time0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; count+; if(count=20) count=0; time_setup(); void week_setup(uchar fl) switch(fl) case 0:write_com(0x80+12);write_data('S');write_data('U');write_data('N');write_com(0x80); break; case 1:writ
36、e_com(0x80+12);write_data('M');write_data('O');write_data('N');write_com(0x80); break; case 2:write_com(0x80+12);write_data('T');write_data('U'); write_data('E');write_com(0x80); break; case 3: write_com(0x80+12);write_data('W');write_data('
37、;E');write_data('D');write_com(0x80); break; case 4:write_com(0x80+12);write_data('T');write_data('H');write_data('U');write_com(0x80); break; case 5: write_com(0x80+12);write_data('F');write_data('R');write_data('I');write_com(0x80); break
38、; case 6: write_com(0x80+12);write_data('S');write_data('A');write_data('T');write_com(0x80); break; void time_setup() ss+; if(ss=60) ss=0; mm+; if(mm=60) hh+; mm=0; if(hh=24) hh=0; day+; flagw+; if(flagw=7)flagw=0; week_setup(flagw);if(day>31)&&(mon=1|mon=3|mon=5|
39、mon=7|mon=8|mon=10|mon=12)|(day>30)&&(mon=4|mon=6|mon=9|mon=11)|(day>29)&&(mon=2)&&(flagy=1)|(day>28)&&(mon=2)&&(flagy=0)day=1; mon+; if(mon=12) mon=1; year1+; if(year1=100) year0+; year1=0; if(year0=100) year0=20;year1=8; year=year0*100+year1;flagy=(
40、year%4=0&&year%100!=0)|(year%400=0);write_hms(1,year0);write_hms(3,year1); write_hms(6,mon); write_hms(9,day); write_hms(0x40+3,hh); write_hms(0x40+6,mm); write_hms(0x40+9,ss); void keysan() if(kfun=0) delay(5); if(kfun=0) while(!kfun); flagk+; TR0=0; switch(flagk) case 0: break; case 1:writ
41、e_com(0x80+0x40+10); write_com(0x0d); if(kadd=0) delay(5); if(kadd=0) while(!kadd); ss+; if(ss=60) ss=0;write_hms(0x40+9,ss);write_com(0x80+0x40+10); else if(ksub=0) delay(5); if(ksub=0) while(!ksub); ss-; if(ss=255) ss=59;write_hms(0x40+9,ss);write_com(0x80+0x40+10); break; case 2:write_com(0x80+0x40+7); write_com(0x0d); if(kadd=0) delay(5); if(kadd=0) while(!kadd); mm+; if(mm=60) mm=0; write_hms(0x40+6,mm);write_com(0x80+0x40+7); else if(ksub=0) delay(5); if(ksub=0) while(!ksub); mm-; if(mm=255) mm=59;write_hms(0x40+6,m
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit2 What's the elephant doing(說(shuō)課稿)-2024-2025學(xué)年外研版(三起)英語(yǔ)四年級(jí)上冊(cè)
- 15《八角樓上》(說(shuō)課稿)2024-2025學(xué)年-統(tǒng)編版二年級(jí)語(yǔ)文上冊(cè)001
- 7《不甘屈辱奮勇抗?fàn)?圓明園的訴說(shuō)》(說(shuō)課稿)統(tǒng)編版道德與法治五年級(jí)下冊(cè)
- 2023七年級(jí)英語(yǔ)下冊(cè) Unit 2 What time do you go to school Section A 第1課時(shí)(1a-2d)說(shuō)課稿 (新版)人教新目標(biāo)版
- 8大家的“朋友”(說(shuō)課稿)-部編版道德與法治三年級(jí)下冊(cè)
- 2024-2025學(xué)年高中歷史 第一單元 中國(guó)古代的農(nóng)耕經(jīng)濟(jì) 第5課 農(nóng)耕時(shí)代的商業(yè)與城市(1)教學(xué)說(shuō)課稿 岳麓版必修2
- 2024年八年級(jí)歷史下冊(cè) 第三單元 第11課 為實(shí)現(xiàn)中國(guó)夢(mèng)而努力奮斗說(shuō)課稿 新人教版
- 2024年三年級(jí)品社下冊(cè)《學(xué)看平面圖》說(shuō)課稿 山東版
- 2025三元區(qū)國(guó)有商品林采伐與銷售權(quán)轉(zhuǎn)讓合同書
- Unit 5 Colours Lesson 2 (說(shuō)課稿)-2024-2025學(xué)年人教新起點(diǎn)版英語(yǔ)一年級(jí)上冊(cè)
- 2024年長(zhǎng)沙衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 河北省滄州市五縣聯(lián)考2024-2025學(xué)年高一上學(xué)期期末英語(yǔ)試卷(含答案含含聽力原文無(wú)音頻)
- 福建省泉州市南安市2024-2025學(xué)年九年級(jí)上學(xué)期期末考試語(yǔ)文試題(無(wú)答案)
- 腫瘤護(hù)士培訓(xùn)課件
- 新課標(biāo)體育與健康水平二教案合集
- 2025屆高考語(yǔ)文一輪復(fù)習(xí)知識(shí)清單:古代詩(shī)歌鑒賞
- 醫(yī)療器材申請(qǐng)物價(jià)流程
- 我的消防文員職業(yè)規(guī)劃
- 2025年公司品質(zhì)部部門工作計(jì)劃
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項(xiàng)考試題庫(kù)
- 華為研發(fā)部門績(jī)效考核制度及方案
評(píng)論
0/150
提交評(píng)論