單片機(jī)原理與應(yīng)用第8章-第二版_第1頁(yè)
單片機(jī)原理與應(yīng)用第8章-第二版_第2頁(yè)
單片機(jī)原理與應(yīng)用第8章-第二版_第3頁(yè)
單片機(jī)原理與應(yīng)用第8章-第二版_第4頁(yè)
單片機(jī)原理與應(yīng)用第8章-第二版_第5頁(yè)
已閱讀5頁(yè),還剩121頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第章單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)方法簡(jiǎn)介 內(nèi)容提要本章介紹單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)方法,系統(tǒng)設(shè)計(jì)是對(duì)前面所學(xué)知識(shí)一個(gè)全面的,綜合的檢驗(yàn),是本課教學(xué)上的重要目標(biāo),要求大家具有創(chuàng)造性思維,本章先從理論上說(shuō)明系統(tǒng)設(shè)計(jì)方法,接著舉例說(shuō)明應(yīng)用系統(tǒng)設(shè)計(jì)方法。8.1 單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)流程8.1.1 單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)流程一般來(lái)說(shuō),隨著用途的不同,應(yīng)用系統(tǒng)的硬件和軟件結(jié)構(gòu)也不相同,但研制、開(kāi)發(fā)的方法和步驟基本上是相同的。應(yīng)用系統(tǒng)的開(kāi)發(fā)過(guò)程主要有下面幾個(gè)步驟:可行性調(diào)研;研制者接到某項(xiàng)任務(wù)后,在進(jìn)行具體設(shè)計(jì)之前,一般需先進(jìn)行可行性調(diào)研,可行性調(diào)研的目的,是分析完成這個(gè)項(xiàng)目的可能性。進(jìn)行這方面的工作,可參考國(guó)內(nèi)外有關(guān)資料,看是

2、否有人進(jìn)行過(guò)類似的工作。如果有,則可分析他人是如何進(jìn)行這方面工作的,有什么優(yōu)點(diǎn)和缺點(diǎn),有什么是值得借鑒的;如果沒(méi)有,則需作進(jìn)一步的調(diào)研,此時(shí)的重點(diǎn)應(yīng)放在能否實(shí)現(xiàn)目標(biāo)這個(gè)環(huán)節(jié),首先從理論上進(jìn)行分析,探討實(shí)現(xiàn)的可能性,所要求的客觀條件是否具備(如環(huán)境、測(cè)試手段、儀器設(shè)備、資金等),然后結(jié)合實(shí)際情況,確定能否立項(xiàng)的問(wèn)題。總體方案設(shè)計(jì)在進(jìn)行可行性調(diào)研后,如果可以立項(xiàng),下一步工作就是系統(tǒng)總體方案的設(shè)計(jì)。工作的重點(diǎn)應(yīng)放在該項(xiàng)目的技術(shù)難度上,此時(shí)可參考這一方面有關(guān)更詳細(xì)、更具體的資料,不能理解成什么任務(wù)都采用新技術(shù),應(yīng)根據(jù)系統(tǒng)的不同部分和需實(shí)現(xiàn)的功能,參考國(guó)內(nèi)外同類產(chǎn)品的性能,提出合理而可行的技術(shù)指標(biāo),編寫

3、出設(shè)計(jì)任務(wù)書,從而完成系統(tǒng)總體方案設(shè)計(jì)。根據(jù)項(xiàng)目性價(jià)比情況,確定設(shè)計(jì)的起點(diǎn),一種是所有設(shè)計(jì)從電路設(shè)計(jì)做起,這種設(shè)計(jì)可設(shè)計(jì)出較好的產(chǎn)品,但對(duì)設(shè)計(jì)者的知識(shí)面、資金、設(shè)計(jì)周期,設(shè)計(jì)難度都提出較高要求,設(shè)計(jì)經(jīng)驗(yàn)不多的人不易采用,另一種是采用別人的半成品電路板,進(jìn)行二次開(kāi)發(fā),如果是第一次設(shè)計(jì)項(xiàng)目,這是一種較好的選擇,當(dāng)前有些公司已開(kāi)發(fā)出了用于二次設(shè)計(jì)的電路板,如前面所講電子制作推出的PROG-1XX系列單片機(jī)系統(tǒng),學(xué)習(xí)者用于學(xué)習(xí)開(kāi)發(fā)還是很好,其它公司也有一些這樣的產(chǎn)品,這樣的產(chǎn)品對(duì)二次開(kāi)發(fā)介紹較多,所以本章在后面重點(diǎn)介紹電路板設(shè)計(jì)和系統(tǒng)程序設(shè)計(jì)。對(duì)二次開(kāi)發(fā)略講。 設(shè)計(jì)方案細(xì)化,確定軟硬件功能 一旦總體方

4、案確定下來(lái),下一步的工作就是將該項(xiàng)目細(xì)化,即需明確哪些部分用硬件來(lái)完成,哪些部分用軟件來(lái)完成。由于硬件結(jié)構(gòu)與軟件方案會(huì)相互影響,因此,從簡(jiǎn)化電路結(jié)構(gòu)、降低成本、減少故障率、提高系統(tǒng)的靈活性與通用性方面考慮,提倡軟件能實(shí)現(xiàn)的功能盡可能由軟件來(lái)完成,但也應(yīng)考慮以軟件代硬件的實(shí)質(zhì)是以降低系統(tǒng)實(shí)時(shí)性、增加處理時(shí)間為代價(jià)的,而且軟件設(shè)計(jì)費(fèi)用、研制周期也將增加,因此系統(tǒng)的;軟、硬件功能分配應(yīng)根據(jù)系統(tǒng)的要求及實(shí)際情況而合理安排,統(tǒng)一考慮。 (!)應(yīng)用系統(tǒng)硬件設(shè)計(jì)(詳見(jiàn)8.2節(jié)) (2)應(yīng)用系統(tǒng)軟件設(shè)計(jì)(詳見(jiàn)8.3節(jié)) (3)仿真調(diào)試(包括硬件調(diào)試和軟件調(diào)試) 仿真是用開(kāi)發(fā)系統(tǒng)CPU替代應(yīng)用系統(tǒng)(又叫目標(biāo)系統(tǒng)

5、)的CPU進(jìn)行工作,即用開(kāi)發(fā)系統(tǒng)的資源仿真目標(biāo)機(jī)。開(kāi)發(fā)系統(tǒng)提供的CPU稱為仿真CPU,它與目標(biāo)系統(tǒng)的CPU對(duì)目標(biāo)系統(tǒng)的控制作用和工作過(guò)程幾乎完全一致,用戶可以通過(guò)開(kāi)發(fā)系統(tǒng)控制仿真CPU的運(yùn)行,并可以觀察到運(yùn)行的結(jié)果和問(wèn)題以便現(xiàn)場(chǎng)修改。 4固化應(yīng)用程序,脫機(jī)運(yùn)行 在仿真調(diào)試完畢后,借助開(kāi)發(fā)系統(tǒng)的編程器或?qū)S镁幊唐?,將調(diào)試完畢的應(yīng)用程序?qū)懭隕PROM或EEPROM。因?qū)懭隕PROM中的程序和數(shù)據(jù)不可修改,且停電后也不會(huì)丟失,所以稱為程序固化。把固化了程序的EPROM插入目標(biāo)系統(tǒng),目標(biāo)系統(tǒng)就可以現(xiàn)場(chǎng)獨(dú)立運(yùn)行。 附流程圖(見(jiàn)圖8.1)8.1.2單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)舉例例如某公司的電表自動(dòng)抄收系統(tǒng)的設(shè)計(jì)論

