微機原理課程設(shè)計報告(電子秒表)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  一、設(shè)計目的</b></p><p>  培養(yǎng)和鍛煉在學(xué)習(xí)完本門課后綜合應(yīng)用所學(xué)理論知識,解決實際工程設(shè)計和應(yīng)用問題的能力。通過課程設(shè)計,要求熟悉和掌握微機系統(tǒng)的軟件、硬件設(shè)計的方法、設(shè)計步驟,得到微機開發(fā)應(yīng)用方面的初步訓(xùn)練。</p><p>  掌握8255、8259、8253等芯片使用方法和編程方法,通過本次課程設(shè)計,學(xué)以致用,進(jìn)一步

2、理解所學(xué)的相關(guān)芯片的原理、內(nèi)部結(jié)構(gòu)、使用方法等,學(xué)會相關(guān)芯片實際應(yīng)用及編程,系統(tǒng)中采用8086微處理器完成了電子秒表系統(tǒng)的獨立設(shè)計。同時并了解綜合問題的程序設(shè)計掌握實時處理程序的編制和調(diào)試方法,掌握一般的設(shè)計步驟和流程,使我們以后搞設(shè)計時邏輯更加清晰。</p><p><b>  二、設(shè)計內(nèi)容</b></p><p>  設(shè)計一個可任意啟動/停止的電子秒表,要求用6位

3、LED數(shù)碼顯示,計時單位為1/100秒。利用功能鍵進(jìn)行啟/停控制。其功能為:上電后計時器清0,當(dāng)?shù)谝淮危ɑ蚱鏀?shù)次)按下啟/停鍵時開始計數(shù)。第2次(或偶數(shù)次)按下該鍵時停止計時,再一次按啟/停鍵時清零 后重新開始計時??捎瞄_關(guān)控制,也可用按鍵控制</p><p><b>  三、設(shè)計要求</b></p><p><b>  1、基本要求:</b>&

4、lt;/p><p>  1)設(shè)計可以顯示1~60秒的無存儲功能的秒表,最小單位為毫秒。 </p><p>  2)通過鍵盤按鍵控制秒表清零、暫停、繼續(xù),退出等。其中數(shù)字0控制清零,數(shù)字1控制繼續(xù)和退出。 </p><p><b>  2、提高要求: </b></p><p>  1)秒表可以分組存儲、批量顯示、倒計時等

5、。 </p><p>  2)采用圖像顯示,界面精美,設(shè)置報警聲等 </p><p>  四、設(shè)計原理與硬件電路</p><p><b>  1、整體設(shè)計思想</b></p><p>  使用8253工作在方式0計數(shù),對 1/100S計數(shù),并講計數(shù)值寫入bl中并與100比較若不相等,則將計數(shù)值裝換為10進(jìn)制后送825

6、5控制端顯示,如相等則1S計數(shù)程序加1之后并與59比較若不相等則將計數(shù)值裝換為10進(jìn)制后送8255控制端顯示,如相等則1min計數(shù)程序加1之后并與59比較若不相等則將計數(shù)值裝換為10進(jìn)制后送8255控制端顯示,如相等則計數(shù)程序加1之后產(chǎn)生溢出,跳轉(zhuǎn)清零程序?qū)⒂嫈?shù)清零,同時數(shù)碼管清零。</p><p>  2、使用各芯片的作用及工作原理</p><p>  1)定時器/計數(shù)器8253<

7、/p><p>  用系統(tǒng)8253定時器提供的55ms定時單位,設(shè)計秒表定時程序。 </p><p>  有關(guān)系統(tǒng)定時方法:PC機系統(tǒng)中的8253定時器0工作于方式3,外部提供一個時鐘作為CLK信號, </p><p>  頻率:f=1.1931816MHz。 </p><p>  定時器0輸出方波的頻率:fout=1.1931816/6553

8、6=18.2Hz。 </p><p>  輸出方波的周期Tout=1/18.2=54.945ms。8253A每隔55ms引起一次中斷,作為定時信號??捎?5945ms作基本計時單位。 </p><p>  用BIOS調(diào)用INT 1AH可以取得該定時單位。例:1秒=18.2 (計時單位) </p><p>  8253的引腳圖及硬件連接圖如下圖示:</p&g

