2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機原理與接口技術(shù)</p><p>  課 程 設(shè) 計</p><p>  設(shè)計課題 基于89c51的自身斷電保護(hù)系統(tǒng)設(shè)計</p><p>  單片機原理與接口技術(shù) 課程設(shè)計任務(wù)書</p><p><b>  目 錄</b></p><p><b&g

2、t;  1 引言6</b></p><p>  2 總體方案設(shè)計6</p><p><b>  2.1硬件組成6</b></p><p>  2.2 方案論證7</p><p>  2.3 總體方案8</p><p>  3 硬件電路設(shè)計10</p><

3、p>  3.1 時鐘電路10</p><p>  3.2復(fù)位電路11</p><p>  3.3 AD簡介與原理分析12</p><p>  3.4 聲光報警接口電路18</p><p>  3.5 顯示及鍵盤接口電路19</p><p>  3.7 電源電路2</p><p>

4、;  4 系統(tǒng)軟件設(shè)計3</p><p>  4.1 主程序設(shè)計3</p><p>  4.3 部分主要子程序的設(shè)計6</p><p>  5 系統(tǒng)調(diào)試與總結(jié)6</p><p>  5.1 系統(tǒng)功能測試6</p><p>  5.2 技術(shù)指標(biāo)測試7</p><p><b>

5、  6心得體會7</b></p><p>  6.1 為何不采用8255了?7</p><p>  6.2為何不采用A/D0809?8</p><p>  6.3在幫助同學(xué)的過程中我學(xué)到了什么?8</p><p>  6.4在單片機領(lǐng)域我的規(guī)劃?8</p><p><b>  參考文獻(xiàn)

6、9</b></p><p>  附錄A 系統(tǒng)原理圖9</p><p>  附錄B 源程序10</p><p><b>  1 引言</b></p><p>  壓力監(jiān)測普遍用于工業(yè)領(lǐng)域,并對國家的發(fā)展產(chǎn)生了深厚的影響,小到體重計,大到工業(yè)中反應(yīng)爐的氣壓聲電報警。甚至航空航天,智能儀表。以及機器人。本設(shè)計

7、就是工業(yè)中最普遍的氣壓監(jiān)測報警系統(tǒng)。所以,這個系統(tǒng)采用自動檢測反應(yīng)爐中的壓力大小,通過傳感器,并實時進(jìn)行在液晶1602上進(jìn)行顯示,還有在液晶上進(jìn)行參考上限電壓值的設(shè)置和參考下限電壓值的的設(shè)置。并通過在單片機內(nèi)部進(jìn)行比較計算,來實現(xiàn)整個壓力監(jiān)測系統(tǒng)的聲光電報警。</p><p>  本系統(tǒng)的設(shè)計基于A/D0804芯片和AT89C52單片機,并采用液晶1602作為顯示輸出,系統(tǒng)雖小卻包含了工業(yè)要求的各個方面,作為聲電

8、報警模塊,主要用到蜂鳴器和發(fā)光二極管。當(dāng)監(jiān)測壓力低于下限值和高于上限值就會進(jìn)行聲光報警。此次系統(tǒng)設(shè)計就是針對工業(yè)的反應(yīng)爐的壓力監(jiān)測,甚至可做體重計到最小的方面。</p><p>  本設(shè)計純?yōu)閭€人設(shè)計。程序也在開發(fā)板驗證成功,如有任何疑問,都可通過實驗調(diào)試驗證。</p><p><b>  2 總體方案設(shè)計</b></p><p><b&

9、gt;  2.1硬件組成</b></p><p>  控制器。控制器是系統(tǒng)的核心部分,可以用工業(yè)計算機PLC、或者單片機。</p><p>  A /D轉(zhuǎn)換器。A/D轉(zhuǎn)換器可以把測得的模擬量轉(zhuǎn)換成數(shù)字量輸出,可以直接讀取。</p><p>  繼電器。繼電器在電路中起到斷電保護(hù)作用,是系統(tǒng)的安全保障。其種類很多,有電流繼電器、電壓及電器、速度繼電器等等。

10、</p><p>  鍵盤。通過鍵盤可以設(shè)置限制電流大小。</p><p>  液晶顯顯示。液晶可以顯示設(shè)置電流以及實時電流值大小。</p><p><b>  2.2 方案論證</b></p><p><b>  1.控制器</b></p><p>  控制器選擇STC 8

11、9C51RC 40C單片機來控制溫度的測量顯示。</p><p>  目前國內(nèi)外使用較多的微控制器是以51內(nèi)核擴展出的單片機,51單片機的使用已經(jīng)發(fā)展到很高的一個層次,編程多以C語言為主,操作簡單,用途廣泛,易于控制。下面通過標(biāo)號STC 89C51RC 40C的解釋來對該單片機進(jìn)行詳細(xì)的介紹:</p><p>  STC:前綴,表示芯片為STC公司生產(chǎn)的產(chǎn)品。</p><

