基于89s51單片機的數(shù)字電子時鐘和基于89S52單片機的數(shù)字電壓表_第1頁
基于89s51單片機的數(shù)字電子時鐘和基于89S52單片機的數(shù)字電壓表_第2頁
基于89s51單片機的數(shù)字電子時鐘和基于89S52單片機的數(shù)字電壓表_第3頁
基于89s51單片機的數(shù)字電子時鐘和基于89S52單片機的數(shù)字電壓表_第4頁
基于89s51單片機的數(shù)字電子時鐘和基于89S52單片機的數(shù)字電壓表_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1摘要該文主要論述如何使用89S51型號的單片機來設(shè)計一個數(shù)字電子時鐘。該設(shè)計是利用單片機原理,以AT89S51芯片為主要控制器。通過用KeilC51軟件編程仿真,再通過protues軟件進行硬件仿真,設(shè)計制作一個多功能數(shù)字電子時鐘的硬件電路。其中通過單片機擴展的1602LCD顯示器用來顯示秒、分、時計數(shù)單元中的值。整個設(shè)計過程包括兩大部分:軟件部分和硬件部分。以單片機AT89S51芯片為核心,加上一定的外圍電路、1602LCD顯示器和鍵盤控制器組成。該電子時鐘系統(tǒng)主要由時鐘模塊、液晶顯示模塊以及鍵盤控制模塊。液晶顯示模塊能夠準(zhǔn)確顯示時間(顯示格式為時:分:秒(24小時制)),鍵盤控制模塊可方便進行時間調(diào)整,時鐘模塊主要控制時間的顯示由二十四進制電路與六十進制電路組成。電路的設(shè)計以硬件和軟件為指導(dǎo)思想,通過軟件編程來實現(xiàn)模擬電路的設(shè)計。用單片機AT89S51為主要功能模塊,采用1602LCD輸出顯示時間,用按鈕做開關(guān),軟件計時、調(diào)試,輔助必要的電路,實現(xiàn)高效、準(zhǔn)確的數(shù)字電子時鐘系統(tǒng)。該數(shù)字電子時鐘具有電路簡單明了,系統(tǒng)穩(wěn)定性高等優(yōu)勢,,成本低,維護方便、調(diào)試簡便、具有廣泛的市場前景。關(guān)鍵詞:單片機AT89S51芯片1602LCD軟件動態(tài)掃描目錄文獻摘要······························································2緒論··································································41、設(shè)計總體方案·····················································52、主要器件介紹及功能實現(xiàn)··········································52.1AT89C52單片機···················································52.21602LCD液晶顯示····················································72.3計時功能的實現(xiàn)···················································93、硬件電路···························································93.1上電復(fù)位電路·····················································93.2時鐘系統(tǒng)·························································93.3按鍵電路·························································93.4電子時鐘的原理圖·················································103.5硬件調(diào)試·························································113.6實物硬件電路·····················································114、軟件設(shè)計··························································124.1程序流程························································124.2程序設(shè)計·························································134.3生成代碼文件·····················································194.4軟件調(diào)試·························································20結(jié)論··································································22參考文獻······························································23附錄··································································24緒論傳統(tǒng)時鐘主要是機械式轉(zhuǎn)動,由指針顯示時間。往往存在計時誤差,不能滿足人們對時間計量的精度要求,與現(xiàn)代化技術(shù)發(fā)展不相符。隨著科技的進步,以單片機為主要功能模塊,采用LCD輸出顯示時間,用按鈕做開關(guān),軟件計時、調(diào)試,輔助必要的電路,實現(xiàn)高效、準(zhǔn)確的電子時鐘系統(tǒng)逐漸代替的傳統(tǒng)時鐘。單片機自20世紀(jì)70年代問世以來,以其極高的性能價格比,受到人們的重視與關(guān)注,應(yīng)用很廣、發(fā)展迅速。單片機具有體積小、重量輕、抗干擾能力強、環(huán)境要求高、價格低廉、可靠性高、靈活性好、開發(fā)較為容易的優(yōu)點。已經(jīng)廣泛的應(yīng)用于工業(yè)自動化控制、智能儀器儀表、家用電器、電力電子、機電一體化設(shè)備等領(lǐng)域。在單片機領(lǐng)域鐘應(yīng)用最多的是51系列。用1602LCD設(shè)計的可調(diào)式電子鐘是以AT89S51為核心,輔以必要的電路而設(shè)計的。數(shù)字電子鐘設(shè)計與制作可采用數(shù)字電路實現(xiàn),也可以采用單片機實現(xiàn)。若用數(shù)字電路完成,所設(shè)計的電路相當(dāng)復(fù)雜,需要十幾片數(shù)字集成塊,其功能也主要依賴與數(shù)字電路的各功能模塊的組合來實現(xiàn),焊接的過程也比較復(fù)雜,成本也非常高。若用單片機來設(shè)計制作完成,由于計數(shù)器功能實現(xiàn)主要通過軟件編程來實現(xiàn)。降低的硬件電路的復(fù)雜性,而且成本也有所降低,所以在設(shè)計與制作鐘采用單片機AT89S51,它是低功耗、高性能的CMOS型8位單片機。片內(nèi)帶有4KB的flash存儲器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。此外,AT89S51的指令系統(tǒng)引腳與8051完全兼容,片內(nèi)有128B的RAM、32條I/O口線、2個16位定時/計數(shù)器、5個中斷源、一個全雙工串行口等。液晶顯示器(LCD)具有功耗低、體積小、重量輕、超薄等許多其他顯示器無法比擬的優(yōu)點,近年來被廣泛用于單片機控制的智能儀器、儀表和低功耗電子產(chǎn)品中。LCD可分為段式LCD、字符式LCD和點陣式LCD。其中,段式LCD和字符式LCD只能用于字符和數(shù)字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求;而點陣式LCD不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線以及漢字、動畫,并且可以實現(xiàn)屏幕滾動、反轉(zhuǎn)、閃爍等功能,用途十分廣泛。電子時鐘用集成電路計時,譯碼代替機械式傳動,用LCD顯示器代替指針顯示,減小了計時誤差,該數(shù)字電子鐘具有時、分、秒顯示時間的功能,還可以進行時和分的校對。相對傳統(tǒng)的電子時鐘,數(shù)字電子時鐘克服了電子時鐘計時不精確的缺陷,加上調(diào)節(jié)方便,受到廣大消費者的喜愛。1、設(shè)計總體方案電子鐘的工作原理有振蕩器產(chǎn)生穩(wěn)定的分頻脈沖信號,作為數(shù)字鐘的時間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計數(shù)器滿60向分計數(shù)器進位,分計數(shù)器滿60向小時計數(shù)器進位,小時計數(shù)器按照0-23的顯示規(guī)律計數(shù)。計數(shù)器的輸出分別由譯碼器送顯示器顯示。計時出現(xiàn)誤差時,可以通過校準(zhǔn)電路校時、校分。設(shè)計總體方案圖1.1為設(shè)計總體框圖。該設(shè)計采用AT89C51單片機作為控制器,液晶顯示時間,用按鈕做開關(guān)。按鍵輸入修改值,再加上軟件設(shè)計,達到實驗結(jié)果。按鍵功能:上電復(fù)位主控制器上電復(fù)位主控制器AT89S514個按鍵1602LCD顯示器圖1.1系統(tǒng)總體框圖K2鍵:增加當(dāng)前小時或分鐘;K3鍵:減小當(dāng)前小時或分鐘;K4鍵確定調(diào)節(jié)值。2、主要器件介紹及功能實現(xiàn)2.1AT89C52單片機MCS-51系列單片機是Intel公司1980年推出的高性能8位單片微型計算機,它們的指令系統(tǒng)與芯片引腳完全兼容。AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低電壓、高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。主要特性:(1)與MCS-51兼容(2)4K字節(jié)可編程閃爍存儲器(3)壽命:1000寫/擦循環(huán)(4)數(shù)據(jù)保留時間:10年(5)全靜態(tài)工作:0Hz-24MHz(6)三級程序存儲器鎖定(7)128×8位內(nèi)部RAM(8)32可編程I/O線(9)兩個16位定時器/計數(shù)器(10)5個中斷源(11)可編程串行通道(12)低功耗的閑置和掉電模式(13)片內(nèi)振蕩器和時鐘電路圖2-1AT89C51圖2-1AT89C51芯片VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時器0外部輸入)P3.5T1(記時器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。2.1.1振蕩器特性XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。2.21602LCD液晶顯示單片機應(yīng)用系統(tǒng)中使用的顯示器主要有發(fā)光二極管顯示器,簡稱LED(LightEmittingDiode);液晶顯示器LCD(LiquidCrystalDisplay);近幾年也有配置CRT顯示器的。液晶顯示器簡稱是利用液晶經(jīng)過處理后能夠改變光線傳輸方向的特性,達到顯示字符或者圖形的目的。其特點是體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點,在單片機應(yīng)用系統(tǒng)中有著日益廣泛的應(yīng)用。1602芯片:主要用于顯示時間和定時時間。1602芯片由點陣字符液晶顯示器件和專用的行、列驅(qū)動器、控制及必要的鏈接件、結(jié)構(gòu)件組裝而成,可以顯示數(shù)字和西文字符,但不能顯示圖形,已經(jīng)可以滿足本次設(shè)計的需要。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調(diào)節(jié)和背光功能。外型尺寸:80X36X13(LXWXH)實物如圖2-3圖2-21602LCD實物圖(2) 接口信號說明如圖表2-1編號符號引腳說明編號符號引腳說明1VSS電源地9D2DataI/O2VDD電源正極10D3DataI/O3VL液晶顯示偏壓信號11D4DataI/O4RS數(shù)據(jù)/命令選擇端(H/L)12D5DataI/O5R/W讀寫選擇端(H/L)13D6DataI/O6E使能信號14D7DataI/O7D0DataI/O15BLA背光源正極8D1DataI/O16BLK背光源負極表2-1接口信號說明(3)主要技術(shù)參數(shù)如圖表2-2顯示容量16X2個字符芯片工作電壓4.5~5.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95X4.35(WXH)mm表2-2主要技術(shù)參數(shù)(4)基本操作程序讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0~D7=狀態(tài)字讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:無寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出:D0~D7=數(shù)據(jù)寫數(shù)據(jù):輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖輸出:無2.3計時功能的實現(xiàn)時鐘信號的產(chǎn)生可利用AT89C51片內(nèi)的定時器0產(chǎn)生定時中斷,進行時、分、秒的計時,并將信號送到顯示電路。2.3.1定時方法(1)軟件定時:軟件定時靠執(zhí)行一個循環(huán)程序以進行時間延時。特點是時間精確,且不需要外加硬件電路。但軟件定時要占用CPU,因此軟件定時時間不宜太長。(2)硬件定時:特點是不占用CPU,但需要改變的元件參數(shù)來調(diào)節(jié)定時時間,在使用上不夠靈活。(3)可編程定時器定時:通過對系統(tǒng)時鐘脈沖的計數(shù)來完成。計數(shù)值通過程序設(shè)定,改變計數(shù)值,也就改變了定時時間,在使用上比較靈活。2.3.2定時/計數(shù)器的定時和計數(shù)功能LCD顯示器:類似于LED數(shù)碼管顯示器。每個顯示器的段電極包括a,b,c,d,e,f,g七個筆劃(段)和一個背電極BP(或COM)??梢燥@示數(shù)字和簡單的字符。點陣式LCD顯示器:段電極與背電極呈正交帶狀分布,液晶位于正交的帶狀電極間。點陣式LCD的控制一般采用行掃描方式。MCS-51單片機內(nèi)部有兩個可編程的定時/計數(shù)器,分別稱為定時/計數(shù)器0和定時/計數(shù)器1其功能如下:(1)計數(shù)功能:計數(shù)是指對外部事件進行計數(shù)。外部事件的發(fā)生以輸入脈沖表示,因此計數(shù)功能的實質(zhì)就是對外來脈沖進行計數(shù)。(2)定時功能:定時功能也是通過定時/計數(shù)器的計數(shù)來實現(xiàn)的。不過此時的計數(shù)脈沖來自單片機內(nèi)部,機每個機器周期產(chǎn)生一個計數(shù)脈沖,也即是每個機器周期計數(shù)器加1。由于一個機器周期等于12個振蕩脈沖周期,因此計數(shù)頻率為振蕩頻率的1/12。這樣不但可以根據(jù)計數(shù)值計算出定時時間,也可以反過來按定時時間的要求計算出計數(shù)器的初值。3、硬件電路3.1上電復(fù)位電路上電復(fù)位電路用電容接一個+5V的電源,當(dāng)電容開始充電,向單片機輸入一個高電平;當(dāng)電容充電結(jié)束開始放電,此時單片機與一個電阻相連接地為低電平??梢?,電容的充放電,單片機得到一個交替出現(xiàn)的高電平和低電平。RST是復(fù)位端。單片機的振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平就可以實現(xiàn)復(fù)位操作,是單片機回復(fù)到初始狀態(tài)。3.2時鐘系統(tǒng)單片機利用內(nèi)部的振蕩電路,在XTAL1、XTAL2引腳上外接定時元件,內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。最常用的內(nèi)部時鐘方式是采用外接晶振和電容組成的并聯(lián)諧振回路。3.3按鍵電路按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點式開關(guān)按鍵,如機械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;另一類是無觸點式開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價低,后者壽命長。目前,微機系統(tǒng)中最常見的是觸點式開關(guān)按鍵。按鍵按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識別鍵符及給出相應(yīng)鍵碼的方法。編碼鍵盤主要是用硬件來實現(xiàn)對鍵的識別,非編碼鍵盤主要是由軟件來實現(xiàn)鍵盤的定義與識別。全編碼鍵盤能夠由硬件邏輯自動提供與鍵對應(yīng)的編碼,此外,一般還具有去抖動和多鍵、竄鍵保護電路。這種鍵盤使用方便,但需要較多的硬件,價格較貴,一般的單片機應(yīng)用系統(tǒng)較少采用。非編碼鍵盤只簡單地提供行和列的矩陣,其它工作均由軟件完成。由于其經(jīng)濟實用,較多地應(yīng)用于單片機系統(tǒng)中。在本套設(shè)計中由于只需要幾個功能鍵,此時,可采用獨立式按鍵結(jié)構(gòu)。(1)按鍵的軟件結(jié)構(gòu):按鍵中有一個選擇鍵、調(diào)時鍵加一鍵和減一鍵以及一個確定鍵,四個按鍵接在P1.0——P1.4口,低電平表示有按鈕按下;按鈕沒有接防抖電路,需要設(shè)計軟件防抖。(2)調(diào)時:按下調(diào)時鍵后可以調(diào)時,過程如下:調(diào)時時加/減調(diào)時分加/減確定完成時間設(shè)置。3.4電子時鐘原理圖圖3-1該電子時鐘電路主要包括:按鍵控制電路(P1口1~4腳引出)、聲音電路(P3口10腳引出)和LCD顯示器的驅(qū)動部分(39~32、21~23腳引出)C51的P0口和P2口以及1602LCD的供電源通過總線連接構(gòu)成了電子鐘的顯示模塊,P1口外接四個按鍵K1~K4構(gòu)成按鍵模塊。此外,P3口外接一個蜂鳴器構(gòu)成聲音模塊。當(dāng)按一下P1口的按鍵時,單片機工作并通過P0和P2口對LCD對應(yīng)的位進行讀寫操作,同時在LCD上顯示出來,P3口的蜂鳴器發(fā)出響聲。3.5硬件調(diào)試是檢測硬件電路正常工作的途徑。常見故障:(1)1602LCD顯示屛無顯示,需檢查電路,先從最小系統(tǒng)查起,再檢查1602LCD的供源電路是否正常。接線是否錯連,焊點焊接有沒有出現(xiàn)問題。(2)1602LCD顯示不夠亮,檢查LCD的供源電路,查看電阻有沒有選錯或這漏接,同時也要檢查電阻的焊點是否有假焊,虛焊等。(3)1602LCD顯示亂碼或漏字顯示,主要檢查單片機接口部分,以及焊點有沒有出現(xiàn)問題。3.6實物硬件電路圖3-2實物圖4、軟件設(shè)計4.1程序流程圖開始開始定義變量類型定義液晶顯示器控制端口、按鍵控制設(shè)置LCD顯示的值執(zhí)行程序時間顯示是否正確按K1鍵選擇調(diào)整時或分按K2鍵調(diào)整增加按K3鍵調(diào)整減小按K4鍵確定調(diào)整值結(jié)束NY圖4-SEQ圖2-\*ARABIC14.1.1編輯軟件(KeiluVision2)KeiluVision2:是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),使用接近于傳統(tǒng)c語言的語法來開發(fā),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用,而且大大的提高了工作效率和項目開發(fā)周期,他還能嵌入?yún)R編,您可以在關(guān)鍵的位置嵌入,使程序達到接近于匯編的工作效率。KeilC51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面,使您能在很短的時間內(nèi)就能學(xué)會使用keilc51來開發(fā)您的單片機應(yīng)用程序。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。4.2電子時鐘程序設(shè)計4.2.1文件調(diào)用的頭文件名:#include<reg52.h>4.2.2定義變量類型:#defineuintunsignedint#defineucharunsignedchar4.2.3定義液晶顯示器控制端口、按鍵控制:sbitrs=P2^0;sbitrw=P2^1;sbiten=P2^2;sbits1=P1^0;sbits2=P1^1;sbits3=P1^2;sbits4=P1^3;4.2.4設(shè)置LCD顯示的初值:ucharcodetable[]={"CurrentTime"};4.2.5編寫延時程序:voiddelay(uchartime){uintj;for(;time>0;time--)for(j=0;j<125;j++);}4.2.6編寫寫指令函數(shù):voidwrite_com(ucharcom){en=0;rs=0;delay(5);P0=com;delay(5);en=1;delay(5);en=0;}voidwrite_data(uchardat)//寫數(shù)據(jù)函數(shù){en=0;rs=1;delay(5);P0=dat;delay(5);en=1;delay(5);en=0;}4.2.7初始化voidinit(){en=0;rw=0;write_com(0x38);//設(shè)置16X2顯示,5X7點陣,8位數(shù)據(jù)接口write_com(0x0c);//設(shè)置開顯示,不顯示光標(biāo)write_com(0x06);//寫一個字符后地址指針加1write_com(0x01);//顯示清零,數(shù)據(jù)指針清零4.2.8LCD開始寫入程序:for(i=0;i<(sizeof(table)-1);i++)//第一行寫{write_com(0x80+i);write_data(table[i]);}for(i=0;i<(sizeof(table1)-1);i++)//第二行寫{write_com(0x80+0x40+i);write_data(table1[i]);}miao=05;fen=30;shi=12;4.2.9定時器工作方式的選擇:TMOD=0x01;//time0作為定時器工作在模式1下TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;//開啟總中斷ET0=1;//開啟time0中斷TR0=1;//啟動time0}4.2.10時分秒顯示函數(shù):voidwrite_sfm(ucharadd,ucharnum){sh=num/10;//分離出十位ge=num%10;//分離出個位write_com(0x80+0x40+add);//第二行數(shù)據(jù)指針位置調(diào)整write_data(0x30+sh);//更改顯示數(shù)據(jù)的十位write_data(0x30+ge);//更改顯示數(shù)據(jù)的個位}4.2.11中斷函數(shù):voidtimer0()interrupt1//time0中斷{TH0=(65536-50000)/256;//重裝初始值TL0=(65536-50000)%256;count++;if(count==10)//20次到則滿一秒{count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}}4.2.12鍵盤掃描程序:voidkeyscan(){if(K1==0)//按下K1{delay(5);if(K1==0){num1++;while(!K1);//等待釋放if(num1==1){TR0=0;write_com(0x0e);//顯示光標(biāo),不閃爍write_com(0x80+0x40+0x0b);//數(shù)據(jù)指針移動到秒的個位處write_com(0x0f);//顯示光標(biāo),閃爍}if(num1==2){write_com(0x80+0x40+0x08);//數(shù)據(jù)指針移到到分鐘的個位處}if(num1==3){write_com(0x80+0x40+0x05);//數(shù)據(jù)指針移到到小時的個位處}if(num1==4){num1=0;//清零write_com(0x0c);//重新顯示TR0=1;//重新啟動計時}}}if(num1!=0)//按下K2則選擇時/分/秒加1{if(K2==0){delay(5);if(K2==0){while(!K2);if(num1==1){delay(20);miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+0x0a);}if(num1==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+0x07);}if(num1==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+0x04);}}}}if(num1!=0)if(K3==0)//按下K3則選擇時/分/秒減1{delay(5);if(K3==0){while(!K3);if(num1==1){delay(20);miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+0x0a);}if(num1==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+0x07);}if(num1==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+0x04);}}}if(num1!=0)if(K4==0)//確定按鍵K4{delay(5);if(K4==0){while(!K4);num1=0;//清零write_com(0x0c);//重新顯示TR0=1;//重新啟動計時}}}4.2.13主函數(shù):voidmain(){init();while(1){keyscan();}}4.3生成代碼文件(1)在選項卡項目欄下我們的時鐘周期通常設(shè)置為12MHz(2)輸出欄中選擇產(chǎn)生HEX文件(此文件為最終仿真用文件)見圖4-4圖4-2(3)在C51欄中級別設(shè)置為2數(shù)據(jù)覆蓋(4)添加并建立目標(biāo)文件直至通過生成.HEX文件,如圖4-5圖4-34.4軟件調(diào)試4.4.1程序的仿真ProteueISIS軟件:ProteusISIS是英國Labcenter公司開發(fā)的電路設(shè)計、分析與仿真軟件,功能極其強大。該軟件的主要特點是:(1)集原理圖設(shè)計、仿真分析(ISIS)和印刷電路板設(shè)計(ARES)于一身。可以完成從繪制原理圖、仿真分析到生成印刷電路板圖的整個硬件開發(fā)過程。(2)提供幾千種電子元件(分立元件和集成電路、模擬和數(shù)字電路)的電路符號、仿真模型和外形封裝。(3)支持大多數(shù)單片機系統(tǒng)以及各種外圍芯片(RS232動態(tài)仿真I2C調(diào)試器、SPI調(diào)試器、鍵盤LCD系統(tǒng)仿真等)的仿真。(4)提供各種虛擬儀器,如各種測量儀表、示波器、邏輯分析儀、信號發(fā)生器等。4.4.2具體步驟:(1)畫出電子鐘仿真原理圖(圖3-1)(2)單機AT89C51加載1602電子鐘HEX文件如圖4-4(3) 對程序進行仿真如圖4-5結(jié)論采用AT89C51單片機設(shè)計的電子時鐘具有較好的定時功能,定時更精確。將單片機與1602LCD及其相關(guān)硬件電路連接起來,完成電子鐘的功能。通過用keilC51軟件編寫程序,生成.Hex文件,再通過protuesISIS軟件畫出硬件電路進行仿真。這樣避免了因硬件電路的設(shè)計不合理而造成的實物硬件電路板的焊接錯誤,而達不到預(yù)期的實驗結(jié)果。合理的電路設(shè)計加上功能模塊實現(xiàn)用1602LCD設(shè)計電子鐘的功能。軟件設(shè)計時,在剛開始編寫程序時由于漏寫了1602LCD顯示器的顯示程序,導(dǎo)致在硬件仿真是顯示器白屏,沒有任何顯示。在將程序補進去后顯示器正常工作,顯示出實驗理想的效果。硬件設(shè)計時,由于PCB板式未經(jīng)布線的,所以元器件的聯(lián)系都要通過導(dǎo)線的連接建立起關(guān)聯(lián),這就加大了線路鏈接的復(fù)雜度。由于連線比較多,引腳很容易認(rèn)錯。在焊接前我們采用有簡單到復(fù)雜,先連接相鄰的引腳,這樣連接時布線就更有層次,而且也不容易出錯、也不會出現(xiàn)引腳錯連的故障。參考文獻[1] 胡翔駿.電路基礎(chǔ)簡明教程[M].北京:高等教育出版社.2010-11[2] 胡宴如.模擬電子技術(shù)[M].北京:高等教育出版社2011-2[3] 楊志忠.數(shù)字電子技術(shù)[M].北京:高等教育出版社2010-12[4] 汪吉鵬.微機原理與接口技術(shù)[M].北京:高等教育出版社2011-7[5] 崔武子、付鈧、孫力紅.C語言程序設(shè)計[M].北京:清華大學(xué)出版社2010-3[6] 潘新民、王燕芳.微型計算機控制技術(shù)[M].北京:電子工業(yè)出版社2010-1[7] 廖超平.EDA技術(shù)與VHDL實用教程[M].北京:高等教育出版社.20108-6[8] 張秀國.單片機C語言程序設(shè)計教程與實訓(xùn)[M].北京:北京大學(xué)出版社.2010-6[9]廖芳.電子產(chǎn)品制作工藝與實訓(xùn)[M].北京:電子工業(yè)出版社.2011-1[10]周國雄、晏密英.單片機應(yīng)用系統(tǒng)設(shè)計精講.中國鐵道出版社.2012-3[11]陳濤.單片機應(yīng)用及C51程序設(shè)計.機械工業(yè)出版社.2010-1[12]夏路易.單片機技術(shù)基礎(chǔ)教程與實踐.電子工業(yè)出版社.2010-1附錄通過對電路原理圖的分析列出以下元件清單如表:材料數(shù)量材料數(shù)量AT89C51單片機1內(nèi)置電源插孔17805穩(wěn)壓電源140引腳插座1晶振12MHZ1接線座1電解電容220UF1R1200歐1電解電容100uF1R2560歐1電解電容10UF1R310K1固定電容30pf2發(fā)光二極管1瓷片電容0.1Uf11602lcd顯示器1普通二極管IN40071蜂鳴器1圓形橋堆1按鍵4按鈕開關(guān)1電阻1K8.摘要:本文介紹一種基于89S52單片機的一種電壓測量電路,該電路采用ICL7135高精度、雙積分A/D轉(zhuǎn)換電路,測量范圍直流0-±2000伏,使用LCD液晶模塊顯示,可以與PC機進行串行通信。正文著重給出了軟硬件系統(tǒng)的各部分電路,介紹了雙積分電路的原理,89S52的特點,ICL7135的功能和應(yīng)用,LCD1601的功能和應(yīng)用。該電路設(shè)計新穎、功能強大、可擴展性強。關(guān)鍵詞:電壓測量,ICL7135,雙積分A/D轉(zhuǎn)換器,1601液晶模塊Abstract:Theintroductionofacost-based89S52MCUavoltagemeasurementcircuits,thecircuitsusedICL7135high-precision,dual-scoringA/Dconversioncircuits,measuringscopeDC0-2000volts,theuseofLCDthatcanbecarriedoutwithaPCserialcommunications.Thepaperfocusesonprovidingasoftwareandhardwaresystemcomponentscircuit,introduceddoubleintegralcircuittheory,89S52featuresICL7135functionsandapplications,LCD1601functionsandapplications.thecircuitdesigninnovative,powerful,canbeexpansionarystrong.KeyWords:DigitalVoltmeterICL7135LCD160189S521前言數(shù)字電壓表(DigitalVoltmeter)簡稱DVM,它是采用數(shù)字化測量技術(shù),把連續(xù)的模擬量(直流輸入電壓)轉(zhuǎn)換成不連續(xù)、離散的數(shù)字形式并加以顯示的儀表。傳統(tǒng)的指針式電壓表功能單一、精度低,不能滿足數(shù)字化時代的需求,采用單片機的數(shù)字電壓表,由精度高、抗干擾能力強,可擴展性強、集成方便,還可與PC進行實時通信。目前,由各種單片A/D轉(zhuǎn)換器構(gòu)成的數(shù)字電壓表,已被廣泛用于電子及電工測量、工業(yè)自動化儀表、自動測試系統(tǒng)等智能化測量領(lǐng)域,示出強大的生命力。與此同時,由DVM擴展而成的各種通用及專用數(shù)字儀器儀表,也把電量及非電量測量技術(shù)提高到嶄新水平。本章重點介紹單片A/D轉(zhuǎn)換器以及由它們構(gòu)成的基于單片機的數(shù)字電壓表的工作原理。2系統(tǒng)原理及基本框圖輸入電路A/D轉(zhuǎn)換輸入電路A/D轉(zhuǎn)換89S52單片機LCD顯示通訊模塊圖2.1系統(tǒng)基本方框圖3硬件設(shè)計3.1輸入電路圖3.1.1量程切換開關(guān)圖3.1.2衰減輸入電路輸入電路的作用是把不同量程的被測的電壓規(guī)范到A/D轉(zhuǎn)換器所要求的電壓值。智能化數(shù)字電壓表所采用的單片雙積分型ADC芯片ICL7135,它要求輸入電壓0-±2V。本儀表設(shè)計是0-1000V電壓,靈敏度高所以可以不加前置放大器,只需衰減器,如圖3.1.2所示9M、900K、90K、和10K電阻構(gòu)成1/10、1/100、1/1000的衰減器。衰減輸入電路可由開關(guān)來選擇不同的衰減率,從而切換檔位。為了能讓CPU自動識別檔位,還要有圖3.1.1的硬件連接。3.2A/D轉(zhuǎn)換電路A/D轉(zhuǎn)換器的轉(zhuǎn)換精度對測量電路極其重要,它的參數(shù)關(guān)系到測量電路性能。本設(shè)計采用雙積A/D轉(zhuǎn)換器,它的性能比較穩(wěn)定,轉(zhuǎn)換精度高,具有很高的抗干擾能力,電路結(jié)構(gòu)簡單,其缺點是工作速度較低。在對轉(zhuǎn)換精度要求較高,而對轉(zhuǎn)換速度要求不高的場合如電壓測量有廣泛的應(yīng)用。3.2.1雙積A/D轉(zhuǎn)換器的工作原理圖雙積A/D轉(zhuǎn)換器圖雙積A/D轉(zhuǎn)換器的波形圖如圖所示:對輸入模擬電壓和基準(zhǔn)電壓進行兩次積分,先對輸入模擬電壓進行積分,將其變換成與輸入模擬電壓成正比的時間間隔T1,再利用計數(shù)器測出此時間間隔,則計數(shù)器所計的數(shù)字量就正比于輸入的模擬電壓;接著對基準(zhǔn)電壓進行同樣的處理。在常用的A/D轉(zhuǎn)換芯片(如ADC-圖雙積A/D轉(zhuǎn)換器的波形圖A/D轉(zhuǎn)換器,具有精度高(精度相當(dāng)于14位二進制數(shù))、價格低廉、抗干擾能力強等優(yōu)點。本文介紹用單片機并行方式采集ICL7135的數(shù)據(jù)以實現(xiàn)單片機電壓表和小型智能儀表的設(shè)計方案。3.2.17135的應(yīng)用7135是采用CMOS工藝制作的單片4位半A/D轉(zhuǎn)換器,其所轉(zhuǎn)換的數(shù)字值以多工掃描的方式輸出,只要附加譯碼器,數(shù)碼顯示器,驅(qū)動器及電阻電容等元件,就可組成一個滿量程為2V的數(shù)字電壓表。㈠7135主要特點如下:①雙積型A/D轉(zhuǎn)換器,轉(zhuǎn)換速度慢。②在每次A/D轉(zhuǎn)換前,內(nèi)部電ICL7135引腳圖路都自動進行調(diào)零操作,可保證零點在常溫下的長期穩(wěn)定。在20000ICL7135引腳圖滿量程)范圍內(nèi),保證轉(zhuǎn)換精度1字相當(dāng)于14bitA/D轉(zhuǎn)換器。

