1602LCD顯示的秒表單片機課程設(shè)計_第1頁
1602LCD顯示的秒表單片機課程設(shè)計_第2頁
1602LCD顯示的秒表單片機課程設(shè)計_第3頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機課程設(shè)計題目:1602LCD顯示的秒表系別/班級:信息工程系11級嵌入式技術(shù)與應(yīng)用專業(yè)目錄1單片機原理32課程設(shè)計的任務(wù)與要求33課程設(shè)計目的44芯片資料54.1AT89C5154.21602LCD85電路分析166代碼分析217設(shè)計分析298調(diào)試成功與否319參考文獻3610附錄1602LCD秒表的顯示源代碼371602LC®表的顯示原理圖43、單片機原理單片機控制秒表是集于單片機技術(shù)、模擬電子技術(shù)、數(shù)字技術(shù)為一體的機電一體化高科技產(chǎn)品,具有功耗低,安全性高,使用方便等優(yōu)點。它是一種在線式實時控制計算機,需要有較強的抗干擾能力,較低的成本。本次設(shè)計內(nèi)容為以8051單片機為核心

2、的秒表,采用數(shù)碼管顯示,單片機技術(shù)控制。利用單片機的定時器/計數(shù)器定時和技術(shù)的原理,用集成電路芯片、LCD數(shù)碼管以及按鍵來設(shè)計計時器。將軟、硬件有機地結(jié)合起來,使它擁有正確的計時、暫停、清零、并同時可以用數(shù)碼管顯示,在現(xiàn)實生活中應(yīng)用廣泛。二、課程設(shè)計的任務(wù)與要求設(shè)計任務(wù):利用AT89C51單片機結(jié)合1602LCDM示器設(shè)計一個秒表設(shè)計要求:1. 本設(shè)計實現(xiàn)一個1602LCD®示秒表利用AT89C5有空制整個電路來實現(xiàn)秒表的顯示。大體上可以講1602LCD#表的顯示主要包括硬件和軟件兩部分。重點就是各部分硬件的連接設(shè)計以及程序的編寫。本章講述的就是系統(tǒng)硬件的設(shè)計,其中包括各模塊的器件選

3、擇和電路設(shè)計。三、課程設(shè)計目的«MCS-51單片機原理及應(yīng)用課的課程設(shè)計是四個學(xué)生一組完成一個老師給的一個題目,叫1602LCE&示的秒表。為了讓我們能夠綜合運用白己學(xué)的課程的基本知識,能夠進行單片機的應(yīng)用,掌握單片機程序設(shè)計調(diào)試和應(yīng)用電路設(shè)計、分析及調(diào)試檢測。通過這個實驗:1、使我們增進對單片機知識的進一步認識,也同時加深對單片機理論知識的理解。2、使我們掌握單片機的內(nèi)部功能模塊的應(yīng)用,3、使我們了解和掌握單片機應(yīng)用系統(tǒng)的軟硬件設(shè)計過程,方法即實現(xiàn),為了以后設(shè)計和實現(xiàn)單片機應(yīng)用系統(tǒng)打下基礎(chǔ)。四、芯片資料4、1AT89C51(«XPI(TXPjUNT34T01mbA

4、DO二尸。一IfADV)iAD>)ij*a*<AM)O_S1AD5>二#。a二EKTJ點M)ALE7PROQ2,2(AtO|FIf(A*)#*|Aftb<T1>P»»*WW»P3fi匚mmP37S=XTAL2JXTAlICG*iOL772。AA1C<.艮AT89C51AT89C51是128字節(jié)內(nèi)部RAM,4K的編程Flash存儲器(可擦寫1000次),三級程序存儲器保密,靜態(tài)工作頻率:0Hz-24MHz,2個16位定時/計數(shù)器,一個串行通訊口,6個中斷源,32條I/O引線,有片內(nèi)時種振蕩器。輸入輸出引腳資料:(1) P0端口P0

5、.0-P0.7P0是一個8位漏極開路型雙向I/O端口,端口置1(對端口寫1)時作高阻抗輸入端。作為輸出口時能驅(qū)動8個TTL。在訪問外部程序和外部數(shù)據(jù)存儲器時,P0口是分時轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。P1端口P1.0P1.7P1是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。(2) P2端口P2.0P2.7P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。在訪問外部程序和16位外部數(shù)據(jù)存儲器時,P2口送出高8位地址。而在訪

