版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)設(shè)計(jì)與制作技術(shù)報(bào)告同組姓名: 呂正春.葛文青.季開偉. 李治.劉嘯.單媛媛.高田田 班 級: 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語言進(jìn)行編程,利用Keil軟件編程環(huán)境對源程序進(jìn)行編譯。系統(tǒng)的軟件程序主要包括主程序LCD1602顯示程序、日期時(shí)間調(diào)整等子程序的設(shè)計(jì)。該系統(tǒng)具有友好的用戶界面、操作簡單、性能穩(wěn)定。該數(shù)字
2、時(shí)鐘系統(tǒng)能夠長期、連續(xù)、可靠、穩(wěn)定地工作,同時(shí)系統(tǒng)還具有功耗低等特點(diǎn),便于攜帶、使用方便。目錄1設(shè)計(jì)方案論證41.1 編程語言方案論證41.1.1 匯編語言41.1.2 C語言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ī)存儲器結(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 編程語言方案論證1.1.1 匯編語言匯編語言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語言。在匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替地址碼。這樣用符號代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。于是匯編語言亦稱為符號語言。使用匯編語言編寫的程序,機(jī)器不
4、能直接識別,要由一種程序?qū)R編語言翻譯成機(jī)器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統(tǒng)軟件中語言處理系統(tǒng)軟件。匯編程序把匯編語言翻譯成機(jī)器語言的過程稱為匯編。 匯編語言比機(jī)器語言易于讀寫、調(diào)試和修改,同時(shí)具有機(jī)器語言全部優(yōu)點(diǎn)。但在編寫復(fù)雜程序時(shí),相對高級語言代碼量較大,而且匯編語言依賴于具體的處理器體系結(jié)構(gòu),不能通用,匯編語言直接同計(jì)算機(jī)的底層軟件甚至硬件進(jìn)行交互,它具有如下一些優(yōu)點(diǎn): (1)能夠直接訪問與硬件相關(guān)的存儲器或I/O端口。(2)能夠不受編譯器的限制,對生成的二進(jìn)制代碼進(jìn)行完全的控制。(3)能夠?qū)﹃P(guān)鍵代碼進(jìn)行更準(zhǔn)確的控制,避免因線程共同訪問或者硬件設(shè)備共享引起的死鎖。(4
5、)能夠根據(jù)特定的應(yīng)用對代碼做最佳的優(yōu)化,提高運(yùn)行速度。(5)能夠最大限度地發(fā)揮硬件的功能。同時(shí)還應(yīng)該認(rèn)識到,匯編語言是一種層次非常低的語言,它僅僅高于直接手工編寫二進(jìn)制的機(jī)器指令碼,但是不可避免地也存在一些缺點(diǎn):(1)編寫的代碼非常難懂,不好維護(hù)。(2)很容易產(chǎn)生錯(cuò)誤,難于調(diào)試。(3)只能針對特定的體系結(jié)構(gòu)和處理器進(jìn)行優(yōu)化。(4)開發(fā)效率很低,時(shí)間長且單調(diào)。 1.1.2 C語言C語言是Combined Language(組合語言)的中英混合簡稱。是一種計(jì)算機(jī)程序設(shè)計(jì)語言。它既具有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫
6、不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,歸納起來C 語言具有下列特點(diǎn):(1)C是中級語言。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。(2)C是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,使程序完全結(jié)構(gòu)化。(3)C語言功能齊全。具有
7、各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大。(4)C語言適用范圍大。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。通過以上兩種語言的比較,可以看出,C語言要優(yōu)于匯編語言,編寫時(shí)連貫性好,容易理解,而且在修改過程中可以很快發(fā)現(xiàn)問題所在,修改簡便。本次設(shè)計(jì)選用C語言作為編程語言。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í),接通相對應(yīng)的數(shù)段,則可得到09一系列數(shù)字;按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。LED數(shù)碼管的主要特點(diǎn)如下:(1)能在低電壓、小電流條件下驅(qū)動(dòng)發(fā)光,能與CMOS、ITL電路兼容。 (2)發(fā)光響應(yīng)時(shí)間極短(<01µs),高頻特性好,單色性好,亮度高。 (3)體積小,重量輕,抗沖擊性能好。 (4)壽命長,使用壽命在10萬小時(shí)以上,甚至可達(dá)100萬小時(shí),成本低。1.2.2 利用LCD液晶顯示結(jié)果液晶是介于固態(tài)和液態(tài)之間的晶狀物質(zhì),它兼
9、有液體的流動(dòng)性和晶體的光學(xué)特性。液晶顯示器(LCD)自20世紀(jì)60年代末問世以來,其優(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)境亮度愈高,顯示愈清晰。其亮暗對比度可達(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)顯示(無眩光,不刺激人眼,不會引起眼睛疲勞),顯示信息量大(因?yàn)橄袼乜梢宰龅煤苄。9蕦Ρ戎卤敬卧O(shè)計(jì)選用LCD液晶顯示作為顯示器件。1.3 系統(tǒng)仿真方式方案論證1.3.1 利用Proteus軟件仿真實(shí)現(xiàn)Proteus 是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路。Proteus 是電子技術(shù)工程師,電子設(shè)計(jì)專業(yè)帶來很大幫助的軟件。單片機(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)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。(2) 目前支持的單片機(jī)類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯
12、片。(3)支持大量的存儲器和外圍芯片。上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。1.3.2 手工焊接電路板焊接是一門科學(xué),他的原理是通過加熱的烙鐵將固態(tài)焊錫絲加熱熔化,再借助于助焊劑的作用,使其流入被焊金屬之間,待冷卻后形成牢固可靠的焊接點(diǎn)。當(dāng)焊料為錫鉛合金焊接面為銅時(shí),焊料先對焊接表面產(chǎn)生潤濕,伴隨著潤濕現(xiàn)象的發(fā)生,焊料逐漸向金屬銅擴(kuò)散,在焊料與金屬銅的接觸面形成附著層,使兩則牢固的結(jié)合起來。所以焊錫是通過潤濕、擴(kuò)散和冶金結(jié)合這三個(gè)物理,化學(xué)過程來完成的 經(jīng)過對Proteus軟件仿真和手工焊接的對
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)來控制系統(tǒng)的工作,這樣就可以根據(jù)自己和場合的需要
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ī)存儲器結(jié)構(gòu)及復(fù)位電路與時(shí)鐘電路MCS-51器件有單獨(dú)的程序存儲器和數(shù)據(jù)存儲器。外部程序存儲器和數(shù)據(jù)存儲器都可以64K尋址。程序存儲器:如果EA引腳接地,程序讀取只從外部存儲器開始。對STC89C51,如果EA接VCC,程序讀寫先從內(nèi)部存儲器(地址為0000H1FFFH)開始,接著從外部尋址,尋址地址為:2000H-FFFFH。數(shù)
15、據(jù)存儲器:STC89C51 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲器。高128字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。當(dāng)一條指令訪問高于7FH的地址時(shí),尋址方式?jīng)Q定CPU訪問高128字節(jié)RAM還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。例如,直接尋址指令MOV 0A0H, #data訪問0A0H(P2口)存儲單元,使用間接尋址方式訪問高128字節(jié)RAM。例如,下面的間接尋址方式中,R0內(nèi)容為0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV R0, #data堆棧操作也是簡介尋址方式。因此,高12
16、8字節(jié)數(shù)據(jù)RAM也可用于堆??臻g。復(fù)位是單片機(jī)的初始化操作,只要給RESET引腳加上兩個(gè)機(jī)器周期以上的高電平信號,就可使STC89C51單片機(jī)復(fù)位。復(fù)位的主要功能是把程序計(jì)數(shù)器(PC)初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序,同時(shí)復(fù)位操作還對一些寄存器有影響。STC89C51的復(fù)位是由外部的復(fù)位電路來實(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之間,對外接電容的值沒有嚴(yán)格的要求,但電容的大小會影響振蕩器頻率的高低、振蕩器的穩(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ī)в凶址麑Ρ榷日{(diào)節(jié)和背光。該模塊也可以只用D4-D7作為四位數(shù)據(jù)分兩次傳送。這樣的話可以節(jié)省MCU的I/O口資源。LCD1602引腳說明如表2.4所示:表2.4 LCD液晶顯示器各引腳功能及結(jié)構(gòu)編號符號引腳說明編號符號引腳說明1VSS電源地9D2雙向數(shù)據(jù)口2VDD電源正極10D3雙向數(shù)據(jù)口3VL對比度調(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對比度調(diào)節(jié)端,電壓調(diào)節(jié)范圍為05V。接正極時(shí)對比度最弱,接地電源時(shí)對比度最高,但對比度過高時(shí)會產(chǎn)生“鬼影”,因此通常使用一個(gè)10K的電位器來調(diào)整對比度,或者直接串接一個(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模塊使能信號控制端。寫數(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í)測該模塊的背光電流為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.對錯(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( )組成通過對相關(guān)子程序的調(diào)
22、用,如圖3.2所示。實(shí)現(xiàn)了對時(shí)間的設(shè)置與修改、LCD顯示數(shù)值等主要功能。相關(guān)的調(diào)整是靠對功能鍵的判斷來實(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)方法先測試LCD顯示,分為兩個(gè)步驟:第一,對其進(jìn)行初始化(即寫入命令控制字,最好定義為輸出方式)后;第二,將單片機(jī)與LCD結(jié)合起來,借助開發(fā)機(jī),通過編制程序進(jìn)行調(diào)試。若調(diào)試通過后,就可以編制應(yīng)用程序了。2)鍵盤調(diào)試一般顯示器調(diào)試通過后,鍵盤調(diào)試就比較簡單,完全可以借助于顯示器,利用程序進(jìn)行調(diào)試。利用開發(fā)
23、裝置對程序進(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編語言源程序,保存該文件,注意必須加上擴(kuò)展名(匯編語言源程序一般用.asm或a51為擴(kuò)展名)。(2)建立工程文件點(diǎn)擊“Pr
24、oject->New Project”菜單,出現(xiàn)一個(gè)對話框,要求給將要建立的工程起一個(gè)名字,你可以在編輯框中輸入一個(gè)名字(設(shè)為321),不需要擴(kuò)展名。點(diǎn)擊“保存”按鈕,出現(xiàn)第二個(gè)對話框,如圖4.2所示。圖4.2 選擇目標(biāo)CPU選擇ATMEL公司的STC89C51芯片。點(diǎn)擊ATMEL前面的“+”號,點(diǎn)擊其中的STC89C51,然后再點(diǎn)擊“確定”按鈕,回到主界面,點(diǎn)擊工程窗口的文件頁的“Target1”,前面的“+”號,可以看到下一層的“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è)對話框,點(diǎn)擊對話框中“文件類型”后的下拉列表,找到并選中“*.C Source File(*.C)”,這樣,在列表框中就可以找到exam1.asm文件了。 圖4.3 加入文件雙擊exam1.C文件,將文件加入項(xiàng)目,然后點(diǎn)擊“Close”即可返回主界面,返回后,點(diǎn)擊“Source Group 1”前的加號,會發(fā)現(xiàn)exam1.C文件已在其中。雙擊文件名,即打開該源程序。b. 工程的詳細(xì)設(shè)置工程建立好以后,還要對工程進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。首先點(diǎn)擊左邊Project窗口的Target 1,然后使用菜單“Project->Opt
26、ion for targettarget1”即出現(xiàn)對工程設(shè)置的對話框,這個(gè)對話框可謂非常復(fù)雜,共有8個(gè)頁面,要全部搞清可不容易,好在絕大部份設(shè)置項(xiàng)取默認(rèn)值就行了。設(shè)置對話框中的Target頁面,如圖4.4所示。圖4.4 對目標(biāo)進(jìn)行設(shè)置Xtal后面的數(shù)值是晶振頻率值,默認(rèn)值是所選目標(biāo)CPU的最高可用頻率值,一般將其設(shè)置成與你的硬件所用晶振頻率相同,如果沒必要了解程序執(zhí)行的時(shí)間,也可以不設(shè),這里設(shè)置為12MHZ。設(shè)置對話框中的Out Put頁面,如圖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對輸出進(jìn)行控制c. 編譯、連接在設(shè)置好工程后,即可進(jìn)行編譯、連接。選擇菜單Project->Build target,對當(dāng)前工程進(jìn)行連接。 圖4.6有關(guān)編譯、連接、項(xiàng)目設(shè)置的工具條以上操作也可以通過工具欄按鈕直接進(jìn)行。圖4.6是有關(guān)編譯、設(shè)置的工具欄按鈕,從左到右分別是:編譯、編譯連接、全部重建、停止編譯和對工程進(jìn)行設(shè)置。4.2.2 軟件調(diào)試通過keil軟件上的編譯,對編寫好的軟件進(jìn)行編譯,很容易就會發(fā)現(xiàn)自己在編寫程序上的錯(cuò)誤,然后根據(jù)提
28、示找到問題的相應(yīng)行,進(jìn)行檢查,排除問題。一般會遇到丟失分號和未定義的問題,只要仔細(xì)檢查,基本上問題都會排除,在軟件編譯沒有錯(cuò)誤后,點(diǎn)擊左邊Project窗口的Target 1,然后使用菜單“Project->Option for target target1”即出現(xiàn)對工程設(shè)置的對話框,點(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語言在編程軟件Keil上編譯程序。在硬件的調(diào)試過程中有一下心得體會:1)排除邏輯故障這類故障往往由于設(shè)計(jì)和加工制板過程中工藝性錯(cuò)誤所造成的。主要包括錯(cuò)線、開路、短路。排除的方法是首先將加工的印制板認(rèn)真對照原理圖,看兩者是否一致。應(yīng)特別注意電源系統(tǒng)檢查,以防止電源短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線和控制總線)是否存在相互之間短路或與其它信號線路短路。必要時(shí)利用數(shù)字萬用表的短路測試功能,可以縮短排
30、錯(cuò)時(shí)間。2)排除元器件失效造成這類錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買來時(shí)就已壞了;另一個(gè)畢業(yè)設(shè)計(jì)(論文)獨(dú)創(chuàng)性聲明是由于安裝錯(cuò)誤,造成器件燒壞??梢圆扇z查元器件與設(shè)計(jì)要求的型號、規(guī)格和安裝是否一致。在保證安裝無誤后,用替換方法排除錯(cuò)誤。3)排除電源故障在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V4.8V之間屬正常。若有高壓,聯(lián)機(jī)仿真器調(diào)試時(shí),將會損壞仿真器等,有時(shí)會使應(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;/初始化使能信號 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年度音樂器材回收利用合同規(guī)范3篇
- 專利代理銷售合同:2024年度標(biāo)準(zhǔn)版一
- 二零二五年度噴錨設(shè)備進(jìn)出口貿(mào)易合同4篇
- 2025年度環(huán)保產(chǎn)業(yè)投資入股保密協(xié)議范本
- 二零二五年度共享單車停放區(qū)域車位租賃管理合同4篇
- 二零二五年度金融機(jī)構(gòu)出借資金借款合同模板4篇
- 二零二四年煤炭買賣居間服務(wù)合作協(xié)議3篇
- 框架級數(shù)據(jù)一致性保障-深度研究
- 2025至2031年中國特效多功能透明防水涂料行業(yè)投資前景及策略咨詢研究報(bào)告
- 新型用工模式下的勞動(dòng)關(guān)系界定-深度研究
- 河北省滄州市五縣聯(lián)考2024-2025學(xué)年高一上學(xué)期期末英語試卷(含答案含含聽力原文無音頻)
- 邊防通行證委托書
- 腫瘤護(hù)士培訓(xùn)課件
- 《浸沒式液冷冷卻液選型要求》
- 中醫(yī)基礎(chǔ)理論-肝
- 小學(xué)外來人員出入校門登記表
- 《土地利用規(guī)劃學(xué)》完整課件
- GB/T 25283-2023礦產(chǎn)資源綜合勘查評價(jià)規(guī)范
- 《汽車衡全自動(dòng)智能稱重系統(tǒng)》設(shè)計(jì)方案
- 義務(wù)教育歷史課程標(biāo)準(zhǔn)(2022年版)
- GB/T 2550-2016氣體焊接設(shè)備焊接、切割和類似作業(yè)用橡膠軟管
評論
0/150
提交評論