6、證方案如下: 實(shí)用的電表自動(dòng)抄收系統(tǒng)應(yīng)滿足下列要求:抄收數(shù)據(jù)準(zhǔn)確、造價(jià)低(最好利用原有電表)、安裝方便、通信線路遍及居民用戶、通信速度快。我們研制的電表自動(dòng)抄收系統(tǒng)能實(shí)現(xiàn)一個(gè)城市、一棟樓宇或一個(gè)單位內(nèi)各個(gè)電力用戶用電量的自動(dòng)采集、記錄、傳送、記費(fèi)等功能,使得在供電局抄表中心便能查詢用電情況、自動(dòng)抄收用戶電表數(shù)、計(jì)算電費(fèi)、催繳等。該系統(tǒng)無(wú)需更換電表,僅需對(duì)現(xiàn)有電表進(jìn)行簡(jiǎn)單改造,引出兩條線至用戶電表箱內(nèi)的超小型抄表儀,該抄表儀能自動(dòng)讀取多個(gè)用戶電表的度數(shù),然后充分利用已遍及居民用戶的電力線進(jìn)行數(shù)據(jù)傳輸,使得供電局抄表中心PC機(jī)和眾多用戶電表數(shù)據(jù)采集終端(抄表儀)聯(lián)網(wǎng),從而達(dá)到自動(dòng)抄收電表的目的。

7、一、通信子網(wǎng)的設(shè)計(jì) 通常通信子網(wǎng)可采用無(wú)線網(wǎng)、架設(shè)專線、電話網(wǎng)、電力線網(wǎng)等形式,但只有電話網(wǎng)和電力線網(wǎng)滿足本系統(tǒng)所要求的通信線路遍及居民用戶、安裝方便、通信速度快、造價(jià)低的特點(diǎn),其中尤以220V供電線構(gòu)成的電力線網(wǎng)優(yōu)點(diǎn)突出。但是,電力線網(wǎng)在同一個(gè)變壓器臺(tái)區(qū)內(nèi)組網(wǎng)簡(jiǎn)單,跨變壓器臺(tái)區(qū)傳輸數(shù)據(jù)則較復(fù)雜。因此,本通信子網(wǎng)采用兩級(jí)網(wǎng)絡(luò)形式。即變壓器臺(tái)區(qū)內(nèi)采用電力線網(wǎng),變壓器臺(tái)區(qū)之間采用電話網(wǎng),在每個(gè)變壓器臺(tái)區(qū)內(nèi)設(shè)置一電力集中器,用于數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)。開(kāi)始可行性調(diào)研系統(tǒng)整體設(shè)計(jì)確定功能技術(shù)指標(biāo)估計(jì)系統(tǒng)規(guī)模:I/O口數(shù),存儲(chǔ)容量模塊劃分,指標(biāo)功能劃分軟硬件權(quán)衡分配確定軟硬分工系統(tǒng)硬件故障診斷硬件有故障?模塊化

8、軟件調(diào)試模塊化軟件合格?所有模塊化軟件連接系統(tǒng)運(yùn)行調(diào)試測(cè)試功能指標(biāo)測(cè)試合格?程序固化,脫機(jī)運(yùn)行開(kāi)發(fā)結(jié)束軟件修正修改程序和硬件系統(tǒng)硬件框圖設(shè)計(jì)系統(tǒng)接口電路部件選擇設(shè)計(jì)印刷板設(shè)計(jì),組裝樣機(jī)硬件電路檢查軟件功能模塊劃分模塊化框圖設(shè)計(jì)源程序設(shè)計(jì)輸入及編輯匯編通過(guò)?系統(tǒng)軟件工作系統(tǒng)硬件工作系統(tǒng)仿真調(diào)試 二、系統(tǒng)組成 電表自動(dòng)抄收系統(tǒng)主要由電力線網(wǎng)、電話網(wǎng)、電力集中器、抄表儀、PC機(jī)組成。其中每一抄表儀最多可完成8個(gè)電表的數(shù)據(jù)采集及傳送。抄表儀的數(shù)目沒(méi)有限制,用戶數(shù)可無(wú)限擴(kuò)充。 本系統(tǒng)的工作過(guò)程如下:設(shè)在用戶電表箱內(nèi)的抄表儀將自動(dòng)讀取各用戶電表的度數(shù),通過(guò)電力線網(wǎng)傳送到所在變壓器臺(tái)區(qū)的電力集中器完成本變壓

9、器臺(tái)區(qū)內(nèi)電表數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā).,再通過(guò)電話網(wǎng)傳送至供電局抄表中心的PC機(jī)進(jìn)行處理,完成對(duì)所抄收電表數(shù)據(jù)的數(shù)據(jù)庫(kù)管理,實(shí)現(xiàn)對(duì)用戶用電情況的匯總、統(tǒng)計(jì)、存儲(chǔ)、打印和計(jì)費(fèi)等。 三、系統(tǒng)軟硬件設(shè)計(jì) 電表自動(dòng)抄收系統(tǒng)涉及知識(shí)面較廣,有對(duì)現(xiàn)場(chǎng)數(shù)據(jù)的實(shí)時(shí)采集,有大量數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā),有抄表中心的數(shù)據(jù)庫(kù)管理,有電力線網(wǎng)及電話網(wǎng)的數(shù)據(jù)傳輸。下面介紹較有代表性的抄表儀、電力線通信網(wǎng)、抄表中心計(jì)算機(jī)的軟硬件設(shè)計(jì)。 1抄表儀的硬件設(shè)計(jì) 本抄表儀的核心器件為性能價(jià)格比高的51單片機(jī),數(shù)據(jù)采集電路完成對(duì)電表轉(zhuǎn)盤轉(zhuǎn)過(guò)圈數(shù)的采集,由此推算電表用戶的耗電。該電路應(yīng)滿足下列要求:不能對(duì)現(xiàn)有電表改造過(guò)多,其和電表連線應(yīng)盡可能短。設(shè)計(jì)完

10、成的該數(shù)據(jù)采集電路放置在電表內(nèi)和電表直接相連,故要求體積非常小,這些要求增加了數(shù)據(jù)采集電路設(shè)計(jì)的難度。本數(shù)據(jù)采集電路巧妙地利用光反射及光電轉(zhuǎn)換原理,使電表每轉(zhuǎn)過(guò)一圈便產(chǎn)生一脈沖信號(hào)輸入至單片機(jī)的P1口,由單片機(jī)檢測(cè)得到該脈沖數(shù),從而推算出其用電量。 2電力線網(wǎng)的設(shè)計(jì) 根據(jù)對(duì)電力線特性的分析及實(shí)驗(yàn)得知: 在相同負(fù)載下,適當(dāng)加大載波信號(hào)電壓,可加大傳輸距離;其它電氣設(shè)備所產(chǎn)生的干擾大多數(shù)是低頻調(diào)幅性干擾;在一定范圍內(nèi)隨著載波頻率的降低,其用電設(shè)備對(duì)載波信號(hào)的衰減量也隨之減小。因而,電力MODEM其調(diào)制方式宜采用抗脈沖干擾強(qiáng)的調(diào)頻方式,載波頻率選擇小于200KHz,并用較強(qiáng)的信號(hào)傳輸。根據(jù)此原則,我

11、們選擇ST7537家庭自動(dòng)化MODEM,其調(diào)制方式為FSK頻移鍵控,載波頻率為132.45KHz,與CENCLECEN 50065-1和FCC標(biāo)準(zhǔn)兼容。我們所設(shè)計(jì)的ST7537 Modem與220V電力線的接口電路簡(jiǎn)單實(shí)用,傳輸可靠、性能價(jià)格比高。 四、抄表中心PC機(jī)軟件設(shè)計(jì) 抄表中心計(jì)算機(jī)其運(yùn)行環(huán)境要求比較寬,選用各種檔次的PC機(jī)均可。該部門完成對(duì)電表數(shù)據(jù)的數(shù)據(jù)庫(kù)管理,包括計(jì)算電費(fèi),存儲(chǔ)用戶用電情況,顯示、打印用電曲線。我們選用數(shù)據(jù)庫(kù)軟件管理系統(tǒng)。設(shè)計(jì)總結(jié): 該電表自動(dòng)抄收系統(tǒng)具有結(jié)構(gòu)靈活、成本低廉、易于擴(kuò)充、易于實(shí)現(xiàn)的特點(diǎn)。若所抄收的電表用戶都在一個(gè)變壓器臺(tái)區(qū)內(nèi),(例如一棟樓宇,一個(gè)工廠內(nèi)

12、),則組網(wǎng)非常簡(jiǎn)單,通信子網(wǎng)僅需電力線網(wǎng)即可。本系統(tǒng)還可和銀行聯(lián)網(wǎng),實(shí)現(xiàn)電費(fèi)的自動(dòng)交納功能。另外,對(duì)該系統(tǒng)稍加改造便可用于對(duì)煤氣表,水表等其它家用數(shù)據(jù)的自動(dòng)抄收??傊撓到y(tǒng)的應(yīng)用范圍非常廣泛,由此帶來(lái)的經(jīng)濟(jì)效益及社會(huì)效益都將非??捎^。 8.2 應(yīng)用系統(tǒng)硬件設(shè)計(jì) 8.2.1 單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì) 一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)包括兩大部分內(nèi)容:一是單片機(jī)系統(tǒng)的擴(kuò)展部分設(shè)計(jì)。它包括存儲(chǔ)器擴(kuò)展和接口擴(kuò)展。存儲(chǔ)器的擴(kuò)展指EPROM、EEPROM和RAM的擴(kuò)展,接口擴(kuò)展是指8255、8155、8279、A/D以及其它功能器件的擴(kuò)展。二是各功能模塊的設(shè)計(jì)。如信號(hào)測(cè)量功能模塊、信號(hào)控制功能模塊、人機(jī)對(duì)話