6、問8位地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。(3) P3端口P3.0P3.7P2是一個帶有內(nèi)部上拉電阻的8位雙向I/0端口。輸出時可驅(qū)動4個TTL端口置1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。其它控制或復(fù)用引腳:(1)ALE/PROG30訪問外部存儲器時,ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪問外部存儲器,ALE端仍以不變的頻率輸出脈沖信號(此頻率是振蕩器頻率的1/6)。在訪問外部數(shù)據(jù)存儲器時,出現(xiàn)一個ALE脈沖。(2)PSEN29該引是外部程序存儲器的選通信號輸出端。當(dāng)AT89C51由外部程序存儲器取指令或常數(shù)時,每個機器周期輸出2個脈沖即兩次有效

7、。但訪問外部數(shù)據(jù)存儲器時,將不會有脈沖輸出。(3)EA/Vpp31外部訪問允許端。當(dāng)該引腳訪問外部程序存儲器時,應(yīng)輸入低電平。要使AT89C51只訪問外部程序存儲器(地址為0000H-FFFFH,這時該引腳必須保持低電平。AT89C51特殊功能寄存器列表(適用丁同一架構(gòu)的芯片)符號地址注釋*ACCE0H累加器*BF0H乘法寄存器*PSWD0H程序狀態(tài)字SP81H堆棧指針DPL82H數(shù)據(jù)存儲器指針低8位DPH83H數(shù)據(jù)存儲器指針高8位*IEA8H中斷允許控制器*IPD8H中斷優(yōu)先控制器*P080H端口0*P190H端口1*P2A0H端口2*P3B0H端口3PCON87H電源控制及波特率選擇*SC

8、ON98H串行口控制器SBUF99H串行數(shù)據(jù)緩沖器*TCON88H定時器控制TMOD89H定時器方式選擇TL08AH定時器0低8位TL18BH定時器1低8位TH08CH定時器0低8位TH18DH定時器1高8位帶*號的特殊功能寄存器都是可以位尋址的寄存器4.11602LCD1602字符型LCD®介:字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD目前常用16*1,16*2,20*2和40*2行等的模塊。1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780.1602LCM要技術(shù)參數(shù):顯示容量:16X2個字符芯片工作電壓:4.55.5V工作電流:2.0m

9、A(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95x4.35(WXH)mm引腳功能說明:1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下表1所示:編勺符號引腳說明編勺符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL"晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0n據(jù)15BLA背光源正極8D1n據(jù)16BLK背光源負極表1:引腳接口說明第1腳:VSS為地電源。第2腳:VD戒5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最

10、高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D(HD7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。1602LCD勺指令說明及時序:1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表

11、2所示:序號”令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到CGRA喉DDRAM10要寫的數(shù)據(jù)內(nèi)容11從CGRA喊DDRA糠數(shù)11讀出的數(shù)據(jù)內(nèi)容表2:控制命令表1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1

12、:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。指令6:功能設(shè)置命令DL:高電平時為4位總線,低電平時為8位總線N:低電平時為單行顯示,高電平時雙行顯示F:低電平時顯

13、示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RA觀址設(shè)置。指令8:DDRA岫址設(shè)置。指令9:讀忙信號和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD4478砰目兼容的芯片時序下表3如下:讀狀態(tài)|俞入RS=LR/W=HE=H輸出D卜D7=犬態(tài)字寫指令|俞入RS=LR/W=LD0D7可旨令碼,E=高脈沖輸出無讀數(shù)據(jù)|俞入RS=HR/W=HE=H輸出D卜。7啜據(jù)寫數(shù)據(jù)諭入RS=HR/W=LD0-D7啜據(jù),E=高脈沖輸出無表3:基本操作時序表讀寫操作時序如圖2和3所示:圖2讀操作時序圖3寫操

14、作時序1602LC麗勺RA觀址映射及標(biāo)準(zhǔn)字庫表:液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,圖4是1602的內(nèi)部顯示地址UCD1亍IOOO10203I040506;2oa09OAOE£ocODOE2740!414乏43言4454自|4743494A40404E4F50.67圖41602LCD內(nèi)部顯示地址例如第二行第一個字符的地址是40H,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H+10000000B(80H)=11000000B(C

15、0H)在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是白動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGRQM已經(jīng)存儲了160個不同的點陣字符圖形,如圖5所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼襄13CGROM0CCRAM中字轉(zhuǎn)代Eft與字符圖對成美累<KX>00010OO1)OlOG0)01Olio,cntd1O1Otoilnoo11011110111!XXXXQOOflCGRAM(l>0pP三.PxxxX0001<2&g

16、t;91AQ.qn廣AqXXXxooio<3)2BRrrPIXA_eXXXX0O11<4>3CSv毛,xxxXOJOO4D_TdtX工卜*ClXXXXO101KSEu.un才H0XXXxonoCt>§FVfV爐A3PXXXxX0111>TGwftwT*«XXXXlOOO<l><eHXhXM率*)IXXXX1M1J91YIy->1XXXX1010<3).1ziA工3Ai千XXXX1011C41+1Ktk才0址XXXX118<s)<L¥1ift防?7aXXXX1)0)<«>一

