微機(jī)原理課程設(shè)計(jì)報(bào)告--簡易電壓表設(shè)計(jì)_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  1.課程設(shè)計(jì)描述2</p><p><b>  (1)設(shè)計(jì)目的2</b></p><p><b>  (2)設(shè)計(jì)題目2</b></p><p><b>  (3)設(shè)計(jì)要求2</b>

2、;</p><p><b>  2.設(shè)計(jì)原理2</b></p><p>  3.硬件電路圖及接線說明8</p><p>  4.軟件工作流程圖8</p><p>  5.程序設(shè)計(jì)代碼及分析9</p><p>  6.調(diào)試過程及結(jié)果14</p><p>  7.課程

3、設(shè)計(jì)總結(jié)錯(cuò)誤!未定義書簽。</p><p><b>  8.參考文獻(xiàn)15</b></p><p><b>  一、課程設(shè)計(jì)描述</b></p><p><b>  (1)設(shè)計(jì)目的</b></p><p>  通過課程設(shè)計(jì)達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,提高對微機(jī)硬件結(jié)構(gòu)和軟件設(shè)計(jì)

4、方法的理解。能夠根據(jù)實(shí)際應(yīng)用初步實(shí)現(xiàn)硬件及軟件的設(shè)計(jì),并對硬件開發(fā)有深層次的認(rèn)識,為今后的軟件開發(fā)打下堅(jiān)實(shí)的基礎(chǔ)</p><p><b>  (2)設(shè)計(jì)題目</b></p><p><b>  簡易電壓表設(shè)計(jì)</b></p><p><b>  (3)設(shè)計(jì)要求</b></p><p

5、>  利用STAR ES598PCI試驗(yàn)儀的硬件資源8259中斷控制器、8355可編程并行接口芯片和數(shù)碼管、電位器和ACD0809設(shè)計(jì)一個(gè)簡易電壓表,編寫相應(yīng)的程序,使電壓表能夠正常運(yùn)行,3位數(shù)碼管顯示電位器的電壓,精確度要求小數(shù)點(diǎn)兩位。</p><p>  基本任務(wù):軟件查詢的方式獲取A/D轉(zhuǎn)換結(jié)束信息</p><p>  附加任務(wù):中斷的方式獲取A/D轉(zhuǎn)換結(jié)束信息</p&g

6、t;<p><b>  二、設(shè)計(jì)原理</b></p><p>  (1)ADC0809芯片 </p><p>  ADC0809 是逐次逼近型A/D轉(zhuǎn)換器具有較好的精度和速度其采集結(jié)果為8</p><p>  位二進(jìn)制數(shù)每采集一次即轉(zhuǎn)換一次需要100us。程序可以采用延遲、EOC結(jié)束信號查詢、中斷查詢的方式來讀取轉(zhuǎn)換結(jié)果。

7、在用中斷方式時(shí)A/D轉(zhuǎn)換結(jié)束后會(huì)自動(dòng)產(chǎn)生EOC信號將其與8259的中斷輸入端相接即可。電壓模擬量可由實(shí)驗(yàn)箱上的電位器提供電壓范圍0~5v,其經(jīng)ADC0809轉(zhuǎn)換得到的數(shù)字范圍為0~255。</p><p>  引腳功能:ADC0809芯片有28條引腳,采用雙列直插式封裝</p><p>  IN0~I(xiàn)N7:8路模擬量輸入端。 </p><p>  ADDA、A

8、DDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路 </p><p>  ALE:地址鎖存允許信號,輸入,高電平有效。 </p><p>  START: A/D轉(zhuǎn)換啟動(dòng)脈沖輸入端,輸入一個(gè)正脈沖(至少100ns寬)使其啟動(dòng)(脈沖上升沿使0809復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換)。 </p><p>  EOC: A/D轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),

9、此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)。 </p><p>  OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。 </p><p>  CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。 </p><p>  REF(+)、REF(-):基準(zhǔn)電壓。 </p><p>

10、  Vcc:電源,單一+5V。 </p><p><b>  GND:地。</b></p><p>  工作過程:首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換