12、;p>  8:表示該芯片為8051內(nèi)核芯片</p><p>  9:表示內(nèi)部含F(xiàn)lash EEPROM存儲器。</p><p>  C:表示該器件為CMOS產(chǎn)品,CMOS常指保存計算機基本啟動信息的 </p><p>  芯片,可由主板的電池供電,即使系統(tǒng)掉電,信息也不會丟失。</p><p><b>  5:固定不變<

13、/b></p><p>  1:表示該芯片內(nèi)部程序存儲空間的大小,1為4KB,2為8KB,3為12KB等,程序空間的大小決定了一個芯片所能裝入的執(zhí)行代碼的多少。</p><p>  RC:表示STC單片機內(nèi)部RAM(隨機讀寫存儲器)為512KB。</p><p>  40:表示該芯片外部晶振最高可接入40MHz。</p><p>  C

14、:產(chǎn)品級別,表示該芯片使用溫度范圍,C表示商業(yè)級,溫度范圍為0度--+70度。</p><p>  該單片機的存儲器相對設(shè)計任務(wù)來說,對程序代碼的儲存足夠了,所以無需再加外圍的擴展存儲器。</p><p><b>  2.A/D轉(zhuǎn)換器</b></p><p>  模數(shù)轉(zhuǎn)換器是該電路中的重要組成部分,其工作效率直</p><p

15、>  影響到系統(tǒng)的效率。ADC0809轉(zhuǎn)換器模擬輸入電壓范圍0~+5V,不需零點和滿刻度校準(zhǔn),而且能耗低,工作溫度范圍寬,所以可以作為該系統(tǒng)的轉(zhuǎn)換器。</p><p><b>  2.3 總體方案</b></p><p>  按照上述方案論證的結(jié)果,首先通過鍵盤設(shè)定電流值,然后檢測電流值,轉(zhuǎn)換成數(shù)字量通過數(shù)碼管顯示出來。當(dāng)電流過大時繼電器動作,切斷電路,保護(hù)用電

16、器。如圖2.1所示。</p><p>  圖2.1 總體方案框圖</p><p>  圖2.2 系統(tǒng)流程圖</p><p><b>  3 硬件電路設(shè)計</b></p><p><b>  3.1 時鐘電路</b></p><p>  單片機片內(nèi)有一個高增益的反相放大器,反相

17、放大器的輸入端為XTAL1,輸出端為XTAL2,由該放大器構(gòu)成的振蕩電路和時鐘電路一起構(gòu)成了單片機的時鐘方式。在內(nèi)部方式時鐘電路中,必須在XTAL1和XTAL2引腳兩端跨接石英晶體振蕩器和兩個微調(diào)電容構(gòu)成振蕩電路,通常C1和C2一般取30pF,晶振的頻率取值在1.2MHz~12MHz之間。對于外接時鐘電路,要求XTAL1接地,XTAL2腳接外部時鐘,對于外部時鐘信號并無特殊要求,只要保證一定的脈沖寬度,時鐘頻率低于12MHz即可。晶體振

18、蕩器的振蕩信號從XTAL2端送入內(nèi)部時鐘電路,它將該振蕩信號二分頻,產(chǎn)生一個兩相時鐘信號P1和P2供單片機使用。時鐘信號的周期稱為狀態(tài)時間S,它是振蕩周期的2倍,P1信號在每個狀態(tài)的前半周期有效,在每個狀態(tài)的后半周期P2信號有效。CPU就是以兩相時鐘P1和P2為基本節(jié)拍協(xié)調(diào)單片機各部分有效工作。如圖3.1所示。 </p><p>  圖3.1單片機時鐘電路</p><p><b

19、>  3.2復(fù)位電路</b></p><p>  在上電或復(fù)位過程中,控制CPU的復(fù)位狀態(tài):這段時間內(nèi)讓CPU保持復(fù)位狀態(tài),而不是一上電或剛復(fù)位完畢就工作,防止CPU發(fā)出錯誤的指令、執(zhí)行錯誤操作,也可以提高電磁兼容性能。單片機在啟動時都需要復(fù)位,以使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初態(tài)開始工作。單片機系統(tǒng)的復(fù)位方式有:手動按鈕復(fù)位和上電復(fù)位 。復(fù)位方式有手動復(fù)位、上電復(fù)位和積分型復(fù)位。

20、如圖3.2所示。</p><p><b>  圖3.2 復(fù)位電路</b></p><p>  3.3 AD簡介與原理分析</p><p>  模擬/數(shù)字轉(zhuǎn)換就是我們通常所說的A/D轉(zhuǎn)換,它將輸入的模擬信號(如電壓)轉(zhuǎn)換成控制芯片(如單片機,ARM)所能識別的二進(jìn)制形式,然后經(jīng)過運算,既可以還原出輸入模擬信號的值。</p><

21、p>  A/D轉(zhuǎn)換是一種非常重要的技術(shù)手段,是單片機等控制芯片與外界信號的接口部分,如圖3.3所示。</p><p><b>  圖3.3</b></p><p>  外界信號:外界信號的范圍十分廣泛,自然界的一切信號,比如聲音,溫度甚至是血糖濃度等都可以規(guī)類為外界信號。</p><p>  傳感器:因為大多數(shù)外界信號都不是電信號,因此需