17、MJm<31X、*+XXXX1110CT>1AN一n4:AftXXXXtillC8)/too-1/一od|我藉A圖5字符代碼與圖形對應(yīng)圖1602LC麗勺一般初始化(復(fù)位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH顯示開及光標(biāo)設(shè)置五、電路分析總體設(shè)計分析本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復(fù)位電路,顯示電路以及一些按鍵電路等,本系統(tǒng)采用AT89

18、C51單片機為中心器件,利用定時器計數(shù)器定時和記數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路,顯示電路,蜂鳴器電路以及一些按鍵電路等來設(shè)計計數(shù)器,將軟、硬件有機地結(jié)合起來。硬件系統(tǒng)采用PROTEUS功能來實現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。5.1電源電路電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,隨著半導(dǎo)體工藝的發(fā)展,穩(wěn)壓電路也采用集成電路器件來制成。可采用獨立的穩(wěn)壓電源。這種供電方式的優(yōu)點是穩(wěn)壓可靠,且有各種成熟電路可供選擇。由集成穩(wěn)壓器具有體積小,外界線路簡單,使用方便,工作可靠等優(yōu)點。因此,在各種電子設(shè)備中應(yīng)用十分普遍,為了跟上時代的發(fā)展,可采用W

19、780源列三端穩(wěn)壓器,主要利用它的輸出電壓是固定的在使用中不能進行調(diào)整等優(yōu)點。5.2晶振電路AT89C51內(nèi)部的振蕩電路是一個高增益反相放大器,引腳RXDffiTXD分別是此反向振蕩放大器的輸入端和輸出端。該反向放大器可以配置為內(nèi)部方式的片內(nèi)振蕩器。如圖所示,這里選用12MHE勺內(nèi)部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1,C2可在20100PF之間取,這里取30PF,接線時要使晶振振蕩器盡可能接近單片機。弓二也二30pf30FXICRYSTAL5.3復(fù)位電路采用上電+按鍵復(fù)位電路,上電后,由于電容充電,使RST持續(xù)一段時間高電平時間。當(dāng)單片機已在運行之中時,按

20、下復(fù)位按鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加開關(guān)復(fù)位的操作。這不僅能時單片機復(fù)位,而且還能使單片機的外圍芯片也同時復(fù)位,當(dāng)程序出現(xiàn)錯誤時,可以隨時使電路復(fù)位。復(fù)位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復(fù)位鍵重新啟動。除PC之外,復(fù)位操作還對其他一些寄存器有影響,它們的復(fù)位狀態(tài)如表1所示。復(fù)位狀態(tài)PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0

21、-P3FFHSCON00HIPXX000000BSBUF不定IE0X000000BPCON0XXX0000BTMOD00H表1一些寄存器的復(fù)位狀態(tài)因STC89C5字片機需高電平(3.75.5V)復(fù)位,且復(fù)位時流入單片機的電流不能超過10mA具體參數(shù):根據(jù)所需要的復(fù)位參數(shù)可得當(dāng)按下SV鍵時出現(xiàn)兩個機器周期的高電平在單片機RES端產(chǎn)生的壓降等于:VCCRiR25V(1K0.2K)'J10K"-4.17VTccVtc圖復(fù)位電路5.4顯示電路顯示電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示,我們米用液晶顯示電路1602LCEI腳接口說明編P符號引腳說明編p符號引腳說明1VSS電源地

22、9D2DataI/O2VDD電源正極10D3DataI/O3VL液晶顯示偏壓信號11D4DataI/O4RS數(shù)據(jù)命令選擇端口(H/L)12D5DataI/O5R/W讀/寫選擇端(H/L)13D6DataI/O6E使能信號14D7DataI/O7D1DataI/O15BLA背光源正極8D1DataI/O16BLK背光源負極顯示電路部分引腳分析:3腳:VL,液晶顯示偏壓信號,用于調(diào)整LCD160矛勺顯示對比度,一般會外接電位器用以調(diào)整偏壓信號,此腳電壓為0時可以得到最強的對比度。4腳:R§數(shù)據(jù)/命令選擇端,當(dāng)此腳為高電平時,可以對1602進行數(shù)據(jù)字節(jié)的傳輸操作,而為低電平時,則是進行命令

23、字節(jié)的傳輸操作。命令字節(jié),即是用來對LCD160矛勺一些工作方式作設(shè)置的字節(jié);數(shù)據(jù)字節(jié),即使用以在1602上顯示字節(jié)。5腳:R/VV讀寫選擇端。當(dāng)此腳為高電平可對LCD1602進行讀數(shù)據(jù)操作,反之進行寫數(shù)據(jù)操作。6腳:E,使能信號,其實是LCD1602的數(shù)據(jù)控制時鐘信號,利用該信號的上升沿實現(xiàn)對LCD160矛勺數(shù)據(jù)傳輸。714腳:8位并行數(shù)據(jù)口,使得對LCD1602的數(shù)據(jù)讀寫大為方便。基本操作時序:(1) 讀狀態(tài):輸入:RS=L,RW=H,EH輸出:D0D7狀態(tài)字(2) 寫指令:輸入:RS=L,RW=L,D0D才旨令碼,E=ft脈沖;輸出:無(3) 讀數(shù)據(jù):輸入:RS=H,RW=H,E=晌出:

24、D0D7數(shù)據(jù)(4) 寫數(shù)據(jù):輸入:RS=H,RW=L,D0D7,E福脈沖;輸出:無需要兩個寫時序: 當(dāng)我們要寫指令字,設(shè)置LCD160矛勺工作方式時:需要把RS置為低電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0D7最后E引腳一個高脈沖將數(shù)據(jù)寫入。 當(dāng)我們要寫入數(shù)據(jù)字,在1602上實現(xiàn)顯示時:需要把RS置為高電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0D7最后E引腳一個高脈沖將數(shù)據(jù)寫入。LM016L.寸卜LLL79r-j29._6POO;ADOP01/AD1P0.2/AD2P03AD3P0.4;AD4P0.5/AD5P0.6/AD6P07;AD7P20/A6P2.VA9P22/A10P23/

25、A1139d0>38373S_i35d4734d5731dey32d7>21Rsy22FW23-21coRP1respac'k-s六、代碼分析#include<reg51.h>,#include<intrins.h>皆屬于頭文件,前者是定義51單片機特殊功能寄存器和位寄存器的,后者包含特殊指令例如:crol(),cror()。#defineucharunsignedchar,#defineuintunsignedint,definedelayNOP()nop();nop();nop()皆屬于宏定義,后者是將三個延時周期定義在一起,用一個delayNO

26、P()表示。VoidLCD_intialize,voidLCD_Set_POS(uchar),voidDisplay_String(char*,char);皆為調(diào)用函數(shù),第一個是調(diào)用LCD初始化函數(shù);第二個是調(diào)用LCD的顯示位置函數(shù);第三個是調(diào)用LCD寫數(shù)據(jù)函數(shù);第四個是調(diào)用LC驢旨定行上顯示字符串函數(shù)。SbitK1=P1A0,sbitK2=P2A1,sbitBEEP=3A0,sbitLCD_RS=P2A0,sbitLCD_RW=P2A1,sbitLCD_EN=P2A2皆為個函數(shù)接口聲明,定義K1、K2為兩個控制開關(guān);定義BEEF揚聲器接口;RS為寄存器選擇高電平(1)時選擇數(shù)據(jù)寄存器、低電平

27、(0)時選擇指令寄存器;RS為讀寫信號,高電平(1)時驚醒讀操作,低電平(0)時進行寫操作;E(或EN)端為使能端(enable),將單片機與LCD1602顯示器連接。UcharKeyCount=0;KeyCount為按鍵計數(shù)變量,用于累計按鍵的次數(shù)。定義其為無符號整型,并且付初值為0.ucharcodemsg1="SecondWatch0",ucharcodemsg2=">>>>"定義兩個一維數(shù)組,在protues仿真軟件中,當(dāng)按下play鍵后,1602LCD顯示屏是會出現(xiàn)這兩個數(shù)組中的字符。ucharcodePrompts16

28、=":1->",":2->:2",":1->2:3->",":1->2:3->4"定義一個二維數(shù)組,將其中的一維顯示于1602LCU。K1為啟??刂瓢粹o,第一次按下時開始計數(shù),顯示“::1-”;當(dāng)?shù)诙伟聪聲r停止計數(shù),顯示":2->:2"ucharTime_Buffer=(0,0,0,0,ucharLCD_Display_Buffer="00:00:00:00"定義兩個數(shù)組,一個用于計時緩沖,一個用于顯示時間緩沖。voidBeeP()

29、uchari,j=70;for(i=0;i<180;i+)while(-j);BEEP=BEEP;BEEP=0;定義一個調(diào)用蜂鳴器的子函數(shù)。For(i=0;i<180;i+)用于控制蜂鳴器響的時間,BEEP=BEEPg于使蜂鳴器進行短暫的響一下又不響的效果。因為蜂鳴器接地,只有當(dāng)P3.0接入高電平(即1)時,蜂鳴器才工作。所以在響了一聲過后,級(執(zhí)行完成之后)將BEEPK值為0,讓它處于不導(dǎo)通狀態(tài),蜂鳴器不響。voidDelayX(uintms)uchari;while(ms-)for(i=0;i<120;i+);定義一個延時子函數(shù)voidShow_Second()uchar

30、i;LCD_Set_POS(0X45);設(shè)置LCD顯示起點for(i=3;i!=0xff;i-)將兩位整數(shù)的1、100s,秒,分,時轉(zhuǎn)換為8位數(shù)字字符LCD_Display_Buffer2*i+1=Time_Bufferi/10+'0'LCD_Display_Buffer2*i=Time_Bufferi%10+'0'在i=3,2,1,0時分別顯示時,分,秒,1/100sLCD_Write_Data(LCD_Display_Buffer2*i+1);LCD_Write_Data(LCD_Display_Buffer2*i);LCD_Write_Data('

31、:');定義顯示計時函數(shù)LCD_Set_POS(0X45),調(diào)用函數(shù),用于調(diào)用設(shè)置顯示位置函數(shù),在此子函數(shù)中又嵌套了一個函數(shù)調(diào)用,LCD_Write_Command(Position|0X80)(即LCD_Write_Command(0X45|0X80)函數(shù)。進行或操作:45010001018010000000C511000101或操作后得到結(jié)果C5,即LCD_Write_Command(0XC5調(diào)用該函數(shù)(即向LCD寫指令函數(shù))。LCD_Busy_Check()用于檢測LCD否處于忙狀態(tài),假如處于忙狀態(tài),RS為0(選擇指令寄存器),RVW1(進行讀操作),EN為1(寄存器使能)。De

32、layNOP()表示延時四個機器周期。Result=(bit)(P0&0X80),P0的初始狀態(tài)是FF.進行與操作:FF1111111180100000008010000000與操作后得到的結(jié)果80,即return為80(10000000)將EN賦值為0,即寄存器使能端禁止用。返回至LCD寫指令子程序,RS=0批擇指令寄存器),RW=0進行寫操作),EN=0(使能端禁止使用)。延時兩個機器周期,將cmd(0XC5的值賦給P0口,延時四個空白機器周期。使能端置1,延時四個空白機器周期。EN=C存器禁止使用。voidTime0()interrupt1using0(TH0=-10000/25

33、6;TL0=-10000%256;Time_Buffer0+;if(Time_Buffer0=100)Time_Buffer0=0;Time_Buffer1+;if(Time_Buffer1=60)/秒Time_Buffer1=0;Time_Buffer2+;if(Time_Buffer2=60)/分Time_Buffer2=0;Time_Buffer3+;if(Time_Buffer3=24)/為定時器T0工作于0號Time_Buffer3=0;此函數(shù)為中斷函數(shù),interrupt1using0寄存器,TH0=-10000/256,TL0=-10000%25§用于計算定時器的初值,

34、除得的放在高八位,余的的放在第八位。接下來的代碼用于控制在1602LCD®示屏中秒表白動進位換算的的效果,(1小時=60分鐘,1分鐘=60秒,1秒=100毫秒)當(dāng)小時到達24時,清零。voidmain()uchari;IE=0x82;TMOD=0X01;TH0=-10000/256;TL0=-10000%256;LCD_Initialize();Display_String(msg1,0x00);Display_String(msg2,0x40);While(1)if(K1=0)DelayX(100);i=+KeyCount;switch(i)Case1:Case3:TR0=1;Di

35、splay_String(Promtsi-1,0);break;Case2:Case4:TR0=0;Display_String(Promtsi-1,0);break;default:TR0=0;break;while(K1=0);Beep();elseif(K2=0)TR0=0;KeyCount=0;for(i=0;i<4;i+)Time_Bufferi=0;Display_String(msg1,0);Beep();DelayX(100);While(K2=0);Show_Second();主函數(shù),中斷允許寄存器IE,IE=0x82=10000010表示EA為1,CPLM放中斷;ET

36、0=1允許外部中斷1中斷。定時/計數(shù)器方式控制寄存器TMOD,TMOD=0x01=0000000表示在T0方式字段中工作方式為方式1,是定時器方式,定時器的技術(shù)不受外部引腳輸入電平的控制,而只受定時器運行控制位(TRQTR1)的控制。進行高低8為賦初值。接著調(diào)用初始化LC行函數(shù),在其子函數(shù)中進行順序執(zhí)行,每個都先延時5毫秒,接著調(diào)用寫指令函數(shù)。返回至主程序。接著調(diào)用顯示函數(shù),在LCD指定行上顯示字符串,Display_String(msg1,0x00),msg1為一個一維數(shù)組(SecondWatch0),即Display_String(SecondWatch0,0x00),在該子函數(shù)中調(diào)用設(shè)置

37、顯示位置子函數(shù),在該子函數(shù)中調(diào)用寫指令子函數(shù)進行或操作:000000000080100000008010000000與操作后得到結(jié)果為80,即LCD_Write_Command(0X80),調(diào)用該函數(shù)(即向LCD寫指令函數(shù))。LCD_Busy_Check()用于檢測LC喝否處于忙狀態(tài),假如處于忙狀態(tài),RS為0(選擇指令寄存器),RW;1(進行讀操作),EN為1(寄存器使能)。DelayNOP()表示延時四個機器周期。Result=(bit)(P0&0X80),P0的初始狀態(tài)是FF.進行與操作:FF1111111180100000008010000000與操作后得到的結(jié)果80,即retu

38、rn為80(10000000)將EN賦值為0,即寄存器使能端禁止用。返回至LCD寫指令子程序,RS=0批擇指令寄存器),RW=0進行寫操作),EN=0(使能端禁止使用)。延時兩個機器周期,將cmd(0X80)的值賦給P0口,延時四個空白機器周期。使能端置1,延時四個空白機器周期。EN=C存器禁止使用。Display_String(msg2,0x40);該調(diào)用函數(shù)類似于上面所述。While(1)進入死循環(huán)。在里面進行著秒表的計數(shù)功能,以及蜂鳴器的工作。七、設(shè)計分析7、1系統(tǒng)設(shè)計分析設(shè)計的電路主要是能多次記時和查詢時間,記時的多少通過顯示電路顯示出來,每一次計時可以通過控制電路查詢出來。設(shè)計框圖如