11、結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號可用作中斷申請。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。</p><p>  (2)可編程中斷控制器8259A</p><p>  8259A是一種可編程序中斷控制器與8088/88兼容。能處理8級向量優(yōu)先權(quán)中斷,亦可以通過級聯(lián)構(gòu)成64級向量優(yōu)先權(quán)中斷系統(tǒng)。具有可編程控制中斷方式,并能分別屏蔽各個(gè)中斷請求。通過4個(gè)初始化

12、命令字(ICW1~ICW4)及3個(gè)操作命令字(OCW1~OCW3)使用該中斷控制器。本實(shí)驗(yàn)中用8259A來接收AD轉(zhuǎn)換器發(fā)出的轉(zhuǎn)換結(jié)束信號EOC,從而進(jìn)行把8位二進(jìn)制數(shù)到電平的轉(zhuǎn)換并顯示到數(shù)碼管。</p><p>  初始化命令字的設(shè)置過程</p><p>  (3)并行接口8255A</p><p>  8255A是可編程的通用并行輸</p>&l

13、t;p>  入/輸出接口芯片,其內(nèi)部有3</p><p>  個(gè)8位的輸入/輸出端口,即A</p><p>  口、B口、C口。C口高4位配</p><p>  合A端口使用,低4位配合B</p><p>  端口使用。8255A的通用性強(qiáng),</p><p>  使用靈活,通過它CPU可直接與外設(shè)相連接。<

14、/p><p>  本實(shí)驗(yàn)中用8255A的A端口作為數(shù)據(jù)輸出端口B端口也作為輸出端口輸出位選信號,確定哪一個(gè)數(shù)碼管顯示。</p><p>  8255A 工作方式:</p><p>  方式0:基本輸入輸出方式-------適用于無條件傳送和查詢方式的接口電路</p><p>  方式1:選通輸入輸出方式-------適用于查詢和中斷方式的接口電路

15、</p><p>  方式2:雙向選通傳送方式-------適用于與雙向傳送數(shù)據(jù)的外設(shè)</p><p>  --------適用于查詢和中斷方式的接口電路</p><p>  8255A控制字格式:</p><p> ?。╝)工作方式控制字 (b)c口按位置位/復(fù)位控制字</p><p><b

16、>  (4)數(shù)碼管</b></p><p>  數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光

17、二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就不亮。</p><p>  三、硬件電路圖及接線說明</p><p><b>

18、  硬件見附。</b></p><p>  接線說明:1、8255A的片選信號端口接到CS7端口地址為09000H—09FFFH,A、B端口均作為輸出端口,將其PA0~PA7引腳接至數(shù)碼管數(shù)碼顯示管的a~g以及小數(shù)點(diǎn)dp。PC0~PB2作為位選信號接數(shù)碼管位選引腳。 2、8259A的片選信號端口接到CS6,端口地址為0A000H—0AFFFH。IR0端接ADC0809的EOC端。 3、ADC08

19、09 的片選信號端口接到CS8,端口地址為08000H—08FFFH。IN0引腳接到電位器,從而產(chǎn)生0~5v電壓。</p><p><b>  四、軟件工作流程圖</b></p><p>  五、程序設(shè)計(jì)代碼及分析</p><p><b>  1、源代碼</b></p><p>  MODE EQ

20、U 082H ;10000010H,方式0,A和C輸出</p><p>  PORTA EQU 09000H ;A口地址 </p><p>  PORTB EQU 09001H ;B口地址</p><p>  PORTC EQU 09002H ;C口地址</p><p>  CONTROL EQU 09003H

21、 ;命令口地址</p><p>  CS0809 EQU 08000H ;0809地址 </p><p>  ICW1 EQU 00010011B ;上升沿觸發(fā),單片8259A,需要ICW4</p><p>  ICW2 EQU 08H ;中斷類型號為40H</p><p>  ICW4 EQU 00001001B ;

22、正常全嵌套,非自動(dòng)EOI,工作在8086/8088方式</p><p>  OCW1 EQU 11111110B ;IR1-IR7上的中斷請求被屏蔽,只響應(yīng)INT0中斷</p><p>  CS8259A EQU 0A000H </p><p>  CS8259B EQU 0A001H</p><p>  DATA SEGMENT<