13、功能模塊、通訊功能模塊等,根據(jù)系統(tǒng)功能要求配置相應(yīng)的D/A、鍵盤、顯示器、打印機(jī)等外圍設(shè)備。 為使硬件設(shè)計(jì)盡可能合理,根據(jù)經(jīng)驗(yàn),系統(tǒng)的電路設(shè)計(jì)應(yīng)注意以下幾個(gè)方面: 1 盡可能選擇標(biāo)準(zhǔn)化、模塊化的典型電路,提高設(shè)計(jì)的成功率和結(jié)構(gòu)的靈活性; 2 在條件允許的情況下,盡可能選用功能強(qiáng)、集成度高的電路或芯片。 3 注意選擇通用性強(qiáng)、市場(chǎng)貨源充足的元器件,尤其對(duì)需求批量大的生產(chǎn)場(chǎng)合,更應(yīng)注意這方面的問(wèn)題。其優(yōu)點(diǎn)是:一旦某種元器件無(wú)法獲得,也能用其它元器件直接替換或?qū)﹄娐飞宰鞲膭?dòng)后用其它器件代替。 4 系統(tǒng)的擴(kuò)展及各功能模塊的設(shè)計(jì)在滿足應(yīng)用系統(tǒng)功能要求的基礎(chǔ)上,應(yīng)適當(dāng)留有余地,以備將來(lái)修改、擴(kuò)展之需。5設(shè)

14、計(jì)時(shí)應(yīng)盡可能地作些調(diào)研,采用最新的技術(shù)。因?yàn)殡娮蛹夹g(shù)發(fā)展迅速,器件更新?lián)Q代很快,市場(chǎng)上不斷推出性能更優(yōu)、功能更強(qiáng)的芯片,只有時(shí)刻注意這方面的發(fā)展動(dòng)態(tài),采用新技術(shù)、新工藝,才能使產(chǎn)品具有最先進(jìn)的性能,不落后于時(shí)代發(fā)展的潮流。7在電路設(shè)計(jì)時(shí),要充分考慮應(yīng)用系統(tǒng)各部分的驅(qū)動(dòng)能力。8工藝設(shè)計(jì),包括機(jī)箱、面板、配線、接插件等,這也是一個(gè)初次進(jìn)行系統(tǒng)設(shè)計(jì)人員容易疏忽但又十分重要的問(wèn)題。在設(shè)計(jì)時(shí)要充分考慮到安裝、調(diào)試、維修的方便。9系統(tǒng)的抗干擾設(shè)計(jì)。這個(gè)問(wèn)題在硬件設(shè)計(jì)中也是十分重要的。 8.2.2 單片機(jī)控制板的設(shè)計(jì)原則 單片機(jī)電路板設(shè)計(jì)本書前面沒(méi)講,電路板設(shè)計(jì)是單片機(jī)系統(tǒng)開(kāi)發(fā)重要一環(huán),涉及到一些專業(yè)知識(shí)、

15、設(shè)備和軟件,現(xiàn)簡(jiǎn)述單片機(jī)電路板設(shè)計(jì)需要遵循的原則如下:1. 在元器件的布局方面,應(yīng)該把相互有關(guān)的元件盡量放得靠近一些,例如,時(shí)鐘發(fā)生器、晶振、CPU的時(shí)鐘輸入端都易產(chǎn)生噪聲,在放置的時(shí)候應(yīng)把它們靠近些。對(duì)于那些易產(chǎn)生噪聲的器件、電感電路、大電流電路和開(kāi)關(guān)電路等,應(yīng)盡量使其遠(yuǎn)離單片機(jī)的邏輯控制電路和存儲(chǔ)電路(ROM、RAM),如果可能的話,可以將這些電路另外制成電路板,這樣有利于抗干擾,提高電路工作的可靠性。 2. 盡量在關(guān)鍵元件,如ROM、RAM等芯片旁邊安裝去耦電容。實(shí)際上,印制電路板走線、引腳連線和接線等都可能含有較大的電感效應(yīng)。大的電感可能會(huì)在Vcc走線上引起嚴(yán)重的開(kāi)關(guān)噪聲尖峰。防止Vc

16、c走線上開(kāi)關(guān)噪聲尖峰的唯一方法,是在VCC與電源地之間安放一個(gè)0.1uF的電子去耦電容。如果電路板上使用的是表面貼裝元件,可以用片狀電容直接緊靠著元件,在Vcc引腳上固定。最好是使用瓷片電容,這是因?yàn)檫@種電容具有較低的靜電損耗(ESL)和高頻阻抗,另外這種電容溫度和時(shí)間上的介質(zhì)穩(wěn)定性也很不錯(cuò)。盡量不要使用鉭電容,因?yàn)樵诟哳l下它的阻抗較高。 在安放去耦電容時(shí)需要注意以下幾點(diǎn): 在印制電路板的電源輸入端跨接100uF-1000uF左右的電解電容,如果體積允許的話,電容量大一些則更好。 原則上每個(gè)集成電路芯片的旁邊都需要放置一個(gè)0.01uF的瓷片電容,如果電路板的空隙太小而放置不下時(shí),可以每10個(gè)芯

17、片左右放置一個(gè)110的鉭電容。 對(duì)于抗干擾能力弱、關(guān)斷時(shí)電流變化大的元件和RAM、ROM等存儲(chǔ)元件,應(yīng)該在電源線(Vcc)和地線之間接入去耦電容。 電容的引線不要太長(zhǎng),特別是高頻旁路電容不能帶引線。 3. 在單片機(jī)控制系統(tǒng)中,地線的種類有很多,有系統(tǒng)地、屏蔽地、邏輯地、模擬地等,地線是否布局合理,將決定電路板的抗干擾能力。在設(shè)計(jì)地線和接地點(diǎn)的時(shí)候,應(yīng)該考慮以下問(wèn)題:邏輯地和模擬地要分開(kāi)布線,不能合用,將它們各自的地線分別與相應(yīng)的電源地線相連。在設(shè)計(jì)時(shí),模擬地線應(yīng)盡量加粗,而且盡量加大引出端的接地面積。一般來(lái)講,對(duì)于輸入輸出的模擬信號(hào),與單片機(jī)電路之間最好通過(guò)光耦進(jìn)行隔離。在設(shè)計(jì)邏輯電路的印制電

18、路版時(shí),其地線應(yīng)構(gòu)成閉環(huán)形式,提高電路的抗干擾能力。地線應(yīng)盡量的粗。如果地線很細(xì)的話,則地線電阻將會(huì)較大,造成接地電位隨電流的變化而變化,致使信號(hào)電平不穩(wěn),導(dǎo)致電路的抗干擾能力下降。在布線空間允許的情況下,要保證主要地線的寬度至少在23mm以上,元件引腳上的接地線應(yīng)該在1.5mm左右。要注意接地點(diǎn)的選擇。當(dāng)電路板上信號(hào)頻率低于1MHz時(shí),由于布線和元件之間的電磁感應(yīng)影響很小,而接地電路形成的環(huán)流對(duì)干擾的影響較大,所以要采用一點(diǎn)接地,使其不形成回路。當(dāng)電路板上信號(hào)頻率高于10MHz時(shí),由于布線的電感效應(yīng)明顯,地線阻抗變得很大,此時(shí)接地電路形成的環(huán)流就不再是主要的問(wèn)題了。所以應(yīng)采用多點(diǎn)接地,盡量降

