壓力控制系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩31頁(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、<p><b>  目 錄</b></p><p>  1. 設(shè)計(jì)任務(wù)與要求 …………………………………………………………….3</p><p>  1.1 設(shè)計(jì)任務(wù)………………………………………………………………..…3</p><p>  1.2 設(shè)計(jì)要求…………………………………………………………………..3</p&g

2、t;<p>  2. 總體方案與說(shuō)明…………………………………………………………… ..3</p><p>  2.1 模擬信號(hào)的轉(zhuǎn)換與顯示…………………………………………………..3</p><p>  2.2 鍵盤數(shù)據(jù)的輸入與顯示…………………………………………………..4</p><p>  2.3 數(shù)據(jù)的處理與顯示………………………………

3、………………………..4</p><p>  2.4 顯示說(shuō)明…………………………………………………………………..4</p><p>  3. 硬件框圖與說(shuō)明 ……………………………………………………………..5</p><p>  3.1 8086原理簡(jiǎn)介…………………………………………………………….5</p><p>  3.2

4、 8255原理簡(jiǎn)介…………………………………………………………….6</p><p>  3.3 0809的應(yīng)用……………………………………………………………….9</p><p>  3.4 液晶顯示屏…………………………………………………… …………11</p><p>  3.5 鍵盤……………………………………………………………… ………14</

5、p><p>  4.電路原理圖與說(shuō)明………………………………………………………… 16</p><p>  4.1 電路原理圖…………………………………………………… …………16</p><p>  4.2 硬件運(yùn)行過(guò)程說(shuō)明…………………………………………… …………17</p><p>  5.軟件主要模塊與說(shuō)明…………………………………

6、……………………17</p><p>  5.1 主程序流程圖…………………………………………………… ………18</p><p>  5.2 0809轉(zhuǎn)換及數(shù)據(jù)處理流程………………………………………………19</p><p>  6.源程序清單與注釋明………………………………………………………17</p><p>  7.問(wèn)題分析與解決

7、方案………………………………………………………28</p><p>  8.結(jié)論與體會(huì)……………………………………………………………………30</p><p>  8.1 實(shí)驗(yàn)運(yùn)行結(jié)果…………………………………………………………….30</p><p>  8.2 體會(huì)……………………………………………………………………….31</p><p

8、>  9.參考資料 ……………………………………………………………………32</p><p><b>  1.設(shè)計(jì)任務(wù)與要求</b></p><p><b>  1. 1設(shè)計(jì)任務(wù)</b></p><p>  運(yùn)用相關(guān)硬件,結(jié)合自己的編程技術(shù),設(shè)計(jì)簡(jiǎn)單的電子秤,并實(shí)現(xiàn)其基本功能,是本次模擬壓力控制系統(tǒng)的硬件課程設(shè)計(jì)。

9、在完成課程設(shè)計(jì)的過(guò)程中,需要學(xué)生獨(dú)立思考,積極發(fā)揮創(chuàng)造力和動(dòng)手能力,進(jìn)一步學(xué)習(xí)各種軟硬件的功能和提高編程能力。</p><p>  電子秤的設(shè)計(jì),是通過(guò)實(shí)驗(yàn)臺(tái)左下角電位器RW1輸出0~5V直流電壓,模擬壓力信號(hào),送入A/D轉(zhuǎn)換器,將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)并顯示在LCD字符圖形液晶顯示屏的第一行上,作為稱重的重量。同時(shí),從鍵盤輸入數(shù)據(jù),并在LCD字符圖形液晶顯示屏的第二行上顯示出來(lái),作為價(jià)格。最后在第三行顯示出重量

10、與單價(jià)的乘積及總價(jià)。實(shí)現(xiàn)電子秤的基本功能,達(dá)到模擬壓力控制系統(tǒng)課程設(shè)計(jì)的基本要求。</p><p><b>  1. 2設(shè)計(jì)要求</b></p><p> ?。?)模擬電子秤開機(jī)后,改變模擬信號(hào)的大小,模擬重量的值必須實(shí)時(shí)的顯示在液晶顯示屏上;</p><p>  (2)模擬的單價(jià)初始值默認(rèn)為零,從鍵盤輸入單價(jià)完成后,需在液晶顯示器上顯示輸入的

11、單價(jià);</p><p> ?。?)模擬價(jià)格必須隨模擬重量改變,并實(shí)時(shí)的顯示在液晶顯示器上。</p><p>  2. 總體方案與說(shuō)明</p><p>  本次試驗(yàn)需要要使用ADC0809數(shù)模轉(zhuǎn)換器,四乘四鍵盤,可編程控制接口8255,0~5V直流電壓,128*64LCD字符圖形液晶顯示屏。</p><p>  2.1模擬信號(hào)的轉(zhuǎn)換與顯示<

12、;/p><p>  用滑動(dòng)變阻器代替壓力傳感器,模擬壓力的變化。將模擬電壓輸入ADC0809通道0(IN0),ADC0809的IN0口地址為280H, CS接地址譯碼輸出的280h~287h。8255的A口接LCD的D7~DO. 8255CS接地址譯碼輸出的288h~28fh。8255的PB0~PB2分別接LCD的D/I、RW、E接口。編程采集IN0輸入的電壓,將壓力傳感器的模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),之后進(jìn)行轉(zhuǎn)換,換算