22、要通過各種傳感器將這些外界信號轉(zhuǎn)換成電信號,例如:通過熱電耦可以將溫度轉(zhuǎn)換成一個電壓值。</p><p>  模擬電路:設(shè)計模擬電路的原因主要有以下兩點</p><p>  1.由于外界信號的復(fù)雜性,使得傳感器直接輸出的電信號可能會存在一些問題(如不穩(wěn)定),這些不穩(wěn)定信號如果直接送到A/D芯片進(jìn)行采樣,則最終結(jié)果可能使得最后的顯示值來回亂跳,而無法確定待測的外界信號到底是多少。因此,可能需

23、要設(shè)計一套模擬電路對傳感器輸出的不穩(wěn)定電信號進(jìn)行濾波等處理,去除干擾,使得進(jìn)入A/D轉(zhuǎn)換芯片的電壓值為一個穩(wěn)定的信號。</p><p>  2.每一個A/D轉(zhuǎn)換芯片都有一個參考電壓,只有輸入的模擬電壓值在這個參考電壓的范圍內(nèi)才能進(jìn)行正確的轉(zhuǎn)換,例如:本試驗將ADC0804芯片的參考電壓設(shè)置成0V~5V,因此如果輸入的電壓值大于5V,則轉(zhuǎn)換出的結(jié)果永遠(yuǎn)為0xFF,若輸入的電壓值小于0V,則轉(zhuǎn)換出的結(jié)果永遠(yuǎn)為0,這樣

24、便無法正確的還原出被測信號的大小?;谏鲜鲈颍覀兛赡苄枰O(shè)計一套模擬電路,傳感器的輸出電壓值進(jìn)行一些變換(放大,縮?。沟盟偷紸/D轉(zhuǎn)換芯片的電壓值在轉(zhuǎn)換芯片的參考電壓范圍內(nèi)。</p><p>  A/D轉(zhuǎn)換芯片:即模擬/數(shù)字轉(zhuǎn)換芯片,它將輸入的模擬電壓信號轉(zhuǎn)換成單片機等控制處理器能夠識別的數(shù)字二進(jìn)制形式。</p><p>  處理器芯片:處理器芯片有很多中(比如51單片機,ARM或

25、者是PC上的奔騰處理器,AMD處理器)這些處理器雖然架構(gòu)不一樣,但是有個共同的特點,就是它們能夠運行程序,因此它們能通過程序?qū)/D芯片送入的二進(jìn)制形式的電壓值進(jìn)行處理,通過運算將其還原成待測的外界信號值,控制顯示部件(如LCD,八段數(shù)碼管)將這個值顯示出來。例如:假如ADC0804輸出的二進(jìn)制值0x80,則根據(jù)A/D轉(zhuǎn)換公式可以推出ADC0804的輸入電壓大小為(0x80/0x100)*5V=2.5V。假設(shè)信號經(jīng)過模擬電路縮小了8倍,

26、則可以推出傳感器的輸出電壓為2.5V*8=20V,再根據(jù)傳感器的轉(zhuǎn)換公式(一般手冊會給出)即可得到輸入的外界信號的值。</p><p>  顯示:顯示的作用是將計算出的待測外界信號的值展示給測量人員,顯示的形式有很多種,如LCD,八段數(shù)碼管,上位機軟件等。</p><p>  通過上面的介紹,大家一定對這種基于A/D芯片的嵌入式設(shè)計模式有了一個大致的了解,其實現(xiàn)時中很多應(yīng)用都是遵循了這種設(shè)

27、計模式,比如常用的數(shù)字萬用表,數(shù)字溫度測量儀,血糖測量儀等。</p><p>  本試驗也遵循了這種設(shè)計模式,只不過它省略了傳感器和模擬電路部分,首先通過滑動變阻器調(diào)節(jié)輸入到ADC0804芯片的電壓值(ADC0804芯片的參考電壓調(diào)節(jié)成0V~5V,而滑動變阻器產(chǎn)生的電壓范圍也為0V~5V,因此沒有必要設(shè)計額外的模擬電路),然后通過51單片機進(jìn)行運算處理得到這個輸入電壓值,最后再控制八段數(shù)碼管將這個電壓值顯示出來,

28、實際上是實現(xiàn)了一個簡易的數(shù)字電壓測量表。如圖3.4所示。</p><p><b>  圖3.4</b></p><p>  圖3.5 ADC0804規(guī)格及引腳分配圖</p><p>  本試驗采用的A/D芯片為ADC0804,它是CMOS 8位單通道逐次漸近型的模/數(shù)轉(zhuǎn)換器,其規(guī)格及引腳圖如圖3.5所示,根據(jù)手冊我們可以得到各個引腳的大致功能