19、低地線阻抗。電源線的布置除了要根據(jù)電流的大小盡量加粗走線寬度外,在布線時(shí)還應(yīng)使電源線、地線的走線方向與數(shù)據(jù)線的走線方身一致在布線工作的最后,用地線將電路板的底層沒(méi)有走線的地方鋪滿,這些方法都有助于增強(qiáng)電路的抗干擾能力。數(shù)據(jù)線的寬度應(yīng)盡可能地寬,以減小阻抗。數(shù)據(jù)線的寬度至少不小于0.3mm(12mil),如果采用0.460.5mm(18mil20mil)則更為理想。由于電路板的一個(gè)過(guò)孔會(huì)帶來(lái)大約10pF的電容效應(yīng),這對(duì)于高頻電路,將會(huì)引入太多的干擾,所以在布線的時(shí)候,應(yīng)盡可能地減少過(guò)孔的數(shù)量。再有,過(guò)多的過(guò)孔也會(huì)造成電路板的機(jī)械強(qiáng)度降低。8.3應(yīng)用系統(tǒng)軟件設(shè)計(jì)8.3.1應(yīng)用系統(tǒng)軟件設(shè)計(jì)在進(jìn)行應(yīng)用

20、系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮,相互結(jié)合進(jìn)行。當(dāng)系統(tǒng)的電路設(shè)計(jì)定型后,軟件的任務(wù)也就明確了。系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計(jì)的。一般地講,軟件的功能可分為二大類。一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量、計(jì)算、顯示、打印、輸出控制等;另一類是監(jiān)控軟件,它是專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色。由于應(yīng)用系統(tǒng)種類繁多,程序編制者風(fēng)格不一,因此應(yīng)用軟件因系統(tǒng)而異。盡管如此,作為優(yōu)秀的系統(tǒng)軟件還是有其共同特點(diǎn)及其規(guī)律的。設(shè)計(jì)人員在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)從以下幾個(gè)方面加以考慮:1根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干個(gè)相對(duì)獨(dú)立的部分。根據(jù)它們之間的聯(lián)系

21、和時(shí)間上的關(guān)系,設(shè)計(jì)出合理的軟件總體結(jié)構(gòu),使其清晰、簡(jiǎn)捷、流程合理。2培養(yǎng)結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格,各功能程序?qū)嵭心K化、子程序化。既便于調(diào)試、鏈接,又便于移植、修改。3建立正確的數(shù)學(xué)模型。即根據(jù)功能要求,描述出各個(gè)輸入和輸出變量之間的數(shù)學(xué)關(guān)系,它是關(guān)系到系統(tǒng)性能好壞的重要因素。4為提高軟件設(shè)計(jì)的總體效率,以簡(jiǎn)明、直觀的方法對(duì)任務(wù)進(jìn)行描述,在編寫應(yīng)用軟件之前,應(yīng)繪制出程序流程圖。這不僅是程序設(shè)計(jì)的一個(gè)重要組成部分,而且是決定成敗的關(guān)鍵部分。從某種意義上講,多花一份時(shí)間來(lái)設(shè)計(jì)程序流程圖,就可以節(jié)約幾倍源程序編輯調(diào)試時(shí)間。5要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)器/計(jì)數(shù)器、中斷源等。其中最關(guān)鍵的是

22、片內(nèi)RAM分配。對(duì)8031來(lái)講,片內(nèi)RAM指00H7FH單元,這128個(gè)字節(jié)的功能不完全相同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。例如在工作寄存器的8個(gè)單元中,R0和R1用于放各種標(biāo)志字、邏輯變量、狀態(tài)變量等;設(shè)置堆棧區(qū)時(shí)應(yīng)事先估算出子程序和中斷嵌套的級(jí)數(shù)及程序中棧操作指令使用情況,其大小應(yīng)留有余量。若系統(tǒng)中擴(kuò)展了RAM存儲(chǔ)器,應(yīng)把使用頻率最高的數(shù)據(jù)緩沖器安排在片內(nèi)RAM中,以提高處理速度。當(dāng)RAM 資源規(guī)劃好后,應(yīng)列出一張RAM資源詳細(xì)分配表,以備編程時(shí)查用方便。6注意在程序的有關(guān)位置處寫上功能注釋,提高程序的可讀性。7加強(qiáng)軟件抗干擾設(shè)計(jì),它是提高計(jì)算機(jī)應(yīng)用系統(tǒng)可靠性的有力措施。8.3.2

23、 應(yīng)用系統(tǒng)軟件設(shè)計(jì)舉例應(yīng)用系統(tǒng)軟件設(shè)計(jì)有上面一些要求,單片機(jī)計(jì)算能力相對(duì)較差,初學(xué)者編制難度較大,有關(guān)基本計(jì)算常編成子程序備用,目前已有若干版本的子程序庫(kù)公開(kāi)發(fā)表,下面舉幾個(gè)程序例子和大家交流。目前已有若干版本的子程序庫(kù)公開(kāi)發(fā)表1.標(biāo)號(hào):功能:雙字節(jié)二進(jìn)制無(wú)符號(hào)數(shù)平方入口條件:待平方數(shù)在R2、R3中。出口信息:結(jié)果在R2、R3、R4、R5中。影響資源:PSW、A、B、R2R5堆棧需求:字節(jié)MUL2:MOVA,R3;計(jì)算R3平方 MOVB,A MULAB MOVR4,B;暫存部分積 MOVR5,A MOVA,R2;計(jì)算R2平方 MOVB,A MULAB XCHA,R3;暫存部分積,并換出R2和R

24、3 XCHA,B XCHA,R2 MULAB;計(jì)算2R2R3 CLRC RLCA XCHA,B RLCAJNCMU20 INCR2;累加溢出量 MU20:XCHA,B;累加部分積 ADDA,R4 MOVR4,A MOVA,R3 ADDCA,B MOVR3,A CLRA ADDCA,R2 MOVR2,A RET2.標(biāo)號(hào):功能:求雙字節(jié)十六進(jìn)制無(wú)符號(hào)數(shù)據(jù)塊的平均值入口條件:數(shù)據(jù)塊的首址在DPTR中,雙字節(jié)數(shù)據(jù)總個(gè)數(shù)在R7中。出口信息:平均值在R4、R5中。影響資源:PSW、A、R2R6堆棧需求:字節(jié)DDM2:MOVA,R7;保存數(shù)據(jù)個(gè)數(shù) MOVR2,A;初始化數(shù)據(jù)指針 PUSHDPL;保持首址 P

25、USHDPH CLRA;初始化累加和 MOVR3,A MOVR4,A MOVR5,ADM20:MOVXA,DPTR;讀取一個(gè)數(shù)據(jù)的高字節(jié) MOVB,A INCDPTR MOVXA,DPTR;讀取一個(gè)數(shù)據(jù)的低字節(jié) INCDPTR ADDA,R5;累加到累加和中 MOVR5,A MOVA,B ADDCA,R4 MOVR4,A JNCDM21 INCR3DM21:DJNZR2,DM20;累加完全部數(shù)據(jù) POPDPH;恢復(fù)首址 POPDPL LJMPDV31;求R3R4R5R7R4R5,得到平均值 單片機(jī)有浮點(diǎn)運(yùn)算子程序庫(kù),有多字節(jié)加、減、乘、除、傳送、比較、清零、判零等,這里只舉兩例,在使用說(shuō)明中開(kāi)