39、圖2-1所示;用1602LCD設(shè)計的秒表系統(tǒng)框圖7、2顯示部分設(shè)計分析顯示部分是本次設(shè)計的重要部分,一般有以下兩種方案:方案一:采用LED顯示,在單片機應(yīng)用系統(tǒng)中最常用的LED數(shù)碼管為7段數(shù)碼管,可利用LED顯示器靈活地構(gòu)成所要求位數(shù)的顯示,分靜態(tài)顯示和動態(tài)顯示。對于靜態(tài)顯示方式,所需的譯碼驅(qū)動裝置很多,引線多而復(fù)雜,且可靠性也較低。而對于動態(tài)顯示方式,雖可以避免靜態(tài)顯示的問題,但設(shè)計上如果處理不當(dāng),易造成亮度低,有閃爍等問題。方案二:采用LCD顯示。是一種低功耗顯示器件,具有顯示內(nèi)容豐富、體積小、重量輕、壽命長、使用方便、安全省電等優(yōu)點,在計算器、萬用表、袖珍式儀表和低功耗微機應(yīng)用系統(tǒng)中得到

40、廣泛使用。其顯示的質(zhì)量高,每個顯示器每一點在收到信號后就一直保持那種彩色和亮度,恒定發(fā)光,而不像陽極射線管顯示器那樣刷新亮點,畫面質(zhì)量高且不閃爍。鑒于上述原因,我們采用方案二。7、3軟件設(shè)計分析在軟件設(shè)計中,一般采用模塊化的程序設(shè)計方法,它具有明顯的優(yōu)點。把一個多功能的復(fù)雜程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設(shè)計和調(diào)試,有利于程序的優(yōu)化和分工,提局了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。總流程圖:八、調(diào)試成功與否L.LLJIUdOIdLSecondWalc-h0>>>>06明60胞C2V(啟停控制)|.KW(清零)60U1X1_IfiJCR

