版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于89c51的自動斷電保護(hù)系統(tǒng)設(shè)計
- 自動化單片機課程設(shè)計--基于89c51的自動斷電保護(hù)系統(tǒng)設(shè)計
- 89c51單片機課程設(shè)計
- 基于89c51電子密碼鎖設(shè)計課程設(shè)計
- 基于89c51單片機的秒表課程設(shè)計
- 基于89c51單片機的秒表課程設(shè)計
- 基于89c51單片機的秒表課程設(shè)計 2
- 基于89c51單片機的秒表課程設(shè)計 (2)
- 基于89c51單片機交通燈課程設(shè)計
- 單片機課程設(shè)計---基于89c51的電纜定長控制設(shè)計
- 基于89c51的開關(guān)電源課程設(shè)計報告(附程序)
- 基于89c51單片機電子時鐘課程設(shè)計
- 基于89c51的轉(zhuǎn)速測量系統(tǒng)設(shè)計c程序
- 基于89c51的液晶顯示系統(tǒng)設(shè)計
- 基于89c51設(shè)計校園自動打鈴系統(tǒng)
- 基于89c51的智能時鐘設(shè)計
- 課程設(shè)計-基于89c51單片機的數(shù)字溫度計設(shè)計
- 基于89C51的轉(zhuǎn)速測量系統(tǒng)設(shè)計.pdf
- 單片機課程設(shè)計_基于89c51的數(shù)字電子時鐘的設(shè)計
- 基于89c51單片機的數(shù)字搶答器課程設(shè)計
評論
0/150
提交評論