26、列了最主要的幾項(xiàng):標(biāo)號(hào)、入口條件、出口信息、影響資源、堆棧等。以上程序清單中開(kāi)列了四個(gè)欄目:標(biāo)號(hào)、指令、操作數(shù)、注釋。為方便讀者理解,注釋盡力詳細(xì)。 8.4單片機(jī)應(yīng)用實(shí)例一 水塔水位控制 設(shè)計(jì)課題:水塔水位控制 8.4.1 水塔水位控制原理圖8.2是水塔水位控制原理圖。圖中虛線表示允許水位變化的上下限。在正常情況下,應(yīng)保持水位在虛線范圍之內(nèi)。為此,在水塔內(nèi)的不同高度安裝3根金屬棒,以感知水位變化情況。其中,A棒處于下限水位。C棒處于上限水位,B棒在上下水位之間。A棒接+5V電源,B棒、C棒各通過(guò)一個(gè)電阻與地相連。水塔由電機(jī)帶動(dòng)水泵供水,單片機(jī)控制電機(jī)轉(zhuǎn)動(dòng),以達(dá)到對(duì)水位控制之目的。供水時(shí),水位上

27、升,當(dāng)達(dá)到上限時(shí),由于水的導(dǎo)電作用,B、C棒連通+5V。因此,b、c兩端均為1狀態(tài),這時(shí)應(yīng)停止電機(jī)和水泵的工作,不再給水塔供水。當(dāng)水位降到下限時(shí),B、C棒不能與A棒導(dǎo)電,因此,b、c兩端均為0狀態(tài)。這時(shí),應(yīng)啟動(dòng)電機(jī),帶動(dòng)水泵工作,給水塔供水。當(dāng)水位處于上下限之間時(shí),B棒與A棒導(dǎo)通,因C棒不能與A棒導(dǎo)通,b端為1狀態(tài),c端為0狀態(tài)。這是,無(wú)論是電機(jī)已在帶動(dòng)水泵給水塔供水,水位在不斷上升,或者是電機(jī)沒(méi)有工作,用水使水位在不斷下降,都應(yīng)繼續(xù)維持原有的工作狀態(tài)。2、單片機(jī)控制電路水塔水位控制電路如圖8.3。對(duì)該控制電路作如下說(shuō)明:使用8031單片機(jī)。由于8031沒(méi)有內(nèi)部ROM,因此,需外擴(kuò)展ROM,作

28、為程序存儲(chǔ)器。本系統(tǒng)使用2732構(gòu)成4KB的外擴(kuò)展程序存儲(chǔ)器,74LS373作為地址鎖存器。兩個(gè)水位信號(hào)由P1.0和P1.1輸入,這兩個(gè)信號(hào)共有四種組合狀態(tài),如表8.1所示。其中,第三種組合(b=0、c=1)在正常情況下是不可能發(fā)生的,但在設(shè)計(jì)中還是應(yīng)該考慮到,并作為一種故障狀態(tài)??刂菩盘?hào)由P1.2輸出去控制電機(jī)。為了提高控制的可靠性,使用了光電耦合。由P1.3輸出報(bào)警信號(hào),驅(qū)動(dòng)一支發(fā)光二極管實(shí)現(xiàn)光報(bào)警。C(P1.1) B(P1.0) 操作 0 0 電機(jī)運(yùn)轉(zhuǎn) 0 1 維持原狀 1 0 故障報(bào)警 1 1 電機(jī)停轉(zhuǎn)表8.1 水位信號(hào)及操作狀態(tài)表3程序設(shè)計(jì)程序流程如圖8.4所示。主程序: ORG 8

29、000H AJMP LOOP LOOP: ORL P1, #03H;為檢查水位狀態(tài)作準(zhǔn)備 MOV A, P1 JNB ACC.0,ONE; P1.0=0 則轉(zhuǎn) JB ACC.1, TWO; P1.1=1 則轉(zhuǎn) BACK: ACALL D10S; 延時(shí)10秒 AJMP LOOP ONE: JNB ACC.1, THREE ; P1.1=0 則轉(zhuǎn) CLR 93H ; P1.30, 啟動(dòng)報(bào)警裝置 SETB 92H ; P1.21, 停止電機(jī)工作 FOUR: SJMP FOURTHREE: CLR 92H ;啟動(dòng)電機(jī) AJMP BACKTWO: SETB 92H ;停止電機(jī)工作AJMP BACK延時(shí)子

30、程序D10S(延時(shí)10秒) ORG 8030HMOV R3,#19HLOOP3: MOV R1,#85HLOOP1: MOV R2,#FAHLOOP2: DJNZ R2,LOOP2DJNZ R1,LOOP1DJNZ R3,LOOP3RET 圖8.4 水塔水位控制程序流程. 單片機(jī)應(yīng)用實(shí)例二設(shè)計(jì)課題:設(shè)計(jì)單片機(jī)自動(dòng)打鈴系統(tǒng),這個(gè)系統(tǒng)設(shè)計(jì)要求完成以下任務(wù):1、設(shè)計(jì)系統(tǒng)可完成自動(dòng)上下課打鈴。2、作為實(shí)驗(yàn)板時(shí)考慮到資源不增加時(shí)還可增加可能的其它功能。兼顧用做學(xué)習(xí)電路板,設(shè)計(jì)參考步驟如下。8 .5. 1 總體方案和論證1、電子打鈴只需用一只喇叭或一個(gè)電鈴做聲音輸出,其驅(qū)動(dòng)可選取可控硅或繼電器,電鈴工作電

31、壓220V,要求單片機(jī)和電鈴之間加光耦隔離。2、顯示時(shí)間,用26個(gè)數(shù)碼管顯示時(shí)間,采用掃描方式,字驅(qū)動(dòng)要用去7-8條I/O線,位驅(qū)動(dòng)用去26條線。圖8.6用了5 個(gè)數(shù)碼管。3 、鍵盤處理,用于輸入時(shí)間和校正時(shí)間,需用去26條線。 4 、精確時(shí)間的產(chǎn)生,可采用單片機(jī)定時(shí)器加軟件校時(shí)的方法產(chǎn)生,也可以外接時(shí)鐘芯片,這里計(jì)劃外接串行時(shí)鐘芯片DS1302,以防掉電和今后改進(jìn)設(shè)計(jì)。根據(jù)以上要求共約20條I/O線,這樣的設(shè)備應(yīng)有高的性價(jià)比,考慮采用AT89C2051單片機(jī)作核心,其只有15 條I/O線,所以系統(tǒng)擴(kuò)充74LS247作數(shù)碼管字顯示驅(qū)動(dòng),NPN三極管作位驅(qū)動(dòng),增加一片24C02作掉電后的數(shù)據(jù)保存

32、。用雙向可控硅驅(qū)動(dòng)功率負(fù)載(圖8.6上用單向硅),由于各器件都可用+5V電源,采用9V變壓器供電,自帶5V穩(wěn)壓電路,這樣一來(lái)設(shè)計(jì)目標(biāo)基本確定。數(shù)碼管采用DIP插座,電鈴采用POWER4插座,為了增加功能加了一個(gè)SIP插座,五個(gè)功能鍵,一個(gè)復(fù)位鍵。采用6.144MHz晶振。8. 5. 2 硬件設(shè)計(jì)根據(jù)設(shè)計(jì)要求,采用Protel軟件繪出電路原理圖和PCB電路圖,原理圖如圖8.6,電路圖設(shè)計(jì)的好壞一般與設(shè)計(jì)者水平和經(jīng)驗(yàn)有很大關(guān)系,這里只給出應(yīng)用圖紙,不作過(guò)多的講解,有興趣者可作適當(dāng)研究,吸收好的東西,去其糟粕,設(shè)計(jì)PCB圖如圖8.5,這是雙面走線圖,由于電路相對(duì)復(fù)雜,又用單面顯示,不能看很清楚,給出

33、的目的是用這種方法給大家參考,希望起到拋磚引玉的作用。PCB板采用54英寸雙面板布線,在微機(jī)上設(shè)計(jì)好的圖紙經(jīng)電路板廠加工成電路板,按設(shè)計(jì)圖安裝好元件,進(jìn)行硬軟件調(diào)試。這里要做的工作很多,由于篇幅的關(guān)系從略處理。 圖8-5例二的電路板PCB設(shè)計(jì)圖8.5.3軟件設(shè)計(jì)單片機(jī)軟件設(shè)計(jì)實(shí)際開(kāi)始于系統(tǒng)總方案確定之時(shí),很多具體問(wèn)題在設(shè)計(jì)方案中應(yīng)提前考慮過(guò),現(xiàn)在是具體落實(shí)的時(shí)候,實(shí)際上學(xué)習(xí)軟件最好的方法是分析一個(gè)比較好的應(yīng)用程序,但這方面工作難度大,耗時(shí)多。因?yàn)橐粋€(gè)應(yīng)用程序一般很長(zhǎng),一次或兩次課很難完成任務(wù),所以很多教材在講這個(gè)部分時(shí)只畫出一個(gè)程序設(shè)計(jì)方框圖,結(jié)果學(xué)生學(xué)完了這門課,一直沒(méi)見(jiàn)過(guò)完整的應(yīng)用程序,至