29、如上:</p><p>  /CS:芯片片選信號,低電平有效,即/CS=0,該芯片才能正常工作,在外接多個ADC0804芯片時,該信號可以作為選擇地址使用,通過不同的地址信號使能不同的ADC0804芯片,從而可以實現(xiàn)多個ADC通道的分時復(fù)用。</p><p>  /WR:啟動ADC0804進(jìn)行ADC采樣,該信號低電平有效,即/WR信號由高電平變成低電平時,觸發(fā)一次ADC轉(zhuǎn)換。</p&

30、gt;<p>  /RD:低電平有效,即/RD=0時,可以通過數(shù)據(jù)端口DB0~DB7讀出本次的采樣結(jié)果。</p><p>  UIN(+)和UIN(-):模擬電壓輸入端,模擬電壓輸入接UIN(+)端,UIN(-)端接地。雙邊輸入時UIN(+)、UIN(-)分別接模擬電壓信號的正端和負(fù)端。當(dāng)輸入的模擬電壓信號存在“零點漂移電壓”時,可在UIN(-)接一等值的零點補償電壓,變換時將自動從UIN(+)中減

31、去這一電壓。</p><p>  VREF/2:參考電壓接入引腳,該引腳可外接電壓也可懸空,若外界電壓,則ADC的參考電壓為該外界電壓的兩倍,如不外接,則Vref與Vcc共用電源電壓,此時ADC的參考電壓即為電源電壓Vcc的值。</p><p>  CLKR和CLKIN:外接RC電路產(chǎn)生模數(shù)轉(zhuǎn)換器所需的時鐘信號,時鐘頻率CLK = 1/1.1RC,一般要求頻率范圍100KHz~1.28MH

32、z。</p><p>  AGND和DGND:分別接模擬地和數(shù)字地。</p><p>  /INT:中斷請求信號輸出引腳,該引腳低電平有效,當(dāng)一次A/D轉(zhuǎn)換完成后,</p><p>  將引起/INT=0,實際應(yīng)用時,該引腳應(yīng)與微處理器的外部中斷輸入引腳相連(如51單片機的INT0,INT1腳),當(dāng)產(chǎn)生/INT信號有效時,還需等待/RD=0才能正確讀出A/D轉(zhuǎn)換結(jié)果

33、,若ADC0804單獨使用,則可以將/INT引腳懸空。</p><p>  DB0~DB7:輸出A/D轉(zhuǎn)換后的8位二進(jìn)制結(jié)果。</p><p>  AD外圍電路圖中Vin(+)接電位器的中間滑動端,Vin(-)接地,因為這兩端可以輸入差分電壓,即它可以測量這兩端之間的電壓,此時,Vin(-)即為ADC0804的模擬輸入電壓。Vin(+)與電位器之間串聯(lián)一個10歐電阻,目的是限制電流。防止電

34、流過大而燒壞芯片。如圖3.6所示。</p><p>  圖3.6 AD外圍設(shè)計原理圖</p><p>  3.4 聲光報警接口電路</p><p>  采用聲光報警裝置有一下幾大優(yōu)點,</p><p>  1.在遠(yuǎn)距離是可以可以通過聲音及時通知</p><p>  2.在近距離可以通過視聽覺做出反應(yīng)</p>

35、<p>  3.在嘈雜的環(huán)境中可以通過視覺通知</p><p>  4.兩種器件配合更加安全可靠</p><p>  具體外圍電路如3.7所示。</p><p>  圖3.7 聲光報警裝置</p><p>  3.5 顯示及鍵盤接口電路</p><p>  在日常生活中,我們對液晶顯示器并不陌生。液晶顯示

36、模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡單, 在單片機系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:</p><p><b>  顯示質(zhì)量高</b></p>&l

37、t;p>  由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質(zhì)高且不會閃爍。</p><p><b>  數(shù)字式接口</b></p><p>  液晶顯示器都是數(shù)字式的,和單片機系統(tǒng)的接口更加簡單可靠,操作更加方便。</p><p><b

38、>  體積小、重量輕</b></p><p>  液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。</p><p><b>  功耗低</b></p><p>  相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多。</p

39、><p><b>  液晶顯示簡介</b></p><p><b> ?、僖壕э@示原理</b></p><p>  液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動、易于實現(xiàn)全彩色顯示的特點,目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、

40、數(shù)字?jǐn)z像機、PDA移動通信工具等眾多領(lǐng)域。</p><p><b> ?、谝壕э@示器的分類</b></p><p>  液晶顯示的分類方法有很多種,通常可按其顯示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動方式來分,可以分為靜態(tài)驅(qū)動(Static)、單純矩陣驅(qū)動(Simple Matrix)和主動矩陣驅(qū)動(Active

41、 Matrix)三種。</p><p> ?、垡壕э@示器各種圖形的顯示原理:</p><p><b>  線段的顯示</b></p><p>  點陣圖形式液晶由M×N個顯示單元組成,假設(shè)LCD顯示屏有64行,每行有128列,每8列對應(yīng)1字節(jié)的8位,即每行由16字節(jié),共16×8=128個點組成,屏上64×16個顯示