23、/p><p>  NUM DB 3 DUP(?) ;開辟三個(gè)空間的緩存</p><p>  LEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;數(shù)碼管顯示0到9的字型代碼</p><p>  DB 7FH,6FH</p><p>  LEDDMAP: DB 0BFH,86H,0DBH,0CFH,0E6H

24、,0EDH,0FDH,87H</p><p>  DB 0FFH,0EFH ;包括小數(shù)點(diǎn)的顯示</p><p><b>  DATA ENDS</b></p><p>  CODE SEGMENT </p><p>  ASSUME CS:CODE, DS:DATA <

25、/p><p>  DELAY PROC NEAR ;延時(shí)子程序</p><p><b>  PUSH BX </b></p><p><b>  PUSH CX </b></p><p><b>  MOV BX,0 </b></p><p&

26、gt;  MOV CX,100</p><p>  A1: INC BX </p><p><b>  LOOP A1 </b></p><p><b>  POP CX </b></p><p><b>  POP BX </b></p><p>&

27、lt;b>  RET </b></p><p>  DELAY ENDP</p><p>  IENTER PROC NEAR ;中斷服務(wù)程序</p><p><b>  PUSH AX </b></p><p><b>  PUSH DX </b></p

28、><p>  MOV DX,CS0809 ;0809端口地址</p><p>  IN AL,DX ;讀入結(jié)果</p><p>  LED: ;轉(zhuǎn)換為原始電壓值顯示程序</p><p>  MOV BL,0C4H ;乘以5/256*10000=196</p><p&

29、gt;  MUL BL ;AX=AL*BL,得16位結(jié)果</p><p>  MOV BX,0001H</p><p>  MUL BX ;將AX擴(kuò)展為32位,結(jié)果在DX:AX中</p><p>  MOV BX,64H ;100</p><p>  DIV BX

30、 ;DX:AX/BX,得32位,商在AX中,余數(shù)在DX中</p><p>  DIV BL ;AX/BL,得16位,商在AL中,余數(shù)在AH中</p><p>  MOV [SI],AL ;整數(shù)部分,結(jié)果放進(jìn)NUM</p><p>  MOV SI,OFFSET NUM ;段碼地址,指向七段碼表</p

31、><p>  MOV AL,AH</p><p>  MOV AH,00H</p><p>  MOV BL,0AH</p><p>  DIV BL;再除10</p><p>  MOV [SI+1],AL ;AL中為小數(shù)點(diǎn)后第一位</p><p>  MO

32、V [SI+2],AH ;AH中為小數(shù)點(diǎn)后第二位</p><p>  MOV AL,[SI]</p><p>  MOV DI,OFFSET LEDDMAP;段碼地址,查表,顯示第一位包括小數(shù)點(diǎn)</p><p>  MOV AH,0</p><p>  ADD DI,AX</p><

33、;p>  MOV AL,[DI]</p><p>  MOV DX,PORTA</p><p>  OUT DX,AL</p><p>  MOV DX,PORTC</p><p>  MOV AL,11111011B</p><p>  OUT DX,AL

34、 ;選通第一位數(shù)碼管,整數(shù)位</p><p>  CALL DELAY</p><p>  MOV AL,[SI+1]</p><p>  MOV DI,OFFSET LEDMAP</p><p>  MOV AH, 0</p><p>  ADD DI,AX</p>

35、<p>  MOV AL,[DI]</p><p>  MOV DX,PORTA</p><p>  OUT DX,AL</p><p>  MOV DX,PORTC</p><p>  MOV AL,11111101B</p><p>  OUT DX,A

36、L ;選通第二位數(shù)碼管,小數(shù)點(diǎn)后第二位</p><p>  CALL DELAY</p><p>  MOV AL,[SI+2]</p><p>  MOV DI,OFFSET LEDMAP</p><p>  MOV AH, 0</p><p>  ADD DI,AX&