34、于讓學(xué)生設(shè)計(jì)應(yīng)用程序就更不好落實(shí)了,這里給出了一個(gè)程序,由主程序、中斷子程序、子程序三部分組成,這個(gè)程序可完成計(jì)時(shí)顯示任務(wù),完成了鍵掃描,還有一些任務(wù)空著待增加,要求學(xué)習(xí)者多花時(shí)間分析程序,修改程序,或重新設(shè)計(jì)程序。對(duì)于長(zhǎng)程序的學(xué)習(xí)是仁者見(jiàn)仁,智者見(jiàn)智,需從長(zhǎng)計(jì)劃。 參考程序如下:ORG 0000H START:LJMP L0030;程序入口地址 ORG 000BH ;T0中斷入口地址 INTT00:LJMP INTT1 ORG 001BH ;T1中斷入口地址 INTT01:LJMP INTT1 ORG 0030H L0030:MOV 60H,#00H ;顯示緩沖清零 MOV 61H,#00H

35、 MOV 62H,#00H MOV 63H,#00HMOV 50H,#00H ;秒計(jì)時(shí)緩沖單元清零 MOV 51H,#00H ;分 MOV 52H,#00H ;時(shí) MOV 53H,#00H ;星期 MOV 54H,#00H;日期 MOV R7,#00H;基礎(chǔ)計(jì)時(shí)MOV R2,#00H ; 掃描計(jì)數(shù) MOV P1,#0FFH;輸出口初始化 MOV P3,#0FFH MOV SP,#66H MOV TMOD,#11H ;定時(shí)器初始化 MOV 8BH,#38HMOV 8DH,#38H SETB PT1 SETB RS1 ;工作寄存器設(shè)置 SETB RS0 ;T1使用三組寄存器 MOV R1,#0FH

36、 SETB ET1 ;開(kāi)中斷,啟動(dòng)定時(shí)器 SETB TR1 SETB EA CLR TR0 CLR RS1 ;主程序便作零組寄存器 CLR RS0L01: LCALL DISPLAY1 ;調(diào)用顯示子程序 LCALL K1 ;調(diào)用鍵處理子程序 LCALL QT1 ;調(diào)用其它子程序 SJMP L01 ORG 0100H;定時(shí)器中斷子程序 INTT1:PUSH ACC ;保護(hù)現(xiàn)場(chǎng) PUSH PSW PUSH DPH PUSH DPL MOV A,B PUSH ACCSETB RS0 ;定時(shí)器用三組寄存器 SETB RS1 CLR TR1 MOV TH1,#0FCH ;重置初值 MOV TL1,#38

37、H SETB TR1LOOP2: CPL 10H ;中斷處理分單雙兩部分 JNB 10H,LOOPA1 ;到鍵處理 CJNE R7,#00H,LOOP3 ;計(jì)時(shí)寄存器 SJMP LOOP4 LOOP3:DEC R7 LOOP4:INC R2 ;顯示掃描 CJNE R2,#04H,LOOP5 LOOP5:JNC LOOP6 SJMP LOOP7 LOOP6:MOV R2,#00H LOOP7:CJNE R2,#00H,LOOP8 ;顯示一位碼 MOV A,60H MOV DPTR,#DATA1 ;查顯示字碼 MOVC A,A+DPTR ORL A,#0FH MOV R1,A MOV P1,A C

38、LR P3.7 ;顯示位位碼 處理 SJMP LOOPA LOOP8: CJNE R2,#01H,LOOP9 ;顯示第二位 MOV A,61H MOV DPTR,#DATA1 MOVC A,A+DPTR ORL A,#0FH SETB P3.7 CLR ACC.0 MOV R1,A MOV P1,A SJMP LOOPA LOOP9:CJNE R2,#02H,LOOP10 ;顯示第三位 MOV A,62H MOV DPTR,#DATA1 MOVC A,A+DPTR ORL A,#0FH SETB P3.7 CLR ACC.1 MOV R1,A MOV P1,A SJMP LOOPA LOOP1

39、0:CJNE R2,#03H,LOOPA ;顯示第四位 MOV A,63H MOV DPTR,#DATA1 MOVC A,A+DPTR ORL A,#0FH SETB P3.7 CLR ACC.2 MOV R1,A MOV P1,A SJMP LOOPA LOOPA: SJMP LOOPRET ;顯示結(jié)束 LOOPA1:CJNE R7,#00H,LOOPRET ;計(jì)時(shí)時(shí)間到否 LOOP13:MOV R7,#7FH MOV A,50H ;一秒到 INC A ;50H 為秒計(jì)時(shí)寄存器單元 DA A MOV 50H,A CJNE A,#60H,LOOP14 ;60秒到否 MOV 50H,#00H ;

40、分計(jì)時(shí)前秒單元清零 MOV A,51H ;一分計(jì)時(shí) INC A ;51H 為分計(jì)時(shí)寄存器單元 DA A MOV 51H,A CJNE A,#60H,LOOP14 MOV 51H,#00H MOV A,52H ;小時(shí) INC A ;52H 為小時(shí)計(jì)時(shí)寄存器單元 MOV 52H,A CJNE A,#24H,LOOP14 MOV 52H,#00H MOV A,53H ;星期 INC A ;53H 為星期計(jì)時(shí)寄存器單元 DA A MOV 53H,A CJNE A,#08H,LOOP14A ;一星期七天 MOV 53H,#01H LOOP14A:MOV A,54H ;日 INC A ;54H 為月天計(jì)時(shí)

41、寄存器單元 DA A MOV 54H,A CJNE A,#31H,LOOP14 ;一月看成30天 MOV 54H,#01H ;日期滿30天不是0 LOOP14: SJMP LOOPRET LOOPRET: POP ACC ;恢復(fù)現(xiàn)場(chǎng) MOV B,A POP DPL POP DPH POP PSW POP ACC RETI ;中斷程序結(jié)束 DATA1: DB 0FH,80H,40H,0C0H,20H,0A0H,60H,0E0H,10H, DB 90H,50H,0D0H,030H,0B0H,070H,0F0H,0F0H, DISPLAY1: MOV A,50H ;顯示處理子程序 ANL A,#0F

42、H ;一個(gè)字節(jié)需兩位數(shù)碼顯示 MOV 60H,A MOV A,50H SWAP A ANL A,#0FH MOV 61H,A MOV A,51H ;顯示第二字節(jié) ANL A,#0FH MOV 62H,A MOV A,51H SWAP A ANL A,#0FH MOV 63H,A RET K1; RET ;鍵處理子程序和其它程序略 END 圖8.6 例二原理圖設(shè)計(jì) 練習(xí)13 綜合練習(xí)-LCD編程 LCD芯片使用難度較大,前面講了HD61202U液晶顯示驅(qū)動(dòng)控制器,這里對(duì)LCD芯片再講一種,以便大家比較和掌握LCD芯片的使用,本課基本結(jié)束了,希望大家能在今后繼續(xù)研究單片機(jī),把它用于課程設(shè)計(jì)、綜合練

43、習(xí)、畢業(yè)設(shè)計(jì),單片機(jī)由于其功能的強(qiáng)大,很多電路都可掛在單片機(jī)上,用單片機(jī)控制完成其電路功能操作,如語(yǔ)言芯片、LCD芯片、IC卡芯片,編解碼芯片等,還有本書沒(méi)有介紹到的可編程芯片,當(dāng)我們掌握了其工作原理,經(jīng)實(shí)驗(yàn)研究一般還是可使用它們,這里我們介紹點(diǎn)陣式LCD MGLS240128T與51單片機(jī)的接口和編程方法, 1、液晶顯示器(LCD) LCD具有功耗低、體積小、重量輕、超薄等諸多其它顯示器件無(wú)法比擬的優(yōu)點(diǎn),被廣泛用于袖珍式儀器和低功耗電子產(chǎn)品中,LCD可分為段位式LCD、字符式LCD、和點(diǎn)陣式LCD。點(diǎn)陣式LCD不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實(shí)現(xiàn)屏幕上下左右滾

