匯編語言課程設(shè)計報告--模擬電壓采集電路及程序設(shè)計_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微型計算機技術(shù)</b></p><p><b>  課程設(shè)計</b></p><p>  指導(dǎo)教師: </p><p>  學(xué)生班級: </p><p>  學(xué)生姓名:

2、 </p><p>  學(xué) 號: </p><p>  班內(nèi)序號: 19 </p><p>  課設(shè)日期:2012年12月17日~2012年12月28日</p><p><b>  目錄</b></p><p&

3、gt;  一.課設(shè)任務(wù)·······························1</p><p> 

4、 二.課設(shè)目的·······························1</p><p>  三.設(shè)

5、計內(nèi)容·······························1</p><p>  四.設(shè)計思路&

6、#183;······························2</p><p>  五.設(shè)計步驟·

7、;······························2</p><p>  六.試驗流程·

8、83;·····························3</p><p>  七.源代碼··&#

9、183;······························4</p><p>  八.實驗結(jié)果·

10、······························10</p><p>  九.實驗總結(jié)·

11、83;·····························12</p><p>  一、課程設(shè)計任務(wù):模擬電壓采集電路及

12、程序設(shè)計 </p><p>  利用《匯編語言與微型計算機技術(shù)》課程中所學(xué)的主要可編程接口芯片8253、8255A、ADC0809和微機內(nèi)部的中斷控制器8259A(從保留的IRQ2或IRQ10端引入)設(shè)計一個模擬電壓采集電路及程序。</p><p><b>  二、設(shè)計目的</b></p><p>  通過本設(shè)計,使學(xué)生綜合運用《匯編語言與微型

13、計算機技術(shù)》課程以及其它電子類課程的內(nèi)容,為以后從事計算機硬件開發(fā)工作奠定一定的基礎(chǔ)。</p><p>  主要掌握并行I/O接口芯片8253、8255A、ADC0809及中斷控制芯片8259A等可編程器件的使用,掌握譯碼器74LS138的使用。</p><p>  學(xué)會用匯編語言編寫一個較完整的實用程序。</p><p>  掌握微型計算機技術(shù)應(yīng)用開發(fā)的全過程:分

14、析需求、設(shè)計原理圖、選用元器件、布線、編程、調(diào)試、撰寫報告等步驟。</p><p><b>  三、設(shè)計內(nèi)容</b></p><p><b>  1.功能要求</b></p><p>  采用ADC0809設(shè)計一個單通道模擬電壓采集電路,要求對所接通道變化的模擬電壓值進行采集,采集來的數(shù)字量一路送至發(fā)光二極管顯示,一路送至

15、計算機顯示到屏幕上,每行顯示5個數(shù)據(jù),采集完100個數(shù)據(jù)后停止采集過程,采集過程中按下ESC鍵也可中斷采集過程。</p><p><b>  設(shè)計所需器材與工具</b></p><p>  一塊實驗面包板(內(nèi)含時鐘電路)。 </p><p>  可編程芯片8253、8255A 、ADC0809和譯碼器芯片74LS138、74LS245各一片。7

16、4LS06兩片,發(fā)光二極管8個。</p><p>  可調(diào)電位器4.7KΩ一個。</p><p><b>  導(dǎo)線若干。</b></p><p>  示波器、萬用表、常用工具等共用(從實驗室現(xiàn)借現(xiàn)還)。</p><p><b>  8255的自檢測</b></p><p> 

17、 這部分要求我們初始化8255,為了能夠正確的看出8255已經(jīng)初始化,當(dāng)8255初始化后向B口送數(shù)據(jù)0FH到發(fā)光二管上顯示,如果能夠正確顯示就說明8255已經(jīng)被初始化。</p><p><b>  8253的自檢測</b></p><p>  這部分要求我們初始化8253,8253初始化后可以通過示波器觀察輸出的波形是否滿足要求。</p><p&g

18、t;<b>  進行A/D轉(zhuǎn)換。</b></p><p>  這部分是本次課設(shè)的關(guān)鍵部分,在做此之前,必須保證8255和8253都被正確的初始化,通過8255的C口控制ADC0809對模擬數(shù)據(jù)的采集,然后從A口讀取轉(zhuǎn)換后的數(shù)據(jù),一路送發(fā)光二極管顯示,一路送顯示器上顯示,這里模擬量由電位器得到。</p><p><b>  退出系統(tǒng)</b><