42、單元與顯示RAM區(qū)1024字節(jié)相對應(yīng),每一字節(jié)的內(nèi)容和顯示屏上相應(yīng)位置的亮暗對應(yīng)。例如屏的第一行的亮暗由RAM區(qū)的000H——00FH的16字節(jié)的內(nèi)容決定,當(dāng)(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(dāng)(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗

43、線組成的虛線。這就是LCD顯示的基本原理。</p><p><b>  字符的顯示</b></p><p>  用LCD顯示一個字符時比較復(fù)雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)

44、帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。</p><p>  1602LCD主要技術(shù)參數(shù):</p><p>  顯示容量:16×2個字符</p><p>  芯片工作電壓:4.5—5.5V</p>&

45、lt;p>  工作電流:2.0mA(5.0V)</p><p>  模塊最佳工作電壓:5.0V</p><p>  字符尺寸:2.95×4.35(W×H)mm</p><p><b>  引腳功能說明</b></p><p>  1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各

46、引腳接口說明如表1所示:</p><p>  表1:引腳接口說明表</p><p>  第1腳:VSS為地電源。</p><p>  第2腳:VDD接5V正電源。</p><p>  第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。</

47、p><p>  第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p>  第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當(dāng)E端

48、由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  第15腳:背光源正極。</p><p>  第16腳:背光源負(fù)極。</p><p>  1602LCD的指令說明及時序</p><p>  1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表

49、2所示:</p><p><b>  表二</b></p><p>  與HD44780相兼容的芯片時序表如表3所示:</p><p><b>  表三</b></p><p>  1602LCD的RAM地址映射</p><p>  液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每

50、條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,表四是1602的內(nèi)部顯示地址。</p><p>  表四 1602LCD內(nèi)部顯示地址</p><p>  例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電

51、平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。</p><p>  在對液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時光標(biāo)是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。</p><p>  1602LCD的一般初始化(復(fù)位)過程</p><p><

52、b>  延時15mS</b></p><p>  寫指令38H(不檢測忙信號)</p><p><b>  延時5mS</b></p><p>  寫指令38H(不檢測忙信號</p><p><b>  延時5mS</b></p><p>  寫指令38H(

53、不檢測忙信號)</p><p>  以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號</p><p>  寫指令38H:顯示模式設(shè)置</p><p>  寫指令08H:顯示關(guān)閉</p><p>  寫指令01H:顯示清屏</p><p>  寫指令06H:顯示光標(biāo)移動設(shè)置</p><p>  寫指

54、令0CH:顯示開及光標(biāo)不閃爍</p><p>  顯示器接口電路如圖3.8所示</p><p>  圖3.8 顯示器接口電路圖</p><p> ?。?)鍵盤接口電路如圖3.9所示</p><p>  圖3.9 鍵盤接口電路</p><p><b>  3.7 電源電路</b></p>

55、<p>  系統(tǒng)中使用的直流電源共有以下幾組:</p><p> ?、?+5VDC:供MCU及其外圍電路、顯示器與鍵盤接口電路的電源。</p><p>  ② ±12VDC:供放大電路、V/F轉(zhuǎn)換電路等模擬電路電源,其中傳感器的供橋電壓+5VDC通過把+12VDC變換為+5VDC提供。</p><p>  ③ +12VDC:考慮到繼電器通斷時

56、會產(chǎn)生干擾,輸出控制電路使用一組獨立的電源,以和模擬電路隔離。</p><p>  系統(tǒng)的供電電源是三相三線制交流電,線電壓為380VAC,系統(tǒng)中使用的交流接觸器的線圈額定電壓為220VAC,因此,需要使用一個電源變壓器把380V的交流電變?yōu)?20V的交流電。CJX2-1210吸合時的線圈功率為70VA,保持時的線圈功率為8VA,考慮到系統(tǒng)的直流電源也需要通過220VAC供給,因此,把380VAC變?yōu)?20VAC

57、的變壓器容量確定為150VA。</p><p>  穩(wěn)壓電路采用集成的三端穩(wěn)壓器,價格便宜,使用方便,內(nèi)部帶有完善的保護(hù)電路。電源電路如圖3.10所示。</p><p>  圖3.10 電源電路</p><p><b>  4 系統(tǒng)軟件設(shè)計</b></p><p>  系統(tǒng)軟件分為主程序、中斷服務(wù)程序和子程序三部分。&

58、lt;/p><p><b>  4.1 主程序設(shè)計</b></p><p>  主程序是系統(tǒng)上電或復(fù)位后首先要執(zhí)行的程序,主程序主要完成系統(tǒng)的初始化、掃描顯示、掃描鍵盤,AD轉(zhuǎn)換等工作。</p><p>  主程序上電自動復(fù)位,也可手動復(fù)位;</p><p>  主程序執(zhí)行時,分別進(jìn)行鍵盤掃描,AD轉(zhuǎn)化,以及液晶顯示。<