13、為設(shè)定量程下實(shí)際情況的值,然后將模擬重量的電壓數(shù)據(jù)存放到CPU寄存器中用于下一步計(jì)算。同時(shí)將模擬重量的電壓數(shù)據(jù)從8255的A口輸出并在LCD屏幕的第一行作為重量顯示出來(lái)。</p><p>  2.2 鍵盤數(shù)據(jù)的輸入與顯示</p><p>  8255的C0~C3接鍵盤的列0~列3,C4~C7接鍵盤的行0~行3),從鍵盤輸入兩位數(shù),然后在LCD的第二行作為單價(jià)顯示出來(lái),并存放到CPU寄存器中

14、用于下一步計(jì)算。</p><p>  2.3 數(shù)據(jù)的處理與顯示</p><p>  通過(guò)編程將第一步與第二步寄存在CPU中的模擬重量與模擬價(jià)格相乘處理后輸入到LCD的第三行作為總價(jià)顯示出來(lái)。</p><p>  2.4 LCD顯示說(shuō)明</p><p>  液晶顯示屏是一種內(nèi)置128×64-12漢字圖形點(diǎn)陣的液晶顯示控制模塊,用于顯示

15、漢字及圖形?12864A-1漢字圖形點(diǎn)陣液晶顯示模塊集成ST7920驅(qū)動(dòng)器,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(16×16點(diǎn)陣)、128個(gè)字符(8×16點(diǎn)陣)及64×256點(diǎn)陣顯示RAM(GDRAM)。如圖2.4。</p><p>  液晶顯示屏共顯示四行字符,每行可以顯示八個(gè)字符。</p><p>  0-14 重量:****斤</p>

16、<p>  16-30 價(jià)格:****元</p><p>  32-46 總價(jià):*****</p><p>  48-62 值班人員:***</p><p>  圖2.4 LCD接線圖</p><p><b>  3.硬件框圖與說(shuō)明</b></p><p>  3.1 808

17、6原理簡(jiǎn)介</p><p>  3.1.1 8086CPU</p><p>  8086是Intel系列的16位微處理器,它采用HMOS工藝技術(shù)制造,芯片采用40系列線封裝,單一的+5V電源,時(shí)鐘頻率為5~10MHz。</p><p>  8086有16根數(shù)據(jù)線和20根地址線,可以處理8位和16位數(shù)據(jù),尋址1MB的儲(chǔ)存單元和64KB的I/O端口。如圖3.1.1。&l

18、t;/p><p>  圖 3.1.1 8086引腳圖</p><p>  3.1.2 8086CPU的編程結(jié)構(gòu)</p><p>  編程結(jié)構(gòu):是指從程序員和使用者的角度看到的結(jié)構(gòu),亦可稱為功能結(jié)構(gòu)。從功能上來(lái)看,8086CPU可分為兩部分,即總線接口部件BIU(Bus Interface Unit)和執(zhí)行部件EU(Execution Unit)。8086CPU的內(nèi)部功

19、能結(jié)構(gòu)如圖圖3.1.2所示:</p><p>  圖3.1.2 </p><p>  3.2 8255原理簡(jiǎn)介</p><p>  3.2.1 8255原理及接線圖 </p><p>  8255A是Intel系列的并行接口芯片,常作為微機(jī)系統(tǒng)與外部設(shè)備接口。由于它是可編程的,可以通過(guò)軟件來(lái)設(shè)置芯片的工作方式,因此,用它連接外部設(shè)備

20、時(shí),一般不需要在附加外部電路,給使用帶來(lái)很大方便。如圖3.2.1</p><p><b>  圖3.2.1</b></p><p>  3.2.2芯片8255 A在本設(shè)計(jì)中的功能作用</p><p>  8255是并行的I|O接口芯片,內(nèi)部有三個(gè)相互獨(dú)立的8為數(shù)據(jù)端口。8255實(shí)現(xiàn)了外設(shè)與8086之間的數(shù)據(jù)傳輸。8255的A口地址為288H,B

21、口地址為289H,C口地址為28AH,</p><p>  控制口地址為28BH,A口作為L(zhǎng)ED顯示屏數(shù)據(jù)總線D0~D7,B口控制LED燈,蜂鳴器,電機(jī),C口的低三位分別接LED顯示屏的D/I,RW,E。</p><p>  3.2.3芯片8255的功能分析</p><p>  1、8255A是可編程并行接口,內(nèi)部有3個(gè)相互獨(dú)立的8位數(shù)據(jù)端口,即A口、B口和C口。三

22、個(gè)端口都可以作為輸入端口或輸出端口。A口有三種工作方式:方式0、方式1和方式2;B口可以工作在方式0或方式1下;C口通常作為聯(lián)絡(luò)信號(hào)使用。8255的工作只有當(dāng)片選CS有效時(shí)才能進(jìn)行工作,而控制邏輯端口實(shí)現(xiàn)對(duì)其他端口的控制。當(dāng)8255工作在方式0時(shí),即基本輸入輸出方式時(shí),可將三個(gè)數(shù)據(jù)端口劃分為四個(gè)獨(dú)立的部分:A口和B口作為兩個(gè)8位端口,C口的高4位和低4位可以用作兩個(gè)4位的輸入輸出口,各個(gè)端口都可獨(dú)立地用作輸入或輸出。</p>