9、t;<p>  《8253引腳圖》 硬件連接圖</p><p>  當(dāng)A1A0分別為00 01 10 11時分別選中三個通道和控制字寄存器在8088系統(tǒng)中,8088的A1A0分別與8253的A1A0相連在8086系統(tǒng)中,通常將8253的8位數(shù)據(jù)線與8086的低8位相連,即使用偶地址,所以8086的A2A1分別與8253的A1A0相連。計數(shù)器

10、(0 ~ 2)即三個計數(shù)器/定時器通道。每個通道包括:8位控制字寄存器、16位計數(shù)初值寄存器、減一計數(shù)器和輸出鎖存器。作定時器用:其CLK端上的輸入脈沖應(yīng)是標(biāo)準(zhǔn)的、精確的;作計數(shù)器用:對其CLK端上的脈沖計數(shù),脈沖寬度可以不等。采用減一計數(shù)器,為0時,從OUT端上輸出一個脈沖定時時間 = 時鐘脈沖周期X預(yù)置的計數(shù)初值。 </p><p><b>  控制功能表</b></p>

11、;<p>  由于8253的讀/寫操作對系統(tǒng)時鐘沒有特殊的要求,因此它幾乎可以應(yīng)用與由任何一種微處理器組成的系統(tǒng)中,可作為可編程的方波頻率發(fā)生器、分頻器、實時時鐘、事件計數(shù)器和單脈沖發(fā)生器等。</p><p>  8253是一片具有三個獨立的16位計數(shù)器通道的可編程定時器/計數(shù)器芯片。每個通道都可以編程設(shè)定3種工作方式之一種;8253由以下幾個部分組成:</p><p>  

12、數(shù)據(jù)總線緩沖器(8位、三態(tài)、雙向);</p><p>  (2) 讀/寫控制邏輯;CS:片選信號,低電平有效;</p><p>  RD:讀信號,低電平有效;</p><p>  WR:寫信號,低電平有效</p><p>  A1A0:端口選擇信號 (3) 三個通道( 0 ~ 2),由A0,A1控制選擇; (4) 一個控制寄存

13、器;</p><p><b>  內(nèi)部結(jié)構(gòu)及引腳圖:</b></p><p>  2)用可編程并行接口芯片8255的PA口以及PB口實現(xiàn)數(shù)碼管輸出,PC口實現(xiàn)按鍵實現(xiàn)數(shù)據(jù)顯示輸出 </p><p>  8255 可編程外圍接口芯片是 Intel 公司生產(chǎn)的通用并行I/O 接口芯片,它具有A、B、C 三個并行

14、接口,并行接口是以數(shù)據(jù)的字節(jié)為單位與I/O 設(shè)備或被控制對象之間傳遞信息。CPU 和接口之間 的數(shù)據(jù)傳送總是并行的,即可以同時傳遞8 位、16 位、32 位等。用+5V 單電源供電,能在以下三種方式下工作:方式0--基本輸入/出方式、方式1--選通輸入/出方式、方式2--雙向選通工作方式。</p><p>  8255 工作方式控制字和C口按位置位/ 復(fù)位控制字格式如圖所示:</p><p&g

15、t;  3. 鎖存器273</p><p>  74LS273是8位數(shù)據(jù)/地址鎖存器,他是一種帶清除功能的8D觸發(fā)器,下面介紹一下他的管腳圖功能表等資料。</p><p>  (1).1腳是復(fù)位CLR,低電平有效,當(dāng)1腳是低電平時,輸出腳2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部輸出0,即全部復(fù)位;</p>&

16、lt;p>  (2).當(dāng)1腳為高電平時,11(CLK)腳是鎖存控制端,并且是上升沿觸發(fā)鎖存,當(dāng)11腳有一個上升沿,立即鎖存輸入腳3、4、7、8、13、14、17、18的電平狀態(tài),并且立即呈現(xiàn)在在輸出腳2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.</p><p>  74ls273管腳功能:</p><p>  1D~8D為

17、數(shù)據(jù)輸入端,1Q~8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平清除,常用作8位地址鎖存器?! ?lt;/p><p>  4. 數(shù)據(jù)收發(fā)器245 </p><p>  當(dāng)片選端/CE低電平有效時,DIR=“0”,信號由 B 向 A 傳輸;(接收)*DIR=“1”,信號由 A 向 B 傳輸;(發(fā)送)當(dāng)/CE為高電平時,A、B均為高阻態(tài)</p><p>  5、譯碼器74ls1