59、;/p><p><b>  分三步執(zhí)行:</b></p><p>  第一:系統(tǒng)上電后,即開始在默認(rèn)的設(shè)置最小下限參考電</p><p>  和最大參考電壓的顯示在第一行即:</p><p>  P-T Down:25Up:60(參考壓力的 上下限值)</p><p>  Real-time Pre:

60、12(實時監(jiān)測的壓力)</p><p> ?。≒-T)即Press Test</p><p>  ( Real-time Pre)即Real time press</p><p>  第二:本設(shè)計設(shè)置4個功能鍵,</p><p>  第一個鍵S4:表示功能切換鍵 ,按第一下表示進(jìn)行調(diào)節(jié)上下限 ,按第二下表示不再調(diào)表,開始進(jìn)行AD轉(zhuǎn)換。<

61、/p><p>  第二個鍵S1: 表示調(diào)節(jié)上限和下限值,按第一下表示調(diào)上限值液晶光標(biāo)閃爍,按第二下液晶不再閃爍,表示調(diào)節(jié)結(jié)束。</p><p>  第三個鍵S2,在按下參考壓力值遞增,上限當(dāng)超過90時復(fù)位為0,下限值當(dāng)超過30時復(fù)位為0,液晶光標(biāo)一直閃爍。</p><p>  第四個鍵S3在按下參考壓力值遞減,當(dāng)上限值減到0時置位為90,下限值減到0時置位為30, 液

62、晶光標(biāo)一直閃爍。</p><p>  第三:AD轉(zhuǎn)換模塊及顯示模塊,壓力傳感器檢測到壓力后,通過模擬量轉(zhuǎn)換量,通過單片機計算,把數(shù)字量在1602液晶上顯示出來。</p><p>  圖4.1 主程序流程圖</p><p>  4.3 部分主要子程序的設(shè)計</p><p>  系統(tǒng)主要子程序包括顯示子程序、鍵處理子程序,顯示子程序的設(shè)計。&l

63、t;/p><p><b>  既包含三大模塊:</b></p><p>  1,鍵盤掃描的子程序設(shè)計;</p><p>  2,A/D0804的子程序設(shè)計</p><p>  3,1602液晶顯示的子程序設(shè)計</p><p>  4,初始化液晶和單片機的子程序設(shè)計</p><p&g

64、t;<b>  5 系統(tǒng)調(diào)試與總結(jié)</b></p><p>  系統(tǒng)研制完成后,首先在實驗室進(jìn)行了系統(tǒng)功能測試和技術(shù)指標(biāo)測試。并力求完全達(dá)到工業(yè)要求的水準(zhǔn)。</p><p>  5.1 系統(tǒng)功能測試</p><p>  系統(tǒng)上電后,顯示正常,進(jìn)行了以下測試。</p><p>  1.上電開始默認(rèn)顯示測試。</p&g

65、t;<p>  2.按鈕s1功能鍵測試。</p><p>  3.按鈕s2數(shù)值增測試。</p><p>  4.按鈕s3數(shù)值減測試。</p><p>  6.按鈕S4鍵的A/D切換與調(diào)節(jié)參考上下限的功能轉(zhuǎn)換測試</p><p>  7.上下限最值測試。</p><p><b>  8.AD顯示測

66、試。</b></p><p>  9.AD轉(zhuǎn)換結(jié)果測試。</p><p>  10.報警裝置測試。</p><p>  上述測試結(jié)果最終與預(yù)期相符。</p><p>  5.2 技術(shù)指標(biāo)測試</p><p><b>  1.硬件電路測試</b></p><p>

67、  此次課程設(shè)計首先采用PROTEUS軟件仿真,而后進(jìn)行硬件電路的設(shè)計。在軟件仿真中初步形成了程序的調(diào)試與修改。此過程采用三個步驟,(1)了解各個功能模塊的作用與聯(lián)系。(2)單獨寫出各個模塊的控制程序,進(jìn)行單獨調(diào)試。(3)各個模塊進(jìn)行有機組合,實現(xiàn)目的功能。此過程遇到的問題比較少,但了解到了完成一個較大工程所需要具備的素質(zhì)及技巧。完成此系統(tǒng)問題主要出現(xiàn)在硬件的調(diào)試</p><p><b>  6心得體會

68、 </b></p><p>  6.1 為何不采用8255了?</p><p>  我想這篇心得體會一定要加上的,忙碌了兩個星期,終于在周五的晚上成功了。我做的這個系統(tǒng)是很復(fù)雜的,當(dāng)初硬件電路設(shè)計時,我本想用8255作為擴展IO口使用,并用PC口做位尋址進(jìn)行片選操作,同時用PA口控制1602,PB口做輸入接A/D0804,但是8255的操作復(fù)雜程度會使整個設(shè)計顯得臃腫而且

69、多余,最后我決定取消用8255作為整個電路的實現(xiàn)。</p><p>  6.2為何不采用A/D0809?</p><p>  最后敲定采用了單輸入的A/D0804作為A/D轉(zhuǎn)換,之所以不采用8路輸入的A/D0809為我所要選的A/D轉(zhuǎn)換器件,是因為這個8路輸入進(jìn)行片選輸入有點浪費系統(tǒng),而且,在幫同學(xué)解決難題的時候我都推薦使用了A/D0809,對于它的操作我也是非常熟悉的。但為了能夠由硬件電