23、<p>  2、數(shù)據(jù)總線緩沖器是一個(gè)8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫控制邏輯控制的,它可與系統(tǒng)的DB直接相連,實(shí)現(xiàn)CPU和8255A之間的信息傳送;讀寫控制器用于管理數(shù)據(jù)、控制字或狀態(tài)字的傳送,接收來(lái)自CPU的地址信息及一些控制信號(hào),然后向A組、B組控制電路發(fā)送命令,控制端口數(shù)據(jù)的傳送方向。</p><p>  3、8255引腳:RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括

24、控制寄存器)均被清除,所有I/O口均被置成輸入方式?! ?lt;/p><p>  CS:芯片選擇信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/CS=0時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時(shí),8255無(wú)法與CPU做數(shù)據(jù)傳輸.  </p><p>  RD:讀信號(hào)線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/RD=0且/CS=0時(shí),允許8255通過(guò)數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從

25、8255讀取信息或數(shù)據(jù)?! R:寫入信號(hào),當(dāng)這個(gè)輸入引腳為低電平時(shí),即/WR=0且/CS=0時(shí),允許CPU將數(shù)據(jù)或控制字寫入8255?! ?lt;/p><p>  D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行輸入輸出指令時(shí),通過(guò)它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過(guò)數(shù)據(jù)總線傳送?! ?lt;/p><p>  PA0~PA7:端口A輸入輸出線,一個(gè)8位的

26、數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入鎖存器?! ?lt;/p><p>  PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器, 一個(gè)8位的輸入輸出緩沖器?! ?lt;/p><p>  PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器, 一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過(guò)工作方式設(shè)定而分成2個(gè)4位的端口, 每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B

27、配合使用,可作為控制信號(hào)輸出或狀態(tài)信號(hào)輸入端口?!?lt;/p><p>  A0,A1:地址選擇線,用來(lái)選擇8255的PA口,PB口,PC口和控制寄存器.  當(dāng)A0=0,A1=0時(shí),PA口被選擇;當(dāng)A0=0,A1=1時(shí),PB口被選擇;當(dāng)A0=1,A1=0時(shí),PC口被選擇;當(dāng)A0=1.A1=1時(shí),控制寄存器被選擇。</p><p>  3.2.4 8255具有三種基本的工作方式</p>

28、;<p>  基本輸入/輸出方式(方式0) </p><p>  選通工作方式(方式1) </p><p>  雙向傳送方式(方式2)</p><p><b>  方式0:</b></p><p>  相當(dāng)于三個(gè)獨(dú)立的8位簡(jiǎn)單接口 各端口既可設(shè)置為輸入口,也可設(shè)置為輸出口,但不能同時(shí)實(shí)現(xiàn)輸入及輸出。C端口可

29、以是一個(gè)8位的簡(jiǎn)單接口,也可以分為兩個(gè)獨(dú)立的4位端口 常用于連接簡(jiǎn)單外設(shè)(適于無(wú)條件或查詢方式)。</p><p><b>  方式1:</b></p><p>  利用一組選通控制信號(hào)控制A端口和B端口的數(shù)據(jù)輸入輸出 A口、B口作輸入或輸出口,C口的部分位用作選通控制信號(hào) A口、B口在作為輸入和輸出時(shí)選通信號(hào)不同</p><p><b&

30、gt;  方式2:</b></p><p>  雙向輸入輸出方式-------可以既作為輸入口,又作為輸出口 只有A端口可工作在方式2下。</p><p>  3.3 0809的應(yīng)用</p><p>  3.3.1 0809內(nèi)部特性</p><p> ?。?)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。如圖3.3.1。<

31、/p><p>  (2)具有轉(zhuǎn)換起??刂贫?。</p><p> ?。?)轉(zhuǎn)換時(shí)間為100μs</p><p>  (4)單個(gè)+5V電源供電。</p><p>  (5)模擬輸入電壓范圍0~+5V,不需要零點(diǎn)和滿刻度校準(zhǔn)。</p><p>  (6)工作溫度范圍為-40~+85攝氏度。</p><p&g

32、t; ?。?)低功耗,約15mW</p><p><b>  圖3.3.1 </b></p><p>  3.3.2外部特性(引腳功能)</p><p><b>  圖3.3.2 </b></p><p>  ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖所示。下面說(shuō)明各引腳功能。IN0~

