

版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件課程設(shè)計(jì)報(bào)告--壓力控制系統(tǒng)
- 控裝課程設(shè)計(jì)--天燃?xì)鈮毫刂葡到y(tǒng)
- 控制裝置與儀表課程設(shè)計(jì)--爐膛壓力系統(tǒng)死區(qū)控制系統(tǒng)設(shè)計(jì)
- 溫度控制系統(tǒng)課程設(shè)計(jì)
- 集散控制系統(tǒng)課程設(shè)計(jì)
- 控制系統(tǒng)課程設(shè)計(jì)--- 聯(lián)合站控制系統(tǒng)
- 運(yùn)動(dòng)控制系統(tǒng)課程設(shè)計(jì)
- 運(yùn)動(dòng)控制系統(tǒng)課程設(shè)計(jì)
- 控制系統(tǒng)仿真課程設(shè)計(jì)
- 課程設(shè)計(jì)---溫度控制系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)---溫度控制系統(tǒng)設(shè)計(jì)
- 溫度控制系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--角度控制系統(tǒng)設(shè)計(jì)
- 控制系統(tǒng)課程設(shè)計(jì)報(bào)告--- 控制系統(tǒng)設(shè)計(jì)與仿真
- 配料車控制系統(tǒng)課程設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)---溫度控制系統(tǒng)
- 課程設(shè)計(jì)---氨氣處理控制系統(tǒng)
- 模擬路燈控制系統(tǒng)課程設(shè)計(jì)
- 溫度顯示控制系統(tǒng)課程設(shè)計(jì)
- 循環(huán)流化床鍋爐爐膛壓力控制系統(tǒng)設(shè)計(jì) 課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論