37、lt;/p><p>  MOV AL,[DI]</p><p>  MOV DX,PORTA</p><p>  OUT DX,AL</p><p>  MOV DX,PORTC</p><p>  MOV AL,11111110B</p><p>  OUT

38、 DX,AL ;選通第三位數(shù)碼管,小數(shù)點(diǎn)后第二位</p><p>  CALL DELAY</p><p>  MOV DX,CS0809 </p><p><b>  MOV AL,0 </b></p><p><b>  OUT DX,AL</b></p>&

39、lt;p>  MOV DX,CS8259A</p><p>  XOR AX,AX ;AX置零</p><p>  MOV AL,20H ;中斷服務(wù)程序結(jié)束指令</p><p>  OUT DX,AL </p><p><b>  POP DX </b></p><

40、p><b>  POP AX </b></p><p><b>  IRET</b></p><p>  IENTER ENDP</p><p>  IINIT PROC NEAR ;初始化8259A </p><p>  MOV DX,CS8259A ;偶地址</p>

41、;<p>  MOV AL,ICW1 ;00010011B,上升沿觸發(fā),單片8259A,需要ICW4</p><p>  OUT DX,AL ;寫ICW1用偶地址</p><p>  MOV DX,CS8259B ;奇地址</p><p>  MOV AL,ICW2 ;中斷源IR0-IR7,中斷類型號為40H-47H</p&

42、gt;<p>  OUT DX,AL ;寫ICW2用奇地址</p><p>  MOV AL,ICW4 ;正常全嵌套,非自動(dòng)EOI,工作在8086/8088方式</p><p>  OUT DX,AL ;寫ICW4用奇地址</p><p>  MOV AL,OCW1 ;11111110B,IR1-IR7上的中斷請求被屏蔽

43、,只響應(yīng)INT0中斷</p><p>  OUT DX,AL ;寫OCW1用奇地址</p><p><b>  RET</b></p><p>  IINIT ENDP</p><p>  START PROC NEAR </p><p>  MOV AX,DATA</p&

44、gt;<p><b>  MOV DS,AX</b></p><p>  MOV SI,OFFSET NUM</p><p>  MOV DX,CONTROL ;8255A控制端命令口</p><p>  MOV AL,MODE </p><p>  OUT DX,AL ;輸出8255控制字到

45、命令口</p><p>  CLI ;屏蔽外部中斷</p><p>  CALL IINIT ;調(diào)用初始化8259A </p><p>  MOV AX,0 ;初始化中斷向量表</p><p>  MOV ES,AX </p><p>  MOV DI,4*ICW2 ;中

46、斷號</p><p>  LEA AX,IENTER ;設(shè)置中斷入口地址 (燈的顯示)</p><p><b>  STOSW</b></p><p>  MOV [BX],AX </p><p>  MOV AX,SEGIENTER</p><p><b>  STOSW</b

47、></p><p>  MOV SI,OFFSETNUM ;代碼段地址為0</p><p>  MOV AL,0 ;初始值為0</p><p>  MOV DX,CS0809 </p><p>  OUT DX,AL ;啟動(dòng)模/數(shù)轉(zhuǎn)換芯片</p><p>  STI ;將處理

48、器標(biāo)志寄存器中斷標(biāo)志置1,允許中斷</p><p>  LP: NOP ;短暫延時(shí)程序,等待中斷</p><p><b>  JMP LP</b></p><p>  CODE ENDS </p><p>  END START </p><p>  2、整個(gè)程序源

49、代碼包括定義數(shù)據(jù)段,定義代碼段、子程序及主程序內(nèi)容。子程序中包括延時(shí)子程序、中斷服務(wù)子程序及8259A初始化主程序。</p><p>  3、A / D轉(zhuǎn)換器從啟動(dòng)轉(zhuǎn)換到轉(zhuǎn)換結(jié)束需要一定時(shí)間。為了得到正確的轉(zhuǎn)換結(jié)果,必須在轉(zhuǎn)換結(jié)束之后才能去讀取數(shù)字量,這就是時(shí)間配合。常用三種方法實(shí)現(xiàn)時(shí)間配合,有:延時(shí)等待法、查詢法和中斷法。中斷法是當(dāng)ADC轉(zhuǎn)換結(jié)束,用轉(zhuǎn)換結(jié)束信號作為中斷請求信號向CPU提出中斷請求,CPU相應(yīng)中