33、IN7:8路模擬量輸入端。2-1~2-8:8位數(shù)字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。ALE:地址鎖存允許信號(hào),輸入,高電平有效。START:A/D轉(zhuǎn)換啟動(dòng)脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(dòng)(脈沖上升沿使0809復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。EOC: A/D轉(zhuǎn)換結(jié)束信號(hào),輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。OE:數(shù)據(jù)輸出允許信號(hào),輸入

34、,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。REF(+)、REF(-):基準(zhǔn)電壓。Vcc:電源,單一+5V。GND:地。</p><p>  3.3.3量程轉(zhuǎn)換方法:</p><p>  INO單極性輸入電壓與轉(zhuǎn)換后的數(shù)字的關(guān)系為:</p><p>  N=Ui/(UR

35、EF/256)</p><p>  3.4 液晶顯示屏</p><p>  3.4.1 液晶屏簡(jiǎn)介和主要特性</p><p>  液晶顯示屏是一種內(nèi)置128×64-12漢字圖形點(diǎn)陣的液晶顯示控制模塊,用于顯示漢字及圖形?12864A-1漢字圖形點(diǎn)陣液晶顯示模塊集成ST7920驅(qū)動(dòng)器,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(16×16點(diǎn)陣)、1

36、28個(gè)字符(8×16點(diǎn)陣)及64×256點(diǎn)陣顯示RAM(GDRAM)。主要技術(shù)參數(shù)和顯示特性:</p><p>  電源:VDD 3.3V~+5V(內(nèi)置升壓電路,無(wú)需負(fù)壓);</p><p>  顯示內(nèi)容:128列× 64行;</p><p><b>  顯示顏色:黃綠;</b></p><p&

37、gt;  顯示角度:6:00鐘直視;</p><p>  LCD類型:STN;</p><p>  與MCU接口:8位或4位并行/3位串行;</p><p><b>  2MHZ時(shí)鐘頻率;</b></p><p><b>  配置LED背光;</b></p><p>  多種

38、軟件功能:光標(biāo)顯示、畫面移位、自定義字符、睡眠模式等</p><p>  3.4.2液晶顯示屏引腳說(shuō)明</p><p>  表128X64 引腳說(shuō)明</p><p>  邏輯工作電壓(VDD):4.5~5.5V</p><p>  電源地(GND):0V</p><p>  工作溫度(Ta):0~60℃(常溫) / -

39、20~75℃(寬溫)</p><p>  3.4.3漢字編碼查詢表</p><p><b>  圖3.4.3</b></p><p>  3.4.4液晶顯示流程圖:</p><p><b>  圖3.4.4</b></p><p>  3.4.5液晶顯示原理圖:</p&

40、gt;<p><b>  圖 3.4.5</b></p><p><b>  3.5 鍵盤</b></p><p>  鍵盤的工作原理是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵。這樣鍵盤中按鍵的個(gè)數(shù)是4×4個(gè)。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利

41、用率。</p><p>  3.5.1鍵盤原理流程圖</p><p><b>  圖3.5.1</b></p><p>  3.5.2鍵盤電路圖</p><p><b>  圖3.5.2</b></p><p>  3.5.3鍵盤的掃描過(guò)程</p><p&

42、gt;  (1)檢測(cè)是否所有鍵都松開了,若沒(méi)有則繼續(xù)檢測(cè)。</p><p>  (2)檔所有鍵都松開了,在檢測(cè)是否有鍵按下,若無(wú)這繼續(xù)檢測(cè)。</p><p> ?。?)若有鍵按下,要消除鍵盤抖動(dòng),確認(rèn)有鍵按下。</p><p> ?。?)對(duì)壓下的鍵進(jìn)行編碼,將該鍵的行列信號(hào)轉(zhuǎn)換成16進(jìn)制,由此確定有哪個(gè)鍵按下了。如果出現(xiàn)有多個(gè)鍵重復(fù)按下的情況,只有在其他鍵全部釋放后

43、,僅剩一個(gè)鍵按下時(shí),才把此鍵當(dāng)作按下的鍵。</p><p>  (5)該建釋放后在回到(2)</p><p>  4.電路原理圖與說(shuō)明</p><p><b>  4.1電路原理圖</b></p><p>  4.1.1 電路連接圖與說(shuō)明:</p><p> ?。?)0809的通道0的地址為298

44、H,通道0與0~+5V相連接,片選地址為280H~287H</p><p> ?。?)8255的片選地址為288H~29DH,A口地址為288H,B口地址為289H,C 口地址為28AH,PA0~PA7接LCD數(shù)據(jù)總線D0~D7,PB0~PB2接LCD的D/I、RW、E。PC0~PC7接鍵盤的DO~D7。</p><p><b>  圖4.1.1</b></p&

45、gt;<p>  4.1.2 硬件接線實(shí)物圖</p><p><b>  圖4.1.2</b></p><p>  4.2 硬件運(yùn)行過(guò)程說(shuō)明</p><p><b>  4.2.1過(guò)程說(shuō)明</b></p><p>  初始化壓力傳感器,將壓力傳感器的信號(hào)傳至A/D轉(zhuǎn)換器(由于沒(méi)有壓力

46、傳感器,試驗(yàn)中用滑動(dòng)變阻器替代),然后將壓力傳感器的模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),之后進(jìn)行轉(zhuǎn)換,換算為設(shè)定量程下實(shí)際情況的值,將值送到8255,8255控制液晶屏顯示,將換算之后的值顯示出來(lái)。并使當(dāng)前數(shù)據(jù)隨時(shí)間一直不斷變化。當(dāng)壓力大小相對(duì)穩(wěn)定時(shí),從4*4鍵盤輸入一個(gè)2為數(shù),通過(guò)8255鏈接的LCD顯示器顯示在顯示屏的第二行。然后計(jì)算模擬重量乘以價(jià)格得到總價(jià)輸出到LCD液晶顯示屏的第三行。</p><p>  5.軟件主