70、路作為我的課程設(shè)計結(jié)果的證明。我采用了我自買板子的硬件資源。</p><p>  6.3在幫助同學(xué)的過程中我學(xué)到了什么?</p><p>  整個課程設(shè)計下來,我積累了豐富的經(jīng)驗,分別幫同學(xué)做了斷電保護(hù)系統(tǒng),步進(jìn)電機的正反轉(zhuǎn)加速減速,還有數(shù)字音樂盒的輔助調(diào)試。在幫同學(xué)解決問題的同時,也是我的知識結(jié)構(gòu)更加完善。我也進(jìn)一步掌握了調(diào)程序的方法,比如說:我自創(chuàng)在程序中假如小燈,比如說在各個功能跳轉(zhuǎn)

71、時再養(yǎng)從while語句中跳到另一個while語句中。</p><p>  6.4在單片機領(lǐng)域我的規(guī)劃?</p><p>  從接觸51單片機到自己開始練習(xí)寫程序,我一步一步養(yǎng)成了獨立思考,嚴(yán)謹(jǐn)?shù)淖黠L(fēng).我在51單片機的基礎(chǔ)上我又自學(xué)的一款功能更加強大的單片機AVR,我知道路還很遠(yuǎn),但我會繼續(xù)堅持下去.因為在單片上,編程越多我就越自信.</p><p><b&g

72、t;  參考文獻(xiàn)</b></p><p>  《單片機微型計算機原理、應(yīng)用及接口技術(shù)》 張迎新 國防工業(yè)出版社</p><p>  《C程序設(shè)計》 譚永強 清華大學(xué)出版社</p><p><b>  附錄A 系統(tǒng)原理圖</b></p><p><b>  附錄B 源程序</b>&

73、lt;/p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit cs=P3^2;</p><p>  sbit rd=P3^7;</

74、p><p>  sbit wr=P3^6;</p><p>  uchar value;</p><p>  sbit eg=P3^4;</p><p>  sbit rs=P3^5;</p><p>  sbit s1=P2^0;</p><p>  sbit s2=P2^1;</p>

75、<p>  sbit s3=P2^2;</p><p>  sbit s4=P2^3;</p><p>  sbit dula=P2^6;</p><p>  sbit wela=P2^7;</p><p>  uchar uper,low;</p><p>  uchar s1num,num;</

76、p><p>  uchar table[]="P-T Down:25Up:60";</p><p>  uchar table1[]="Real-time Pre:12";</p><p>  void delay(uint z)//延遲函數(shù)</p><p><b>  {</b>&l

