微機原理與接口技術實驗講稿PPT.ppt_第1頁
微機原理與接口技術實驗講稿PPT.ppt_第2頁
微機原理與接口技術實驗講稿PPT.ppt_第3頁
微機原理與接口技術實驗講稿PPT.ppt_第4頁
微機原理與接口技術實驗講稿PPT.ppt_第5頁
已閱讀5頁,還剩178頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

微機原理與接口技術 實驗講稿(PPT),實驗項目,實驗箱簡介 基于 EPP接口的LED顯示 8255并行接口原理及編程 8253計數器原理及分頻實驗 8253計數器在測頻中的應用 雙積分式A/D 轉換器7109 的原理及編程 逐次比較式A/D轉換器0809的原理及編程 D/A轉換器0832的原理實驗 DAC0832在程控信號源中的應用 LED點陣顯示 基本并行輸入/輸出口在鍵盤接口中的應用 8250串行通信 電子稱實驗,實驗箱簡介,實驗箱的組成原理 實驗主板的原理 實驗主板是由并行I/O、定時器/計數器、 A/D轉換器、D/A轉換器及LED顯示器等接口 部件構成,采用了總線結構,各功能部件 均通過內部總線進行連接,如下圖所示。,實驗主板的布局,EPP接口原理 EPP信號特性,其引腳定義如下圖, EPP端口寄存器 端口地址如表下圖所示。表中BASE為并 口基地址,,狀態寄存器和控制寄存器各位具體定義如下圖所示。, EPP接口初始化 在使用EPP之前應將并口置于正向傳輸模式(輸出),即將控制寄存器的方向位(Bit5)置0??删帉慐PP初始化函數epp_init()如下: void epp_init(void) outportb(0x37a,0x04); , EPP時序 數據/地址寫周期時序,數據/地址讀周期時序, EPP端口讀寫 計算機要同外設實驗箱通信,就要通過EPP接口來讀寫數據,因此,首先應向EPP地址端口(BASE+3)寫入欲訪問的外設地址,然后從EPP數據端口(BASE+4)讀寫數據,每次讀寫1個字節,EPP端口寫函數epp_write_data() void epp_write_data(unsigned char paddr,unsigned char data) outportb(0x37b,paddr); epp_check_clear(); outportb(0x37c,data); epp_check_clear(); ,EPP端口讀函數epp_read_data() void epp_read_data(unsigned char paddr,unsigned char *data) outportb(0x37b, paddr); epp_check_clear(); *data = inportb(0x37c); epp_check_clear(); ,EPP接口與本實驗平臺的連接 ,如下,擴展接口 擴展接口的原理及管腳定義如下圖所示。,鍵盤、點陣實驗擴展板 ,原理框圖如下:,串口實驗擴展板 ,原理框圖如下:,端口地址 為了方便同學們的在實驗中更快,更方便的找到實驗板上各個芯片的端口地址,在實驗指導書上詳細列出了各個端口的地址及其簡要的功能描敘。,頭文件 在本實驗指導書的附錄里,列舉了部分實驗的參考源程序,以便同學們在學習的過程中參考。為了使程序更簡化、直觀,將常用的地址端口和函數定義成頭文件的形式,其頭文件有: paddr.h 對實驗板內地址進行了宏定義。 eppinit.h EPP接口初始化。 epprw.h EPP端口的讀/寫。 displed.h LED數字顯示函數。,實驗一 EPP接口驅動LED顯示,實驗目的 1熟悉EPP接口的輸入/輸出及讀/寫操作。 2掌握七段LED顯示驅動原理及接口方法。 3熟悉C語言。,實驗任務 1分析實驗主板電路,指出輸入/輸出口地址。 2編寫LED顯示程序,使實驗主板上的四個LED顯示任意四位數字和任意一位的小數點,并通過調試。,實驗原理 LED顯示器原理 7段LED顯示器的結構和8位字節數的對應關系如下圖:, LED顯示實驗電路 實驗箱主板上帶有的四位LED顯示器采用 四片CD4511(BCD七段鎖存譯碼器)來驅 動 。其原理圖如下:, 4位LED顯示的端口操作為:,本實驗共用到的端口地址及其功能介紹 00H(2Y0):輸出口,用作后兩位顯示譯碼驅動器4511 的鎖存使能信號。 01H(2Y1):輸出口, 用作前兩位顯示譯碼驅動器4511 的鎖存使能信號。 03H(2Y3):輸出口, 用作4位小數點鎖存器74LS273的 控制CLK信號。,編程與調試 程序說明 該程序設計功能為: 先從最高位開始依次顯示1,2,3,4,顯示時只有一位顯示,其它位熄滅。 從高到低輪流點亮小數點。 依次顯示0000,1111,2222,3333,一直到9999。, 編程思路, 編程步驟 調用自定義頭文件 #include “paddr.h“ #include “epprw.h“ #include “displed.h“ #include “eppinit.h “ EPP端口初始化 epp_init(); LED的數字顯示 在LED上顯示某個數,只要在對應的字節上寫入這個數即可,例如:要在 第二位LED上顯示1,第一位LED上顯示5,只要先向EPP地址端口寫入這兩位 的地址0x00(D_LED) ,再向EPP數據端口寫入相應的數據。 epp_write_data(D_LED, 0x15); 如果想要熄滅某個LED,只要在相應的位上寫入10到15的任意一個數。程序 中利用此方法循環點亮LED。,思考和練習題 若不對EPP接口進行初始化,會發生什么現象?為什么? 編寫循環點亮四位小數點的程序。 可以同時點亮四位的小數點嗎?如果可以,應怎樣設置其端口控制字?,實驗二 8255并行接口原理及編程,實驗目的 1.熟悉8255內部結構和外部引腳定義。 2.熟悉8255并行接口的原理和接口方法。 3.掌握8255的簡單應用編程。,實驗任務 1編寫出8255的初始化程序。 2編寫出循環控制發光二極管的顯示程序, 并運行通過 3編寫出交通燈控制模擬程序。 4理清8255的一些與實驗板上其他芯片相連 接的I/O端口電路。 5掌握對8255PC口的位操作。,實驗原理 8255工作原理 8255有8條數據引腳D0D7,它們全部是雙向、三態,用來與數據總線相連接; 另外,還有6條輸入控制引腳,分別是: RESET: 復位輸入信號,高電平有效。當RESET有效時,將梭魚哦內部寄存器, 包括控制寄存器清零,而且把A、B、C三個都設為輸入方式,對應的PA7PA0、PB7 PB0、PC7PC0引腳均為高阻態。 CS:芯片選中信號,輸入低電平有效。只有當它為低電平時,8255才被CPU選 中。 A0和A1:芯片內部寄存器的選中信號。當有效時,8255被選中,再由A0、A1 的編碼決定選中通道A、B、C,還是控制寄存器。 RD:讀信號。輸入低電平有效。當它為低電平時,由CPU讀出8255的數據或者 狀態信息。 WR:寫信號。輸入低電平有效當它為低電平時,由CPU將數據或命令寫到8255。 CS、A0、A1、WR、五根引腳的電平與8255操作的關系,詳見下表,8255通道選擇和基本操作表, 8255控制字 8255方式選擇控制字,方式0基本輸入/輸出 方式1選通輸入/輸出 方式2雙向數據傳送, 8255按位置位/復位的控制字 通道C的每一位都可以通過向控制寄存器寫入置位/復位控制字, 而使它相應位置位(即輸出為1)或復位(即輸出為0)。通道C置位、 復位控制字的具體格式下圖所示。, 實驗電路圖,本實驗用到的端口地址: 23H(1Y1):輸出口,8255的控制端口 20H(1Y1):輸出口,8255端口A的地址 21H(1Y1):輸入口,8255B端口B的地址 22H(1Y1):輸入/輸出口,8255端口C的地址,編程與調試 (一)交通燈實驗 1程序說明 通過對8255的A口讀/寫命令,來循環點亮與A口相 連接的紅、黃、綠三個發光二級管。在點亮的過程中, 同時在LED上顯示時間,從60秒開始倒計時,60秒到6 秒紅燈亮,5秒到1秒黃燈亮,然后再從從60秒開始倒 計時,60秒到6秒綠燈亮,5秒到1秒黃燈亮。依次循環。,2編程思路,3編程步驟 調用自定義頭文件(同上實驗一)。 EPP端口初始化(同上實驗一)。 初始化8255。 在本實驗中設計為方式0、A口輸出、B口輸入,故向控制寄存器寫 入的數據為0x82。在交通燈的實驗中,我們就用到A口的輸出。8255 的片選由1Y1來控制,其控制寄存器的地址為0x23(CW_8255)。 epp_write_data(CW_8255,0x82); 向8255的A口寫數據。 由指示燈的硬件電路可知,與其相連的端口輸出為低電平,指示 燈亮;輸出為高電平,指示燈滅。 在本實驗中我們要依次點亮紅色、黃色、綠色、黃色。 epp_write_data(PA_8255, 0xfe); /*點亮紅色指示燈*/ delay(10000); /*延時*/ epp_write_data(PA_8255, 0xfd); /*點亮黃色指示燈*/ delay(10000); epp_write_data(PA_8255, 0xfb); /*點亮綠色指示燈*/ delay(10000); epp_write_data(PA_8255, 0xfd); /*點亮黃色指示燈*/, 點亮實驗板上的LED。 在點亮指示燈的同時,要在LED上顯示點亮時間,這個數字顯示 程序可直接調用上面介紹過的LED數字顯示程序。 epp_write_data(PA_8255, 0xfe); /*點亮紅色指示燈*/ for( i=60;i5;i- ) /* 點亮時間55秒*/ displed(i,0); /*調用LED數字顯示函數*/ for( j=0;j100;j+ ) delay(1000); if(kbhit() exit(0); 4源程序清單 參考指導書附錄I-2。,(二)A、B并行口實驗 1程序說明 該程序為通過操作與8255的B口相連的開關鍵,來控制與8255的A 口相連的發光二極管的亮和滅。 2編程思路,3編程步驟 調用自定義頭文件(同上)。 EPP端口初始化(同上)。 初始化8255(同上)。 讀取8255的B端口的數據 與8255的B端口相連接的是8個開關控制器,通過操作這些開關可以使與其相連的B端口呈現高電平“1”或者低電平“0”。 epp_read_data(PB_8255, 向A端口寫數據 epp_write_data(PA_8255, data) 4源程序清單 參考實驗指導書附錄I-3。,思考和練習 1交通燈實驗中如何同時點亮多個指示燈。 2. 能否從A口輸出C口的獲取量。 3在不同的工作方式下,考慮I/O口的外設連接。,實驗三 8253計數器原理及分頻實驗,實驗目的 1.熟悉8253定時器/計數器的功能及接口方法。 2.熟悉8253的分頻原理。 3.掌握8253的分頻應用編程。,實驗任務 1分析本實驗主板上8253的硬件電路原理。 2熟悉8253的工作原理后,編寫出8253的 初始化程序。 3編寫出8253分頻程序,觀察實驗顯現。,實驗原理 8253的引腳 8253有3個獨立的16位減計器通道,每一個通道有三條引線: CLK、GATE和OUT。 CLK: 輸入時鐘, 8253規定,加在CLK引腳的輸入時鐘周期 不能小于380ns。 GATE:門控信號輸入引腳。這是控制計數器工作的一個外部 信號。當GATE引腳為低時,通常都是禁止計數器工作的;只有 GATE 為高時,才允許計數器工作。 OUT:輸出引腳。當計數到“0”時,OUT 引腳上必然有輸出, 輸出信號波形取決于工作方式。,8253內部端口的選擇及每個通道的讀/寫操 作的選擇如下表所示, 8253的端口控制子, 8253的工作方式和輸出波形,實驗電路組成原理框圖,本實驗共用到六個端口地址: 23H(1Y1): 輸出口,8255的控制端口 22H(1Y1): 輸出端口(PC3),發出計數器0的閘門信 號(0為關,1為開) A0H(1Y5): 輸入/輸出端口,8253計數器0 的讀寫口 A1H(1Y5): 輸入/輸出端口,8253計數器1的讀寫口 A3H(1Y5): 輸出端口,8253的控制寄存器的端口,編程與調試 1.程序說明 對8253的計數器0和1寫入初值,使計數器1輸出一定 頻率的方波,從而使得與計數器1輸出端相連接的指示燈 循環亮和滅。 2.編程思路,3.編程步驟 調用自定義頭文件(同上實驗一)。 EPP端口初始化(同上實驗一)。 初始化8255。 8255的控制字應該定義C口的低位為輸出口,工作方式為方式0。 epp_write_data(CW_8255,0x8a); PC3口置“0”,阻止脈沖輸入。 初始化8253前,要阻止脈沖輸入,就要向PC3口置0,8255的C口 的各個端口可以直接置位和復位。 epp_write_data(CW_8255,0x06); 初始化8253。 8253的計數器0、計數器1,工作方式分別為方式2和方式3,都是 先寫低字節再寫高字節和BCD碼計數。向計數器0置入初值是1000, 向計數器1置入的初值也是1000。,/*8253的0口初始化,寫1000進去*/ epp_write_data(CW_8253,0x35); epp_write_data(CT0_8253,0x00); epp_write_data(CT0_8253,0x10); / *8253的1口初始化,設置時間為1s*/ epp_write_data(CW_8253,0x77); epp_write_data(CT1_8253,0x00); epp_write_data(CT1_8253,0x10); PC3置“1”,允許脈沖輸入。 epp_write_data(CW_8255,0X07); 4.源程序清單 參考實驗指導書附錄I-4。,思考和練習題 1向計數器0和計數器1寫入不通的值,指示燈 會出現什么現象? 2計數器0和1采用不同的工作方式,指示燈有 什么現象。 38253的初始化要在一個脈沖的作用下才能完 成,這對實驗中計數器輸出信號的頻率有沒 有影響?,實驗四 8253計數器在測頻中的應用,實驗目的 1了解頻率測量原理。 2.掌握8253的應用編程。 實驗任務 1.進一步理解8253的硬件電路原理。 2.根據測頻原理,編寫出8253的測頻程序,并運行通過。,實驗原理 頻率測量原理 所謂“頻率”,就是周期性信號在單位時間變化的次數。 若在一定時間間隔T內,計得這個周期信號得重復變化次 數為N,則其頻率可表達為: fN/T。電子計數器就是嚴 格按照該定義進行測頻得。其原理方框圖和工作時間波 形下圖所示。, 8253的工作原理。 自激振蕩電路,圖中將滑動變阻器Rw左邊的阻值設為Rx,令R=RxR1。 當R=R2時,當RR2時,,本實驗主板上設計的是第二種情況,通過調節滑動變阻 器Rw可獲得不同頻率的信號源。,電路原理, 輸入單元:輸入的待測信號fx有以下三種來源: a. AO2是自D/A0832(程控信號源)輸出的信號,詳見實驗六。 b. FX是外界直接輸入的信號。 c. 實驗主板上自帶的振蕩電路源。 計數部分:被測頻率信號由8253的計數器2計數, 時基信號產生與變換單元 邏輯控制單元 開門信號由8255的PC3控制。計數器0的輸出(OUT0)和計數器1的時鐘(CLK1)直接相連,計數器1的OUT1通過反相器,控制計數器2的CLK2的信號輸入,完成硬件方面的控制。實驗波形如下圖4所示(計數器0、1、2的工作方式依次為方式2、0、2,閘門信號全部為高),閘門時間 在本實驗中初始化8253時,設定計數器0、1、2的工作方式分別為0 方式2、0、2,向計數器0、1、2中置入的數據一次為為N0、N1、N2。 定義計數器0的時鐘輸入頻率為F。閘門(PC3)打開后,信號F進入 計數器0,計數器0工作在方式2經N0分頻后輸出的波形信號頻率f0為:,(1),計數器0輸出的頻率為f0的信號作為計數器1時鐘信號(CLK1),計數 器1工作在方式0,經 N1分頻后輸出的波形信號頻率f1為:,由式(1)、(2)得:,(2) (3),計數器1輸出的頻率為f1的信號作為被測信號fx的門控信號,則信號 f1的周期即為閘門時間T,由式(3)得:,(4),本實驗共用到六個端口地址: 23H(1Y1):輸出端口,8255的控制端口 22H(1Y1):輸出端口(PC3),發出計數器0的閘門信號(0為關,1為開) 輸入端口(PC6),讀取計數器2的閘門信號(0為開,1為關) A3H(1Y5):輸出端口,8253計數器的控制寄存器的端口 A0H(1Y5):輸入/輸出端口,8253計數器0 的讀寫口 A1H(1Y5):輸入/輸出端口,8253計數器1的讀寫口 A2H(1Y5):輸入/輸出端口,8253計數器2的讀寫口,編程步驟 1.程序說明 本程序是利用8253計數器,實現對未知頻率信號的測頻。實驗過 程中,可以通過探測點TP9、TP10、TP11分別查看計數器0、1、2的 輸出情況,通過測試點TP12、TP13測量經過74LS74輸出的1Mhz、 5KHz的波形信號。 2.編程思路,4.編程步驟 調用自定義頭文件(同上實驗一)。 EPP端口初始化(同上實驗一)。 初始化8255。 epp_write_data(CW_8255,0x8a); /*8255寫控制字*/ PC3置0,阻值脈沖輸入(同實驗三)。 初始化8253。 /*8253的0口初始化,寫1000進去*/ epp_weite_data(CW_8253,0x35); epp_weite_data(CT0_8253,0x00); epp_weite_data(CT0_8253,0x01); /*8253的1口初始化,設置時間為1s*/ epp_weite_data(CW_8253,0x71); epp_weite_data(CT1_8253,0x00); epp_weite_data(CT1_8253,0x10); /*8253的2口初始化,寫ff進去*/ epp_weite_data(CW_8253,0xb4); epp_weite_data(CT2_8253,0xff); epp_weite_data(CT2_8253,0xff);, PC3置1,允許脈沖輸入(同實驗三) 讀取計數器1的輸出量(PC6)。 do epp_read_data(PC_8255, /*在實驗主板上顯示測頻結果 */,4. 源程序清單 參考實驗指導書附錄I-5。 思考和練習題 1為什么計數器1要工作在方式0能否工作在其余的工作 方式下? 2圖中計數器1和計數器0級聯,計數器1是對計數器0的 溢出計數,其目的是什么? 3不通的閘門時間對測頻結果是否有影響?如何影響? 48253的初始化要在一個脈沖的作用下才能完成,這對 用軟件打開閘門的測頻結果有什么影響?應該怎樣降 低這種影響?,實驗五 雙積分式A/D 轉換器7109 的原理及應用,實驗目的 1.熟悉雙積分式A/D轉換器7109的工作原理和外圍接口設計。 2.深化理解雙積分A/D轉換器及數字電壓表的工作原理。 3.了解雙積分式A/D轉換器7109的簡單應用程序。 4.掌握利用A/D轉換器進行電壓測量的基本方法。,實驗任務 1.編寫利用A/D轉換器進行電壓測量的程序,并通過運行。 2.分析測量數據的誤差及其來源。,工作原理 其主要端口端定義如下: (1)B1B12:12bit的數據輸出端 (2)OR:溢出判別,輸出高電平表示過量程;反之,數據有效。 (3)POL:極性判別,輸出高電平表示測量值為正值;反之,負值。 (4)MODE:方式選擇, 當輸入低電平信號時,轉換器處于直接輸出工作 方式。此時可在片選和字節使能的控制下直接讀取數據;當輸入高電平時, 轉換器將在信號信號握手方式的每一轉換周期的結尾輸出數據(本實驗選 用直接輸出工作方式)。 (5)REF:外部參考電壓輸入(本實驗用其典型值:2.048V)。 (6)INL,INH:輸入電壓端口(有效范圍是參考電壓的2倍)。 (7)OO,OI:外部時鐘輸入(本實驗用其典型值:3.579MHz)。 (8)RUN/:運行/保持輸入, 當輸入高電平時,每經8192時鐘脈沖完成一次 轉換;當輸入低電平時,完成正在進行的轉換,并停在自動調零階段 (9)STATUS:狀態輸出,輸出高電平,表明芯片處于積分和反向積分階段; 輸出為低電平,表明反向積分結束,數據被鎖存,模擬部分處于自動返回 零態階段。,(10)CE/:片選,當其為低電平時,數據正常輸出;當其為高電平時,所 有數據輸出端(B1B12、POL、OR)均處于高阻狀態。 (11)LBEN:低字節使能,輸出低電平時,數據線輸出低位字節B1B8。 (12)HBEN:高字節使能,輸出低電平時,數據線輸出當高位字節B9B12 以及POL、OR的狀態值。 A/D轉換時序(ICL7109直接接口方式),測量放大電路,如圖選擇不通電阻其增益分別為: 引腳“1”腳斷開,增益選擇為1倍。 引腳“1”和“10”相連,增益為10倍; 引腳“1”和“100”相連,增益為100倍; 引腳“1”和“200”相連,增益為200倍; 引腳“1”和“300”相連,增益為300倍;, A/D轉換器7109實驗原理圖, 數據及控制信號接口,本實驗共用到五個端口: 80H(1Y4):輸出口,7109低位字節輸出口。 60H(1Y3):輸出口,7109高位字節輸出口。 22H(1Y1):輸入/輸出端口,D2控制7109起停(R/H), D4位讀取7109的狀態(STATUS)信號(1正 在轉換;0轉換完畢)。 23H(1Y1):輸出口,8255的控制端口,校準測量原理 參見實驗指導書。,編程與調試 1.程序說明 本程序是利用實驗主板上的7109A/D測量輸入電壓,輸入電壓有4 種選擇,測量前必須將輸入電壓端口的跳線選擇到需要測量的那個 端口。增益也有五種選擇(1,10,100,200,300), 可根據實驗需要選擇某一檔,并將其跳線連接好。實驗測得的電壓 值同時在PC機的CRT和實驗主板內的LED上顯示出來。 實驗過程中,可以通過測試點TP2查看7109的工作狀態,通過探 測點TP3查看7109芯片的啟動狀態。,2.編程思路,3.編程步驟 1調用自定義頭文件(同上實驗一)。 2EPP接口初始化(同上實驗一)。 3初始化8255(同上實驗二)。 epp_write_data(CW_8255, 0x8a); /*初始化8255*/ 4PC2置“1”。 8255的端口PC2與芯片7109的啟動端口()直接相連,將PC2置“1”,則啟動芯片7109讓它開始工作。 epp_write_data(CW_8255,0x05);/*PC2置1,啟動芯片7109的轉換 */ 5讀PC4的狀態。 do epp_read_data(PC_8255, /*判斷status值:為1正在轉換;為0轉換完*/,6PC2置“0”。 epp_write_data(CW_8255,0x04); /*PC2置0,R/=停止轉換 */ 7讀取7109轉換完畢的數字量,并將其轉化成電壓值。 epp_read_data(H_7109, 9電壓值顯示在實驗主板內的LED上。,源程序清單 參考實驗指導書附錄I-6。,思考和練習題 1. 雙斜積分式A/D轉換器7109芯片包括哪幾個工作過程? 2. 7109的輸入參考電壓對A/D轉換結果有何影響?如A/D轉換結果 偏大,應如何調節參考電壓? 3. 記錄10組對2.048V的標準電壓由7109A/D轉換結果。如測量結果 偏大,可能是什么原因造成的? 4. 若輸入電壓的范圍是0204.8mV,則參考電壓應調節在多大? 此時電壓測量的分辨率是多大? 5根據校準原理,試用校準方法測量(AIN+)輸入的被測電壓,并 顯示結果。,實驗六 逐次比較式A/D轉換器0809的原理及編程,實驗目的 1.熟悉逐次逼近式A/D轉換器芯片的工作原理。 2.了解A/D轉換芯片0809的接口設計方法。 3.掌握A/D轉換器0809簡單的應用編程。,實驗任務 1.分析本實驗板的電路原理。 2.編寫出逐次逼近式A/D轉換器芯片0809的轉換與顯示的控制 程序,測量通道0-7的輸入的信號。,實驗原理 0809工作原理 ADC0809是8路輸入的8位逐次逼近A/D轉換器,其轉換時間為16個外部時鐘周期。 其主要端口端定義如下: IN7IN0:八個模擬量輸入端。 D7D0:數字量輸出端。 ENABLE:輸出允許信號。當此信號被選中時,允許從A/D轉換器的鎖存器中讀取數字量。高電平有效。 START:啟動A/D轉換,當START為高電平時,A/D轉換開始。 ALE:地址鎖存允許,高電平有效。當ALE為高電平時,允許C、B、A所示的通道被選中,并把該通道的模擬量接入A/D轉換器。 EOC:轉換結束信號。當A/D轉換結束后,發出一個正脈沖,表示A/D轉換完畢。此信號可用作A/D轉換是否完成的檢測信號。 ADDA、ADDB、ADDC:通道號選擇端,C為最高位,A為最低位。 CLOCK:外部時鐘(本實驗采用500KHz的時鐘頻率)。 Vref(),Vref():參考電壓端,用來提供D/A轉換器權電阻的標準電平(本實驗采用典型值:Vref()=5V,Vref()=0V)。,A/D轉換時序, 被測電壓與A/D轉換結果關系,式中: Vin 0809A/D轉換器輸入電壓。 NADC 0809A/D轉換結果的8bit數字量; Vr 0809A/D轉換器外部參考輸入電壓,Vr5.00V;, 數據及控制信號接口, A/D轉換器0809實驗電路圖,本實驗共用到三個端口: 40H47H(1Y2):輸入/輸出端口,0809的地址,控制 字任意。 23H(1Y1):輸出端口,8255的控制端口。 22H(1Y1):輸入端口,查詢0809轉換狀態信號(“0”正 在轉換;“1”轉換完畢)。,編程與調試 (一)0通道測量電壓 1程序說明 輸入電壓有4種選擇,測量前,在實驗主板上必須將跳線選擇到 需要測量的那個端口。增益也有五種選擇(1,10,100, 200,300),可根據實驗需要選擇一檔,并在實驗板上將其跳 線連好。實驗測得的電壓值顯示在PC機的CRT和實驗主板的LED上。 2編程思路,3編程步驟 調用自定義頭文件。 EPP端口初始化。 初始化8255。 epp_write_data(CW_8255, 0x8a); 啟動芯片0809。 epp_write_data(AD_0809,0x00); /*啟動0809進行轉換*/ 讀取轉換狀態量 void eoc(void) unsigned char status; do /*讀8255的pc5的值,為1時轉換完畢*/ epp_read_data(PC_8255, /*狀態為0時,繼續讀取狀態轉換量*/ , 讀取A/D轉換完畢的數字量,放入firstdata中。 epp_read_data(AD_0809, 在LED上的顯示被測電壓值。 4源程序清單 參考實驗指導書附錄I-7。,(二)測量17通道電壓 測量17通道電壓的編程思路和測量0通道的輸入電壓一樣,所不通的只是要根據信號的輸入通道來確定其輸入端口的地址,通道不同其端口地址也不同。下面就僅介紹如何獲取通道地址,其余部分參見上面的0通道測量電壓實驗。 程序的開始要輸入當前實驗所采用的輸入通道(cha),如: printf(“Please input the channel which you will measure(int 1-7) :“); scanf(“%d“,/*輸入值是被測信號輸入的那個通道*/ 芯片0809的基地址為:0x40(AD_0809),選擇通道后,該通道的地址就為:0x40cha(AD_0809cha)。即程序中對端口地址的讀寫就不再是0x40,而是0x40cha。 參考程序實驗指導書附錄I-8。,思考和練習題 1用AD0809采集交流正弦波形,調節信號頻率從 100Hz增加,觀察顯示波形的變化。當多高頻率時,顯示 波形異常,解釋此現象? 2.利用實驗五介紹的校準方法,思考如何進行校準測 量? 3.編寫0通道的有校準測量的實驗程序,電壓輸入端 選擇04.096V,調節其輸入電壓值,比較有無校準的測 量結果,參考源程序見實驗指導書附錄I-9) 。,實驗七 D/A轉換器0832的原理實驗,實驗目的 1.了解典型D/A轉換器DAC0832的工作原理。 2.掌握芯片0832的接口設計方法。,實驗任務 1.找出本實驗中芯片0832的地址。 12.編寫實驗程序,向0832輸入不通的數字電壓以獲得其相應的模擬電壓輸出,并運行通過。 3.記錄實驗中電壓的輸出值。,實驗原理 DAC0832工作原理 主要引腳定義如下: DI0-DI7:8條數據輸入線。 ILE、CS、WR1:三條為輸入鎖存器的選通線,其中ILE為輸 入鎖存器允許信號輸入線(高電平有效),為片選信號輸入線(低 電平有效),為寫信號輸入線(低電平有效)。只有當三條線同時 有效時,輸入數據鎖存器才被選通。 XFER和WR2:二條為DAC鎖存器選通線,其中XFER為傳送控制 信號輸入線(低電平有效), WR2為寫信號輸入線(低電平有效), 只有當二條線同時有效時,DAC鎖存器才被選通。, D/A電流輸出表達式,式中, Io1 DAC0832輸出電流;(Io1Io2常數); NDAC DAC0832數字輸入量; Vr DAC0832外部參考輸入電壓; R DAC0832內部固定電阻,恒為5K。, DAC0832數/模電壓轉換實驗電路,芯片0832的數字電壓輸入端口(DI7DI0)與實驗主板上的八位 雙向數據總線(D7D0)相連;與地址線2Y5相連,則其地址為05H; 參考電壓有以下兩種選擇: AO1來自實驗主板上的信號源(參見實驗八)。 Vr5V來自實驗主板上的參考電壓源,實驗電路原理如下圖。,Vr5V實驗電路, 輸出電壓值的計算 DAC0832直接得到的轉換輸出信號是模擬電流,為得到電壓輸出, 實驗電路加了一個運算放大器,得到單極性的電壓輸出。其中, R=5k;Rfb=15k是固定的內部電阻。則,D/A轉換后的輸出電壓,在本實驗中參考電壓Vref選擇實驗主板上的參考電壓源Vr5V,其理 論值為5V,則D/A轉換后的輸出電壓就為:,本實驗只用到一個端口地址: 05H(2Y5):輸出口,DAC0832(IC35)的地址。,編程與調試 (1)程序說明 向實驗主板上的DAC0832(IC35)寫入不同的數字(0 256),在其輸出端測量其相應的電壓值,因實驗主板上 測試點AO2與其輸出端口直接相連,只要測量測試點AO2, 就可獲取經DAC0832的轉換電壓。程序中在PC機的CRT上 還將顯示對應的理論電壓值,以便實驗者參考。,(2)編程思路,(3)編程步驟 1調用自定義頭文件(同實驗一)。 2EPP接口初始化(同實驗一)。 3啟動芯片DAC0832(實驗主板上的IC35)。 epp_write_data(DA2_0832,0x00); /*啟動0832(IC35)芯片*/ 4向0832寫入數據。 DAC0832是8位的D/A轉換器,故寫入的數據應該在0256之間。epp_write_data(DA2_0832,number); 5在PC機的CRT上顯示轉換電壓。 volt=(float)(number*5.00/256);/*電壓轉換*/ printf(“n%.2f“,volt); /*輸出模擬電壓值*/,思考和練習題 1.為什么測得的電壓值和理論值有區別? 2.數字輸入“0”時,其輸出電壓為什么不為0? 3.測量電壓時,萬用表的負極分別和實驗主板上的模擬 地和數字地相連接,其測得的結果是不是一樣?如 不一樣,為什么? 4.測得的電壓值與輸入數字0時獲得的電壓值的差值與其 相應的理論電壓有什么關系?,(4) 源程序清單 參考程序見實驗指導書附錄I-10,實驗八 DAC0832在程控信號源中的應用,實驗目的 1.了解數字式信號波形合成的原理和方法。 2.掌握程控信號源的工作原理及實現方法。,實驗任務 1.根據本實驗的電路原理圖確定各端口的地址。 2.通過EPP接口控制相應端口,使之產生不同波形、不同頻率和幅度的信號。,實驗原理 波形的數字合成原理 在波形的數字合成中,通常是向D/A轉換器輸入端提 供特定的數據流,則在輸出端便可獲得相應函數波形的 信號電壓。,如圖(a)所示的一個八位二進制的加法計數器對時鐘計數過程中,計數值N按0、1、2、3255、0、1、2、3規律遞增變化,得到一串8位二進制碼的數據流,把它送入DAC的輸入端,則DAC的輸出Uo(t) 呈梯形的增長,獲得如圖(b)所示的波形。若每步跳為0.01V,則Uo(t)從02.55V的范圍變化。 若采用一個可逆計數器對時鐘信號交替地作加、減計數時,N的變化為0、1、2、3255、254、2533、2、1、0、1、2,則Uo將獲得一個三角波的輸出電壓。,本實驗如果采用所示的方案,在計數器和DAC之間 接入一個ROM,先在ROM中寫入某一函數的幅值數據,根 據加法(或減法)計數器提供的地址碼,取出相應地址 單元的內容,送至DAC輸入端,則可獲得任意波形的輸出。 如三角波、矩形波、正弦波、辛克波(sinx/x)、鐘形 波等。, DAC0832工作原理 程控信號源實驗電路,程控的實現 在8KB 的EPROM中固化有16種波形數據,由高4位地址A8A11選擇;每一 種波形的一個周期由256個數據代碼構成,由低8位地址A0A7尋址。EPROM 高4位地址A8A11來自鎖存器74LS273的高4位Q5Q8,通過對74LS273的編 程可實現波形的程控。 選擇好波形后,該波形的256個數據點的8位地址A7A0由一個8位地址計 數器(二進制計數器)循環計數產生。實驗主板上采用了兩個4位二進制計 數器74LS169級聯實現。通過改變地址計數器的輸入時鐘頻率便可控制波形 數據從EPROM中讀出的速率,從而改變輸出頻率。固定的2MHz頻率通過一 74LS169向地址計數器提供輸入時鐘。計數器74LS169采用減計數的工作方式, 4位預置初值位A、B、C、D與74LS273的低4位Q1Q4相連,通過對74LS273的 編程可實現頻率的 程控。 DAC0832(IC33)的數據寫入控制端WR1與74LS169的動態進位輸出TC相連, 同時TC又作為波形數據點地址計數器的時鐘,這使得每個地址狀態對應一個 信號周期,從而實現地址計數器、波形EPROM及DAC0832(IC33)的同步工作。 將AO1作為DAC0832(IC35)的參考電壓(參見實驗七的圖7-1),DAC0832 (IC35)就構成一個8位程控衰減器。通過控制寫入DAC0832(IC35)的8位 數字量,可實現對電壓幅度的程控。,輸出電壓值的計算 在本實驗中,第一片DAC0832(IC33)的輸出電壓為:,第二片DAC0832(IC35)的輸出電壓為:, 輸出信號及其 對應的控制數據,本實驗共用到二個端口地址 04H(2Y4):輸出口,鎖存器273地址,對程控信號源波 形、頻率控制。 05H(2Y5):輸出口,第二片DAC0832(IC35)地址, 程控信號源幅度控制。,編程與調試 (一)程序說明 程控信號源可輸出16種波形(正弦波、方波。鋸齒 波(1)、鋸齒波(2)、梯形波、三角波、臺階波(1)、 臺階波(2)、臺階三角波、全波整流波、鐘形波、辛克 波、對數波、M波、調幅波、窄脈沖波),幅度范圍位 05V。 本實驗中,可在AO1和AO2口測量獲得的波形。,(二)編程思路,(三)編程步驟 1調用自定義頭文件(同實驗一)。 2EPP端口初始化(同實驗一)。 3選擇波形和分頻數。 例如要選擇1倍分頻的方波,則高四位分別為0001,低 四位分別為0001: epp_write_data(AD1_0832,0x11); 4電壓幅度的控制。 (四)源程序清單 參考程序見實驗指導書附錄I-10。,思考和練習題 1.若分頻器的輸入數據增大,則產生的波形頻率是增 大還是減小? 2.若DAC0832(IC35)的輸入數據增大,產生的信號幅 度是增大還是減小? 3.本實驗主板產生的信號頻率范圍如何?有多少個點 頻信號輸出,其頻率值分別為多少? 4.本實驗主板產生的信號幅度范圍如何?有多少個幅 度值輸出,每跳步的幅度間值相同嗎?,實驗九 LED點陣顯示技術,實驗目的 1.了解LED點陣顯示的原理及接口驅動方法。 2.熟悉動態掃描顯示方式在顯示技術中的應用。 3.掌握并行接口與點陣顯示的硬件接口和軟件編程。 實驗任務 1.編寫使點陣塊全亮和全滅的點陣顯示驅動程序段。 2.編寫簡單的點陣顯示程序,在LED點陣板顯示漢字。 3.編寫在LED點陣顯示上顯示任意字符的點陣顯示程序。,實驗原理 LED點陣簡介 LED點陣式顯示器不僅可以顯示數字,也可顯示所有 西文字母和符號,與由單個發光二極管連成的顯示器相 比,具有焊點少、連線少,所有亮點在同平面、亮度均 勻、外形美觀等優點,可以代替數碼管、符號管和米字 管。如果將多塊組合,可以構成大屏幕顯示屏,用于漢 字、圖形、圖表等等的顯示,因此被廣泛用于機場、車 站、碼頭、銀行及許多公共場所的指示、說明、廣告等 場合。, 88的LED點陣顯示器結構,88的LED點陣顯示器,是由64個LED組成, 內部電路如圖9-1所示。 共陽極的8 8的LED點陣顯示器的典型連接方式是:每一行的陽極連 在一起,由行掃描碼鎖存器和驅動器的一位控制,總共8行陽極連線由 8位分別控制;每一列的8個陰極連在一起,由字形行碼鎖存器和驅動 器的一位控制,總共8列陰極連線由8位分別控制。, 點陣字符的字型碼,在寫點陣顯示的驅動之前,應知道各顯示字符的字形碼。上圖 是四塊8 8的LED點陣拼成的一個16 16點陣(16列16行)作為 1位字符顯示的點陣碼圖。(本實驗采用相同的顯示方式顯示一個字 符)。,點陣字符的驅動 點陣式LED顯示器采用逐行掃描式工作。要使點陣顯示出一個的字符的編程方法是:首先向字形行掃描碼鎖存器輸入行碼,選通第一行;接著,向行碼鎖存器寫入該行的字型碼。然后,按相同的方式選通第二行,寫第二行的字型碼由此類推,直到寫完所有行的字型碼,完成一個字符的顯示。 如果要使多個點陣循環顯示多個字符,只要把顯示的各個字符按順序安排在顯示緩沖區,然后根據顯示的字符去查表,再按一定的時序向各個字形行碼鎖存器和行掃描器輸入相應的字形行碼和行掃描碼,便可達到目的。,字庫原理 led點陣顯示的原理和過程都很簡單,只是輸入每個字符的顯示點陣碼很繁瑣。多字符的顯示采用的方法是讀字庫,查出顯示字的點陣碼,再顯示到顯示屏上。 國標對漢字庫(區位碼字庫)的結構作了統一的規定:將漢字庫分為若干個區,每個區有94個漢字。每一個漢字在字庫中有一個固定的區和位,即每一個漢字有一個區位碼。知道了區位碼也就相當于知道了漢字在字庫中的位置。由于漢字的內碼與區位碼有一定的關系,所以,只要通過內碼就可以得到區位碼,從而也就得到了漢字的字模。,由于計算機對西文字符采用一個字節表示,漢字用二個字節(GBK內碼)表示。為了保證中西文兼容,因此規定每個字節只用七位,若兩個字節的最高位均為1,則該字符為漢字。即計算機中的數字和一些特殊符號按ASC編碼方式,漢字和一些符號是GBK內碼編碼方式來表示。而點陣顯示字庫是按區位編碼方式排列。因此,讀字庫之前,要完成ASC編碼與區位編碼的轉換和GBK內碼編碼與區位編碼之間的轉換。 UCDOS 16點字庫文件(HZK16j) 本實驗是讀 UCDOS 16點字庫文件(HZK16j)。字庫中的漢字按 共陽極1616點陣模式存儲,即每個漢字由1616=256個點組成, 占用162=32個連續的字節單元。字節的每一位(bit)表示一個點 的屬性:1表示亮點,0表示暗點。字符點陣是按照漢字區位碼排列 的,連續的兩個字節表示該漢字字模的一行。, GBK內碼與相應區位碼的轉換 漢字的內碼從一些圖形字符開始,起始編碼為 A1A1H;漢字內碼 第一位為區碼,每區為 94 個漢字,第二位為位碼。漢字點陣數據 在字庫中的偏移量為: (區碼-A1H)*94 + (位碼-A1H)*32L 由此可編輯偏移量的源代碼為 inter_code.ed1=charactercount; point_quwei=inter_code.ed; /*尋找字符在漢字庫中的位*/ wei=(point_quwei , ASC碼與相應區位碼的轉換 ASC碼的所有符號全在區位碼的第三區,位碼的偏移量為0x21H。 ASC碼在字庫中的偏移量為: (區碼*94 + (位碼-21H)*32L 由此可編輯偏移量的源代碼為: inter_code.ed0=charactercount; point_quwei=inter_code.ed; /*尋找字符咱漢字庫中的位*/ wei= (point_quwei , LED點陣式顯示器實驗電路,本實驗共用到的端口地址(地址跳線選擇1Y6): C1H(Y0):輸出口,行掃描碼鎖存器地址 C2H (Y2):輸出口,字形行碼左鎖存器地址 C3H (Y3):輸出口,字形行碼右鎖存器地址,編程與調試 (一)簡單的漢字顯示 1程序說明 該程序為根據每個字符的點陣碼(1616),直接在LED點陣上 顯示漢字“電子科大”。 2編程思路,3編程步驟 根據需要選擇自定義頭文件(同實驗一)。 EPP端口初始化(同實驗一)。 選擇點亮行。 要點亮某行的LED,先要向行地址端口寫入行數,例如要點亮第 一行: epp_write_out(ROW_DOT,0x00); 寫入每列的點陣碼。 要點亮某行的LED,向行地址寫入數據后,先向左邊列寫數據再 向右邊列寫數據。例如我們要點亮第一行的第一、三、五、七、九、 十一、十三、十五列: epp_write_out(ROW_DOT,0x00); /*選擇第幾行*/ epp_write_out(L_DOT,0xaa); /*向左邊列寫入數據*/ epp_write_out(H_DOT,0xaa); /*向右邊列寫入數據*/,4源程序清單 參考程序見實驗指導書附錄I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論