47、要模塊與說(shuō)明</p><p>  程序軟件模塊分為主程序,鍵盤程序,0809轉(zhuǎn)換程序,液晶顯示程序,計(jì)算子程序五個(gè)部分,鍵盤程序,液晶顯示程序流程圖在硬件部分已有敘述,下面主要描述主程序,0809轉(zhuǎn)換程序的詳細(xì)過(guò)程,主程序完成8255初始化,調(diào)用0809轉(zhuǎn),完成LCD準(zhǔn)備工作,調(diào)用鍵盤函數(shù),調(diào)用計(jì)算函數(shù)等一系列主干過(guò)程。</p><p>  5.1 主程序流程圖</p>&l

48、t;p><b>  圖5.1</b></p><p>  5.2 0809轉(zhuǎn)換及數(shù)據(jù)處理流程 </p><p>  5.2.1數(shù)據(jù)處理流程圖</p><p><b>  圖5.3.1</b></p><p>  5.2.2數(shù)據(jù)轉(zhuǎn)換代碼如下</p><p>  TRANS

49、FORM PROC ;啟動(dòng)0809</p><p>  MOV DX,280H</p><p>  OUT DX,AL</p><p>  MOV CX,0FFH</p><p>  AGAIN: LOOP AGAIN</p><p>  IN

50、AL,DX ;讀取0809的值</p><p>  MOV BL,2 ;量程轉(zhuǎn)換,100-1000</p><p><b>  MOV AH,0</b></p><p><b>  MUL BL</b></p><p>  MOV [HUANCH+6

51、4] ,AX</p><p><b>  MOV DX,0</b></p><p>  MOV CX,100 ;將轉(zhuǎn)換量程后的值進(jìn)行拆分,使之能在LED屏上顯示</p><p><b>  DIV CX</b></p><p>  ADD AX,0A3B0H</p>&

52、lt;p>  MOV [HUANCH+6],AX ;儲(chǔ)存百位數(shù)值,顯示</p><p>  MOV AX,DX</p><p><b>  MOV DX,0</b></p><p>  MOV CX,10</p><p><b>  DIV CX</b></p>&l

53、t;p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+8],AX;儲(chǔ)存十位數(shù)值,顯示</p><p>  MOV AX,DX</p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+12],AX;儲(chǔ)存?zhèn)€位數(shù)值至緩沖區(qū)</p><p>

54、<b>  RET</b></p><p>  TRANSFORM ENDP</p><p>  6.源程序清單與注釋</p><p>  IO_ADDRESS EQU 288h</p><p>  IO_ADDRESS EQU 288H</p><p>  a8255

55、 equ 288H ;8255 A口</p><p>  c8255 equ 28aH ;8255 C口</p><p>  k8255 equ 28bH ;8255控制口分</p><p>  DATA SEGMENT</p>

56、<p><b>  HUANCH </b></p><p>  DW 0D6D8H, 0C1BFH,0A3BAH,0C1A6H,0A1C3H,0A3AEH,0A3CBH,0BDEFH</p><p>  ;0-14 顯示kg,+6,最后一個(gè)存數(shù)據(jù),+16</p><p>  DW 0BCDBH,0B8F1H,0A3BAH,0A3B

57、0H,0A3AEH,0A3B0H,0A1A0H,0D4AAH</p><p>  ;16-30 單價(jià)XXX.X帕</p><p>  DW 0D7DCH,0BCDBH,0A3BAH,0A3AEH,0A3AEH,0A3AEH,0A3AEH,0A3AEH</p><p>  ;32-46 顯示狀態(tài)</p><p>  DW 0D6B5H,0B

58、0E0H,0C8CbH,0D4B1H,0A1C3H,0D1EEH,0BDA8H,0A1A0H</p><p>  ;48-52 顯示值班人員</p><p>  DW 64,66,68,0,72;</p><p><b>  CC DB 10;</b></p><p>  HZ_ADR DB ?</p&

59、gt;<p>  table1 DW 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h</p><p>  DW 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;鍵盤掃描碼表</p><p>  char DB '0123456789ABCDEF

60、9; ;字符表</p><p>  DATA ENDS</p><p>  DATA ENDS</p><p>  STACKS SEGMENT STACK ;堆??臻g</p><p>  DB 100 DUP (?)</p>

61、<p>  STACK ENDS ;jianpan</p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATA</p><p><b>  START:</b></p><p>&l

62、t;b>  CLI</b></p><p>  MOV AX,DATA</p><p>  MOV DS,AX</p><p>  MOV ES,AX ;?????????????????</p><p>  MOV AX,stacks</p><p>

63、  MOV SS,AX</p><p>  MOV DX,IO_ADDRESS+3</p><p>  MOV AL,81H</p><p>  OUT DX,AL ;8255初始化</p><p>  CALL TRANSFORM ;調(diào)用0809 ok</

64、p><p>  CALL CLEAR ;LCD 清除</p><p>  LEA BX,HUANCH</p><p>  MOV CH,1 ;顯示第1行信息</p><p>  CALL LCD_DISP</p><p>  CALL

65、 JISUAN</p><p>  LEA BX, HUANCH</p><p>  MOV CH,2 ;顯示第1行信息</p><p>  CALL LCD_DISP</p><p>  LEA BX, HUANCH</p><p>  MOV CH,3