18、54</p><p>  74ls154為4—16線制譯碼器其引腳圖如下圖所示 </p><p><b>  6. 7段數(shù)碼管</b></p><p>  數(shù)碼管要正常顯示,就要來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。 </p><p><b&g

19、t;  靜態(tài)顯示驅(qū)動</b></p><p>  靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進(jìn)行驅(qū)動,或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動,實際應(yīng)用時必須增加譯碼驅(qū)動器進(jìn)行驅(qū)動,增加了硬件電路的復(fù)雜性。 </p&g

20、t;<p><b>  動態(tài)顯示驅(qū)動</b></p><p>  數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制。</p><p><b> 

21、 五、程序流程圖</b></p><p><b>  等于1S</b></p><p><b>  不等</b></p><p><b>  等于59</b></p><p><b>  不等</b></p><p>&

22、lt;b>  等于59</b></p><p><b>  不等</b></p><p><b>  等于23</b></p><p><b>  六、程序代碼</b></p><p>  a1 equ 0000h</p><p>  

23、b1 equ 0002h</p><p>  c1 equ 0004h</p><p>  ctr1 equ 0006h ;8255各端口地址</p><p>  a2 equ 0200h ;8253計數(shù)器0端口地址</p><p>  ctr2 equ 0206h ;8253控制端口地址</p><p&g

24、t;  a3 equ 0100h</p><p>  data segment</p><p>  ; keynum db 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H</p><p>  tab db 3FH,06H,5BH,4FH,66H,6DH,7DH

25、,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p>  buf db 0,0,0,0</p><p>  buf1 db 0,0,0,0,0,0,0,0</p><p>  buf2 db 0,0;前為第一開關(guān)次數(shù) </p><p>  buf3 db 80 dup(?) </p>

26、<p>  data ends </p><p>  code segment 'code'</p><p>  assume ds:data,cs:code</p><p>  start: mov ax,data</p><p><b>  mov ds,ax</b></p>

27、<p>  ;設(shè)中斷入口地址設(shè)置</p><p><b>  mov ax,0</b></p><p><b>  mov es,ax</b></p><p><b>  mov di,08</b></p><p>  mov ax,offset intr_key

28、</p><p><b>  cld</b></p><p><b>  stosw</b></p><p>  mov ax,seg intr_key</p><p><b>  stosw</b></p><p>  mov ax,data</

29、p><p><b>  mov es,ax</b></p><p>  ;8255寫入控制字</p><p>  mov al,10001001b ;A口B口輸出顯示,C口高四位低四位輸入</p><p>  mov dx,ctr1</p><p><b>  out dx,al<

30、/b></p><p>  n3: call jishu </p><p><b>  jmp n3</b></p><p>  n2: lea si,buf2</p><p>  mov bh,00h</p><p>  mov bl,1h[si]</p>

31、<p>  lea di,buf3</p><p><b>  add di,bx</b></p><p><b>  add bl,8</b></p><p>  mov 1h[si],bl</p><p>  lea si,buf1 </p><p><b

32、>  cld</b></p><p><b>  mov cx,8</b></p><p>  rep movsb </p><p>  n4:call dis</p><p><b>  jmp n4 </b></p><p>  n5: lea s

33、i,buf2</p><p>  mov bh,00h</p><p>  mov bl,1h[si]</p><p><b>  cmp bl,0</b></p><p><b>  jz n1</b></p><p>  lea di,buf1</p>&l

34、t;p><b>  sub bl,8</b></p><p>  mov 1h[si],bl</p><p>  lea si,buf3</p><p><b>  add si,bx</b></p><p><b>  cld</b></p><p&

35、gt;<b>  mov cx,8</b></p><p><b>  rep movsb</b></p><p>  n6: call dis</p><p><b>  jmp n6</b></p><p>  n1: call qinlin</p>

36、;<p><b>  jmp n1</b></p><p>  ;jmp start</p><p>  jishu proc near ;計數(shù)子程序</p><p>  lea si,buf</p><p>  mov bl,[si]</p><p>  cmp bl,10