③具有自動極性轉(zhuǎn)換功能。能在但極性參考電壓下對雙極性模擬輸入電壓進行A/D轉(zhuǎn)換,模擬電壓的范圍為0~±1.9999V。。

④模擬出入可以是差動信號,輸入電阻極高,輸入電流典型值1PA。

⑤所有輸出端和TTL電路相容。

⑥有過量程(OR)和欠量程(UR)標(biāo)志信號輸出,可用作自動量程轉(zhuǎn)換的控制信號。

⑦輸出為動態(tài)掃描BCD碼。

⑧對外提供六個輸入,輸出控制信號(R/H,BUSH,ST,POL,OR,UR),因此除用于數(shù)字電壓表外,還能與異步接收/發(fā)送器,微處理器或其它控制電路連接使用。

⑨采用28外引線雙列直插式封裝,外引線功能端排列如圖所示。

㈡7135數(shù)字部分?jǐn)?shù)字部分主要由計數(shù)器、鎖存器、多路開關(guān)及控制邏輯電路等組成。7135一次A/D轉(zhuǎn)換周期分為四個階段:1、自動調(diào)零(AZ);2、被測電壓積分(INT);3、基準(zhǔn)電壓反積分(DE);4、積分回零(ZI)。具體內(nèi)部轉(zhuǎn)換過程這里不做祥細介紹,主要介紹引腳的使用。①R/H(25腳)當(dāng)R/H=“1”(該端懸空時為“1”)時,7135處于連續(xù)轉(zhuǎn)換狀態(tài),每40002個時鐘周期完成一次A/D轉(zhuǎn)換。若R/H由“1”變“0”,則7135在完成本次A/D轉(zhuǎn)換后進入保持狀態(tài),此時輸出為最后一次轉(zhuǎn)換結(jié)果,不受輸入電壓變化的影響。因此利用R/H端的功能可以使數(shù)據(jù)有保持功能。若把R/H端用作啟動功能時,只要在該端輸入一個正脈沖(寬度≥300ns),轉(zhuǎn)換器就從AZ階段開始進行A/D轉(zhuǎn)換。注意:第一次轉(zhuǎn)換周期中的AZ階段時間為9001-10001個時鐘脈沖,這是由于啟動脈沖和內(nèi)部計數(shù)器狀態(tài)不同步造成的。②/ST(26腳)每次A/D轉(zhuǎn)換周期結(jié)束后,ST端都輸出5個負脈沖,其輸出時間對應(yīng)在每個周期開始時的5個位選信號正脈沖的中間,ST負脈沖寬度等于1/2時鐘周期。圖ICL7135的波形圖第一個ST負脈沖在上次轉(zhuǎn)換周期結(jié)束后101個時鐘周期產(chǎn)生。因為每個選信號(D5--D1)的正脈沖寬度為200個時鐘周期(只有AZ和DE階段開始時的第一個D5的脈沖寬度為201個CLK周期),所以ST負脈沖之間相隔也是200個時鐘周期。需要注意的是,若上一周期為保持狀態(tài)(R/H=“0”圖ICL7135的波形圖③BUSY(21腳)在雙積分階段(INT+DE),BUSY為高電平,其余時為低電平。因此利用BUSY功能,可以實現(xiàn)A/D轉(zhuǎn)換結(jié)果的遠距離雙線傳送,其還原方法是將BUSY和CLK“與”后來計數(shù)器,再減去10001就可得到原來的轉(zhuǎn)換結(jié)果。④OR(27腳)當(dāng)輸入電壓超出量程范圍(20000),OR將會變高。該信號在BUSY信號結(jié)束時變高。在DE階段開始時變低。⑤UR(28腳)當(dāng)輸入電壓等于或低于滿量程的9%(讀數(shù)為1800),則一當(dāng)BUST信號結(jié)束,UR將會變高。該信號在INT階段開始時變低。⑥POL(23腳)該信號用來指示輸入電壓的極性。當(dāng)輸入電壓為正,則POL等于“1”,反之則等于“0”。該信號DE階段開始時變化,并維持一個A/D轉(zhuǎn)換調(diào)期。⑦位驅(qū)動信號D5、D4、D3、D2、D1(12、17、18、19、20腳)每一位驅(qū)動信號分別輸出一個正脈沖信號,脈沖寬度為200個時鐘周期,其中D5對應(yīng)萬位選通,以下依次為千、百、十、個位。在正常輸入情況下,D5--D1輸出連續(xù)脈沖。當(dāng)輸入電壓過量程時,D5--D1在AZ階段開始時只分別輸出一個脈沖,然后都處于低電平,直至DE階段開始時才輸出連續(xù)脈沖。利用這個特性,可使得顯示器件在過程時產(chǎn)生一亮一暗的直觀現(xiàn)象。

⑧B8、B4、B2、B1(16、15、14、13腳)該四端為轉(zhuǎn)換結(jié)果BCD碼輸出,采用動態(tài)掃描輸出方式,即當(dāng)位選信號D5=“1”時,該四端的信號為萬位數(shù)的內(nèi)容,D4=“1”時為千位數(shù)內(nèi)容,其余依次類推。在個、十、百、千四位數(shù)的內(nèi)容輸出時,BCD碼范圍為0000--1001,對于萬位數(shù)只有0和1兩種狀態(tài),所以其輸出的BCD碼為“0000”和“0001”。當(dāng)輸入電壓過量程時,各位數(shù)輸出全部為零,這一點在使用時應(yīng)注意。

最后還要說明一點,由于數(shù)字部分以DGNG端作為接地端,所以所有輸出端輸出電平以DGNG作為相對參考點?;鶞?zhǔn)電壓,基準(zhǔn)電壓的輸入必須對于模擬公共端COM是正電壓。