19、/p><p>  想結(jié)束程序的時候,從菜單上選擇Esc鍵就可以退出程序。</p><p><b>  四、設(shè)計思路 </b></p><p>  4.7KΩ電位器一端接+5V,一端接地,調(diào)節(jié)電位器得到變化的模擬電壓,該電壓接至ADC0809的某一通道輸入端(如IN0),ADC0809的時鐘為500KHz,由8253對面包板上時鐘1MHz或2MHz分

20、頻后得到,8253的端口地址:300H~303H。</p><p>  編程啟動ADC0809轉(zhuǎn)換(ADC0809完成一次轉(zhuǎn)換的時間大約為120μs),將ADC0809的EOC引腳信號作為中斷信號,若轉(zhuǎn)換結(jié)束則進入中斷服務(wù)程序。在中斷服務(wù)程序中讀入模數(shù)轉(zhuǎn)換結(jié)果,一路送至發(fā)光二極管顯示,一路送至計算機顯示到屏幕上。</p><p>  8255A用做CPU和ADC0809間的接口芯片,ADC

21、0809的控制信號(如OE、ALE、START等)可由8255A的PC口提供,模數(shù)轉(zhuǎn)換后的數(shù)字量可經(jīng)8255A的PA口讀入,經(jīng)8255A的PB口輸出到發(fā)光二極管。8255A端口地址:304H~307H。</p><p>  譯碼電路由74LS138提供。74LS245用于總線和8255A之間的雙向傳輸和隔離。</p><p><b>  硬件珠城際工作原理</b>&l

22、t;/p><p><b>  五、設(shè)計步驟</b></p><p>  設(shè)計出正確的接口電路原理圖,要求用專業(yè)繪圖軟件繪制電路圖,并注明器件的名稱和管腳。</p><p>  根據(jù)要求用74LS138設(shè)計出正確的I/O譯碼電路。</p><p>  正確運用所給器件布線,搭接硬件電路。</p><p>

23、;  選用匯編語言編寫主程序以及各芯片調(diào)試子程序,要求:</p><p>  具有操作界面、使用方便;</p><p><b>  實現(xiàn)功能要求;</b></p><p>  功能模塊應(yīng)有詳細(xì)注釋。</p><p>  調(diào)試并排錯,包括硬件電路和軟件編程部分的錯誤。</p><p><b&g

24、t;  按照下圖連接電路</b></p><p><b>  六、實驗流程</b></p><p>  1、ADC主程序編寫</p><p>  2、ADC中斷服務(wù)程序的編寫</p><p><b>  七、源代碼</b></p><p>  DATA SEGME

25、NT</p><p>  MESG1 DB '1s invoke interrupt one time,and to light one of LEDs',0ah,0dh</p><p>  DB 'Exit with Esc',0ah,0dh,'$'</p><p>  INT0A_OFF DW(?)</

26、p><p>  INT0A_SEG DW(?) </p><p><b>  DATA ENDS</b></p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA</p><p>  DELAY PROC</p>&l

27、t;p><b>  PUSH CX</b></p><p><b>  PUSH BX</b></p><p>  MOV BX,0FFFH</p><p>  LOOP2:MOV CX,0FFFFH</p><p>  LOOP1:LOOP LOOP1</p><p>

28、;<b>  DEC BX</b></p><p><b>  JNZ LOOP2</b></p><p><b>  POP BX </b></p><p><b>  POP CX</b></p><p><b>  RET </b&g

29、t;</p><p>  DELAY ENDP</p><p><b>  DISP PROC</b></p><p><b>  push ax </b></p><p>  show: and al,0f0h ;顯示高4位</p><

30、p><b>  shr al,4</b></p><p><b>  cmp al,9</b></p><p><b>  ja hex</b></p><p>  add al,30h</p><p><b>  jmp next</b><

31、/p><p>  hex: add al,37h</p><p>  next: mov dl,al</p><p><b>  mov ah,2</b></p><p><b>  int 21H</b></p><p><b>  pop ax</b

32、></p><p>  and al,0fh ;顯示低4位</p><p><b>  cmp al,9</b></p><p><b>  ja hex1</b></p><p>  add al,30h</p><p>

33、<b>  jmp next1</b></p><p>  hex1: add al,37h</p><p>  next1: mov dl,al</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p>