37、0</p><p><b>  jnz s6</b></p><p>  s1: mov bl,0</p><p>  mov [si],bl</p><p>  mov ah,1h[si]</p><p><b>  cmp ah,59</b></p><

38、;p><b>  jz s2</b></p><p><b>  inc ah</b></p><p>  mov 1h[si],ah</p><p><b>  jmp s6</b></p><p>  s2: mov ah,0</p><p>

39、;  mov 1h[si],ah</p><p>  mov ah,2h[si]</p><p><b>  inc ah</b></p><p>  mov 2h[si],ah</p><p><b>  jmp s6</b></p><p>  s6:call chu&l

40、t;/p><p><b>  mov cx,3</b></p><p>  s5:call dis</p><p><b>  loop s5</b></p><p>  call delay1s</p><p>  inc byte ptr[si]</p><

41、;p><b>  ret </b></p><p>  jishu endp</p><p>  chu proc ;rukou al ;數(shù)處理子程序</p><p><b>  push si</b></p><p><b>  push bx</b></p

42、><p><b>  mov bl,4</b></p><p>  lea di,buf1</p><p>  lea si,buf</p><p>  next:lodsb</p><p><b>  mov ah,00</b></p><p><

43、b>  mov cl,10</b></p><p><b>  div cl </b></p><p>  xchg ah,al</p><p><b>  stosb </b></p><p><b>  mov al,ah</b></p>&

44、lt;p><b>  stosb</b></p><p><b>  dec bl</b></p><p><b>  jnz next</b></p><p><b>  pop bx</b></p><p><b>  pop si&l

45、t;/b></p><p><b>  ret</b></p><p>  chu endp </p><p>  dis proc near ;顯示buf1中的值</p><p><b>  push bx</b></p><p><b&g

46、t;  push cx</b></p><p>  lea bx,tab</p><p>  lea di,buf1</p><p><b>  mov cx,8</b></p><p>  mov ah,7Fh</p><p>  loop1: mov al,[di]</p&g

47、t;<p>  xlat ;換碼</p><p><b>  mov dx,a1</b></p><p><b>  out dx,al</b></p><p><b>  mov dx,b1</b></p><p><b>  m

48、ov al,ah</b></p><p><b>  out dx,al</b></p><p><b>  mov bh,1</b></p><p>  call delay</p><p><b>  call qp</b></p><p&g

49、t;  lea bx,tab</p><p><b>  ror ah,1</b></p><p><b>  inc di</b></p><p>  loop loop1</p><p><b>  pop cx</b></p><p><b&

50、gt;  pop bx</b></p><p><b>  ret</b></p><p><b>  dis endp</b></p><p>  delay1s proc near ;8253延時子程序</p><p><b>  push dx</b>&

51、lt;/p><p><b>  push ax</b></p><p>  mov dx,ctr2 ;8253 控制</p><p>  mov al,00110000b </p><p>  out dx,al ;8253計數(shù)器0控制字 方式0 out端作為中斷請求信號</p><p

52、><b>  mov dx,a2</b></p><p>  mov al,01h</p><p><b>  out dx,al</b></p><p>  mov al,00h</p><p><b>  out dx,al</b></p><p&

53、gt;<b>  mov dx,a3</b></p><p>  M1: in al,dx</p><p>  test al,01h</p><p><b>  jz M1</b></p><p><b>  pop ax</b></p><p>&

54、lt;b>  pop dx</b></p><p><b>  ret</b></p><p>  delay1s endp</p><p>  qp proc near ;清頻子程序</p><p>  mov al,0ffh</p><p><b>  mov d

55、x,b1</b></p><p><b>  out dx,al</b></p><p><b>  ret</b></p><p><b>  qp endp</b></p><p>  delay PROC NEAR ;內(nèi)部延時之程序</p>

56、;<p>  PUSH bx </p><p>  PUSH CX</p><p>  wait0: MOV CX,06h </p><p>  wait1: LOOP wait1 </p><p>  DEC bh</p><p>  JN

57、Z wait0</p><p>  POP CX</p><p>  POP bx</p><p><b>  RET</b></p><p>  delay ENDP </p><p>  intr_key proc near ;中斷服務(wù)子程序</p>

58、<p>  call key </p><p>  test al,2h </p><p><b>  jz n1</b></p><p>  test al,4h</p><p><b>  jz n5</b></p><p>  lea di,bu