44、動(dòng),動(dòng)畫功能,分區(qū)開(kāi)窗口,反轉(zhuǎn),閃爍顯示等功能。本節(jié)介紹點(diǎn)陣式液晶顯示器MGLS240128T的性能,指令、接口、和編程方法。2、LCD性能特點(diǎn)MGLS240128J是240128點(diǎn)陣,內(nèi)藏T6963C控制器、有8KB隨機(jī)存儲(chǔ)器、帶行列驅(qū)動(dòng)器、控制電路和時(shí)序電路、內(nèi)部具有字符發(fā)生器CGROM,有128個(gè)常用字符,一屏可顯示30行20列字符,字符字體為88點(diǎn)陣。 3、 MGLS240128T與單片機(jī)的接口方法MGLS240128T有18個(gè)引腳,單列于LCD板下方,各腳功能如表8.2所示 信號(hào)腳功能 信號(hào) 腳功能FG1框架地 CS(_) 7片選GND2地線 C/D(_) 8指令/數(shù)據(jù) 選擇VCC3

45、+5V電源 RST(_) 9復(fù)位信號(hào)V04 LCD電源控制端 DB0-DB 710-17數(shù) 據(jù)總線8位WR(_)5寫信號(hào) FS 18字符、字體選擇RD(_)6讀信號(hào) 和51系列單片機(jī)連接時(shí),F(xiàn)G、FS、GND接地,V0接-16V,其它腳連對(duì)應(yīng)引腳。CS(_)接地址譯碼后的片選, C/D(_)接地址,確定LCD控制字和數(shù)據(jù)地址,RST(_)是低電平復(fù)位,由單片機(jī)復(fù)位信號(hào)取反加入。 4、軟件設(shè)計(jì) T6963C的指令共有10條,見(jiàn)表8.3所示,每條指令前可代一個(gè)或兩個(gè)參數(shù),或無(wú)參數(shù)。每條指令的執(zhí)行都要先送參數(shù),再送指令代碼,每次操作前要進(jìn)行狀態(tài)字檢測(cè),只有確保T6963C空閑時(shí)才能進(jìn)行下一操作,T6

46、963C的狀態(tài)字如下所示;STA7STA6STA5STA4STA3STA2STA1STA0STA0:指令讀寫狀態(tài) 1:準(zhǔn)備好 0:忙、未準(zhǔn)備好STA1;數(shù)據(jù)讀寫狀態(tài) 1:準(zhǔn)備好 0:忙、未準(zhǔn)備好STA2;數(shù)據(jù)自動(dòng)讀狀態(tài) 1:準(zhǔn)備好 0:忙、未準(zhǔn)備好STA3;數(shù)據(jù)自動(dòng)寫狀態(tài) 1:準(zhǔn)備好 0:忙、未準(zhǔn)備好STA4;未用STA5;控制器運(yùn)行檢測(cè)可能性1:可能 0:不能STA6;屏讀/拷貝出錯(cuò)狀態(tài) 1:出錯(cuò) 0:正確STA7:閃爍狀態(tài)檢測(cè) 1:正確顯示 0:關(guān)顯示 由于狀態(tài)位作用不同,因此執(zhí)行不同指令必須檢測(cè)不同狀態(tài)位,在MPU一次讀/寫指令和數(shù)據(jù)時(shí),STA0和STA1要同時(shí)有效,處于準(zhǔn)備好狀態(tài)。當(dāng)

47、MPU讀/寫數(shù)組時(shí),判斷STA2或STA3狀態(tài),屏讀/拷貝指令使用STA6.STA5和STA7反映T6963C內(nèi)部運(yùn)行狀態(tài) 指令 指令代碼 參數(shù) 指令功能指針設(shè)置 21H,22H,24H 2 21H設(shè)置光標(biāo)設(shè)置 22H偏置寄存器 24H地址指針設(shè)置控制字設(shè)置 40H-43H 2 40H文本區(qū)首址設(shè)置, 41H文本區(qū)寬度設(shè)置 42H圖形區(qū)首址設(shè)置, 43H圖形區(qū)寬度設(shè)置方式設(shè)置 80H-8FH - 設(shè)置顯示的合成方式, ROM方式:80H為或, 81H為異或,83H為與, 84H為文本,其它是RAM方式. 顯示設(shè)置 90H-9FH 90H圖形顯示關(guān),91H圖形顯 1001N3N2N1N0 - 示

48、開(kāi),N1為文本開(kāi)關(guān),N2為光 標(biāo)顯示開(kāi)關(guān),N3為光標(biāo)閃爍開(kāi)關(guān) 光標(biāo)形狀選擇 A0H-A7H - 光標(biāo)形狀,對(duì)應(yīng)一行光標(biāo)到88光標(biāo) 數(shù)據(jù)自動(dòng)讀寫 B0H-B3H - 向顯示RAM自動(dòng)讀寫數(shù)組, B0H數(shù)據(jù)自動(dòng)寫,B1H 自動(dòng)讀,B2H終止自動(dòng)方式 數(shù)據(jù)一次讀寫 C0H-C7H 1 向顯示RAM讀/寫數(shù)據(jù)一次, 1100 0N2N1N0 N0=0數(shù)據(jù)寫,=1數(shù)據(jù)讀 N1=0自動(dòng)加,=1自動(dòng)減, N2=1地址不變,=0加/減 屏讀 B0H - 把屏上顯示數(shù)據(jù)送 入數(shù)據(jù)棧供MPU讀屏拷貝 B8H - 把地址指示1行顯示 數(shù)復(fù)到圖形區(qū)RAM位操作 F0H-FFH 把地址指針?biāo)竼?1111 N3N2N1

49、N0 - 元某1位清或置位, N3內(nèi)容送N2N1N0 三個(gè)位確定被操作的 位地址,111為最高位. 5、通用子程序 點(diǎn)陣式液晶顯示器MGLS240128T指令的執(zhí)行是一個(gè)不斷地檢測(cè)狀態(tài),寫指令和數(shù)據(jù)以及讀數(shù)據(jù)的過(guò)程,這些操作可編成通用子程序備用。與51系列單片機(jī)參考程序如下:其中指令和數(shù)據(jù)口地址分別是PORTZ和PORTS. 狀態(tài)檢測(cè)子程序PR0: MOV DPTR #PORTZ ;指向指令口 MOVX A,DPTR ;讀標(biāo)志字 RETPR01; LCALL PR0 JNB ACC.0,PR01 ;判STA0 JNB ACC.1,PR01 ;判STA1 RETPR02; LCALL PR0 J

50、NB ACC.2,PR02 ;判STA2 RET PR03; LCALL PR0 JNB ACC.3,PR03 ;判STA3 RETPR06; LCALL PR0 JNB ACC.6,ERR ;判STA6 RETERR: ;出錯(cuò)處理程序指令使用寄存器:DPTR和A 寫指令和寫數(shù)據(jù)子程序PR1:LCALL PR01 ;雙字節(jié)參數(shù)指令入口 MOV A ,R2 LCALL PR14PR11: LCALL PR01 ;單字節(jié)參數(shù)指令入口 MOV A, R3LCALL PR14PR12: LCALL PR01 ;無(wú)參數(shù)指令入口 MOV A, R4SJMP PR15PR14: MOV DPTR ,#POR