㈢與單片機系統(tǒng)的串行連接在ICL7135與單片機系統(tǒng)進行連接時,使用并行采集方式,要連接BCD碼數(shù)據(jù)輸出線,可以將ICL7135的/STB信號接至AT89C52的P3.2(INT0)。ICL7135需要外部的時鐘信號,本設(shè)計采用CD4060來對4M信號進行32分頻得到125KHz的時鐘信號。CD4060計數(shù)為14級2進制計數(shù)器,在數(shù)字集成電路中可實現(xiàn)的分頻次數(shù)最高,而且CD4060還包含振蕩電路所需的非門,使用更為方便。圖ICL7135與系統(tǒng)的連接圖圖CD4060時鐘發(fā)生電路3.3單片機部分單片機選用的是ATMEL公司新推出的AT89S52,如圖所示。該芯片具有低功耗、高性能的特點,是采用CMOS工藝的8位單片機,與AT89C51完全兼容。AT89S52還有以下主要特點:

①采用了ATMEL公司的高密度、非易失性存儲器(NV-SRAM)技術(shù);

②其片內(nèi)具有256字節(jié)RAM,8KB的可在線編程(ISP)FLASH存儲器;

③有2種低功耗節(jié)電工作方式:空閑模式和掉電模式

④片內(nèi)含有一個看門狗定時器(WDT),WDT包含一個14位計數(shù)器和看門狗定時器復(fù)位寄存器(WDTRST),只要對WDTRST按順序先寫入01EH,后寫入0E1H,WDT便啟動,當(dāng)CPU由于擾動而使程序陷入死循環(huán)或“跑飛”狀態(tài)時,WDT即可有效地使系統(tǒng)復(fù)位,提高了系統(tǒng)的抗干擾性能。3.4液晶顯示部分圖89S52引腳圖顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個16圖89S52引腳圖點陣圖形式液晶由M行×N列個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1個字節(jié)的8個位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示單元和顯示RAM區(qū)1024個字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和屏上相應(yīng)位置的亮暗對應(yīng)。一個字符由6×8或8×8點陣組成,即要找到和屏上某幾個位置對應(yīng)的顯示RAM區(qū)的8個字節(jié),并且要使每個字節(jié)的不同的位為‘1’,其它的為‘0’,為‘1’的點亮,為‘0’的點暗,這樣一來就組成某個字符。但對于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。3.4.11601使用說明圖1601引腳圖表LCD1601液晶模塊的引腳引腳符號功能說明1GND接地2Vcc+5V3VL驅(qū)動LCD,一般將此腳接地4RS寄存器選擇0:指令寄存器(WRITE)Busyflag,位址計數(shù)器(READ)1:數(shù)據(jù)寄存器(WRITE,READ)5R/WREAD/WRITE選擇1:READ0:WTITE6E讀寫使能(下降沿使能)7DB0低4位三態(tài)、雙向數(shù)據(jù)總線續(xù)表LCD1601液晶模塊的引腳8DB19DB210DB311DB4高4位三態(tài)、雙向數(shù)據(jù)總線另外DB7也是一個Busyflag12DB513DB614DB7寄存器選擇,如表所示:表寄存器選擇控制線操作RSR/W操作說明00寫入指令寄存器(清除屏幕…等)01讀Busyflag(DB7),以及讀取位址計數(shù)器(DB0~DB6)值10寫入數(shù)據(jù)寄存器(顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)Busyflag(DB7):在此位未被清除為“0”(1)顯示地址:內(nèi)部地址計數(shù)器的計數(shù)地址:SB7=0(DB0~DB6)第一行00、01、02……等,第二行40、41、42……等,可配合檢測DB7=1(RS=0,R/W=1)讀取目前顯示字的地址,判斷是否需要換行。表LCD160116×1顯示字的地址1234567891011121314151600010203040506074041424344454647(2)外部地址:DB7=1,亦即80H+內(nèi)部計數(shù)地址,可以用此方式將字顯示在某一位置。LCD各地址列舉如下表:表LCD160116×1顯示字的外部地址16×116字1行1601123456789101112131415168081828384858687C0C1C2C3C4C5C6C7表LCD1601的指令組指令說明設(shè)置碼RSR/WD7D6D5D4D3D2D1D0清除顯示幕000000000*光標(biāo)回到原點000000001*進入模式設(shè)定00000001I/DS顯示幕ON/OFF0000001DCB移位000001S/CR/L**功能設(shè)定00001DLNF**字發(fā)生器地址設(shè)定0001AGC設(shè)置顯示地址0001ADD忙碌標(biāo)志位BF001BF顯示數(shù)據(jù)10寫入數(shù)據(jù)讀取數(shù)據(jù)11讀取數(shù)據(jù)I/DI/D=1表示加1,I/D=0表示減1SS=1表示顯示幕ONS=0表示OFFDD=1表示顯示屏幕OND=0表示顯示屏幕OFFCC=1表示光標(biāo)ONC=0表示光標(biāo)OFFBB=1表示閃爍ONB=0表示顯示閃爍OFFS/CS/C=1表示顯示屏幕移位S/C=0光標(biāo)移位R/LR/L=1表示右移R/L=0表示左移DLDL=1表示8位DL=0表示4位FF=1表示5×10點矩陣F=0表示5×7點矩陣NN=1表示2行顯示行N=0表示1行顯示行BFBF=1:內(nèi)部正在動作BF=0:可接收指令或數(shù)據(jù)碼3.4.2液晶顯示部分與89S52的接口如圖所示:用89S52的P2口作為數(shù)據(jù)線,用P0.1、P0.2、P0.3分別作為LCD的E、R/W、RS。其中E是下降沿觸發(fā)的片選信號,R/W是讀寫信號,RS是寄存器選擇信號本模塊設(shè)計要點如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點陣,然后設(shè)液晶與89S52的接口置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD的顯示緩沖區(qū)中送字符,程序中采用2個字符數(shù)組,一個顯示字符,另一個顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時2.5ms,判斷是否夠顯示的個數(shù),不夠則地址加一取下一個要顯示的字符或數(shù)據(jù)。液晶與89S52的接口3.5通訊模塊圖3.5.1MAX232引腳功能圖89S52內(nèi)部已集成通信接口URT,只需擴展一片MAX232芯片將輸出信號轉(zhuǎn)換成RS-232協(xié)議規(guī)定的電平標(biāo)準(zhǔn),