66、 ;顯示第1行信息</p><p>  CALL LCD_DISP</p><p>  LEA BX,HUANCH</p><p>  MOV CH,4 ;顯示第4行信息</p><p>  CALL LCD_DISP</p><p>  M

67、OV DX,c8255</p><p>  MOV AL,0fh</p><p>  OUT DX,AL</p><p>  IN AL,DX ;讀行掃描值</p><p>  AND AL,0fh</p><p>  CMP AL,0fh</p>&l

68、t;p>  JZ START ;未發(fā)現(xiàn)有鍵按下則轉(zhuǎn)</p><p>  MOV DL,3fh</p><p><b>  MOV AH,2</b></p><p><b>  INT 21h</b></p><p>  CALL JIANPA

69、N</p><p>  MOV DL,[CC]</p><p>  ADD DL,30H</p><p>  MOV AH,02</p><p>  INT 21h ;顯示查找到的鍵盤</p><p>  MOV BL,[CC];</p><p&g

70、t;  MOV BH,0;</p><p>  MOV [HUANCH+66],BX</p><p>  ADD BX,0A3B0H</p><p>  MOV [HUANCH+22],BX</p><p>  CALL JIANPAN</p><p>  MOV DL,[CC]</p>&l

71、t;p>  ADD DL,30H</p><p>  MOV AH,02</p><p>  INT 21h ;顯示查找到的鍵盤</p><p>  MOV BL,[CC];</p><p><b>  MOV BH,0</b></p>&

72、lt;p>  MOV [HUANCH+68],BX</p><p>  ADD BX,0A3B0H</p><p>  MOV [HUANCH+26],BX</p><p>  MOV BL,10</p><p>  MOV AX,[HUANCH+66]</p><p>  MOV AH,0;<

73、/p><p><b>  MUL BL</b></p><p>  ADD AX,[HUANCH+68]</p><p>  MOV [HUANCH+70],AX;</p><p>  MOV DX,IO_ADDRESS+3</p><p>  MOV AL,81H</p>&

74、lt;p>  OUT DX,AL ;8255初始</p><p>  LEA BX, HUANCH</p><p>  MOV CH,2 ;顯示第2行信息</p><p>  CALL LCD_DISP</p><p>  LEA

75、 BX, HUANCH</p><p>  CALL JISUAN</p><p>  MOV CH,3 ;顯示第3行信息</p><p>  CALL LCD_DISP</p><p>  l1: JMP START</p><p>  CLEAR

76、 PROC</p><p>  MOV AL,0CH</p><p>  MOV DX,IO_ADDRESS</p><p>  OUT DX,AL ;設(shè)置CLEAR命令</p><p>  CALL CMD_SETUP ;啟動(dòng)LCD執(zhí)行命

77、令</p><p><b>  RET</b></p><p>  CLEAR ENDP</p><p>  TRANSFORM PROC ;啟動(dòng)0809</p><p>  MOV DX,280H</p><p>  OUT DX,AL&l

78、t;/p><p>  MOV CX,0FFH</p><p>  AGAIN: LOOP AGAIN</p><p>  IN AL,DX ;讀取0809的值</p><p>  MOV BL,2 ;量程轉(zhuǎn)換,100-1000<

79、/p><p><b>  MOV AH,0</b></p><p><b>  MUL BL</b></p><p>  MOV [HUANCH+64] ,AX</p><p><b>  MOV DX,0</b></p><p>  MOV CX

80、,100 ;將轉(zhuǎn)換量程后的值進(jìn)行拆分,使之能在LED屏上顯示</p><p><b>  DIV CX</b></p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+6],AX ;儲(chǔ)存百位數(shù)值,顯示</p><

81、;p>  MOV AX,DX</p><p><b>  MOV DX,0</b></p><p>  MOV CX,10</p><p><b>  DIV CX</b></p><p>  ADD AX,0A3B0H</p><p>  MOV [HUA

82、NCH+8],AX ;儲(chǔ)存十位數(shù)值,顯示</p><p>  MOV AX,DX</p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+12],AX ;儲(chǔ)存?zhèn)€位數(shù)值至緩沖區(qū)</p><p><b>  RET</b></

83、p><p>  TRANSFORM ENDP</p><p>  FUNCUP PROC</p><p>  MOV AL,34H ;LCD顯示狀態(tài)命令</p><p>  OUT DX,AL</p><p>  CALL CMD_SETUP</p

84、><p><b>  RET</b></p><p>  FUNCUP ENDP</p><p>  LCD_DISP PROC</p><p>  LEA BX, HUANCH</p><p>  CMP CH, 1 ;判斷是否為第一行&l

85、t;/p><p>  JZ DISP_SEC1</p><p>  CMP CH,2 ;判斷是否為第二行</p><p>  JZ DISP_SEC2</p><p>  CMP CH,3 ;判斷是否為第三行</p><p>

86、;  JZ DISP_SEC3</p><p>  CMP CH,4 ;判斷是否為第三行</p><p>  JZ DISP_SEC4</p><p>  MOV BYTE PTR HZ_ADR,98h ;第四行起始端口地址</p><p>  ADD BX,48