77、t;/p><p>  uchar x,y;</p><p>  for(x=z;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void sweep()</p><p><

78、;b>  {</b></p><p><b>  if(s4==0)</b></p><p><b>  { </b></p><p><b>  delay(5);</b></p><p><b>  if(s4==0)</b&g

79、t;</p><p><b>  { </b></p><p><b>  num++;</b></p><p>  if(num==2)</p><p><b>  num=0; </b></p><p><b>  }</b>&

80、lt;/p><p>  while(!s4);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void write_com(uchar com);//寫命令函數(shù)</p><p>  void write_dat(uchar d

81、at);//寫數(shù)據(jù)函數(shù)</p><p>  void chushi();//關(guān)閉LED,并對LCD初始化,利用數(shù)組;</p><p>  void write_press(uchar addr,uchar dat)//此函數(shù)可把十進(jìn)制數(shù)寫入對應(yīng)位的液晶中</p><p><b>  {</b></p><p>  uch

82、ar a,b;</p><p><b>  a=dat/10;</b></p><p><b>  b=dat%10;</b></p><p>  write_com(0x80+addr);</p><p>  write_dat(0x30+a);</p><p>  wri

83、te_dat(0x30+b);</p><p><b>  }</b></p><p>  void write_press2(uchar addr,uchar dat)</p><p><b>  {</b></p><p>  uchar a,b;</p><p><

84、;b>  a=dat/10;</b></p><p><b>  b=dat%10;</b></p><p>  write_com(0x80+0x40+addr);</p><p>  write_dat(0x30+a);</p><p>  write_dat(0x30+b);</p>

85、<p><b>  }</b></p><p>  uchar AD_divert()</p><p><b>  {</b></p><p><b>  uchar a;</b></p><p><b>  cs=0;</b></p&

86、gt;<p><b>  wr=0;</b></p><p>  delay(200);</p><p><b>  wr=1;</b></p><p><b>  cs=1;</b></p><p>  delay(1000);</p><p

87、><b>  cs=0;</b></p><p><b>  rd=0;</b></p><p>  delay(100);</p><p><b>  a=P1;</b></p><p><b>  rd=1;</b></p><

88、;p><b>  cs=1;</b></p><p>  a=a%10+17;</p><p>  return a;</p><p><b>  }</b></p><p>  void AD_display()</p><p><b>  {</b

89、></p><p>  value=AD_divert();</p><p>  write_press2(14,value);</p><p>  write_com(0x80+14);</p><p><b>  }</b></p><p>  void display();</p

90、><p>  void keyscan()</p><p><b>  { </b></p><p><b>  if(s1==0)</b></p><p><b>  { </b></p><p><b>  delay(5);<

91、;/b></p><p><b>  if(s1==0)</b></p><p><b>  { </b></p><p><b>  s1num++;</b></p><p>  while(!s1); </p><p>  if(s1num==

92、1) </p><p><b>  {</b></p><p>  write_com(0x80+10);</p><p>  write_com(0x0f);</p><p><b>  }</b></p><p>  if(s1num==2) </p>&l

93、t;p>  {write_com(0x80+15);</p><p>  write_com(0x0f);</p><p><b>  }</b></p><p>  if(s1num==3) </p><p><b>  {</b></p><p>  s1num=0

94、;//注意加5不是16進(jìn)制</p><p>  write_com(0x0c);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(s2==

95、0)</b></p><p><b>  {</b></p><p><b>  delay(5);</b></p><p><b>  if(s2==0)</b></p><p><b>  {</b></p><p>

96、;  while(!s2);</p><p>  if(s1num==1) </p><p><b>  { </b></p><p><b>  low--;</b></p><p>  if(low==0)</p><p><b>  low=30;&l

97、t;/b></p><p>  write_press(9,low);</p><p>  write_com(0x80+10);</p><p><b>  }</b></p><p>  if(s1num==2) </p><p><b>  {</b></p

98、><p><b>  uper--;</b></p><p>  if(uper==0)</p><p><b>  uper=90;</b></p><p>  write_press(14,uper);</p><p>  write_com(0x80+15);</p&

99、gt;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(s3==0)</b></p><p><b>  {</b><

100、/p><p><b>  delay(5);</b></p><p><b>  if(s3==0)</b></p><p><b>  {</b></p><p>  while(!s3);</p><p>  if(s1num==1) </

101、p><p><b>  { low++;</b></p><p>  if(low==30)</p><p><b>  low=0;</b></p><p>  write_press(9,low);</p><p>  write_com(0x80+10);</p>

102、;<p><b>  }</b></p><p>  if(s1num==2) </p><p><b>  {</b></p><p><b>  uper++;</b></p><p>  if(uper==90)</p><p>&l

103、t;b>  uper=0;</b></p><p>  write_press(14,uper);</p><p>  write_com(0x80+15);</p><p><b>  }</b></p><p><b>  }</b></p><p>&

104、lt;b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  chushi();</b></p><p>  displ

105、ay();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  while(num==1)</p><p><b>  { </b></p><p>  keyscan();</p>

106、;<p><b>  sweep();</b></p><p>  delay(2000);</p><p><b>  }</b></p><p>  while(num==0)</p><p><b>  {</b></p><p>&

107、lt;b>  sweep();</b></p><p>  write_com(0x0c);</p><p>  AD_display();</p><p>  delay(1000);</p><p><b>  }</b></p><p><b>  }</b

108、></p><p><b>  }</b></p><p>  void write_com(uchar com)</p><p><b>  {</b></p><p><b>  wr=0;</b></p><p><b>  rs=

109、0;</b></p><p><b>  eg=0;</b></p><p><b>  P0=com;</b></p><p>  delay(15);</p><p><b>  eg=1;</b></p><p>  delay(15)

110、;</p><p><b>  eg=0;</b></p><p><b>  }</b></p><p>  void write_dat(uchar dat)</p><p><b>  {</b></p><p><b>  wr=0;&

111、lt;/b></p><p><b>  rs=1;</b></p><p><b>  eg=0;</b></p><p><b>  P0=dat;</b></p><p>  delay(15);</p><p><b>  eg=

112、1;</b></p><p>  delay(15);</p><p><b>  eg=0;</b></p><p><b>  }</b></p><p>  void chushi()</p><p><b>  {</b></p

113、><p><b>  dula=0;</b></p><p><b>  wela=0;</b></p><p>  delay(200);</p><p>  write_com(0x38);</p><p>  delay(65);</p><p> 

114、 write_com(0x38);</p><p>  delay(65);</p><p>  write_com(0x38);</p><p>  write_com(0x38);</p><p>  write_com(0x08);</p><p>  write_com(0x01);</p>&l

115、t;p>  write_com(0x06);</p><p>  write_com(0x0c);</p><p>  write_com(0x80);</p><p><b>  low=25;</b></p><p><b>  uper=60;</b></p><p&

116、gt;<b>  }</b></p><p>  void display()</p><p><b>  {</b></p><p>  uchar num;</p><p>  for(num=0;num<16;num++)</p><p><b>  {

117、</b></p><p>  write_dat(table[num]);</p><p>  delay(20);</p><p><b>  } </b></p><p>  write_com(0x80+0x40);</p><p>  for(num=0;num<16;n

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論