MAX232是一種雙組驅(qū)動器/接收器,每個接收器將EIA/TIA-232-E電平輸入轉(zhuǎn)換為5V

圖3.5.1MAX232引腳功能圖4系統(tǒng)的軟件設(shè)計4.1主程序設(shè)計ICL7135A/D與單片機連接電路的軟件設(shè)計系統(tǒng)的程序流程圖如圖所示。主程序一開始運行則設(shè)置堆棧起始地址為70H,設(shè)置中斷寄存器,用來對ICL7135的中斷進行計數(shù),每5次后清零,完成一次數(shù)據(jù)采集工作,然后設(shè)置ICL7135的STB端的中斷的優(yōu)先級。緊接著LCDM1601B進行一次清屏,使其各個指令、數(shù)據(jù)寄存器的值進行清空,屏幕不顯示任何字符。以前面對1601B的介紹,只要將01H送到數(shù)據(jù)總線,使RS=0,R/W=0,E有個下降沿的脈沖就可以完成清屏工作。用以下指令實現(xiàn)MOVP2,#01H;送到數(shù)據(jù)DB7DB0,調(diào)用子程序ENABLE,由于下降沿時,內(nèi)部數(shù)據(jù)要送到RAM區(qū),所以要有一個延時子程序,使這個下降沿持續(xù)2.5毫秒。內(nèi)部RAM有指令代碼后就開始對RAM進行清零,所以屏幕原有的字符將被清除。接著對1601進行功能的設(shè)定。MOVP2,#01111000B,按表3.4.5來看是設(shè)定圖4.1.1主程序流程圖顯示器按2行顯示,每行8位,5圖4.1.1主程序流程圖調(diào)用一次子程序ENABLE程序,寫入CPU的指令寄存器中。每次向LCDM中寫入一個指令,就調(diào)用一次ENABLE,然后再對顯示器進行閃爍、光標(biāo)等功能進行設(shè)定。顯示器的RAM地址按加1方法進行讀寫。再設(shè)定第一行字符,也就是‘Voltage’的顯示地址80H。字符‘Voltage’的TABLE表地址送到DPTR中,然后調(diào)用遠程查表命令,依次把數(shù)據(jù)送到P2口,這時再調(diào)用子程序WRITE3,使LCD1601的RS=1,R/W=0使使能端E產(chǎn)生一個下降沿脈沖,將數(shù)據(jù)送入到數(shù)據(jù)寄存器中,接下來執(zhí)行子程序DISPLAY1,它的主要功能是將TABLE表中的字符輸出到LCD中去。調(diào)定好顯示字符數(shù)即遠程查表的次數(shù),就開始查表了。例如第一個字符“V”的ASCII碼是56H,就將這個碼送到P2口,再調(diào)用使能數(shù)據(jù)子程序,使RS=1(數(shù)據(jù)區(qū)使能)寫入顯示數(shù)據(jù)區(qū),R/W=0表示寫,E=來個下降沿延時2.5毫秒,使數(shù)據(jù)寫入RAM內(nèi)。完成圖4.1.2圖4.1.2數(shù)據(jù)地址行的起始地址為OCH,再調(diào)用顯示采樣數(shù)據(jù)的子程序。采樣數(shù)據(jù)存放的數(shù)據(jù)地址安排如下圖所示,首先將60H中的數(shù)顯示在正負號的位置上,按照ASCII碼表,正號不顯示(#20H),負號顯示“-”(#2DH)。4.2A/D中斷程序設(shè)計圖4.2.1圖4.2.1中斷子程序流程圖ICL7135每一分鐘完成3次據(jù)的采集工作,1/3秒完成后向CPU申請中斷,CPU這時暫停工作,為中斷服務(wù).中斷響應(yīng)后關(guān)中斷,將PS

溫馨提示

  • 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

提交評論