59、f2</p><p>  mov bh,[di]</p><p><b>  inc bh</b></p><p>  mov [di],bh</p><p>  test bh,1h</p><p><b>  jnz n2</b></p><p>

60、<b>  jmp n3</b></p><p><b>  iret</b></p><p>  intr_key endp</p><p>  qinlin proc ;鍵盤清零子程序</p><p>  mov ax,0 </p><p>

61、;  lea di,buf</p><p><b>  mov cx,14</b></p><p><b>  cld</b></p><p><b>  rep stosb</b></p><p><b>  call dis</b></p>

62、<p>  qinlin endp</p><p>  key proc ;讀取鍵盤程序</p><p><b>  mov dx,c1</b></p><p><b>  in al,dx</b></p><p><b>  ret</b><

63、/p><p><b>  key endp</b></p><p><b>  code ends</b></p><p>  end start </p><p>  七、程序及硬件系統(tǒng)調(diào)試情況</p><p>  按下暫停鍵實現(xiàn)暫停功能</p><p>

64、;  繼續(xù)計數(shù)后按下清零鍵實現(xiàn)清零功能</p><p><b>  八、設(shè)計心得</b></p><p>  經(jīng)過這次課程設(shè)計,我覺得我有了很大的收獲,:</p><p>  1.我大大地鍛煉了自己搞科研的能力,作為我們大學(xué)生,尤其是工科的大學(xué)生,對于科研能力,能夠自主開發(fā)課題,項目有著很高的要求,而我們很多大學(xué)生動手研發(fā)的能力還不是很強。而通

65、過這次課程設(shè)計,使自己的研發(fā)能力有了很大堤提高。</p><p>  2.我對于工科設(shè)計的嚴(yán)謹(jǐn)性,仔細(xì)性有了更深地體會。我們本次設(shè)計的秒表僅僅是工科設(shè)計中非常簡單的一個,思想并不是非常復(fù)雜,手頭也有一定的資料,但是我們在研發(fā),調(diào)試過程中還是出現(xiàn)了一些錯誤。簡單的一些程序好檢查,但是如果說是以后要設(shè)計的一些大型程序,出現(xiàn)故障就不是那么容易檢查了。這就要求我們在以后的工程設(shè)計當(dāng)中要更為細(xì)致仔細(xì)。</p>

66、<p>  3我的專業(yè)知識得到了很好的鞏固,對于本專業(yè)的一些問題有了更深的思考。原來有很多知識只是死學(xué)課本,而并沒有與實際相結(jié)合,而這次課程設(shè)計使我的專業(yè)知識與實際有了很好的契合。</p><p>  4.在程序設(shè)計中不能夠想當(dāng)然,許多程序,功能在腦子中想得很好,但是將其轉(zhuǎn)變城實際程序就會出現(xiàn)許多問題。如何由腦子里的構(gòu)想轉(zhuǎn)變成實際的程序,這是我以后需要提高的一點。</p><p&g

67、t;  5.掌握了一些檢查與判斷錯誤的經(jīng)驗與方法,對今后的專業(yè)學(xué)習(xí)與設(shè)計有著深刻的影響。</p><p>  6.對專業(yè)設(shè)計的許多流程、原則、注意事項以及撰寫專業(yè)報告的有關(guān)事項有了一定的了解。</p><p>  7.學(xué)到了書本上沒有的知識,掌握了一些程序設(shè)計的技巧,對以后的學(xué)習(xí)與設(shè)計有深遠(yuǎn)影響。</p><p>  總之,經(jīng)過這次課程設(shè)計,我對今后的專業(yè)學(xué)習(xí)所要注

68、意的事項有了更深刻地了解,這對我以后的學(xué)習(xí)必將產(chǎn)生深遠(yuǎn)的影響。</p><p><b>  九、參考文獻(xiàn)</b></p><p>  [1] 顧暉等。微機原理與接口技術(shù)-基于8086和Proteus仿真[M].電子工業(yè)出版社陳繼紅等. 微機原理及應(yīng)用[M].高等教育出版社,2010</p><p>  [2]戴梅萼等.微型計算機技術(shù)及應(yīng)用[M]

溫馨提示

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

評論

0/150

提交評論