51、TS;寫數(shù)據(jù)地址入口PR15: MOVX DPTR,A ;寫入數(shù)據(jù) RET使用寄存器DPTR ,R2 、R3 、 R4 、 A R2參數(shù)第一字節(jié),R3參數(shù)第二字節(jié),R4指令代碼 讀數(shù)據(jù)子程序 PR2; LCALL PR01 MOV DPTR , #PORTS ;數(shù)據(jù)口地址 MOVX A,DPTR RET 使用寄存器:DPTR A 其中A中存儲(chǔ)數(shù)據(jù)6初始化子程序初始化子程序包括清顯示RAM,顯示RAM分配,顯示功能的設(shè)置等。清顯示子程序:PR3: MOV R2, #00H ;RAM地址=0000H MOV R3, #00H MOV R4, #24H ;設(shè)置地址指針 LCALL PR1 MOV R

52、4, #0B0H ;自支寫指令 LCALL PR12 MOV R2,#1FH ;循環(huán)量8K字節(jié) PR31:MOV R3 , #0FFHPR32: LCALL PR03 ;判STA3 CLR A LCALL PR14 ;寫00H DJNZ R3,PR32 DJNZ R2,PR31 MOV R4,#0B2H ;自動(dòng)寫結(jié)束指令 LCALL PR12 RET初始化子程序:PR4: LCALL PR3 ;清顯示RAM MOV R2,#00H ;設(shè)置文本區(qū) MOV R3, #00HMOV R4, #40HLCALL PR1MOV R2,#1EHMOV R3, #08HMOV R4, #41HLCALL P

53、R1 ;設(shè)置圖形區(qū)MOV R2,#00HMOV R3, #08HMOV R4, #42HLCALL PR1MOV R2,#1EHMOV R3, #00HMOV R4, #43HLCALL PR1MOV R2,#80H ;設(shè)置顯示方式 LCALL PR12MOV R4, #94H ;設(shè)置顯示開(kāi)關(guān)LCALL PR12 ;開(kāi)文本顯示RET 7、字符顯示和漢字顯示程序 MGLS240128T有文本和圖形兩種顯示方式,顯示字符工作于文本方式,而顯示圖形工作于圖形方式。漢字顯示在兩種方式都可進(jìn)行,在初始化程序中,顯示RAM被分成字符和圖形區(qū),字符區(qū)每一個(gè)字節(jié)對(duì)應(yīng)屏幕一個(gè)88點(diǎn)陣,而圖形區(qū)每個(gè)字節(jié)對(duì)應(yīng)一個(gè)8

54、1點(diǎn)陣。 字符顯示 PR5: LCALL PR4 ;初始化 MOV R2, #00H ;地址指針設(shè)置 MOV R3, #00H MOV R4, #24H LCALL PR1 LCALL PR03 ;自動(dòng)寫標(biāo)志判斷 MOV R4, #0B0H ;設(shè)置自動(dòng)寫方式 LCALL PR12 MOV DPTR ,#PORTS ;指向數(shù)據(jù)口地址 MOV A, #37H MOVX DPTR,A ;顯示W(wǎng)ELCOME MOV A, #25H MOVX DPTR,AMOV A, #2CHMOVX DPTR,AMOV A, #23HMOVX DPTR,AMOV A, #2FHMOVX DPTR,AMOV A, #2

55、DHMOVX DPTR,AMOV A, #25HMOVX DPTR,AMOV R4, #0B2H ;自動(dòng)寫關(guān)閉LCALL PR12HERE: JMP HERE 文本方式下漢字顯示受到字符行的限制,不能在任意位置上顯示漢字,并且漢字量受到控制器的限制,相比而言圖形方式顯示就不存在這些缺點(diǎn),因此,圖形方式下顯示漢字方法較常用,這種方法是在MPU系統(tǒng)的程序ROM區(qū)開(kāi)辟一個(gè)漢字庫(kù),漢字字模以圖形的方式逐字節(jié)地寫入,從而、在顯示屏上得到漢字圖形,漢字字模數(shù)據(jù)可以用專門的軟件直接從漢字字庫(kù)中讀取,圖形方式下顯示1616點(diǎn)陣漢字的程序如下: 漢字顯示 PR6: MOV R2,#10H ;循環(huán)量 PR61:

56、PUSH A ;字模代碼地址偏量 MOVC A, A+DPTR ;取字模 MOV R3, A MOV R4, #0C0H LCALL PR11 ;寫入 POP A ;準(zhǔn)備取第二字模 PUSH A ADD A, #10H ;第二字模地址偏量 MOVC A, A+DPTR MOV R3, A LCALL PR11 ;寫入第二字模 MOV A, R2 MOV R3,A MOV R2, #12H ;循環(huán)量 MOV R4, #0C1H PR62: LCALL PR12 ;地址指針修改 DJNZ R2, PR62 MOV A,R3 MOV R2,APOP A ;取代碼INC A ;下一代碼 DJNZ R2

57、, PR61 ;循環(huán)直到全部顯示完RET 程序要求:DPTR在主程序中賦值,DPTR所指的是漢字庫(kù)某一頁(yè)的地址,一頁(yè)可為256個(gè)字節(jié),可存儲(chǔ)8 個(gè)漢字的字模數(shù)組,漢字字模數(shù)組存儲(chǔ)順序是先漢字結(jié)構(gòu)的左半部分?jǐn)?shù)組16個(gè)字節(jié),然后是右半部數(shù)組16個(gè)字節(jié)。A 的內(nèi)容也要在主程序中賦值,A的值是漢字?jǐn)?shù)組首地址的相對(duì)地址偏量,漢字?jǐn)?shù)組實(shí)際的首地址為頁(yè)地址(DPTR)加上相對(duì)地址(A)所得。在一頁(yè)范圍內(nèi)A的取值為00H、20H、40H、60H、80H、A0H、C0H、E0H、八種之一。 8 、 下面舉一應(yīng)用程序說(shuō)明LCD液晶顯示器應(yīng)用,其電路為圖8.7, 程序和說(shuō)明如下。. 圖8.7 LCD液晶12864顯

58、示器實(shí)驗(yàn)圖應(yīng)用程序和說(shuō)明菜單ORG 0000HMOV DPTR,#8000H ;數(shù)據(jù)地址8000HMOV A,#00H ;能數(shù):行起點(diǎn)是屏幕左上角00H MOVX DPTR,A ;寫數(shù)據(jù)MOV A,#00H ; 坐標(biāo)00H,00H位置 MOVX DPTR,AINC DPTR ;指令地址8001H MOV A,#42H ;圖形區(qū)首地址設(shè)置 MOVX DPTR,A ;寫指令LCALL DY;* 設(shè)置圖形顯示起始地址MOV DPTR,#8000HMOV A,#10H ;參數(shù)是16個(gè)點(diǎn)寬度MOVX DPTR,AMOV A,#00HMOVX DPTR,AINC DPTRMOV A,#43H ;設(shè)置圖形區(qū)

59、寬度MOVX DPTR,ALCALL DY;*設(shè)置圖形顯示范圍MOV A,#0A7H ;光標(biāo)為88點(diǎn)MOVX DPTR,ALCALL DY;*MOV A,#80H ;或模式MOVX DPTR,ALCALL DY;* 選擇OR模式MOV A,#9BH ;啟用圖形和文本,關(guān)光標(biāo)MOVX DPTR,ALCALL DY;* ;文本關(guān),圖形開(kāi)MOV DPTR,#8000H MOV A,#00H ;地址坐標(biāo)為:00H,00HMOVX DPTR,AMOV A,#00HMOVX DPTR,AMOV A,#24H ;設(shè)置將要操作的顯示 緩沖區(qū)RAM地址INC DPTRMOVX DPTR,ALCALL DY;*

60、設(shè)置起始地址MOV A,#0B0H ;每次寫地址自動(dòng)加一MOVX DPTR,AMOV R0,#00H;* ;開(kāi)始數(shù)據(jù)自動(dòng)寫QS0:MOV A,R2 MOV DPTR,#TAB0 ;查表TAB0送顯示 MOVC A,A+DPTRMOV DPTR,#8000H ;數(shù)據(jù)地址 MOVX DPTR,AINC R2DJNZ R0,QS0MOV R0,#00H MOV R2,#00H ;顯示“:XX職業(yè)技術(shù)學(xué)院”QS1:MOV A,R2MOV DPTR,#TAB1MOVC A,A+DPTRMOV DPTR,#8000HMOVX DPTR,AINC R2DJNZ R0,QS1MOV R0,#00HMOV R2

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論