34、<p>  mov dl,13 ;向屏幕送回車符</p><p><b>  mov ah,2</b></p><p><b>  int 21h</b></p><p>  mov dl,10 ;向屏幕送換行符<

35、/p><p><b>  mov ah,2</b></p><p>  int 21h</p><p><b>  RET</b></p><p><b>  DISP ENDP</b></p><p><b>  START:</

36、b></p><p>  MOV AX,DATA</p><p>  MOV DS,AX </p><p>  MOV AH,09H</p><p>  MOV DX,OFFSET MESG1</p><p>  INT 21h ;顯示提示信息 </p><p>  

37、MOV DX,303H ;初始化8255</p><p>  MOV AL,80H</p><p>  OUT DX,AL </p><p>  MOV AX,3572H ;獲取原中斷向量</p><p><b>  INT 21H</b></p><p>

38、  MOV INT0A_OFF,BX ;保存原中斷向量</p><p><b>  MOV BX,ES</b></p><p>  MOV INT0A_SEG,BX</p><p>  CLI ;關(guān)中斷</p><p>  MOV AX,2572H</p>&l

39、t;p>  MOV DX,SEG LEDLIGHT ;設(shè)置新的中斷向量</p><p><b>  PUSH DS</b></p><p><b>  MOV DS,DX</b></p><p>  MOV DX,OFFSET LEDLIGHT</p><p><b>  IN

40、T 21H</b></p><p><b>  POP DS</b></p><p>  STI ;開中斷</p><p>  IN AL,0A1H ;打開IRQ10</p><p>  AND AL,0FBH</p>&l

41、t;p>  OUT 0A1H,AL</p><p>  IN AL,21H ;打開IRQ2</p><p>  AND AL,0FBH</p><p>  OUT 21H,AL</p><p>  MOV DX,307H ;8253定時1S</p><p>  MO

42、V AL,01110110B</p><p>  OUT DX,AL</p><p>  MOV DX,305H</p><p>  MOV AL,0E8H</p><p>  OUT DX,AL</p><p>  MOV AL,03H</p><p

43、>  OUT DX,AL</p><p>  MOV DX,307H</p><p>  MOV AL,10110110B</p><p>  OUT DX,AL</p><p>  MOV DX,306H</p><p>  MOV AL,0E8H</p&g

44、t;<p>  OUT DX,AL</p><p>  MOV AL,03H</p><p>  OUT DX,AL</p><p>  L1: MOV AH,0BH ;檢查是否有Esc鍵按下</p><p><b>  INT 21H</b></p&g

45、t;<p><b>  INC AL</b></p><p>  JNZ NEXT0 ; 若無鍵按下,則程序往下執(zhí)行 </p><p>  MOV AH,08H ;如有Esc鍵按下,則程序退出</p><p><b>  INT 21H</b><

46、/p><p><b>  CMP AL,27</b></p><p>  JZ EXIT </p><p><b>  NEXT0: </b></p><p>  CALL DELAY </p><p><b>  JMP L1 </b><

47、/p><p>  LEDLIGHT PROC FAR ;中斷服務(wù)程序</p><p><b>  PUSH SI</b></p><p><b>  PUSH AX</b></p><p>  PUSH DX </p><p>  CLI

48、 ;關(guān)中斷</p><p>  mov dx,303h ;初始化8255狀態(tài)字,A口輸出</p><p>  mov al,80h</p><p><b>  out dx,al</b></p><p>  mov dx,300h;送通道號至A口</p>

49、;<p><b>  mov al,0</b></p><p><b>  out dx,al</b></p><p>  mov dx,303h</p><p>  mov al,3h;00000011,使PC1為1</p><p>  out dx,al

50、;PC1置1進行地址鎖存</p><p>  ; mov dx,303h</p><p>  ; mov al,90h</p><p>  ; out dx,al;重寫8255方式字,A口輸入,B口輸出,C口低四位輸出</p><p>  mov dx,303h ;使PC0置高發(fā)啟

51、動信號</p><p>  mov al,1h;00000001,先使PC0為1</p><p><b>  out dx,al</b></p><p>  mov cx,0f00h ;delay</p><p>  ;lop1:loop lop1</p>

52、<p>  mov dx,303h</p><p>  mov al,0h;00000000,延時后使PC0為0發(fā)啟動信號</p><p><b>  out dx,al</b></p><p><b>  nop</b></p><p><b>  nop&l