50、斷,在中斷服務(wù)子程序中讀取轉(zhuǎn)換結(jié)果。</p><p>  4、此次設(shè)計(jì)中我使用的是中斷法。將ADC0809的轉(zhuǎn)換結(jié)束指示引腳EOC輸出信號作為中斷請求信號,送中斷控制器8259A,在中斷服務(wù)程序里讀取轉(zhuǎn)換結(jié)果。</p><p>  5、將模擬量轉(zhuǎn)化為數(shù)字量:因?yàn)?~5V的電平用0~255表示所以把轉(zhuǎn)換后的值5/256*10000將電壓值轉(zhuǎn)換為實(shí)際值的10000倍以確保精度。將所的結(jié)果相減

51、,除以100商放入AX,把余數(shù)放在DX。將AX中的值再除以100,,商放入AL中,余數(shù)放在AH 中。這樣AL中的值就是整數(shù)部分的值將AH中的值除以10商放入AL中即為第一位小數(shù),余數(shù)放入AH中,為第二位小數(shù)。若還想得到第四第五位小數(shù)可以用DX中的值再進(jìn)行計(jì)算。 </p><p>  6、通過8255A輸出在三位LED數(shù)碼管上,程序如下:(后兩位同理)</p><p>  MOV

52、 AL,[SI]</p><p>  MOV DI,OFFSET LEDDMAP ;段碼地址,查表,顯示第一位包括小數(shù)點(diǎn)</p><p>  MOV AH,0</p><p>  ADD DI,AX</p><p>  MOV AL,[DI]</p><p>  MOV DX,

53、PORTA</p><p>  OUT DX,AL</p><p>  MOV DX,PORTC ;位選</p><p>  MOV AL,00000100B</p><p>  OUT DX,AL ;選通第一位數(shù)碼管,整數(shù)位</p><p>  CALL DELAY&l

54、t;/p><p>  MOV AL,[SI+1]</p><p>  MOV DI,OFFSET LEDMAP</p><p>  MOV AH, 0</p><p>  ADD DI,AX</p><p>  MOV AL,[DI]</p><p>  M

55、OV DX,PORTA</p><p>  OUT DX,AL</p><p>  MOV DX,PORTC</p><p>  MOV AL,11111101B</p><p>  OUT DX,AL ;選通第二位數(shù)碼管,小數(shù)點(diǎn)后第二位</p><p>  CALL

56、 DELAY</p><p>  MOV AL,[SI+2]</p><p>  MOV DI,OFFSET LEDMAP</p><p>  MOV AH, 0</p><p>  ADD DI,AX</p><p>  MOV AL,[DI]</p><

57、;p>  MOV DX,PORTA</p><p>  OUT DX,AL</p><p>  MOV DX,PORTC</p><p>  MOV AL,11111110B</p><p>  OUT DX,AL ;選通第三位數(shù)碼管,小數(shù)點(diǎn)后第二位</p><p>

58、;  CALL DELAY</p><p><b>  六、調(diào)試過程及結(jié)果</b></p><p>  1、按硬件接線圖接線后編寫軟件代碼后運(yùn)行程序。</p><p>  2、發(fā)現(xiàn)數(shù)碼管顯示錯(cuò)亂,經(jīng)檢查發(fā)現(xiàn)片PA口接反了,進(jìn)行更正后數(shù)碼管可以正常顯示。</p><p>  3、數(shù)碼管發(fā)光不穩(wěn)定,閃爍比較嚴(yán)重,后通過

59、更改延時(shí)主程序參數(shù)問題得到解決。</p><p>  4、完善程序后編譯運(yùn)行,調(diào)節(jié)電位器,數(shù)碼管顯示電壓0.00~4.99。</p><p><b>  七、課程設(shè)計(jì)總結(jié)</b></p><p><b>  八、參考資料</b></p><p>  1、周荷琴 吳秀清,微型計(jì)算機(jī)原理與接口技術(shù), 中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論