版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p> 1. 設計任務與要求 …………………………………………………………….3</p><p> 1.1 設計任務………………………………………………………………..…3</p><p> 1.2 設計要求…………………………………………………………………..3</p&g
2、t;<p> 2. 總體方案與說明…………………………………………………………… ..3</p><p> 2.1 模擬信號的轉換與顯示…………………………………………………..3</p><p> 2.2 鍵盤數據的輸入與顯示…………………………………………………..4</p><p> 2.3 數據的處理與顯示………………………………
3、………………………..4</p><p> 2.4 顯示說明…………………………………………………………………..4</p><p> 3. 硬件框圖與說明 ……………………………………………………………..5</p><p> 3.1 8086原理簡介…………………………………………………………….5</p><p> 3.2
4、 8255原理簡介…………………………………………………………….6</p><p> 3.3 0809的應用……………………………………………………………….9</p><p> 3.4 液晶顯示屏…………………………………………………… …………11</p><p> 3.5 鍵盤……………………………………………………………… ………14</
5、p><p> 4.電路原理圖與說明………………………………………………………… 16</p><p> 4.1 電路原理圖…………………………………………………… …………16</p><p> 4.2 硬件運行過程說明…………………………………………… …………17</p><p> 5.軟件主要模塊與說明…………………………………
6、……………………17</p><p> 5.1 主程序流程圖…………………………………………………… ………18</p><p> 5.2 0809轉換及數據處理流程………………………………………………19</p><p> 6.源程序清單與注釋明………………………………………………………17</p><p> 7.問題分析與解決
7、方案………………………………………………………28</p><p> 8.結論與體會……………………………………………………………………30</p><p> 8.1 實驗運行結果…………………………………………………………….30</p><p> 8.2 體會……………………………………………………………………….31</p><p
8、> 9.參考資料 ……………………………………………………………………32</p><p><b> 1.設計任務與要求</b></p><p><b> 1. 1設計任務</b></p><p> 運用相關硬件,結合自己的編程技術,設計簡單的電子秤,并實現其基本功能,是本次模擬壓力控制系統(tǒng)的硬件課程設計。
9、在完成課程設計的過程中,需要學生獨立思考,積極發(fā)揮創(chuàng)造力和動手能力,進一步學習各種軟硬件的功能和提高編程能力。</p><p> 電子秤的設計,是通過實驗臺左下角電位器RW1輸出0~5V直流電壓,模擬壓力信號,送入A/D轉換器,將模擬信號轉換成數字信號并顯示在LCD字符圖形液晶顯示屏的第一行上,作為稱重的重量。同時,從鍵盤輸入數據,并在LCD字符圖形液晶顯示屏的第二行上顯示出來,作為價格。最后在第三行顯示出重量
10、與單價的乘積及總價。實現電子秤的基本功能,達到模擬壓力控制系統(tǒng)課程設計的基本要求。</p><p><b> 1. 2設計要求</b></p><p> ?。?)模擬電子秤開機后,改變模擬信號的大小,模擬重量的值必須實時的顯示在液晶顯示屏上;</p><p> ?。?)模擬的單價初始值默認為零,從鍵盤輸入單價完成后,需在液晶顯示器上顯示輸入的
11、單價;</p><p> ?。?)模擬價格必須隨模擬重量改變,并實時的顯示在液晶顯示器上。</p><p> 2. 總體方案與說明</p><p> 本次試驗需要要使用ADC0809數模轉換器,四乘四鍵盤,可編程控制接口8255,0~5V直流電壓,128*64LCD字符圖形液晶顯示屏。</p><p> 2.1模擬信號的轉換與顯示<
12、;/p><p> 用滑動變阻器代替壓力傳感器,模擬壓力的變化。將模擬電壓輸入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輸入的電壓,將壓力傳感器的模擬信號轉化為數字信號,之后進行轉換,換算
13、為設定量程下實際情況的值,然后將模擬重量的電壓數據存放到CPU寄存器中用于下一步計算。同時將模擬重量的電壓數據從8255的A口輸出并在LCD屏幕的第一行作為重量顯示出來。</p><p> 2.2 鍵盤數據的輸入與顯示</p><p> 8255的C0~C3接鍵盤的列0~列3,C4~C7接鍵盤的行0~行3),從鍵盤輸入兩位數,然后在LCD的第二行作為單價顯示出來,并存放到CPU寄存器中
14、用于下一步計算。</p><p> 2.3 數據的處理與顯示</p><p> 通過編程將第一步與第二步寄存在CPU中的模擬重量與模擬價格相乘處理后輸入到LCD的第三行作為總價顯示出來。</p><p> 2.4 LCD顯示說明</p><p> 液晶顯示屏是一種內置128×64-12漢字圖形點陣的液晶顯示控制模塊,用于顯示
15、漢字及圖形?12864A-1漢字圖形點陣液晶顯示模塊集成ST7920驅動器,可顯示漢字及圖形,內置8192個中文漢字(16×16點陣)、128個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)。如圖2.4。</p><p> 液晶顯示屏共顯示四行字符,每行可以顯示八個字符。</p><p> 0-14 重量:****斤</p>
16、<p> 16-30 價格:****元</p><p> 32-46 總價:*****</p><p> 48-62 值班人員:***</p><p> 圖2.4 LCD接線圖</p><p><b> 3.硬件框圖與說明</b></p><p> 3.1 808
17、6原理簡介</p><p> 3.1.1 8086CPU</p><p> 8086是Intel系列的16位微處理器,它采用HMOS工藝技術制造,芯片采用40系列線封裝,單一的+5V電源,時鐘頻率為5~10MHz。</p><p> 8086有16根數據線和20根地址線,可以處理8位和16位數據,尋址1MB的儲存單元和64KB的I/O端口。如圖3.1.1。&l
18、t;/p><p> 圖 3.1.1 8086引腳圖</p><p> 3.1.2 8086CPU的編程結構</p><p> 編程結構:是指從程序員和使用者的角度看到的結構,亦可稱為功能結構。從功能上來看,8086CPU可分為兩部分,即總線接口部件BIU(Bus Interface Unit)和執(zhí)行部件EU(Execution Unit)。8086CPU的內部功
19、能結構如圖圖3.1.2所示:</p><p> 圖3.1.2 </p><p> 3.2 8255原理簡介</p><p> 3.2.1 8255原理及接線圖 </p><p> 8255A是Intel系列的并行接口芯片,常作為微機系統(tǒng)與外部設備接口。由于它是可編程的,可以通過軟件來設置芯片的工作方式,因此,用它連接外部設備
20、時,一般不需要在附加外部電路,給使用帶來很大方便。如圖3.2.1</p><p><b> 圖3.2.1</b></p><p> 3.2.2芯片8255 A在本設計中的功能作用</p><p> 8255是并行的I|O接口芯片,內部有三個相互獨立的8為數據端口。8255實現了外設與8086之間的數據傳輸。8255的A口地址為288H,B
21、口地址為289H,C口地址為28AH,</p><p> 控制口地址為28BH,A口作為LED顯示屏數據總線D0~D7,B口控制LED燈,蜂鳴器,電機,C口的低三位分別接LED顯示屏的D/I,RW,E。</p><p> 3.2.3芯片8255的功能分析</p><p> 1、8255A是可編程并行接口,內部有3個相互獨立的8位數據端口,即A口、B口和C口。三
22、個端口都可以作為輸入端口或輸出端口。A口有三種工作方式:方式0、方式1和方式2;B口可以工作在方式0或方式1下;C口通常作為聯絡信號使用。8255的工作只有當片選CS有效時才能進行工作,而控制邏輯端口實現對其他端口的控制。當8255工作在方式0時,即基本輸入輸出方式時,可將三個數據端口劃分為四個獨立的部分:A口和B口作為兩個8位端口,C口的高4位和低4位可以用作兩個4位的輸入輸出口,各個端口都可獨立地用作輸入或輸出。</p>
23、<p> 2、數據總線緩沖器是一個8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫控制邏輯控制的,它可與系統(tǒng)的DB直接相連,實現CPU和8255A之間的信息傳送;讀寫控制器用于管理數據、控制字或狀態(tài)字的傳送,接收來自CPU的地址信息及一些控制信號,然后向A組、B組控制電路發(fā)送命令,控制端口數據的傳送方向。</p><p> 3、8255引腳:RESET:復位輸入線,當該輸入端處于高電平時,所有內部寄存器(包括
24、控制寄存器)均被清除,所有I/O口均被置成輸入方式?! ?lt;/p><p> CS:芯片選擇信號線,當這個輸入引腳為低電平時,即/CS=0時,表示芯片被選中,允許8255與CPU進行通訊;/CS=1時,8255無法與CPU做數據傳輸. </p><p> RD:讀信號線,當這個輸入引腳為低電平時,即/RD=0且/CS=0時,允許8255通過數據總線向CPU發(fā)送數據或狀態(tài)信息,即CPU從
25、8255讀取信息或數據?! R:寫入信號,當這個輸入引腳為低電平時,即/WR=0且/CS=0時,允許CPU將數據或控制字寫入8255?! ?lt;/p><p> D0~D7:三態(tài)雙向數據總線,8255與CPU數據傳送的通道,當CPU 執(zhí)行輸入輸出指令時,通過它實現8位數據的讀/寫操作,控制字和狀態(tài)信息也通過數據總線傳送?! ?lt;/p><p> PA0~PA7:端口A輸入輸出線,一個8位的
26、數據輸出鎖存器/緩沖器, 一個8位的數據輸入鎖存器?! ?lt;/p><p> PB0~PB7:端口B輸入輸出線,一個8位的I/O鎖存器, 一個8位的輸入輸出緩沖器。 </p><p> PC0~PC7:端口C輸入輸出線,一個8位的數據輸出鎖存器/緩沖器, 一個8位的數據輸入緩沖器。端口C可以通過工作方式設定而分成2個4位的端口, 每個4位的端口包含一個4位的鎖存器,分別與端口A和端口B
27、配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口?!?lt;/p><p> A0,A1:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器. 當A0=0,A1=0時,PA口被選擇;當A0=0,A1=1時,PB口被選擇;當A0=1,A1=0時,PC口被選擇;當A0=1.A1=1時,控制寄存器被選擇。</p><p> 3.2.4 8255具有三種基本的工作方式</p>
28、;<p> 基本輸入/輸出方式(方式0) </p><p> 選通工作方式(方式1) </p><p> 雙向傳送方式(方式2)</p><p><b> 方式0:</b></p><p> 相當于三個獨立的8位簡單接口 各端口既可設置為輸入口,也可設置為輸出口,但不能同時實現輸入及輸出。C端口可
29、以是一個8位的簡單接口,也可以分為兩個獨立的4位端口 常用于連接簡單外設(適于無條件或查詢方式)。</p><p><b> 方式1:</b></p><p> 利用一組選通控制信號控制A端口和B端口的數據輸入輸出 A口、B口作輸入或輸出口,C口的部分位用作選通控制信號 A口、B口在作為輸入和輸出時選通信號不同</p><p><b&
30、gt; 方式2:</b></p><p> 雙向輸入輸出方式-------可以既作為輸入口,又作為輸出口 只有A端口可工作在方式2下。</p><p> 3.3 0809的應用</p><p> 3.3.1 0809內部特性</p><p> ?。?)8路輸入通道,8位A/D轉換器,即分辨率為8位。如圖3.3.1。<
31、/p><p> ?。?)具有轉換起??刂贫恕?lt;/p><p> ?。?)轉換時間為100μs</p><p> (4)單個+5V電源供電。</p><p> ?。?)模擬輸入電壓范圍0~+5V,不需要零點和滿刻度校準。</p><p> (6)工作溫度范圍為-40~+85攝氏度。</p><p&g
32、t; (7)低功耗,約15mW</p><p><b> 圖3.3.1 </b></p><p> 3.3.2外部特性(引腳功能)</p><p><b> 圖3.3.2 </b></p><p> ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖所示。下面說明各引腳功能。IN0~
33、IN7:8路模擬量輸入端。2-1~2-8:8位數字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。ALE:地址鎖存允許信號,輸入,高電平有效。START:A/D轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復位,下降沿啟動A/D轉換)。EOC: A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。OE:數據輸出允許信號,輸入
34、,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。REF(+)、REF(-):基準電壓。Vcc:電源,單一+5V。GND:地。</p><p> 3.3.3量程轉換方法:</p><p> INO單極性輸入電壓與轉換后的數字的關系為:</p><p> N=Ui/(UR
35、EF/256)</p><p> 3.4 液晶顯示屏</p><p> 3.4.1 液晶屏簡介和主要特性</p><p> 液晶顯示屏是一種內置128×64-12漢字圖形點陣的液晶顯示控制模塊,用于顯示漢字及圖形?12864A-1漢字圖形點陣液晶顯示模塊集成ST7920驅動器,可顯示漢字及圖形,內置8192個中文漢字(16×16點陣)、1
36、28個字符(8×16點陣)及64×256點陣顯示RAM(GDRAM)。主要技術參數和顯示特性:</p><p> 電源:VDD 3.3V~+5V(內置升壓電路,無需負壓);</p><p> 顯示內容: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時鐘頻率;</b></p><p><b> 配置LED背光;</b></p><p> 多種
38、軟件功能:光標顯示、畫面移位、自定義字符、睡眠模式等</p><p> 3.4.2液晶顯示屏引腳說明</p><p> 表128X64 引腳說明</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線作為列線組成的鍵盤。在行線和列線的每一個交叉點上,設置一個按鍵。這樣鍵盤中按鍵的個數是4×4個。這種行列式鍵盤結構能夠有效地提高單片機系統(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鍵盤的掃描過程</p><p&
42、gt; (1)檢測是否所有鍵都松開了,若沒有則繼續(xù)檢測。</p><p> ?。?)檔所有鍵都松開了,在檢測是否有鍵按下,若無這繼續(xù)檢測。</p><p> (3)若有鍵按下,要消除鍵盤抖動,確認有鍵按下。</p><p> ?。?)對壓下的鍵進行編碼,將該鍵的行列信號轉換成16進制,由此確定有哪個鍵按下了。如果出現有多個鍵重復按下的情況,只有在其他鍵全部釋放后
43、,僅剩一個鍵按下時,才把此鍵當作按下的鍵。</p><p> ?。?)該建釋放后在回到(2)</p><p> 4.電路原理圖與說明</p><p><b> 4.1電路原理圖</b></p><p> 4.1.1 電路連接圖與說明:</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數據總線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 硬件接線實物圖</p><p><b> 圖4.1.2</b></p><p> 4.2 硬件運行過程說明</p><p><b> 4.2.1過程說明</b></p><p> 初始化壓力傳感器,將壓力傳感器的信號傳至A/D轉換器(由于沒有壓力
46、傳感器,試驗中用滑動變阻器替代),然后將壓力傳感器的模擬信號轉化為數字信號,之后進行轉換,換算為設定量程下實際情況的值,將值送到8255,8255控制液晶屏顯示,將換算之后的值顯示出來。并使當前數據隨時間一直不斷變化。當壓力大小相對穩(wěn)定時,從4*4鍵盤輸入一個2為數,通過8255鏈接的LCD顯示器顯示在顯示屏的第二行。然后計算模擬重量乘以價格得到總價輸出到LCD液晶顯示屏的第三行。</p><p> 5.軟件主
47、要模塊與說明</p><p> 程序軟件模塊分為主程序,鍵盤程序,0809轉換程序,液晶顯示程序,計算子程序五個部分,鍵盤程序,液晶顯示程序流程圖在硬件部分已有敘述,下面主要描述主程序,0809轉換程序的詳細過程,主程序完成8255初始化,調用0809轉,完成LCD準備工作,調用鍵盤函數,調用計算函數等一系列主干過程。</p><p> 5.1 主程序流程圖</p>&l
48、t;p><b> 圖5.1</b></p><p> 5.2 0809轉換及數據處理流程 </p><p> 5.2.1數據處理流程圖</p><p><b> 圖5.3.1</b></p><p> 5.2.2數據轉換代碼如下</p><p> TRANS
49、FORM PROC ;啟動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 ;量程轉換,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 ;將轉換量程后的值進行拆分,使之能在LED屏上顯示</p><p><b> DIV CX</b></p><p> ADD AX,0A3B0H</p>&
52、lt;p> MOV [HUANCH+6],AX ;儲存百位數值,顯示</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;儲存十位數值,顯示</p><p> MOV AX,DX</p><p> ADD AX,0A3B0H</p><p> MOV [HUANCH+12],AX;儲存?zhèn)€位數值至緩沖區(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,最后一個存數據,+16</p><p> DW 0BCDBH,0B8F1H,0A3BAH,0A3B
57、0H,0A3AEH,0A3B0H,0A1A0H,0D4AAH</p><p> ;16-30 單價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 ;調用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ā)現有鍵按下則轉</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 ;設置CLEAR命令</p><p> CALL CMD_SETUP ;啟動LCD執(zhí)行命
77、令</p><p><b> RET</b></p><p> CLEAR ENDP</p><p> TRANSFORM PROC ;啟動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 ;量程轉換,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 ;將轉換量程后的值進行拆分,使之能在LED屏上顯示</p><p><b> DIV CX</b></p><p> ADD AX,0A3B0H</p><p> MOV [HUANCH+6],AX ;儲存百位數值,顯示</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 ;儲存十位數值,顯示</p><p> MOV AX,DX</p><p> ADD AX,0A3B0H</p><p> MOV [HUANCH+12],AX ;儲存?zhèn)€位數值至緩沖區(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 ;設定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 ;修改顯示內碼緩沖區(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 ;延時子程序</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ā)現有鍵按下則轉</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ā)現有鍵按下則轉</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 ;未找到對應掃描碼</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 ;按鍵未抬起轉&
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.問題分析與解決方案 </p><p> 7.1 重量如何用0~5v直流電壓模擬?</p><p> 解決方案:最后解決方案是依據0809 A/D轉換器將電壓轉換為0~255的數值,存入寄存器后,再乘2,默認保留一位小數,
127、就得到一個類似于XX.X的重量值(00.0~51.0Kg)</p><p> 7.2 究竟該怎樣將12864的四行與我們設計的顯示內容對應起來?</p><p> 解決方案:我們是在LED液晶屏的自定義實驗的基礎上修改得來,自定義實驗只有兩行顯示,通過對代碼的分析,發(fā)現四行的端口地址并不是順序排列的。經過不斷的試驗,得到各口地址為:第一行:80H;第二行:90H;第三行:88H;第四行
128、:98H。</p><p> 通過判斷需要輸出哪一行的信息,輸出漢字表中的相應漢字,LED顯示屏的每一行能顯示八個字符,所以根據漢字在LED屏幕上的位置以計算得出漢字在表中位置。</p><p> LEA BX, HZ_TAB</p><p> ADD BX,48 ;指向第四行信息</p><p> ADD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件課程設計報告--壓力控制系統(tǒng)
- 控裝課程設計--天燃氣壓力控制系統(tǒng)
- 控制裝置與儀表課程設計--爐膛壓力系統(tǒng)死區(qū)控制系統(tǒng)設計
- 溫度控制系統(tǒng)課程設計
- 集散控制系統(tǒng)課程設計
- 控制系統(tǒng)課程設計--- 聯合站控制系統(tǒng)
- 運動控制系統(tǒng)課程設計
- 運動控制系統(tǒng)課程設計
- 控制系統(tǒng)仿真課程設計
- 課程設計---溫度控制系統(tǒng)設計
- 課程設計---溫度控制系統(tǒng)設計
- 溫度控制系統(tǒng)設計課程設計
- 課程設計--角度控制系統(tǒng)設計
- 控制系統(tǒng)課程設計報告--- 控制系統(tǒng)設計與仿真
- 配料車控制系統(tǒng)課程設計
- 微機課程設計---溫度控制系統(tǒng)
- 課程設計---氨氣處理控制系統(tǒng)
- 模擬路燈控制系統(tǒng)課程設計
- 溫度顯示控制系統(tǒng)課程設計
- 循環(huán)流化床鍋爐爐膛壓力控制系統(tǒng)設計 課程設計
評論
0/150
提交評論