53、t;/b></p><p>  mov dx,303h</p><p>  mov al,5h</p><p>  ;00000101,使PC2為高,發(fā)出OE</p><p>  out dx,al</p><p>  mov dx,300h;從A口讀數(shù)據(jù)</p><p>

54、;  in al,dx</p><p>  MOV DX,301H;從B口向LED輸出數(shù)據(jù)</p><p><b>  OUT DX,AL</b></p><p>  CALL DISP ;向屏幕輸出數(shù)據(jù)</p><p>  MOV AL,62H ;發(fā)中斷結(jié)束命令</p>

55、<p>  MOV DX,0A0H</p><p>  OUT DX,AL ;向從片8259發(fā)EOI命令</p><p>  OUT 020H,AL ;向主片8259發(fā)EOI命令</p><p>  STI ;開中斷</p><p><b>  POP DX<

56、/b></p><p><b>  POP AX</b></p><p>  POP SI </p><p><b>  IRET</b></p><p>  LEDLIGHT ENDP</p><p><b>  EXIT:</b><

57、;/p><p>  MOV AX,2572H ;恢復(fù)中斷向量</p><p>  MOV DX,INT0A_SEG</p><p><b>  PUSH DS</b></p><p><b>  MOV DS,DX</b></p><p>  MOV DX,INT

58、0A_OFF</p><p><b>  INT 21H</b></p><p><b>  POP DS</b></p><p>  IN AL,0A1H ;屏蔽IRQ10</p><p>  OR AL,04H</p><p>  OUT 0A1H,A

59、L</p><p>  IN AL,21H ;屏蔽IRQ2</p><p>  OR AL,04H</p><p>  OUT 21H,AL</p><p>  MOV AX,4C00H ;程序退出</p><p>  INT 21H </p><p><

60、;b>  CODE ENDS</b></p><p><b>  END START</b></p><p>  八、實驗結(jié)果(如下圖)</p><p>  1、鍵入單選項“1”</p><p>  進入主菜單后選擇1進行8255的初始化自檢,這時候會發(fā)現(xiàn)在實驗板上的一半燈亮,一半滅。界面和實驗箱效果如

61、下圖所示:</p><p>  2、鍵入菜單項“2”</p><p>  8255初始化完成后鍵入“2”,程序?qū)⒉杉瘮?shù)據(jù),一路送往電腦顯示,一路送往二極管顯示,調(diào)節(jié)電位器,采集不同的數(shù)據(jù)</p><p><b>  八、實驗總結(jié)</b></p><p>  個人覺得這次實驗主要考驗的是學(xué)習(xí)態(tài)度和細(xì)心。實驗用到的芯片基本都

62、學(xué)習(xí)過,實驗原理、程序代碼及電路圖老師都有講解,就是看平時學(xué)習(xí)時認(rèn)真與否。做實驗時得細(xì)心和有耐心才能事半功倍。對于我來說,這次實驗由于之前上機做單個芯片測試的實驗時不是很認(rèn)真,加上對匯編語言不能熟練使用導(dǎo)致實驗完成起來比較吃力,但得到老師和同學(xué)點撥后編程還是比較順利的。由于線路較多,實驗在連線上耗費了過多的時間,連接線路時沒有考慮到走線的合理性和美觀性,線路接地毫無條理,導(dǎo)致實驗出現(xiàn)問題時檢查線路非常困難。從每根線路檢查起,到更換芯片、

63、電位器等原件實驗都毫無起色,最后發(fā)現(xiàn)檢查線路花的時間比連接線路花費的時間都長,于是拆掉所有導(dǎo)線重新連接。經(jīng)過兩三次的拆掉所有線路從零開始和無數(shù)次的全盤檢測,歷時9天左右,得到的實驗結(jié)果終于和理論一致。這次課程設(shè)計讓我明白了平時學(xué)習(xí)認(rèn)真和態(tài)度端正的重要性,也讓我?guī)状问浜蛶捉^望,但實驗最終還是成功了,成功的喜悅讓我覺得之前付出的一切都是值得的!正如白老師所說的那樣,這次課程設(shè)計是硬件軟件結(jié)合、計科獨一無二的一次課設(shè),是個不錯的經(jīng)歷!&l

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論