87、 ;指向第四行信息</p><p><b>  JMP NEXT</b></p><p>  DISP_SEC1:</p><p>  MOV BYTE PTR HZ_ADR,80H ;第一行起始端口地址</p><p>  ADD BX,0

88、 ;指向第一行信息</p><p><b>  JMP NEXT</b></p><p>  DISP_SEC2:</p><p>  MOV BYTE PTR HZ_ADR,90H ;第二行起始端口地址</p><p>  ADD BX,16 ;指向第二行信息</p>

89、;<p><b>  JMP NEXT</b></p><p>  DISP_SEC3:</p><p>  MOV BYTE PTR HZ_ADR,88H;第三行起始端口信息</p><p>  ADD BX,32 ;指向第三行信息</p><p><b>  JM

90、P NEXT</b></p><p>  DISP_SEC4:</p><p>  MOV BYTE PTR HZ_ADR,98H;第三行起始端口信息</p><p>  ADD BX,48 ;指向第三行信息</p><p><b>  JMP NEXT</b></p&g

91、t;<p><b>  NEXT:</b></p><p><b>  MOV CL,8</b></p><p><b>  CONTINUE:</b></p><p><b>  PUSH CX</b></p><p>  MOV AL

92、,HZ_ADR</p><p>  MOV DX,IO_ADDRESS</p><p>  OUT DX, AL</p><p>  CALL CMD_SETUP ;設(shè)定DDRAM地址命令</p><p>  MOV AX,[BX]</p><p><b>  PUSH AX</

93、b></p><p>  MOV AL,AH ;先送漢字編碼高位</p><p>  MOV DX,IO_ADDRESS</p><p>  OUT DX,AL</p><p>  CALL DATA_SETUP ;輸出漢字編碼高字節(jié)</p><p>  CALL

94、 DELAYTIME ;延遲</p><p><b>  POP AX</b></p><p>  MOV DX,IO_ADDRESS</p><p>  OUT DX, AL</p><p>  CALL DATA_SETUP ;輸出漢字編碼低字節(jié)</p><p

95、>  CALL DELAYTIME</p><p><b>  INC BX</b></p><p>  INC BX ;修改顯示內(nèi)碼緩沖區(qū)指針</p><p>  INC BYTE PTR HZ_ADR ;修改LCD顯示端口地址</p><p><b>  

96、POP CX</b></p><p><b>  DEC CL</b></p><p>  JNZ CONTINUE</p><p><b>  RET</b></p><p>  LCD_DISP ENDP</p><p>  CMD_SET

97、UP PROC</p><p>  MOV DX,IO_ADDRESS ;指向8255端口控制端口</p><p><b>  ADD DX,1</b></p><p><b>  NOP</b></p><p>  MOV AL,00000000B

98、 ;PC1置0,pc0置0 (LCD I端=0,W端=0)</p><p>  OUT DX, AL</p><p>  CALL DELAYTIME</p><p><b>  NOP</b></p><p>  MOV AL,00000100B ;PC2置1 (LCD E端=1)<

99、/p><p>  OUT DX, AL</p><p><b>  NOP</b></p><p>  CALL DELAYTIME</p><p>  MOV AL, 00000000B ;PC2置0,(LCD E端置0)</p><p>  OUT DX, AL<

100、/p><p>  CALL DELAYTIME</p><p><b>  RET</b></p><p>  CMD_SETUP ENDP</p><p>  DATA_SETUP PROC</p><p>  MOV DX,IO_ADDRESS

101、 ;指向8255控制端口</p><p><b>  ADD DX,1</b></p><p>  MOV AL,00000001B ;PC1置0,PC0=1 (LCD I端=1)</p><p>  OUT DX, AL</p><p><b>  NOP</b>&

102、lt;/p><p>  CALL DELAYTIME</p><p>  MOV AL,00000101B ;PC2置1 (LCD E端=1)</p><p>  OUT DX, AL</p><p><b>  NOP</b></p><p>  CALL DELAYT

103、IME</p><p>  MOV AL, 00000001B ;PC2置0,(LCD E端=0)</p><p>  OUT DX, AL</p><p><b>  NOP</b></p><p>  DELAYTIME PROC ;延時(shí)子程序</p><

104、p>  MOV CX,0FFFFH</p><p><b>  D1:</b></p><p><b>  LOOP D1</b></p><p><b>  RET</b></p><p>  DELAYTIME ENDP</p><p&

105、gt;  DATA_SETUP ENDP</p><p>  JISUAN PROC</p><p>  MOV AX,[HUANCH+70]</p><p>  MOV BX,[HUANCH+64]</p><p><b>  MUL BX</b></p><p>  MOV

106、 DX,0;</p><p>  MOV BX,10000</p><p><b>  DIV BX</b></p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+38],AX</p><p>  MOV AX,DX</p><

107、;p>  MOV BX,1000</p><p>  MOV DX,0;</p><p><b>  DIV BX</b></p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+40],AX</p><p>  MOV AX,DX</

108、p><p>  MOV BX,100</p><p>  MOV DX,0;</p><p><b>  DIV BX</b></p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+42],AX</p><p>  MOV A

109、X,DX</p><p>  MOV BX,10</p><p>  MOV DX,0;</p><p><b>  DIV BX</b></p><p>  ADD AX,0A3B0H</p><p>  MOV [HUANCH+46],AX</p><p>