41、YSTALro.lADHPD.2W.E2XTA12PO.AMFO.SAMro.BADB叫響D7P2.a(seP2.1婭P3ENP2i/A10P2.3/A11IALEP2.4A12FTP2.fi/A13P2.6/A14P2.7/A15F3P1t1P2.UTX&P12P32/1NTDP13P3JMNT1P1.4ra.wjF叫51P1fiP3.&/WRP17P3.7/RDAT39C51CLO'CK=12MdO./d1y3736d3/353耳y33果嘰,£J、RP1RE3PACK321RSZ122W23EZ的站2B典LS11。十1-i5i::151BSOUNDER圖一

42、剛啟動時截圖IJJILW010L>>>>00!0e:05:8?20pFT卜fflpFX1_CRYSTALC2卜1(啟停控制J”ClIIX1CRYSTALXIALIPO.QMDOP0.1XAD1PDJ2/AD2XIAL2po.awmrFD4/AD4IP0:3/AMPOSAU1RGTP0.7tfkD7P2.WP0咬gP2!.2/A«>PGEHP2.3/A11ALEFS.WAt?EAF2.S婀3F2.0W*lP1DP3.O/RXUP1.1F3.irpq>PI2P3.Z/IIMTQ"3P3.3/IINU1P1.4P3.TDP15P3.5H1P1J

43、0P3.6WRP17P37/RDAI3OD51cuackoj29、3031an<*oy<11/d2/30d3/3Jd4y33d6y32d7.-ARP1RESPACke劇志田gESSSSSKU12OpFC22OfrFA皿20"91B_小"后停控利)1°2.KE(清零)22IWwaE/上2耳zza皿2§SOUNDERTS!017Z11怕圖二運行時截圖LLLJIUdOiaLSecondWalc-h>>>>OB明6090XTALIFO.OADOro.1W.D1lPO.2W.R2XTAL2FC.3?AK3FO.5ADflro.s

44、AMFOJ/AP7P2.0uOaeP2.1場P2i/A10商ENP2#aiALER.4/A1SEAP2.5/A13P2.6/A14P2.7/A15EF3P4,1lPS.iXtP12P32/11NTDP13P3J3/1NT1P1.4ra.wjPl5作的P1fiP3.fi/WRP17P3.7/RDgAT39C51CL0'CK12M36dO/3Bd1E38點35f3耳45/33dB'21RSZ12223EZ252BZ27衛(wèi)B1011而JJ3ilS151B17WP.i略幻0Ku珂J®a節(jié)瑁fJ.'戲毛一arffihCfwECMiLS1RP1RE5PACK-Bu、SOU

45、NDER圖三按下清零后截圖調(diào)試成功,調(diào)試結(jié)果如上圖所示。KeilC51軟件是目前最流行的開發(fā)8051系列的單片機的軟件工具。KeilC51提供了包括C語言編譯器,宏匯編,連接器,庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境uVision3IDE將這些部分結(jié)合起來。打開Keil軟件,將代碼輸入調(diào)試并在錯誤全被解決的情況下生成對應(yīng)的hex文件;打開Proteus軟件,將對應(yīng)的原理圖和生成的hex文件連接。在調(diào)試過程中我們出現(xiàn)了如下錯誤:1:a013函數(shù)014Vcz-dInalz-ze(i;015VodlCD_Ser_FOSfchari;DIEVoidLCD2wriEe

46、_Daca(car);017VoidDiSuring<'-Jcar,以:;JeIPl.,Fu.OTe.1ll;lI一3注二二技target1TargetL11602.c»«»1632,C(14:errorCL29:nr.iSBingr;rbefore1LCD_IniEaalizenetcreated單機錯誤信息,讓指針跳到錯誤行,一步步調(diào)試之后得知是代碼輸入時輸入法錯誤,把大寫”V'改寫為小寫”V”。2:16:-2:errorCLz3i'i=medifiakl-slvalue162:errorCL=3:Ival-e:errorCl=3

47、:uxLtrodifiak:l=lvalueL6:-2.C(93):errorCL=3i口二mediflvalue1632.C(93):errorCL;3:Ival-e1602*C(97):error01=3:二二mcidifzik:L=lvalue1602.C(9?):errorCL=3i二medifL6:-2.3(12J):srrcrCISKr*T-l育m號-|_._!_ar_.1_|_'1F_,1rli678901207070707佛曲0851voidTrr.s:(iinterrupt1using當(dāng)我們把上面的錯誤改了之后,又出現(xiàn)了以上錯誤,我們通過書籍、小組成員的共同努力,知道

48、了是由于我們修改代碼中一些不能修改和覆蓋的變量,導(dǎo)致出現(xiàn)了以上錯誤。在我們細心尋找下發(fā)現(xiàn)時少了一個分號3:*123牛gi:124Caae3:TRO=1;125Dz-3pa.yStringiPr126break;127Case2:128Case£:TRO-:-;129Displa7_5trin(Fr130break;1J1default:TRO=Z;132break;trrIlTlH1Pe,Fu,(J+Te.ccir.pili16:2,c,.1602.C(123>:errorC202:1Case1:undefinedidentifier1602.C(2j)error01413Ti

49、r=xerror1111602,C(L23)errerC141myn匕己xerrornear1:11602-C(124)errerC141syeaxerrornear1:*1602X(125)errorC2jz1Prcir.ts*:口二d已f二二已萬ler1602,C(12)errerC2?2TC*se':ur.defiedider.±fier1602-C(127)errorC141syntaxerrornear12*1602.C(12*)errorC14Lstaxerz:ornear1:'當(dāng)我們把分號加上了之后,又出現(xiàn)了如上圖所示的錯誤。我們?nèi)M成員齊心協(xié)力,根據(jù)錯

50、誤提示,將一個一個的錯誤改正4:T£Jcase1:124爹case3;TR0=l;i=125|Display5tzig(Frirxsi-'f'126Bbreak;127Mcase2:12SRcase4:TR0=0;129,DispLay_S.ngiFmrrmi-l,0;130 卷break;131 default:TR0-0;132 break;E,NLI國Pt.,(Fli.IJTe.3ildtarget'Target1*zcrr.piligIE”*。.*-602,C(125:errorC2Q2:'Frcirts':-Tidefi-edider

51、tifier602(129):erznEC202:1Promts1:undefinedidentifierlaxetr;口匚created當(dāng)我們再次運行時,又出現(xiàn)以上的兩個錯誤。通過我們?nèi)M同學(xué)的努力以及其他同學(xué)的幫忙,我們得知是由于輸入時的馬虎,我們在前面定義的是propts,而這里出現(xiàn)了promts,所以導(dǎo)致了錯誤。根據(jù)錯誤,一步一步的檢查、調(diào)試之后,我們把錯誤全部解決,如圖:K二二LKBbim1Uif巳XL二5YM3OL:_NCPMODULE:1602.Ctj(1602ADDSS:*,WAfUJITS12:IdADETOUWRE5CLTDEXTERNA5YM3OL:_NCPMODULE:

52、1602.obj(1602ADDRESS:C2ASHFrcgrair.5ize:iaua-32.1xdata-jccde=,11602"-0Error(3)f23Warning(s)<1 九、參考文獻張大明.單片機控制實訓(xùn)指導(dǎo)及綜合應(yīng)用實訓(xùn)M.北京:機械工業(yè)出版社陳益飛.單片機原理及應(yīng)用技術(shù).北京M:國防工業(yè)出版社,2011張偉.張杰編著.單片機原理及應(yīng)用.北京M:機械工業(yè)出版社,孫余凱.精選實用電子電路260例M.北京:電子工業(yè)出版社.,郭天祥51單片機C語言教程.北京:電子工業(yè)出版社閆玉德俞虹.MCS-單片機原理與應(yīng)用北京:機械工業(yè)出版社陳益飛.單片機原理及應(yīng)用技術(shù)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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論