【正文】
25第4章 系統(tǒng)調(diào)試與擴(kuò)展 27 27 27 MAX232接口 27 29結(jié) 論 30致 謝 31參考文獻(xiàn) 32附錄1 RS232C接口標(biāo)準(zhǔn)詳解 33附錄2 The RS232C 36附錄3 液晶顯示模塊SMC1602A字庫(kù) 40附錄4 軟件程序 41附錄5 整機(jī)原理圖 45第1章 緒論 立題背景 隨著科學(xué)技術(shù)的發(fā)展,社會(huì)不斷的進(jìn)步,人們對(duì)公共傳媒質(zhì)量的要求越來(lái)越高。正文中首先簡(jiǎn)單描述系統(tǒng)硬件工作原理,且附以系統(tǒng)硬件設(shè)計(jì)框圖,并介紹了單片機(jī)微處理器的發(fā)展史,論述了本次畢業(yè)設(shè)計(jì)所應(yīng)用的各硬件接口技術(shù)和各個(gè)接口模塊的功能及工作過(guò)程, 并具體描述了STC89C5SMC1602A及MAX232外接電路接口的軟、硬件調(diào)試。首先在緒論中介紹了本課題的課題背景、研究意義及完成的功能。本文對(duì)基于單片機(jī)的LCM液晶顯示模塊控制系統(tǒng)進(jìn)行了研究。使硬件在軟件的控制下協(xié)調(diào)運(yùn)作。最后對(duì)我所開(kāi)發(fā)的用單片機(jī)實(shí)現(xiàn)LCD液晶顯示器控制原理的設(shè)計(jì)思想和軟、硬件調(diào)試作了詳細(xì)的論述。近年來(lái)隨著單片機(jī)技術(shù)的不斷發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)日新月異地更新。 目的和意義LCD液晶顯示已經(jīng)是人機(jī)界面的關(guān)鍵技術(shù)。為了便于擴(kuò)展和更改,軟件的設(shè)計(jì)采用模塊化結(jié)構(gòu),使程序設(shè)計(jì)的邏輯關(guān)系更加簡(jiǎn)潔明了。本文撰寫(xiě)的主導(dǎo)思想是軟、硬件相結(jié)合,以硬件為基礎(chǔ),來(lái)進(jìn)行各功能模塊的編寫(xiě)。在數(shù)字電路和單片機(jī)之間采用單片機(jī)實(shí)現(xiàn)液晶顯示。采用的是 宏晶科技的STC89系列單片機(jī)STC89C52,對(duì)液晶顯示電路起中央處理及外圍控制作用。(3)液晶顯示電路:本電路采用液晶顯示模塊SMC1602A。(5)復(fù)位電路:是單片機(jī)的片內(nèi)電路初始化,是單片機(jī)從一種確定的狀態(tài)開(kāi)始運(yùn)行。 單片機(jī) 單片機(jī)模塊方案的比較與確定單片機(jī)是整個(gè)系統(tǒng)的核心,單片機(jī)具有體積小、重量輕、價(jià)格便宜、功耗低、控制功能強(qiáng)及運(yùn)算速度快等特點(diǎn)。STC單片機(jī)出廠時(shí)就已經(jīng)完全加密,無(wú)法解密,采用ISP/IAP機(jī)制寫(xiě)入程序,用戶(hù)可直接通過(guò)串口對(duì)單片機(jī)編程,調(diào)試方便。:~(5V單片機(jī))/~(3V單片機(jī))。(32/36個(gè)),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上拉 (普通8051 傳統(tǒng)I/O口)P0口是開(kāi)漏輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O口用時(shí),需加上拉電阻。,外部晶體20M以下時(shí),可省外部復(fù)位電路。:0~75℃/40~+85℃。下面結(jié)合圖23來(lái)介紹各引腳的功能。(1)XTAL1(19腳):接外部石英晶體的一端。來(lái)自反向振蕩器的輸出。在單片機(jī)正常工作時(shí)。應(yīng)當(dāng)注意的是,每當(dāng)MCS51訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)(即執(zhí)行的是MOVX指令),在兩個(gè)機(jī)器周期中ALE只出現(xiàn)一次,即丟失一個(gè)ALE脈沖。在對(duì)片內(nèi)EPROM型單片機(jī)編程寫(xiě)入時(shí),此引腳作為編程脈沖輸入端。此腳接外部程序存儲(chǔ)器的OE(輸出允許端)。對(duì)于8031,因其無(wú)內(nèi)部程序存儲(chǔ)器,所以該腳必須接地。I/O口引腳(1)P0口(39腳~32腳):~。P0口為一個(gè)8位漏極開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。采用內(nèi)部時(shí)鐘方式時(shí),如圖24(a)所示。外部振蕩信號(hào)通過(guò)XTAL2端直接接至內(nèi)部時(shí)鐘電路,這時(shí)內(nèi)部反相放大器的輸入端XTAL1端應(yīng)接地。最重要的是此電路易于調(diào)試,而且精度高。 MCS—51單片機(jī)在時(shí)鐘電路工作以后,在RST/VPD端持續(xù)給出2個(gè)機(jī)器周期的高電平就可以完成復(fù)位操作(一般復(fù)位正脈沖寬度大于10ms)。在上電瞬間RST/VPD端與VCC電位相同,隨著電容上電壓的逐漸上升,RST/VPD端電位逐漸下降。圖25(b)為既可進(jìn)行上電自動(dòng)復(fù)位,也可外部手動(dòng)復(fù)位的電路示意圖,R1可取200Ω左右。液晶所具有的各向異性、低彈性常數(shù)及流體特征等特異性能使液晶具有豐富多彩、有趣有用的電光(熱光)效應(yīng)。英文名稱(chēng)叫“LCD Module”,簡(jiǎn)稱(chēng)“LCM”,中文一般稱(chēng)為“液晶顯示模塊”。這是一種由段型液晶顯示器件與CPU專(zhuān)用的集成電路組裝成一體的功能部件,只能顯示數(shù)字和一些標(biāo)識(shí)符號(hào)。(1)計(jì)數(shù)模塊這是一種由不同位數(shù)的七段型液晶顯示器件與譯碼驅(qū)動(dòng)器,或再加上計(jì)數(shù)器裝配成的計(jì)數(shù)顯示部件。它們的輸人端口有的僅是BCD碼接口形式,有的是BCD碼加選通端輸人接口形式,還有的是可直接與串行、并行口相接的接口形式等等,如需要計(jì)算或記錄一串?dāng)?shù)字,還必須配置相應(yīng)的電路,當(dāng)然也有將計(jì)數(shù)電路配好在模塊上的產(chǎn)品。注意電源:一臺(tái)設(shè)備應(yīng)盡量使用統(tǒng)一的電源,常見(jiàn)的液晶顯示器件計(jì)數(shù)模塊有單電源型和雙電源型,有5V和9V等不同規(guī)格。計(jì)量模塊所用的集成電路型號(hào)主要有ICL710ICL711ICL712ICL713ICL713ICL7129等,這些集成電路的功能、特性決定了計(jì)量模塊的功能和特性。聲于它沒(méi)有成品鐘表的外殼,所以稱(chēng)之為計(jì)時(shí)模塊。它是由點(diǎn)陣字符液晶顯示器件和專(zhuān)用的行、列驅(qū)動(dòng)器、控制器及必要的連接件,結(jié)構(gòu)件裝配而成的,可以顯示數(shù)字和西文字符。每組為1位,每位間有一點(diǎn)的間隔,每行間也有一行的間隔,所以不能顯示圖形,其規(guī)格主要如下:8位 1行;2行16位 1行;2行;4行20位 1行;2行;4行24位 1行;2行;4行32位 1行;2行;4行40位 1行;2行;4行 一般在模塊控制、驅(qū)動(dòng)器內(nèi)具有已固化好192個(gè)字符字模的字符庫(kù)CGROM,還具有讓用戶(hù)自定義建立專(zhuān)用字符的隨機(jī)存儲(chǔ)器CGRAM,允許用戶(hù)建立8個(gè)57點(diǎn)陣的字符。(1)行、列驅(qū)動(dòng)型這是一種必須外接專(zhuān)用控制器的模塊,其模塊只裝配有通用的行、列驅(qū)動(dòng)器,這種驅(qū)動(dòng)器實(shí)際上只有對(duì)像素的一般驅(qū)動(dòng)輸出端,而輸入端一般只有4位以下的數(shù)據(jù)輸入端、移位信號(hào)輸人端、鎖存輸人端、交流信號(hào)輸人端等,如HD44100,IID66100等。(2)行、列驅(qū)動(dòng)控制型這是一種可直接與計(jì)算機(jī)接口,依靠計(jì)算機(jī)直接控制驅(qū)動(dòng)器的模塊。(3)行、列控制型 這是一種內(nèi)藏控制器型的點(diǎn)陣圖形模塊。這種控制器具有自己一套專(zhuān)用的指令,并具有自己的字符發(fā)生器CGROM。每一個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。本文以16字2行(簡(jiǎn)稱(chēng)162)點(diǎn)陣字符液晶模塊SMC1602A。 點(diǎn)陣字符液晶模塊(LCM)內(nèi)部結(jié)構(gòu)LCM的內(nèi)部結(jié)構(gòu)可分為:LCD控制器、LCD驅(qū)動(dòng)器、LCD顯示裝置三個(gè)部分,如圖26所示。表23 顯示模式設(shè)置指令碼功能00111000設(shè)置162 顯示,57 點(diǎn)陣,8 位數(shù)據(jù)接口② 顯示開(kāi)關(guān)及光標(biāo)設(shè)置見(jiàn)表24。輸入端采用9V直流穩(wěn)壓電源。其內(nèi)部設(shè)置了過(guò)流、過(guò)熱及調(diào)整管安全區(qū)保護(hù)電路,所以芯片使用安全可靠。主要介紹了162字符型液晶顯示電路的系統(tǒng)硬件設(shè)計(jì)。ANSIC標(biāo)準(zhǔn)的C語(yǔ)言一共只有32個(gè)關(guān)鍵字(見(jiàn)附錄B),9種控制語(yǔ)句,程序書(shū)寫(xiě)形式自由,主要用小寫(xiě)字母表示,壓縮了一切不必要的成分。C語(yǔ)言把括號(hào)、賦值、逗號(hào)等都作為運(yùn)算符處理,從而使C的運(yùn)算類(lèi)型極為豐富,表達(dá)式類(lèi)型多樣化。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹(shù)、棧等)的運(yùn)算,尤其是指針類(lèi)型數(shù)據(jù),使用起來(lái)比PASCAL更為靈活,多樣。else語(yǔ)句、while語(yǔ)句、do用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。對(duì)變量的類(lèi)型使用比較靈活,例如整型數(shù)據(jù)與字符型數(shù)據(jù)可以通用?!跋拗啤迸c“靈活”是一對(duì)矛盾。也就是說(shuō),對(duì)用C語(yǔ)言的人,要求對(duì)程序設(shè)計(jì)更熟練一些。C語(yǔ)言的這種雙重性,使它既是成功的系統(tǒng)描述語(yǔ)言,又是通用的程序設(shè)計(jì)語(yǔ)言。一般只比匯編語(yǔ)言生成的目標(biāo)代碼效率低10%~20%。首先介紹了C編語(yǔ)言,其次介紹了軟件編程的程序流程圖。查找單片機(jī)的各功能模塊的電源,時(shí)鐘復(fù)位電路。C語(yǔ)言程序的擴(kuò)展名為C文件。 MAX232接口MAX232是一組雙驅(qū)動(dòng)器/接收機(jī),片內(nèi)含有一個(gè)電容性電壓發(fā)生器以便在5V電源供電時(shí)提供EIA/TIA232E電平。每個(gè)驅(qū)動(dòng)器將TTL/COMS輸入電平轉(zhuǎn)換為EIA/TIA232E電平。每一個(gè)發(fā)送器將TTL/CMOS電平轉(zhuǎn)換成TIA/EIA232F電平。 圖53 MAX232實(shí)圖 圖53單片機(jī)與MAX232典型接口電路本章小結(jié) 本章主要講解了電路的軟件調(diào)試與擴(kuò)展。 162點(diǎn)陣字符液晶模塊SMC1602A第一行顯示good good study,第二行顯示day day up!。本課題的實(shí)現(xiàn)有以下兩部分:主要由單片機(jī)、時(shí)鐘振蕩電路、復(fù)位電路、液晶顯示模塊、整機(jī)電源電路、串口電路等六部分組成。是利用單片機(jī)C編語(yǔ)言編程來(lái)實(shí)現(xiàn)的。通過(guò)畢業(yè)設(shè)計(jì),我提高了動(dòng)手能力,鞏固了模擬電子技術(shù)、Protel99SE、C語(yǔ)言程序設(shè)計(jì)、STC89系列單片機(jī)原理及應(yīng)用等理論課程的學(xué)習(xí),加深了對(duì)應(yīng)用電子技術(shù)專(zhuān)業(yè)的了解。在這里,我要再一次對(duì)我的導(dǎo)師及電子系的全體老師們表示深深的謝意!在你們的支持與幫助下,我順利的完成了此次畢業(yè)設(shè)計(jì)。RS323C標(biāo)準(zhǔn)是美國(guó)EIA(電子工業(yè)聯(lián)合會(huì))與BELL等公司一起開(kāi)發(fā)的1969年公布的通信協(xié)議。 在討論RS232C接口標(biāo)準(zhǔn)的內(nèi)容之前,先說(shuō)明兩點(diǎn): 首先,RS232C標(biāo)準(zhǔn)最初是遠(yuǎn)程通信連接數(shù)據(jù)終端設(shè)備DTE(Data Terminal Equipment)與數(shù)據(jù)通信設(shè)備DCE(Data Communication Equipment)而制定的。有了對(duì)這種背景的了解,我們對(duì)RS232C標(biāo)準(zhǔn)與計(jì)算機(jī)不兼容的地方就不難理解了。它規(guī)定連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程。0。0。RS232C(簡(jiǎn)稱(chēng)232,RS232)。對(duì)于數(shù)據(jù)(信息碼):邏輯“1”(傳號(hào))的電平低于3V,邏輯“0”(空號(hào))的電平告語(yǔ)+3V;對(duì)于控制信號(hào);接通狀態(tài)(ON)即信號(hào)有效的電平高于+3V,斷開(kāi)狀態(tài)(OFF)即信號(hào)無(wú)效的電平低于3V,也就是當(dāng)傳輸電平的絕對(duì)值大于3V時(shí),電路可以有效地檢查出來(lái),介于3~+3V之間的電壓無(wú)意義,低于15V或高于+15V的電壓也認(rèn)為無(wú)意義,因此,實(shí)際工作時(shí),應(yīng)保證電平在177。實(shí)現(xiàn)這種變換的方法可用分立元件,也可用集成電路芯片。引腳11輸出端接EIARS232C。因此,RS232C所有的輸出、輸入信號(hào)都要分別經(jīng)過(guò)MC1488和MC1498轉(zhuǎn)換器,進(jìn)行電平轉(zhuǎn)換后才能送到連接器上去或從連接器上送進(jìn)來(lái)。DB25連接器定義了25根信號(hào)線,分為4組: ①異步通信的9個(gè)電壓信號(hào)(含信號(hào)地SG)2,3,4,5,6,7,8,20,22 ②20mA電流環(huán)信號(hào) 9個(gè)(12,13,14,15,16,17,19,23,24) ③空6個(gè)(9,10,11,18,21,25) ④保護(hù)地(PE)1個(gè),作為設(shè)備接地端(1腳) DB25型連接器的外形及信號(hào)線分配??梢?jiàn)這個(gè)最大的距離是在碼元畸變小于4%的前提下給出的。s application request. But it widely is borrowed at present uses in the puter (saying accurately that is puter connection) and between the terminal or the peripheral device nearend connection standard. Obviously, this standard some stipulations and with the puter system are inconsistent, even is contradictory. Some to this kind of background39。0。0。 Regarding control signal。s main chip UART, it is the TTL ponent, right side is the EIARS232C coupling, requests the EIA high voltage. Therefore, RS232C all outputs, the input signal must separately after MC1488 and the MC1498 switch, after carrying on the level switch, can deliver the coupling to e up or feed from the coupling. 2, coupling39。s contour and holding wire assignment as shown in Figure 3. The attention, 20mA electric current link signal only IBM PC and IBM PC/XT machine provide, after AT machine and, has not supported. cable length: When the correspondence speed is lower than 20kb/s, the RS232C direct connection39。//讀/寫(xiě)選擇端RW為P1^1口sbit lcdrs=P2^2。//延時(shí)子函數(shù)聲明void write_(uchar )。init()。 for(i=0。 } write_(0x80+0x53)。i++)//第二行的存儲(chǔ)單元 { write_date(table1[i])。i++) //左移16位 { write_(0x1c)。//閃爍 delay(300)。 delay(300)。 delay(300)。//停3秒 write_(0x01)。i22。 //顯示第2行 delay(3)