110、  MOV AX,DX</p><p><b>  RET</b></p><p>  JISUAN ENDP</p><p>  JIANPAN PROC</p><p>  MOV DX,k8255 ;初始化8255控制字</p><p> 

111、 MOV AL,81h</p><p>  OUT DX,AL</p><p><b>  key_loop:</b></p><p>  MOV DX,c8255</p><p>  MOV AL,0fh</p><p>  OUT DX,AL</p><p>

112、  IN AL,DX ;讀行掃描值</p><p>  AND AL,0fh</p><p>  CMP AL,0fh</p><p>  JZ key_loop ;未發(fā)現(xiàn)有鍵按下則轉(zhuǎn)</p><p>  CALL DELAY

113、 ;delay for amoment</p><p>  MOV AH,AL</p><p>  MOV DX,k8255</p><p>  MOV AL,88h</p><p>  OUT DX,AL</p><p>  MOV DX,c8255</p><p>  MOV

114、AL,AH</p><p>  OR AL,0f0h</p><p>  OUT DX,AL</p><p>  IN AL,DX ;讀列掃描值</p><p>  AND AL,0f0h</p><p>  CMP AL,0f0h</p><p&g

115、t;  JZ key_loop ;未發(fā)現(xiàn)有鍵按下則轉(zhuǎn)</p><p>  MOV SI,offset table1 ;鍵盤掃描碼表首址</p><p>  MOV DI,offset char ;字符表首址</p><p>  MOV CX,16 ;待查表的表

116、大小</p><p>  key_tonext:</p><p>  CMP AX,[SI] ;cmp (col,row) with every word</p><p>  JZ key_findkey ;in the table</p><p><b>  DEC

117、CX</b></p><p>  JZ key_loop ;未找到對(duì)應(yīng)掃描碼</p><p><b>  ADD SI,2</b></p><p><b>  INC DI</b></p><p>  JMP key_tonext</p&g

118、t;<p>  key_findkey:</p><p>  MOV DL,[di]</p><p>  MOV AH,02</p><p>  int 21h ;顯示查找到的鍵盤</p><p>  MOV BL,DL</p><p>  SUB BL,30H</

119、p><p>  MOV [CC],BL</p><p>  key_waitup:</p><p>  MOV DX,k8255</p><p>  MOV AL,81h</p><p>  OUT DX,AL</p><p>  MOV DX,c8255</p><p

120、>  MOV AL,0fh</p><p>  OUT DX,AL</p><p>  IN AL,dx ;讀行掃描值</p><p>  AND AL,0fh</p><p>  CMP AL,0fh</p><p>  JNZ key_waitup ;按鍵未抬起轉(zhuǎn)&

121、lt;/p><p>  CALL delay ;delay for amoment</p><p><b>  RET</b></p><p>  JIANPAN ENDP</p><p>  DELAY PROC NEAR</p><p>  PUSH AX

122、 ;delay 50ms--100ms</p><p><b>  MOV AH,0</b></p><p><b>  INT 1AH</b></p><p><b>  MOV BX,DX</b></p><p><b>  DELAY1:<

123、/b></p><p><b>  MOV AH,0</b></p><p><b>  INT 1AH</b></p><p><b>  CMP BX,DX</b></p><p>  JZ DELAY1</p><p><b> 

124、 MOV BX,DX</b></p><p><b>  DELAY2:</b></p><p><b>  MOV AH,0</b></p><p><b>  INT 1AH</b></p><p><b>  CMP BX,DX</b>&

125、lt;/p><p><b>  JZ DELAY2</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  DELAY ENDP</p><p><b>  CODE ENDS&l

126、t;/b></p><p><b>  END START</b></p><p>  7.問(wèn)題分析與解決方案 </p><p>  7.1 重量如何用0~5v直流電壓模擬?</p><p>  解決方案:最后解決方案是依據(jù)0809 A/D轉(zhuǎn)換器將電壓轉(zhuǎn)換為0~255的數(shù)值,存入寄存器后,再乘2,默認(rèn)保留一位小數(shù),

127、就得到一個(gè)類似于XX.X的重量值(00.0~51.0Kg)</p><p>  7.2 究竟該怎樣將12864的四行與我們?cè)O(shè)計(jì)的顯示內(nèi)容對(duì)應(yīng)起來(lái)?</p><p>  解決方案:我們是在LED液晶屏的自定義實(shí)驗(yàn)的基礎(chǔ)上修改得來(lái),自定義實(shí)驗(yàn)只有兩行顯示,通過(guò)對(duì)代碼的分析,發(fā)現(xiàn)四行的端口地址并不是順序排列的。經(jīng)過(guò)不斷的試驗(yàn),得到各口地址為:第一行:80H;第二行:90H;第三行:88H;第四行

128、:98H。</p><p>  通過(guò)判斷需要輸出哪一行的信息,輸出漢字表中的相應(yīng)漢字,LED顯示屏的每一行能顯示八個(gè)字符,所以根據(jù)漢字在LED屏幕上的位置以計(jì)算得出漢字在表中位置。</p><p>  LEA BX, HZ_TAB</p><p>  ADD BX,48 ;指向第四行信息</p><p>  ADD

溫馨提示

  • 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ù)僅提供信息存儲(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)論