微機(jī)原理與接口技術(shù)課件_第1頁(yè)
微機(jī)原理與接口技術(shù)課件_第2頁(yè)
微機(jī)原理與接口技術(shù)課件_第3頁(yè)
微機(jī)原理與接口技術(shù)課件_第4頁(yè)
微機(jī)原理與接口技術(shù)課件_第5頁(yè)
已閱讀5頁(yè),還剩361頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理與接口技術(shù)

實(shí)驗(yàn)講稿(PPT)電子科技大學(xué)自動(dòng)化工程學(xué)院(習(xí)友寶副教授)2005年6月微機(jī)原理與接口技術(shù)

實(shí)驗(yàn)講稿(PPT)電子科技大學(xué)自動(dòng)化工1微機(jī)原理與接口技術(shù)課件2實(shí)驗(yàn)項(xiàng)目實(shí)驗(yàn)箱簡(jiǎn)介基于EPP接口的LED顯示8255并行接口原理及編程8253計(jì)數(shù)器原理及分頻實(shí)驗(yàn)8253計(jì)數(shù)器在測(cè)頻中的應(yīng)用雙積分式A/D轉(zhuǎn)換器7109的原理及編程逐次比較式A/D轉(zhuǎn)換器0809的原理及編程D/A轉(zhuǎn)換器0832的原理實(shí)驗(yàn)DAC0832在程控信號(hào)源中的應(yīng)用LED點(diǎn)陣顯示基本并行輸入/輸出口在鍵盤(pán)接口中的應(yīng)用8250串行通信電子稱實(shí)驗(yàn)

實(shí)驗(yàn)項(xiàng)目實(shí)驗(yàn)箱簡(jiǎn)介3實(shí)驗(yàn)箱簡(jiǎn)介實(shí)驗(yàn)箱的組成原理

▼實(shí)驗(yàn)主板的原理實(shí)驗(yàn)主板是由并行I/O、定時(shí)器/計(jì)數(shù)器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器及LED顯示器等接口部件構(gòu)成,采用了總線結(jié)構(gòu),各功能部件均通過(guò)內(nèi)部總線進(jìn)行連接,如下圖所示。

實(shí)驗(yàn)箱簡(jiǎn)介實(shí)驗(yàn)箱的組成原理4實(shí)驗(yàn)主板的內(nèi)總線結(jié)構(gòu)

實(shí)驗(yàn)主板的內(nèi)總線結(jié)構(gòu)5▼實(shí)驗(yàn)主板的布局▼實(shí)驗(yàn)主板的布局6EPP接口原理▼EPP信號(hào)特性,其引腳定義如下圖EPP接口原理7▼EPP端口寄存器端口地址如表下圖所示。表中BASE為并口基地址,▼EPP端口寄存器8

狀態(tài)寄存器和控制寄存器各位具體定義如下圖所示。

狀態(tài)寄存器和控制寄存器各位具體定義如下圖所示。9▼EPP接口初始化

在使用EPP之前應(yīng)將并口置于正向傳輸模式(輸出),即將控制寄存器的方向位(Bit5)置0??删帉?xiě)EPP初始化函數(shù)epp_init()如下:voidepp_init(void){ outportb(0x37a,0x04);

}▼EPP接口初始化10▼EPP時(shí)序數(shù)據(jù)/地址寫(xiě)周期時(shí)序

微機(jī)原理與接口技術(shù)課件11數(shù)據(jù)/地址讀周期時(shí)序

微機(jī)原理與接口技術(shù)課件12▼EPP端口讀寫(xiě)計(jì)算機(jī)要同外設(shè)實(shí)驗(yàn)箱通信,就要通過(guò)EPP接口來(lái)讀寫(xiě)數(shù)據(jù),因此,首先應(yīng)向EPP地址端口(BASE+3)寫(xiě)入欲訪問(wèn)的外設(shè)地址,然后從EPP數(shù)據(jù)端口(BASE+4)讀寫(xiě)數(shù)據(jù),每次讀寫(xiě)1個(gè)字節(jié)

▼EPP端口讀寫(xiě)13EPP端口寫(xiě)函數(shù)epp_write_data()

voidepp_write_data(unsignedcharpaddr,unsignedchardata){outportb(0x37b,paddr);epp_check_clear(); outportb(0x37c,data); epp_check_clear();}

EPP端口寫(xiě)函數(shù)epp_write_data()14EPP端口讀函數(shù)epp_read_data()

voidepp_read_data(unsignedcharpaddr,unsignedchar*data){outportb(0x37b,paddr); epp_check_clear();

*data=inportb(0x37c); epp_check_clear(); }微機(jī)原理與接口技術(shù)課件15EPP接口與本實(shí)驗(yàn)平臺(tái)的連接,如下EPP接口與本實(shí)驗(yàn)平臺(tái)的連接,如下16擴(kuò)展接口擴(kuò)展接口的原理及管腳定義如下圖所示。

擴(kuò)展接口17鍵盤(pán)、點(diǎn)陣實(shí)驗(yàn)擴(kuò)展板,原理框圖如下:鍵盤(pán)、點(diǎn)陣實(shí)驗(yàn)擴(kuò)展板,原理框圖如下:18串口實(shí)驗(yàn)擴(kuò)展板,原理框圖如下:串口實(shí)驗(yàn)擴(kuò)展板,原理框圖如下:19端口地址為了方便同學(xué)們的在實(shí)驗(yàn)中更快,更方便的找到實(shí)驗(yàn)板上各個(gè)芯片的端口地址,在實(shí)驗(yàn)指導(dǎo)書(shū)上詳細(xì)列出了各個(gè)端口的地址及其簡(jiǎn)要的功能描敘。端口地址20頭文件

在本實(shí)驗(yàn)指導(dǎo)書(shū)的附錄里,列舉了部分實(shí)驗(yàn)的參考源程序,以便同學(xué)們?cè)趯W(xué)習(xí)的過(guò)程中參考。為了使程序更簡(jiǎn)化、直觀,將常用的地址端口和函數(shù)定義成頭文件的形式,其頭文件有:①paddr.h對(duì)實(shí)驗(yàn)板內(nèi)地址進(jìn)行了宏定義。②eppinit.hEPP接口初始化。③epprw.hEPP端口的讀/寫(xiě)。④displed.hLED數(shù)字顯示函數(shù)。頭文件21實(shí)驗(yàn)一EPP接口驅(qū)動(dòng)LED顯示

實(shí)驗(yàn)?zāi)康?.熟悉EPP接口的輸入/輸出及讀/寫(xiě)操作。2.掌握七段LED顯示驅(qū)動(dòng)原理及接口方法。3.熟悉C語(yǔ)言。實(shí)驗(yàn)一EPP接口驅(qū)動(dòng)LED顯示實(shí)驗(yàn)?zāi)康?2實(shí)驗(yàn)任務(wù)1.分析實(shí)驗(yàn)主板電路,指出輸入/輸出口地址。2.編寫(xiě)LED顯示程序,使實(shí)驗(yàn)主板上的四個(gè)LED顯示任意四位數(shù)字和任意一位的小數(shù)點(diǎn),并通過(guò)調(diào)試。

實(shí)驗(yàn)任務(wù)23實(shí)驗(yàn)原理▼LED顯示器原理7段LED顯示器的結(jié)構(gòu)和8位字節(jié)數(shù)的對(duì)應(yīng)關(guān)系如下圖:實(shí)驗(yàn)原理24▼LED顯示實(shí)驗(yàn)電路

實(shí)驗(yàn)箱主板上帶有的四位LED顯示器采用四片CD4511(BCD-七段鎖存譯碼器)來(lái)驅(qū)動(dòng)。其原理圖如下:▼LED顯示實(shí)驗(yàn)電路25▼4位LED顯示的端口操作為:

微機(jī)原理與接口技術(shù)課件26本實(shí)驗(yàn)共用到的端口地址及其功能介紹00H(2Y0):輸出口,用作后兩位顯示譯碼驅(qū)動(dòng)器4511的鎖存使能信號(hào)。01H(2Y1):輸出口,用作前兩位顯示譯碼驅(qū)動(dòng)器4511的鎖存使能信號(hào)。03H(2Y3):輸出口,用作4位小數(shù)點(diǎn)鎖存器74LS273的控制CLK信號(hào)。

本實(shí)驗(yàn)共用到的端口地址及其功能介紹27編程與調(diào)試

▼程序說(shuō)明

該程序設(shè)計(jì)功能為:①先從最高位開(kāi)始依次顯示1,2,3,4,顯示時(shí)只有一位顯示,其它位熄滅。②從高到低輪流點(diǎn)亮小數(shù)點(diǎn)。③依次顯示0000,1111,2222,3333,......一直到9999。編程與調(diào)試28▼編程思路

微機(jī)原理與接口技術(shù)課件29▼編程步驟

①調(diào)用自定義頭文件#include"paddr.h"#include"epprw.h"#include"displed.h"#include"eppinit.h"②EPP端口初始化epp_init();③LED的數(shù)字顯示在LED上顯示某個(gè)數(shù),只要在對(duì)應(yīng)的字節(jié)上寫(xiě)入這個(gè)數(shù)即可,例如:要在第二位LED上顯示1,第一位LED上顯示5,只要先向EPP地址端口寫(xiě)入這兩位的地址0x00(D_LED),再向EPP數(shù)據(jù)端口寫(xiě)入相應(yīng)的數(shù)據(jù)。epp_write_data(D_LED,0x15);如果想要熄滅某個(gè)LED,只要在相應(yīng)的位上寫(xiě)入10到15的任意一個(gè)數(shù)。程序中利用此方法循環(huán)點(diǎn)亮LED。

▼編程步驟30思考和練習(xí)題

若不對(duì)EPP接口進(jìn)行初始化,會(huì)發(fā)生什么現(xiàn)象?為什么?編寫(xiě)循環(huán)點(diǎn)亮四位小數(shù)點(diǎn)的程序??梢酝瑫r(shí)點(diǎn)亮四位的小數(shù)點(diǎn)嗎?如果可以,應(yīng)怎樣設(shè)置其端口控制字?思考和練習(xí)題31實(shí)驗(yàn)二8255并行接口原理及編程

實(shí)驗(yàn)?zāi)康?.熟悉8255內(nèi)部結(jié)構(gòu)和外部引腳定義。

2.熟悉8255并行接口的原理和接口方法。

3.掌握8255的簡(jiǎn)單應(yīng)用編程。

實(shí)驗(yàn)二8255并行接口原理及編程實(shí)驗(yàn)?zāi)康?2實(shí)驗(yàn)任務(wù)

1.編寫(xiě)出8255的初始化程序。2.編寫(xiě)出循環(huán)控制發(fā)光二極管的顯示程序,并運(yùn)行通過(guò)3.編寫(xiě)出交通燈控制模擬程序。4.理清8255的一些與實(shí)驗(yàn)板上其他芯片相連接的I/O端口電路。5.掌握對(duì)8255PC口的位操作。

實(shí)驗(yàn)任務(wù)33實(shí)驗(yàn)原理

8255工作原理

8255有8條數(shù)據(jù)引腳D0~D7,它們?nèi)渴请p向、三態(tài),用來(lái)與數(shù)據(jù)總線相連接;另外,還有6條輸入控制引腳,分別是:①RESET:復(fù)位輸入信號(hào),高電平有效。當(dāng)RESET有效時(shí),將梭魚(yú)哦內(nèi)部寄存器,包括控制寄存器清零,而且把A、B、C三個(gè)都設(shè)為輸入方式,對(duì)應(yīng)的PA7~PA0、PB7~PB0、PC7~PC0引腳均為高阻態(tài)。②CS:芯片選中信號(hào),輸入低電平有效。只有當(dāng)它為低電平時(shí),8255才被CPU選中。③A0和A1:芯片內(nèi)部寄存器的選中信號(hào)。當(dāng)有效時(shí),8255被選中,再由A0、A1的編碼決定選中通道A、B、C,還是控制寄存器。④RD:讀信號(hào)。輸入低電平有效。當(dāng)它為低電平時(shí),由CPU讀出8255的數(shù)據(jù)或者狀態(tài)信息。⑤WR:寫(xiě)信號(hào)。輸入低電平有效當(dāng)它為低電平時(shí),由CPU將數(shù)據(jù)或命令寫(xiě)到8255。CS、A0、A1、WR、五根引腳的電平與8255操作的關(guān)系,詳見(jiàn)下表

實(shí)驗(yàn)原理34

8255通道選擇和基本操作表

35▼

8255控制字①8255方式選擇控制字方式0――基本輸入/輸出方式1――選通輸入/輸出方式2――雙向數(shù)據(jù)傳送方式0――基本輸入/輸出36②8255按位置位/復(fù)位的控制字通道C的每一位都可以通過(guò)向控制寄存器寫(xiě)入置位/復(fù)位控制字,而使它相應(yīng)位置位(即輸出為1)或復(fù)位(即輸出為0)。通道C置位、復(fù)位控制字的具體格式下圖所示。

②8255按位置位/復(fù)位的控制字37▼實(shí)驗(yàn)電路圖

▼實(shí)驗(yàn)電路圖38▼本實(shí)驗(yàn)用到的端口地址:23H(1Y1):輸出口,8255的控制端口20H(1Y1):輸出口,8255端口A的地址21H(1Y1):輸入口,8255B端口B的地址22H(1Y1):輸入/輸出口,8255端口C的地址

▼本實(shí)驗(yàn)用到的端口地址:39編程與調(diào)試(一)交通燈實(shí)驗(yàn)1.程序說(shuō)明通過(guò)對(duì)8255的A口讀/寫(xiě)命令,來(lái)循環(huán)點(diǎn)亮與A口相連接的紅、黃、綠三個(gè)發(fā)光二級(jí)管。在點(diǎn)亮的過(guò)程中,同時(shí)在LED上顯示時(shí)間,從60秒開(kāi)始倒計(jì)時(shí),60秒到6秒紅燈亮,5秒到1秒黃燈亮,然后再?gòu)膹?0秒開(kāi)始倒計(jì)時(shí),60秒到6秒綠燈亮,5秒到1秒黃燈亮。依次循環(huán)。編程與調(diào)試402.編程思路2.編程思路413.編程步驟①調(diào)用自定義頭文件(同上實(shí)驗(yàn)一)。

②EPP端口初始化(同上實(shí)驗(yàn)一)。③

初始化8255。在本實(shí)驗(yàn)中設(shè)計(jì)為方式0、A口輸出、B口輸入,故向控制寄存器寫(xiě)入的數(shù)據(jù)為0x82。在交通燈的實(shí)驗(yàn)中,我們就用到A口的輸出。8255的片選由1Y1來(lái)控制,其控制寄存器的地址為0x23(CW_8255)。epp_write_data(CW_8255,0x82);④向8255的A口寫(xiě)數(shù)據(jù)。由指示燈的硬件電路可知,與其相連的端口輸出為低電平,指示燈亮;輸出為高電平,指示燈滅。在本實(shí)驗(yàn)中我們要依次點(diǎn)亮紅色、黃色、綠色、黃色。

epp_write_data(PA_8255,0xfe);/*點(diǎn)亮紅色指示燈*/

delay(10000);/*延時(shí)*/epp_write_data(PA_8255,0xfd);/*點(diǎn)亮黃色指示燈*/delay(10000);epp_write_data(PA_8255,0xfb);/*點(diǎn)亮綠色指示燈*/delay(10000);epp_write_data(PA_8255,0xfd);/*點(diǎn)亮黃色指示燈*/

3.編程步驟42⑤點(diǎn)亮實(shí)驗(yàn)板上的LED。在點(diǎn)亮指示燈的同時(shí),要在LED上顯示點(diǎn)亮?xí)r間,這個(gè)數(shù)字顯示程序可直接調(diào)用上面介紹過(guò)的LED數(shù)字顯示程序。

epp_write_data(PA_8255,0xfe);/*點(diǎn)亮紅色指示燈*/for(i=60;i>5;i--) /*點(diǎn)亮?xí)r間55秒*/{ displed(i,0);/*調(diào)用LED數(shù)字顯示函數(shù)*/

for(j=0;j<100;j++) delay(1000); if(kbhit())exit(0);

}4.源程序清單參考指導(dǎo)書(shū)附錄I-2。⑤點(diǎn)亮實(shí)驗(yàn)板上的LED。43(二)A、B并行口實(shí)驗(yàn)1.程序說(shuō)明該程序?yàn)橥ㄟ^(guò)操作與8255的B口相連的開(kāi)關(guān)鍵,來(lái)控制與8255的A口相連的發(fā)光二極管的亮和滅。2.編程思路(二)A、B并行口實(shí)驗(yàn)443.編程步驟①調(diào)用自定義頭文件(同上)。②EPP端口初始化(同上)。③初始化8255(同上)。④讀取8255的B端口的數(shù)據(jù)與8255的B端口相連接的是8個(gè)開(kāi)關(guān)控制器,通過(guò)操作這些開(kāi)關(guān)可以使與其相連的B端口呈現(xiàn)高電平“1”或者低電平“0”。epp_read_data(PB_8255,&data);⑤向A端口寫(xiě)數(shù)據(jù)epp_write_data(PA_8255,data)4.源程序清單參考實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-3。3.編程步驟45思考和練習(xí)

1.交通燈實(shí)驗(yàn)中如何同時(shí)點(diǎn)亮多個(gè)指示燈。2.能否從A口輸出C口的獲取量。3.在不同的工作方式下,考慮I/O口的外設(shè)連接。思考和練習(xí)46實(shí)驗(yàn)三8253計(jì)數(shù)器原理及分頻實(shí)驗(yàn)

實(shí)驗(yàn)?zāi)康?.熟悉8253定時(shí)器/計(jì)數(shù)器的功能及接口方法。2.熟悉8253的分頻原理。

3.掌握8253的分頻應(yīng)用編程。

實(shí)驗(yàn)三8253計(jì)數(shù)器原理及分頻實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?7實(shí)驗(yàn)任務(wù)1.分析本實(shí)驗(yàn)主板上8253的硬件電路原理。2.熟悉8253的工作原理后,編寫(xiě)出8253的初始化程序。3.編寫(xiě)出8253分頻程序,觀察實(shí)驗(yàn)顯現(xiàn)。

實(shí)驗(yàn)任務(wù)48實(shí)驗(yàn)原理

▼8253的引腳8253有3個(gè)獨(dú)立的16位減計(jì)器通道,每一個(gè)通道有三條引線:CLK、GATE和OUT。①CLK:輸入時(shí)鐘,8253規(guī)定,加在CLK引腳的輸入時(shí)鐘周期不能小于380ns。②GATE:門(mén)控信號(hào)輸入引腳。這是控制計(jì)數(shù)器工作的一個(gè)外部信號(hào)。當(dāng)GATE引腳為低時(shí),通常都是禁止計(jì)數(shù)器工作的;只有GATE為高時(shí),才允許計(jì)數(shù)器工作。③OUT:輸出引腳。當(dāng)計(jì)數(shù)到“0”時(shí),OUT引腳上必然有輸出,輸出信號(hào)波形取決于工作方式。實(shí)驗(yàn)原理498253內(nèi)部端口的選擇及每個(gè)通道的讀/寫(xiě)操作的選擇如下表所示

8253內(nèi)部端口的選擇及每個(gè)通道的讀/寫(xiě)操50▼8253的端口控制子微機(jī)原理與接口技術(shù)課件51▼8253的工作方式和輸出波形

▼8253的工作方式和輸出波形52▼實(shí)驗(yàn)電路組成原理框圖▼實(shí)驗(yàn)電路組成原理框圖53▼本實(shí)驗(yàn)共用到六個(gè)端口地址:23H(1Y1):輸出口,8255的控制端口22H(1Y1):輸出端口(PC3),發(fā)出計(jì)數(shù)器0的閘門(mén)信號(hào)(0為關(guān),1為開(kāi))A0H(1Y5):輸入/輸出端口,8253計(jì)數(shù)器0的讀寫(xiě)口A1H(1Y5):輸入/輸出端口,8253計(jì)數(shù)器1的讀寫(xiě)口A3H(1Y5):輸出端口,8253的控制寄存器的端口▼本實(shí)驗(yàn)共用到六個(gè)端口地址:54編程與調(diào)試1.程序說(shuō)明對(duì)8253的計(jì)數(shù)器0和1寫(xiě)入初值,使計(jì)數(shù)器1輸出一定頻率的方波,從而使得與計(jì)數(shù)器1輸出端相連接的指示燈循環(huán)亮和滅。

2.編程思路

編程與調(diào)試553.編程步驟①調(diào)用自定義頭文件(同上實(shí)驗(yàn)一)。②EPP端口初始化(同上實(shí)驗(yàn)一)。③初始化8255。8255的控制字應(yīng)該定義C口的低位為輸出口,工作方式為方式0。epp_write_data(CW_8255,0x8a);④PC3口置“0”,阻止脈沖輸入。初始化8253前,要阻止脈沖輸入,就要向PC3口置0,8255的C口的各個(gè)端口可以直接置位和復(fù)位。epp_write_data(CW_8255,0x06);⑤初始化8253。8253的計(jì)數(shù)器0、計(jì)數(shù)器1,工作方式分別為方式2和方式3,都是先寫(xiě)低字節(jié)再寫(xiě)高字節(jié)和BCD碼計(jì)數(shù)。向計(jì)數(shù)器0置入初值是1000,向計(jì)數(shù)器1置入的初值也是1000。3.編程步驟56/*8253的0口初始化,寫(xiě)1000進(jìn)去*/epp_write_data(CW_8253,0x35);epp_write_data(CT0_8253,0x00);epp_write_data(CT0_8253,0x10);

/*8253的1口初始化,設(shè)置時(shí)間為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.源程序清單參考實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-4。/*8253的0口初始化,寫(xiě)1000進(jìn)去*/57思考和練習(xí)題

1.向計(jì)數(shù)器0和計(jì)數(shù)器1寫(xiě)入不通的值,指示燈會(huì)出現(xiàn)什么現(xiàn)象?2.計(jì)數(shù)器0和1采用不同的工作方式,指示燈有什么現(xiàn)象。3.8253的初始化要在一個(gè)脈沖的作用下才能完成,這對(duì)實(shí)驗(yàn)中計(jì)數(shù)器輸出信號(hào)的頻率有沒(méi)有影響?

思考和練習(xí)題58實(shí)驗(yàn)四8253計(jì)數(shù)器在測(cè)頻中的應(yīng)用

實(shí)驗(yàn)?zāi)康?.了解頻率測(cè)量原理。2.掌握8253的應(yīng)用編程。實(shí)驗(yàn)任務(wù)1.進(jìn)一步理解8253的硬件電路原理。2.根據(jù)測(cè)頻原理,編寫(xiě)出8253的測(cè)頻程序,并運(yùn)行通過(guò)。

實(shí)驗(yàn)四8253計(jì)數(shù)器在測(cè)頻中的應(yīng)用實(shí)驗(yàn)?zāi)康?9實(shí)驗(yàn)原理▼頻率測(cè)量原理所謂“頻率”,就是周期性信號(hào)在單位時(shí)間變化的次數(shù)。若在一定時(shí)間間隔T內(nèi),計(jì)得這個(gè)周期信號(hào)得重復(fù)變化次數(shù)為N,則其頻率可表達(dá)為:f=N/T。電子計(jì)數(shù)器就是嚴(yán)格按照該定義進(jìn)行測(cè)頻得。其原理方框圖和工作時(shí)間波形下圖所示。實(shí)驗(yàn)原理60▼8253的工作原理。▼自激振蕩電路

圖中將滑動(dòng)變阻器Rw左邊的阻值設(shè)為Rx,令R=Rx+R1。當(dāng)R=R2時(shí),當(dāng)R<<R2時(shí),

本實(shí)驗(yàn)主板上設(shè)計(jì)的是第二種情況,通過(guò)調(diào)節(jié)滑動(dòng)變阻器Rw可獲得不同頻率的信號(hào)源。▼8253的工作原理。圖中將滑動(dòng)變阻器Rw左邊的阻值設(shè)為R61▼電路原理①輸入單元:輸入的待測(cè)信號(hào)fx有以下三種來(lái)源:a.AO2是自D/A0832(程控信號(hào)源)輸出的信號(hào),詳見(jiàn)實(shí)驗(yàn)六。b.FX是外界直接輸入的信號(hào)。c.實(shí)驗(yàn)主板上自帶的振蕩電路源。②計(jì)數(shù)部分:被測(cè)頻率信號(hào)由8253的計(jì)數(shù)器2計(jì)數(shù)▼電路原理①輸入單元:輸入的待測(cè)信號(hào)fx有以下三種來(lái)源:62③時(shí)基信號(hào)產(chǎn)生與變換單元④邏輯控制單元開(kāi)門(mén)信號(hào)由8255的PC3控制。計(jì)數(shù)器0的輸出(OUT0)和計(jì)數(shù)器1的時(shí)鐘(CLK1)直接相連,計(jì)數(shù)器1的OUT1通過(guò)反相器,控制計(jì)數(shù)器2的CLK2的信號(hào)輸入,完成硬件方面的控制。實(shí)驗(yàn)波形如下圖4所示(計(jì)數(shù)器0、1、2的工作方式依次為方式2、0、2,閘門(mén)信號(hào)全部為高)微機(jī)原理與接口技術(shù)課件63▼閘門(mén)時(shí)間在本實(shí)驗(yàn)中初始化8253時(shí),設(shè)定計(jì)數(shù)器0、1、2的工作方式分別為0方式2、0、2,向計(jì)數(shù)器0、1、2中置入的數(shù)據(jù)一次為為N0、N1、N2。定義計(jì)數(shù)器0的時(shí)鐘輸入頻率為F。閘門(mén)(PC3)打開(kāi)后,信號(hào)F進(jìn)入計(jì)數(shù)器0,計(jì)數(shù)器0工作在方式2經(jīng)N0分頻后輸出的波形信號(hào)頻率f0為:(1)計(jì)數(shù)器0輸出的頻率為f0的信號(hào)作為計(jì)數(shù)器1時(shí)鐘信號(hào)(CLK1),計(jì)數(shù)器1工作在方式0,經(jīng)N1分頻后輸出的波形信號(hào)頻率f1為:

由式(1)、(2)得:

(2)(3)▼閘門(mén)時(shí)間(1)計(jì)數(shù)器0輸出的頻率為f0的信號(hào)作為計(jì)數(shù)器164計(jì)數(shù)器1輸出的頻率為f1的信號(hào)作為被測(cè)信號(hào)fx的門(mén)控信號(hào),則信號(hào)f1的周期即為閘門(mén)時(shí)間T,由式(3)得:

(4)本實(shí)驗(yàn)共用到六個(gè)端口地址:23H(1Y1):輸出端口,8255的控制端口22H(1Y1):輸出端口(PC3),發(fā)出計(jì)數(shù)器0的閘門(mén)信號(hào)(0為關(guān),1為開(kāi))輸入端口(PC6),讀取計(jì)數(shù)器2的閘門(mén)信號(hào)(0為開(kāi),1為關(guān))A3H(1Y5):輸出端口,8253計(jì)數(shù)器的控制寄存器的端口A0H(1Y5):輸入/輸出端口,8253計(jì)數(shù)器0的讀寫(xiě)口A1H(1Y5):輸入/輸出端口,8253計(jì)數(shù)器1的讀寫(xiě)口A2H(1Y5):輸入/輸出端口,8253計(jì)數(shù)器2的讀寫(xiě)口

計(jì)數(shù)器1輸出的頻率為f1的信號(hào)作為被測(cè)信號(hào)fx的門(mén)控信號(hào),則65編程步驟1.程序說(shuō)明

本程序是利用8253計(jì)數(shù)器,實(shí)現(xiàn)對(duì)未知頻率信號(hào)的測(cè)頻。實(shí)驗(yàn)過(guò)程中,可以通過(guò)探測(cè)點(diǎn)TP9、TP10、TP11分別查看計(jì)數(shù)器0、1、2的輸出情況,通過(guò)測(cè)試點(diǎn)TP12、TP13測(cè)量經(jīng)過(guò)74LS74輸出的1Mhz、5KHz的波形信號(hào)。2.編程思路

編程步驟664.編程步驟①調(diào)用自定義頭文件(同上實(shí)驗(yàn)一)。②EPP端口初始化(同上實(shí)驗(yàn)一)。③初始化8255。epp_write_data(CW_8255,0x8a);/*8255寫(xiě)控制字*/④PC3置0,阻值脈沖輸入(同實(shí)驗(yàn)三)。⑤初始化8253。/*8253的0口初始化,寫(xiě)1000進(jìn)去*/epp_weite_data(CW_8253,0x35);

epp_weite_data(CT0_8253,0x00);epp_weite_data(CT0_8253,0x01);/*8253的1口初始化,設(shè)置時(shí)間為1s*/epp_weite_data(CW_8253,0x71);epp_weite_data(CT1_8253,0x00);epp_weite_data(CT1_8253,0x10);/*8253的2口初始化,寫(xiě)ff進(jìn)去*/

epp_weite_data(CW_8253,0xb4);epp_weite_data(CT2_8253,0xff);epp_weite_data(CT2_8253,0xff);4.編程步驟67⑥PC3置1,允許脈沖輸入(同實(shí)驗(yàn)三)⑦讀取計(jì)數(shù)器1的輸出量(PC6)。do{epp_read_data(PC_8255,&gate);/*讀PC6的值*/

gate=gate&0xf0;gate=gate&0x40;}⑧讀取計(jì)數(shù)器2寄存器內(nèi)的值。epp_weite_data(CW_8253,0x80);/*鎖存計(jì)數(shù)器通道2*/epp_weite_data(CW_8253,0xb0);/*先低字節(jié)后高字節(jié)*/epp_read_data(CT2_8255,&word.byte[0]);/*讀計(jì)數(shù)器2的低8位*/epp_read_data(CT2_8255,&word.byte[1]);/*讀計(jì)數(shù)器2的高8位*/⑨在LED上顯示測(cè)得的頻率。

freq=n/t; /*將讀數(shù)轉(zhuǎn)化為頻率值*/displed(freq,0x00);/*在實(shí)驗(yàn)主板上顯示測(cè)頻結(jié)果*/

微機(jī)原理與接口技術(shù)課件684.源程序清單參考實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-5。

▼思考和練習(xí)題1.為什么計(jì)數(shù)器1要工作在方式0能否工作在其余的工作方式下?2.圖中計(jì)數(shù)器1和計(jì)數(shù)器0級(jí)聯(lián),計(jì)數(shù)器1是對(duì)計(jì)數(shù)器0的溢出計(jì)數(shù),其目的是什么?3.不通的閘門(mén)時(shí)間對(duì)測(cè)頻結(jié)果是否有影響?如何影響?4.8253的初始化要在一個(gè)脈沖的作用下才能完成,這對(duì)用軟件打開(kāi)閘門(mén)的測(cè)頻結(jié)果有什么影響?應(yīng)該怎樣降低這種影響?4.源程序清單69實(shí)驗(yàn)五雙積分式A/D轉(zhuǎn)換器7109的原理及應(yīng)用實(shí)驗(yàn)?zāi)康?.熟悉雙積分式A/D轉(zhuǎn)換器7109的工作原理和外圍接口設(shè)計(jì)。2.深化理解雙積分A/D轉(zhuǎn)換器及數(shù)字電壓表的工作原理。3.了解雙積分式A/D轉(zhuǎn)換器7109的簡(jiǎn)單應(yīng)用程序。4.掌握利用A/D轉(zhuǎn)換器進(jìn)行電壓測(cè)量的基本方法。

實(shí)驗(yàn)五雙積分式A/D轉(zhuǎn)換器7109的原理及應(yīng)用實(shí)驗(yàn)?zāi)康?0實(shí)驗(yàn)任務(wù)1.編寫(xiě)利用A/D轉(zhuǎn)換器進(jìn)行電壓測(cè)量的程序,并通過(guò)運(yùn)行。2.分析測(cè)量數(shù)據(jù)的誤差及其來(lái)源。

實(shí)驗(yàn)任務(wù)71工作原理▼其主要端口端定義如下:(1)B1~B12:12bit的數(shù)據(jù)輸出端(2)OR:溢出判別,輸出高電平表示過(guò)量程;反之,數(shù)據(jù)有效。(3)POL:極性判別,輸出高電平表示測(cè)量值為正值;反之,負(fù)值。(4)MODE:方式選擇,當(dāng)輸入低電平信號(hào)時(shí),轉(zhuǎn)換器處于直接輸出工作方式。此時(shí)可在片選和字節(jié)使能的控制下直接讀取數(shù)據(jù);當(dāng)輸入高電平時(shí),轉(zhuǎn)換器將在信號(hào)信號(hào)握手方式的每一轉(zhuǎn)換周期的結(jié)尾輸出數(shù)據(jù)(本實(shí)驗(yàn)選用直接輸出工作方式)。(5)REF:外部參考電壓輸入(本實(shí)驗(yàn)用其典型值:2.048V)。(6)INL,INH:輸入電壓端口(有效范圍是參考電壓的2倍)。(7)OO,OI:外部時(shí)鐘輸入(本實(shí)驗(yàn)用其典型值:3.579MHz)。(8)RUN/:運(yùn)行/保持輸入,當(dāng)輸入高電平時(shí),每經(jīng)8192時(shí)鐘脈沖完成一次轉(zhuǎn)換;當(dāng)輸入低電平時(shí),完成正在進(jìn)行的轉(zhuǎn)換,并停在自動(dòng)調(diào)零階段(9)STATUS:狀態(tài)輸出,輸出高電平,表明芯片處于積分和反向積分階段;輸出為低電平,表明反向積分結(jié)束,數(shù)據(jù)被鎖存,模擬部分處于自動(dòng)返回零態(tài)階段。工作原理72(10)CE/:片選,當(dāng)其為低電平時(shí),數(shù)據(jù)正常輸出;當(dāng)其為高電平時(shí),所有數(shù)據(jù)輸出端(B1~B12、POL、OR)均處于高阻狀態(tài)。(11)LBEN:低字節(jié)使能,輸出低電平時(shí),數(shù)據(jù)線輸出低位字節(jié)B1~B8。(12)HBEN:高字節(jié)使能,輸出低電平時(shí),數(shù)據(jù)線輸出當(dāng)高位字節(jié)B9~B12以及POL、OR的狀態(tài)值。▼A/D轉(zhuǎn)換時(shí)序(ICL7109直接接口方式)(10)CE/:片選,當(dāng)其為低電平時(shí),數(shù)據(jù)正常輸出;當(dāng)其為高73▼測(cè)量放大電路如圖選擇不通電阻其增益分別為:①

引腳“×1”腳斷開(kāi),增益選擇為1倍。②

引腳“×1”和“×10”相連,增益為10倍;③

引腳“×1”和“×100”相連,增益為100倍;④

引腳“×1”和“×200”相連,增益為200倍;⑤

引腳“×1”和“×300”相連,增益為300倍;

▼測(cè)量放大電路如圖選擇不通電阻其增益分別為:74▼

A/D轉(zhuǎn)換器7109實(shí)驗(yàn)原理圖▼A/D轉(zhuǎn)換器7109實(shí)驗(yàn)原理圖75▼數(shù)據(jù)及控制信號(hào)接口

▼數(shù)據(jù)及控制信號(hào)接口76本實(shí)驗(yàn)共用到五個(gè)端口:80H(1Y4):輸出口,7109低位字節(jié)輸出口。60H(1Y3):輸出口,7109高位字節(jié)輸出口。22H(1Y1):輸入/輸出端口,D2控制7109起停(R/H),D4位讀取7109的狀態(tài)(STATUS)信號(hào)(1正在轉(zhuǎn)換;0轉(zhuǎn)換完畢)。23H(1Y1):輸出口,8255的控制端口校準(zhǔn)測(cè)量原理參見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)。

本實(shí)驗(yàn)共用到五個(gè)端口:校準(zhǔn)測(cè)量原理77編程與調(diào)試1.程序說(shuō)明

本程序是利用實(shí)驗(yàn)主板上的7109A/D測(cè)量輸入電壓,輸入電壓有4種選擇,測(cè)量前必須將輸入電壓端口的跳線選擇到需要測(cè)量的那個(gè)端口。增益也有五種選擇(╳1,╳10,╳100,╳200,╳300),可根據(jù)實(shí)驗(yàn)需要選擇某一檔,并將其跳線連接好。實(shí)驗(yàn)測(cè)得的電壓值同時(shí)在PC機(jī)的CRT和實(shí)驗(yàn)主板內(nèi)的LED上顯示出來(lái)。實(shí)驗(yàn)過(guò)程中,可以通過(guò)測(cè)試點(diǎn)TP2查看7109的工作狀態(tài),通過(guò)探測(cè)點(diǎn)TP3查看7109芯片的啟動(dòng)狀態(tài)。編程與調(diào)試782.編程思路2.編程思路793.編程步驟

1.調(diào)用自定義頭文件(同上實(shí)驗(yàn)一)。2.EPP接口初始化(同上實(shí)驗(yàn)一)。3.初始化8255(同上實(shí)驗(yàn)二)。epp_write_data(CW_8255,0x8a);/*初始化8255*/4.PC2置“1”。8255的端口PC2與芯片7109的啟動(dòng)端口()直接相連,將PC2置“1”,則啟動(dòng)芯片7109讓它開(kāi)始工作。epp_write_data(CW_8255,0x05);/*PC2置1,啟動(dòng)芯片7109的轉(zhuǎn)換*/5.讀PC4的狀態(tài)。do{epp_read_data(PC_8255,&state);/*讀取轉(zhuǎn)化狀態(tài)量,端口PC4口*/

state=state&0x10;}while(state==1);/*判斷status值:為1正在轉(zhuǎn)換;為0轉(zhuǎn)換完*/

3.編程步驟806.PC2置“0”。epp_write_data(CW_8255,0x04);/*PC2置0,R/=停止轉(zhuǎn)換*/7.讀取7109轉(zhuǎn)換完畢的數(shù)字量,并將其轉(zhuǎn)化成電壓值。epp_read_data(H_7109,&high);/*讀出高位字節(jié)*/

epp_read_data(L_7109,&low);/*讀出低位字節(jié)*/v=(high&0x0f)*256+low;8.判斷極性和溢出if(high&0x10)/*判斷溢出位,若溢出則發(fā)出警告提示*/printf("WARNING:theinputvoltisover!\n");if(!(high&0x20)) /*判斷符號(hào)位,顯示屏輸出*/

printf("-%.3f\n",v);9.電壓值顯示在實(shí)驗(yàn)主板內(nèi)的LED上。源程序清單參考實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-6。

6.PC2置“0”。源程序清單81思考和練習(xí)題1.雙斜積分式A/D轉(zhuǎn)換器7109芯片包括哪幾個(gè)工作過(guò)程?2.7109的輸入?yún)⒖茧妷簩?duì)A/D轉(zhuǎn)換結(jié)果有何影響?如A/D轉(zhuǎn)換結(jié)果偏大,應(yīng)如何調(diào)節(jié)參考電壓?3.記錄10組對(duì)2.048V的標(biāo)準(zhǔn)電壓由7109A/D轉(zhuǎn)換結(jié)果。如測(cè)量結(jié)果偏大,可能是什么原因造成的?4.若輸入電壓的范圍是0~±204.8mV,則參考電壓應(yīng)調(diào)節(jié)在多大?此時(shí)電壓測(cè)量的分辨率是多大?5.根據(jù)校準(zhǔn)原理,試用校準(zhǔn)方法測(cè)量(AIN+)輸入的被測(cè)電壓,并顯示結(jié)果。

思考和練習(xí)題82實(shí)驗(yàn)六逐次比較式A/D轉(zhuǎn)換器0809的原理及編程

實(shí)驗(yàn)?zāi)康?.熟悉逐次逼近式A/D轉(zhuǎn)換器芯片的工作原理。2.了解A/D轉(zhuǎn)換芯片0809的接口設(shè)計(jì)方法。3.掌握A/D轉(zhuǎn)換器0809簡(jiǎn)單的應(yīng)用編程。

實(shí)驗(yàn)任務(wù)

1.分析本實(shí)驗(yàn)板的電路原理。

2.編寫(xiě)出逐次逼近式A/D轉(zhuǎn)換器芯片0809的轉(zhuǎn)換與顯示的控制程序,測(cè)量通道0-7的輸入的信號(hào)。實(shí)驗(yàn)六逐次比較式A/D轉(zhuǎn)換器0809的原理及編程

實(shí)驗(yàn)?zāi)?3實(shí)驗(yàn)原理

▼0809工作原理

ADC0809是8路輸入的8位逐次逼近A/D轉(zhuǎn)換器,其轉(zhuǎn)換時(shí)間為16個(gè)外部時(shí)鐘周期。其主要端口端定義如下:①I(mǎi)N7~I(xiàn)N0:八個(gè)模擬量輸入端。②D7~D0:數(shù)字量輸出端。③ENABLE:輸出允許信號(hào)。當(dāng)此信號(hào)被選中時(shí),允許從A/D轉(zhuǎn)換器的鎖存器中讀取數(shù)字量。高電平有效。④START:?jiǎn)?dòng)A/D轉(zhuǎn)換,當(dāng)START為高電平時(shí),A/D轉(zhuǎn)換開(kāi)始。⑤ALE:地址鎖存允許,高電平有效。當(dāng)ALE為高電平時(shí),允許C、B、A所示的通道被選中,并把該通道的模擬量接入A/D轉(zhuǎn)換器。⑥EOC:轉(zhuǎn)換結(jié)束信號(hào)。當(dāng)A/D轉(zhuǎn)換結(jié)束后,發(fā)出一個(gè)正脈沖,表示A/D轉(zhuǎn)換完畢。此信號(hào)可用作A/D轉(zhuǎn)換是否完成的檢測(cè)信號(hào)。⑦ADDA、ADDB、ADDC:通道號(hào)選擇端,C為最高位,A為最低位。⑧CLOCK:外部時(shí)鐘(本實(shí)驗(yàn)采用500KHz的時(shí)鐘頻率)。⑨Vref(+),Vref(-):參考電壓端,用來(lái)提供D/A轉(zhuǎn)換器權(quán)電阻的標(biāo)準(zhǔn)電平(本實(shí)驗(yàn)采用典型值:Vref(+)=+5V,Vref(-)=0V)。

實(shí)驗(yàn)原理84▼A/D轉(zhuǎn)換時(shí)序

微機(jī)原理與接口技術(shù)課件85▼被測(cè)電壓與A/D轉(zhuǎn)換結(jié)果關(guān)系

式中:

Vin——0809A/D轉(zhuǎn)換器輸入電壓。NADC——0809A/D轉(zhuǎn)換結(jié)果的8bit數(shù)字量;Vr——0809A/D轉(zhuǎn)換器外部參考輸入電壓,Vr=5.00V;

▼被測(cè)電壓與A/D轉(zhuǎn)換結(jié)果關(guān)系式中:86▼數(shù)據(jù)及控制信號(hào)接口▼數(shù)據(jù)及控制信號(hào)接口87▼A/D轉(zhuǎn)換器0809實(shí)驗(yàn)電路圖

▼A/D轉(zhuǎn)換器0809實(shí)驗(yàn)電路圖88本實(shí)驗(yàn)共用到三個(gè)端口:40H~47H(1Y2):輸入/輸出端口,0809的地址,控制字任意。

23H(1Y1):輸出端口,8255的控制端口。

22H(1Y1):輸入端口,查詢0809轉(zhuǎn)換狀態(tài)信號(hào)(“0”正在轉(zhuǎn)換;“1”轉(zhuǎn)換完畢)。

本實(shí)驗(yàn)共用到三個(gè)端口:89編程與調(diào)試

(一)0通道測(cè)量電壓

1.程序說(shuō)明輸入電壓有4種選擇,測(cè)量前,在實(shí)驗(yàn)主板上必須將跳線選擇到需要測(cè)量的那個(gè)端口。增益也有五種選擇(╳1,╳10,╳100,╳200,╳300),可根據(jù)實(shí)驗(yàn)需要選擇一檔,并在實(shí)驗(yàn)板上將其跳線連好。實(shí)驗(yàn)測(cè)得的電壓值顯示在PC機(jī)的CRT和實(shí)驗(yàn)主板的LED上。2.編程思路

編程與調(diào)試903.編程步驟①調(diào)用自定義頭文件。②EPP端口初始化。③初始化8255。epp_write_data(CW_8255,0x8a);④啟動(dòng)芯片0809。epp_write_data(AD_0809,0x00);/*啟動(dòng)0809進(jìn)行轉(zhuǎn)換*/⑤讀取轉(zhuǎn)換狀態(tài)量

voideoc(void){unsignedcharstatus;do/*讀8255的pc5的值,為1時(shí)轉(zhuǎn)換完畢*/{epp_read_data(PC_8255,&status);status=status&0x20;}while(status==0);/*狀態(tài)為0時(shí),繼續(xù)讀取狀態(tài)轉(zhuǎn)換量*/}

3.編程步驟91⑥讀取A/D轉(zhuǎn)換完畢的數(shù)字量,放入firstdata中。epp_read_data(AD_0809,&firstdata);/*讀轉(zhuǎn)換完畢的數(shù)字量*/firstdata=firstdata&0xff;⑦將讀取的數(shù)據(jù)轉(zhuǎn)換成電壓值V。 v=(double)firstdata*5/255;

⑧在LED上的顯示被測(cè)電壓值。4.源程序清單參考實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-7。

⑥讀取A/D轉(zhuǎn)換完畢的數(shù)字量,放入firstdata中。92(二)測(cè)量1~7通道電壓測(cè)量1~7通道電壓的編程思路和測(cè)量0通道的輸入電壓一樣,所不通的只是要根據(jù)信號(hào)的輸入通道來(lái)確定其輸入端口的地址,通道不同其端口地址也不同。下面就僅介紹如何獲取通道地址,其余部分參見(jiàn)上面的0通道測(cè)量電壓實(shí)驗(yàn)。程序的開(kāi)始要輸入當(dāng)前實(shí)驗(yàn)所采用的輸入通道(cha),如:

printf("Pleaseinputthechannelwhichyouwillmeasure(int1--7):");scanf("%d",&cha);/*輸入值是被測(cè)信號(hào)輸入的那個(gè)通道*/芯片0809的基地址為:0x40(AD_0809),選擇通道后,該通道的地址就為:0x40+cha(AD_0809+cha)。即程序中對(duì)端口地址的讀寫(xiě)就不再是0x40,而是0x40+cha。參考程序?qū)嶒?yàn)指導(dǎo)書(shū)附錄I-8。(二)測(cè)量1~7通道電壓93思考和練習(xí)題

1.用AD0809采集交流正弦波形,調(diào)節(jié)信號(hào)頻率從100Hz增加,觀察顯示波形的變化。當(dāng)多高頻率時(shí),顯示波形異常,解釋此現(xiàn)象?2.利用實(shí)驗(yàn)五介紹的校準(zhǔn)方法,思考如何進(jìn)行校準(zhǔn)測(cè)量?3.編寫(xiě)0通道的有校準(zhǔn)測(cè)量的實(shí)驗(yàn)程序,電壓輸入端選擇0~4.096V,調(diào)節(jié)其輸入電壓值,比較有無(wú)校準(zhǔn)的測(cè)量結(jié)果,參考源程序見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-9)。

思考和練習(xí)題94實(shí)驗(yàn)七D/A轉(zhuǎn)換器0832的原理實(shí)驗(yàn)

實(shí)驗(yàn)?zāi)康?/p>

1.了解典型D/A轉(zhuǎn)換器DAC0832的工作原理。

2.掌握芯片0832的接口設(shè)計(jì)方法。

實(shí)驗(yàn)任務(wù)

1.找出本實(shí)驗(yàn)中芯片0832的地址。

12.編寫(xiě)實(shí)驗(yàn)程序,向0832輸入不通的數(shù)字電壓以獲得其相應(yīng)的模擬電壓輸出,并運(yùn)行通過(guò)。3.記錄實(shí)驗(yàn)中電壓的輸出值。

實(shí)驗(yàn)七D/A轉(zhuǎn)換器0832的原理實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)95實(shí)驗(yàn)原理

▼DAC0832工作原理

主要引腳定義如下:①DI0-DI7:8條數(shù)據(jù)輸入線。②ILE、CS、WR1:三條為輸入鎖存器的選通線,其中ILE為輸入鎖存器允許信號(hào)輸入線(高電平有效),為片選信號(hào)輸入線(低電平有效),為寫(xiě)信號(hào)輸入線(低電平有效)。只有當(dāng)三條線同時(shí)有效時(shí),輸入數(shù)據(jù)鎖存器才被選通。③XFER和WR2:二條為DAC鎖存器選通線,其中XFER為傳送控制信號(hào)輸入線(低電平有效),WR2為寫(xiě)信號(hào)輸入線(低電平有效),只有當(dāng)二條線同時(shí)有效時(shí),DAC鎖存器才被選通。

實(shí)驗(yàn)原理96▼D/A電流輸出表達(dá)式式中,

Io1——DAC0832輸出電流;(Io1+I(xiàn)o2=常數(shù));NDAC——DAC0832數(shù)字輸入量;Vr——DAC0832外部參考輸入電壓;R——DAC0832內(nèi)部固定電阻,恒為5KΩ。

▼D/A電流輸出表達(dá)式式中,97▼DAC0832數(shù)/模電壓轉(zhuǎn)換實(shí)驗(yàn)電路

芯片0832的數(shù)字電壓輸入端口(DI7~DI0)與實(shí)驗(yàn)主板上的八位雙向數(shù)據(jù)總線(D7~D0)相連;與地址線2Y5相連,則其地址為05H;參考電壓有以下兩種選擇:①AO1來(lái)自實(shí)驗(yàn)主板上的信號(hào)源(參見(jiàn)實(shí)驗(yàn)八)。②Vr5V來(lái)自實(shí)驗(yàn)主板上的參考電壓源,實(shí)驗(yàn)電路原理如下圖。▼DAC0832數(shù)/模電壓轉(zhuǎn)換實(shí)驗(yàn)電路芯片083298Vr5V實(shí)驗(yàn)電路Vr5V實(shí)驗(yàn)電路99▼輸出電壓值的計(jì)算

DAC0832直接得到的轉(zhuǎn)換輸出信號(hào)是模擬電流,為得到電壓輸出,實(shí)驗(yàn)電路加了一個(gè)運(yùn)算放大器,得到單極性的電壓輸出。其中,R=5kΩ;Rfb=15kΩ是固定的內(nèi)部電阻。則,D/A轉(zhuǎn)換后的輸出電壓

在本實(shí)驗(yàn)中參考電壓Vref選擇實(shí)驗(yàn)主板上的參考電壓源Vr5V,其理論值為5V,則D/A轉(zhuǎn)換后的輸出電壓就為:

本實(shí)驗(yàn)只用到一個(gè)端口地址:05H(2Y5):輸出口,DAC0832(IC35)的地址。▼輸出電壓值的計(jì)算在本實(shí)驗(yàn)中參考電壓Vref選100編程與調(diào)試

(1)程序說(shuō)明向?qū)嶒?yàn)主板上的DAC0832(IC35)寫(xiě)入不同的數(shù)字(0~256),在其輸出端測(cè)量其相應(yīng)的電壓值,因?qū)嶒?yàn)主板上測(cè)試點(diǎn)AO2與其輸出端口直接相連,只要測(cè)量測(cè)試點(diǎn)AO2,就可獲取經(jīng)DAC0832的轉(zhuǎn)換電壓。程序中在PC機(jī)的CRT上還將顯示對(duì)應(yīng)的理論電壓值,以便實(shí)驗(yàn)者參考。編程與調(diào)試101(2)編程思路(2)編程思路102(3)編程步驟

1.調(diào)用自定義頭文件(同實(shí)驗(yàn)一)。2.EPP接口初始化(同實(shí)驗(yàn)一)。3.啟動(dòng)芯片DAC0832(實(shí)驗(yàn)主板上的IC35)。epp_write_data(DA2_0832,0x00);/*啟動(dòng)0832(IC35)芯片*/4.向0832寫(xiě)入數(shù)據(jù)。

DAC0832是8位的D/A轉(zhuǎn)換器,故寫(xiě)入的數(shù)據(jù)應(yīng)該在0~256之間。epp_write_data(DA2_0832,number);5.在PC機(jī)的CRT上顯示轉(zhuǎn)換電壓。volt=(float)(number*5.00/256);/*電壓轉(zhuǎn)換*/printf("\n%.2f",volt);/*輸出模擬電壓值*/

(3)編程步驟103思考和練習(xí)題

1.為什么測(cè)得的電壓值和理論值有區(qū)別?2.數(shù)字輸入“0”時(shí),其輸出電壓為什么不為0?3.測(cè)量電壓時(shí),萬(wàn)用表的負(fù)極分別和實(shí)驗(yàn)主板上的模擬地和數(shù)字地相連接,其測(cè)得的結(jié)果是不是一樣?如不一樣,為什么?4.測(cè)得的電壓值與輸入數(shù)字0時(shí)獲得的電壓值的差值與其相應(yīng)的理論電壓有什么關(guān)系?

(4)源程序清單參考程序見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-10

思考和練習(xí)題(4)源程序清單104實(shí)驗(yàn)八DAC0832在程控信號(hào)源中的應(yīng)用

實(shí)驗(yàn)?zāi)康?.了解數(shù)字式信號(hào)波形合成的原理和方法。2.掌握程控信號(hào)源的工作原理及實(shí)現(xiàn)方法。

實(shí)驗(yàn)任務(wù)1.根據(jù)本實(shí)驗(yàn)的電路原理圖確定各端口的地址。

2.通過(guò)EPP接口控制相應(yīng)端口,使之產(chǎn)生不同波形、不同頻率和幅度的信號(hào)。

實(shí)驗(yàn)八DAC0832在程控信號(hào)源中的應(yīng)用實(shí)驗(yàn)?zāi)康膶?shí)105實(shí)驗(yàn)原理

▼波形的數(shù)字合成原理在波形的數(shù)字合成中,通常是向D/A轉(zhuǎn)換器輸入端提供特定的數(shù)據(jù)流,則在輸出端便可獲得相應(yīng)函數(shù)波形的信號(hào)電壓。實(shí)驗(yàn)原理106如圖(a)所示的一個(gè)八位二進(jìn)制的加法計(jì)數(shù)器對(duì)時(shí)鐘計(jì)數(shù)過(guò)程中,計(jì)數(shù)值N按0、1、2、3…255、0、1、2、3…規(guī)律遞增變化,得到一串8位二進(jìn)制碼的數(shù)據(jù)流,把它送入DAC的輸入端,則DAC的輸出Uo(t)呈梯形的增長(zhǎng),獲得如圖(b)所示的波形。若每步跳為0.01V,則Uo(t)從0~2.55V的范圍變化。若采用一個(gè)可逆計(jì)數(shù)器對(duì)時(shí)鐘信號(hào)交替地作加、減計(jì)數(shù)時(shí),N的變化為0、1、2、3…255、254、253…3、2、1、0、1、2…,則Uo將獲得一個(gè)三角波的輸出電壓。

如圖(a)所示的一個(gè)八位二進(jìn)制的加法計(jì)數(shù)器對(duì)時(shí)鐘107

本實(shí)驗(yàn)如果采用所示的方案,在計(jì)數(shù)器和DAC之間接入一個(gè)ROM,先在ROM中寫(xiě)入某一函數(shù)的幅值數(shù)據(jù),根據(jù)加法(或減法)計(jì)數(shù)器提供的地址碼,取出相應(yīng)地址單元的內(nèi)容,送至DAC輸入端,則可獲得任意波形的輸出。如三角波、矩形波、正弦波、辛克波(sinx/x)、鐘形波等。

108▼DAC0832工作原理▼程控信號(hào)源實(shí)驗(yàn)電路

▼DAC0832工作原理109▼程控的實(shí)現(xiàn)

在8KB的EPROM中固化有16種波形數(shù)據(jù),由高4位地址A8~A11選擇;每一種波形的一個(gè)周期由256個(gè)數(shù)據(jù)代碼構(gòu)成,由低8位地址A0~A7尋址。EPROM高4位地址A8~A11來(lái)自鎖存器74LS273的高4位Q5~Q8,通過(guò)對(duì)74LS273的編程可實(shí)現(xiàn)波形的程控。選擇好波形后,該波形的256個(gè)數(shù)據(jù)點(diǎn)的8位地址A7~A0由一個(gè)8位地址計(jì)數(shù)器(二進(jìn)制計(jì)數(shù)器)循環(huán)計(jì)數(shù)產(chǎn)生。實(shí)驗(yàn)主板上采用了兩個(gè)4位二進(jìn)制計(jì)數(shù)器74LS169級(jí)聯(lián)實(shí)現(xiàn)。通過(guò)改變地址計(jì)數(shù)器的輸入時(shí)鐘頻率便可控制波形數(shù)據(jù)從EPROM中讀出的速率,從而改變輸出頻率。固定的2MHz頻率通過(guò)一74LS169向地址計(jì)數(shù)器提供輸入時(shí)鐘。計(jì)數(shù)器74LS169采用減計(jì)數(shù)的工作方式,4位預(yù)置初值位A、B、C、D與74LS273的低4位Q1~Q4相連,通過(guò)對(duì)74LS273的編程可實(shí)現(xiàn)頻率的程控。DAC0832(IC33)的數(shù)據(jù)寫(xiě)入控制端WR1與74LS169的動(dòng)態(tài)進(jìn)位輸出TC相連,同時(shí)TC又作為波形數(shù)據(jù)點(diǎn)地址計(jì)數(shù)器的時(shí)鐘,這使得每個(gè)地址狀態(tài)對(duì)應(yīng)一個(gè)信號(hào)周期,從而實(shí)現(xiàn)地址計(jì)數(shù)器、波形EPROM及DAC0832(IC33)的同步工作。將AO1作為DAC0832(IC35)的參考電壓(參見(jiàn)實(shí)驗(yàn)七的圖7-1),DAC0832(IC35)就構(gòu)成一個(gè)8位程控衰減器。通過(guò)控制寫(xiě)入DAC0832(IC35)的8位數(shù)字量,可實(shí)現(xiàn)對(duì)電壓幅度的程控。

▼程控的實(shí)現(xiàn)110▼輸出電壓值的計(jì)算在本實(shí)驗(yàn)中,第一片DAC0832(IC33)的輸出電壓為:第二片DAC0832(IC35)的輸出電壓為:

第二片DAC0832(IC35)的輸出電壓為:111▼輸出信號(hào)及其對(duì)應(yīng)的控制數(shù)據(jù)▼輸出信號(hào)及其112本實(shí)驗(yàn)共用到二個(gè)端口地址

04H(2Y4):輸出口,鎖存器273地址,對(duì)程控信號(hào)源波形、頻率控制。05H(2Y5):輸出口,第二片DAC0832(IC35)地址,程控信號(hào)源幅度控制。

本實(shí)驗(yàn)共用到二個(gè)端口地址113編程與調(diào)試

(一)程序說(shuō)明程控信號(hào)源可輸出16種波形(正弦波、方波。鋸齒波(1)、鋸齒波(2)、梯形波、三角波、臺(tái)階波(1)、臺(tái)階波(2)、臺(tái)階三角波、全波整流波、鐘形波、辛克波、對(duì)數(shù)波、M波、調(diào)幅波、窄脈沖波),幅度范圍位0~5V。本實(shí)驗(yàn)中,可在AO1和AO2口測(cè)量獲得的波形。

編程與調(diào)試114(二)編程思路

(二)編程思路115(三)編程步驟

1.調(diào)用自定義頭文件(同實(shí)驗(yàn)一)。2.EPP端口初始化(同實(shí)驗(yàn)一)。

3.選擇波形和分頻數(shù)。例如要選擇1倍分頻的方波,則高四位分別為0001,低四位分別為0001:epp_write_data(AD1_0832,0x11);4.電壓幅度的控制。(四)源程序清單參考程序見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-10。

(三)編程步驟116思考和練習(xí)題1.若分頻器的輸入數(shù)據(jù)增大,則產(chǎn)生的波形頻率是增大還是減???2.若DAC0832(IC35)的輸入數(shù)據(jù)增大,產(chǎn)生的信號(hào)幅度是增大還是減???3.本實(shí)驗(yàn)主板產(chǎn)生的信號(hào)頻率范圍如何?有多少個(gè)點(diǎn)頻信號(hào)輸出,其頻率值分別為多少?4.本實(shí)驗(yàn)主板產(chǎn)生的信號(hào)幅度范圍如何?有多少個(gè)幅度值輸出,每跳步的幅度間值相同嗎?

思考和練習(xí)題117實(shí)驗(yàn)九LED點(diǎn)陣顯示技術(shù)

實(shí)驗(yàn)?zāi)康?/p>

1.了解LED點(diǎn)陣顯示的原理及接口驅(qū)動(dòng)方法。2.熟悉動(dòng)態(tài)掃描顯示方式在顯示技術(shù)中的應(yīng)用。3.掌握并行接口與點(diǎn)陣顯示的硬件接口和軟件編程。實(shí)驗(yàn)任務(wù)

1.編寫(xiě)使點(diǎn)陣塊全亮和全滅的點(diǎn)陣顯示驅(qū)動(dòng)程序段。

2.編寫(xiě)簡(jiǎn)單的點(diǎn)陣顯示程序,在LED點(diǎn)陣板顯示漢字。

3.編寫(xiě)在LED點(diǎn)陣顯示上顯示任意字符的點(diǎn)陣顯示程序。

實(shí)驗(yàn)九LED點(diǎn)陣顯示技術(shù)實(shí)驗(yàn)?zāi)康?18實(shí)驗(yàn)原理

▼LED點(diǎn)陣簡(jiǎn)介

LED點(diǎn)陣式顯示器不僅可以顯示數(shù)字,也可顯示所有西文字母和符號(hào),與由單個(gè)發(fā)光二極管連成的顯示器相比,具有焊點(diǎn)少、連線少,所有亮點(diǎn)在同平面、亮度均勻、外形美觀等優(yōu)點(diǎn),可以代替數(shù)碼管、符號(hào)管和米字管。如果將多塊組合,可以構(gòu)成大屏幕顯示屏,用于漢字、圖形、圖表等等的顯示,因此被廣泛用于機(jī)場(chǎng)、車(chē)站、碼頭、銀行及許多公共場(chǎng)所的指示、說(shuō)明、廣告等場(chǎng)合。

實(shí)驗(yàn)原理119▼8×8的LED點(diǎn)陣顯示器結(jié)構(gòu)

8×8的LED點(diǎn)陣顯示器,是由64個(gè)LED組成,內(nèi)部電路如圖9-1所示。共陽(yáng)極的8×8的LED點(diǎn)陣顯示器的典型連接方式是:每一行的陽(yáng)極連在一起,由行掃描碼鎖存器和驅(qū)動(dòng)器的一位控制,總共8行陽(yáng)極連線由8位分別控制;每一列的8個(gè)陰極連在一起,由字形行碼鎖存器和驅(qū)動(dòng)器的一位控制,總共8列陰極連線由8位分別控制。

▼8×8的LED點(diǎn)陣顯示器結(jié)構(gòu)8×8的LED點(diǎn)陣120▼點(diǎn)陣字符的字型碼在寫(xiě)點(diǎn)陣顯示的驅(qū)動(dòng)之前,應(yīng)知道各顯示字符的字形碼。上圖是四塊8×8的LED點(diǎn)陣拼成的一個(gè)16×16點(diǎn)陣(16列16行)作為1位字符顯示的點(diǎn)陣碼圖。(本實(shí)驗(yàn)采用相同的顯示方式顯示一個(gè)字符)。

▼點(diǎn)陣字符的字型碼在寫(xiě)點(diǎn)陣顯示的驅(qū)動(dòng)之前,應(yīng)知道各121▼點(diǎn)陣字符的驅(qū)動(dòng)

點(diǎn)陣式LED顯示器采用逐行掃描式工作。要使點(diǎn)陣顯示出一個(gè)的字符的編程方法是:首先向字形行掃描碼鎖存器輸入行碼,選通第一行;接著,向行碼鎖存器寫(xiě)入該行的字型碼。然后,按相同的方式選通第二行,寫(xiě)第二行的字型碼……由此類(lèi)推,直到寫(xiě)完所有行的字型碼,完成一個(gè)字符的顯示。如果要使多個(gè)點(diǎn)陣循環(huán)顯示多個(gè)字符,只要把顯示的各個(gè)字符按順序安排在顯示緩沖區(qū),然后根據(jù)顯示的字符去查表,再按一定的時(shí)序向各個(gè)字形行碼鎖存器和行掃描器輸入相應(yīng)的字形行碼和行掃描碼,便可達(dá)到目的。▼點(diǎn)陣字符的驅(qū)動(dòng)122▼字庫(kù)原理

led點(diǎn)陣顯示的原理和過(guò)程都很簡(jiǎn)單,只是輸入每個(gè)字符的顯示點(diǎn)陣碼很繁瑣。多字符的顯示采用的方法是讀字庫(kù),查出顯示字的點(diǎn)陣碼,再顯示到顯示屏上。

國(guó)標(biāo)對(duì)漢字庫(kù)(區(qū)位碼字庫(kù))的結(jié)構(gòu)作了統(tǒng)一的規(guī)定:將漢字庫(kù)分為若干個(gè)區(qū),每個(gè)區(qū)有94個(gè)漢字。每一個(gè)漢字在字庫(kù)中有一個(gè)固定的區(qū)和位,即每一個(gè)漢字有一個(gè)區(qū)位碼。知道了區(qū)位碼也就相當(dāng)于知道了漢字在字庫(kù)中的位置。由于漢字的內(nèi)碼與區(qū)位碼有一定的關(guān)系,所以,只要通過(guò)內(nèi)碼就可以得到區(qū)位碼,從而也就得到了漢字的字模。

▼字庫(kù)原理123由于計(jì)算機(jī)對(duì)西文字符采用一個(gè)字節(jié)表示,漢字用二個(gè)字節(jié)(GBK內(nèi)碼)表示。為了保證中西文兼容,因此規(guī)定每個(gè)字節(jié)只用七位,若兩個(gè)字節(jié)的最高位均為1,則該字符為漢字。即計(jì)算機(jī)中的數(shù)字和一些特殊符號(hào)按ASCⅡ編碼方式,漢字和一些符號(hào)是GBK內(nèi)碼編碼方式來(lái)表示。而點(diǎn)陣顯示字庫(kù)是按區(qū)位編碼方式排列。因此,讀字庫(kù)之前,要完成ASCⅡ編碼與區(qū)位編碼的轉(zhuǎn)換和GBK內(nèi)碼編碼與區(qū)位編碼之間的轉(zhuǎn)換。▼UCDOS16點(diǎn)字庫(kù)文件(HZK16j)

本實(shí)驗(yàn)是讀UCDOS16點(diǎn)字庫(kù)文件(HZK16j)。字庫(kù)中的漢字按共陽(yáng)極16×16點(diǎn)陣模式存儲(chǔ),即每個(gè)漢字由16×16=256個(gè)點(diǎn)組成,占用16×2=32個(gè)連續(xù)的字節(jié)單元。字節(jié)的每一位(bit)表示一個(gè)點(diǎn)的屬性:1表示亮點(diǎn),0表示暗點(diǎn)。字符點(diǎn)陣是按照漢字區(qū)位碼排列的,連續(xù)的兩個(gè)字節(jié)表示該漢字字模的一行。

由于計(jì)算機(jī)對(duì)西文字符采用一個(gè)字節(jié)表示,漢字用二個(gè)124▼GBK內(nèi)碼與相應(yīng)區(qū)位碼的轉(zhuǎn)換

漢字的內(nèi)碼從一些圖形字符開(kāi)始,起始編碼為A1A1H;漢字內(nèi)碼第一位為區(qū)碼,每區(qū)為94個(gè)漢字,第二位為位碼。漢字點(diǎn)陣數(shù)據(jù)在字庫(kù)中的偏移量為:((區(qū)碼-A1H)*94+(位碼-A1H)*32L由此可編輯偏移量的源代碼為inter_code.ed[1]=character[count];point_quwei=inter_code.ed;/*尋找字符在漢字庫(kù)中的位*/wei=((point_quwei&0xff00)>>8)-0xa1;/*尋找字符在漢字庫(kù)中的區(qū)*/qu=(point_quwei&0x00ff)-0xa1;rec=(qu*94+wei)*32L;▼GBK內(nèi)碼與相應(yīng)區(qū)位碼的轉(zhuǎn)換125▼ASCⅡ碼與相應(yīng)區(qū)位碼的轉(zhuǎn)換

ASCⅡ碼的所有符號(hào)全在區(qū)位碼的第三區(qū),位碼的偏移量為0x21H。ASCⅡ碼在字庫(kù)中的偏移量為:(區(qū)碼*94+(位碼-21H))*32L由此可編輯偏移量的源代碼為:inter_code.ed[0]=character[count];point_quwei=inter_code.ed;/*尋找字符咱漢字庫(kù)中的位*/wei=((point_quwei&0x00ff)-0x21;

qu=0x03-0x01;/*尋找字符在漢字庫(kù)中的區(qū)*/rec=(qu*94+wei)*32L;▼ASCⅡ碼與相應(yīng)區(qū)位碼的轉(zhuǎn)換126▼LED點(diǎn)陣式顯示器實(shí)驗(yàn)電路

▼LED點(diǎn)陣式顯示器實(shí)驗(yàn)電路127本實(shí)驗(yàn)共用到的端口地址(地址跳線選擇1Y6):C1H(Y0):輸出口,行掃描碼鎖存器地址C2H(Y2):輸出口,字形行碼左鎖存器地址C3H(Y3):輸出口,字形行碼右鎖存器地址

本實(shí)驗(yàn)共用到的端口地址(地址跳線選擇1Y6):128編程與調(diào)試

(一)簡(jiǎn)單的漢字顯示

1.程序說(shuō)明

該程序?yàn)楦鶕?jù)每個(gè)字符的點(diǎn)陣碼(16×16),直接在LED點(diǎn)陣上顯示漢字“電子科大”。2.編程思路編程與調(diào)試1293.編程步驟①根據(jù)需要選擇自定義頭文件(同實(shí)驗(yàn)一)。②EPP端口初始化(同實(shí)驗(yàn)一)。③選擇點(diǎn)亮行。要點(diǎn)亮某行的LED,先要向行地址端口寫(xiě)入行數(shù),例如要點(diǎn)亮第一行:epp_write_out(ROW_DOT,0x00);④寫(xiě)入每列的點(diǎn)陣碼。要點(diǎn)亮某行的LED,向行地址寫(xiě)入數(shù)據(jù)后,先向左邊列寫(xiě)數(shù)據(jù)再向右邊列寫(xiě)數(shù)據(jù)。例如我們要點(diǎn)亮第一行的第一、三、五、七、九、十一、十三、十五列:epp_write_out(ROW_DOT,0x00);/*選擇第幾行*/epp_write_out(L_DOT,0xaa);/*向左邊列寫(xiě)入數(shù)據(jù)*/epp_write_out(H_DOT,0xaa);/*向右邊列寫(xiě)入數(shù)據(jù)*/微機(jī)原理與接口技術(shù)課件1304.源程序清單

參考程序見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-12。4.源程序清單 131(二)在點(diǎn)陣上顯示任意字符

1.程序說(shuō)明

點(diǎn)陣不僅可以顯示漢字,任意字符它都可以顯示??梢愿鶕?jù)字庫(kù)的存儲(chǔ)原理,在字庫(kù)中查找要顯示字符的點(diǎn)陣碼,再將這些點(diǎn)陣碼寫(xiě)到的實(shí)驗(yàn)板子上,就可以在LED點(diǎn)陣上顯示任意想要的字符。

(二)在點(diǎn)陣上顯示任意字符1322.編程思路2.編程思路1333.編程步驟

①根據(jù)需要選擇自定義頭文件(同實(shí)驗(yàn)一)。②EPP端口初始化(同實(shí)驗(yàn)一)。③輸入字符顯示速度。printf("Pleaseinputthespeedwithinrangeof50and1000\n");scanf("%d",&speed);④打開(kāi)文件。例如:當(dāng)文件Hzk16j.dot和hz.txt都存放在F盤(pán)win98文件中的dot子文件中,則:fpk=fopen("F:\\win98\\dot\\Hzk16j.dot","rb")fpt=fopen("F:\\win98\\dot\\hz.txt","r");⑤讀取將要顯示的字符。

word=fgetc(fpt);3.編程步驟134⑥獲取字符的區(qū)位碼。如果的字符是為數(shù)字或者特殊符號(hào):

inter_code.ed[1]=word[count1];point_quwei=(unsignedshort*)inter_code.ed;wei=((*point_quwei)&0x00ff)-0x21;qu=0x03-0x01;rec=qu*94+wei;addr_dot=rec*32L;如果字符是為漢字:

inter_code.ed[1]=word[count1];point_quwei=(unsignedshort*)inter_code.ed;wei=(((*point_quwei)&0xff00)>>8)-0xa1;

qu=((*point_quwei)&0x00ff)-0xa1;rec=qu*94+wei;addr_dot=rec*32L;

⑥獲取字符的區(qū)位碼。135⑦根據(jù)區(qū)位碼讀取字符的點(diǎn)陣碼。/*將指針指向字庫(kù)中將要顯示的字符的點(diǎn)陣碼的位置*/fseek(fpk,addr_dot,0);/*讀取所要顯示的字符的點(diǎn)陣碼,并儲(chǔ)存在數(shù)組font中*/fread(font,2,32,fpk); ⑧向?qū)嶒?yàn)板寫(xiě)入點(diǎn)陣碼,點(diǎn)亮LED點(diǎn)陣。4.源程序清單

參考程序詳見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)附錄I-13。⑦根據(jù)區(qū)位碼讀取字符的點(diǎn)陣碼。136思考題和練習(xí)

1.寫(xiě)出以下兩個(gè)圖形的點(diǎn)陣碼。

2.編寫(xiě)一個(gè)程序,在點(diǎn)陣面板上顯示以上兩個(gè)圖形。3.思考:相鄰兩行的掃描時(shí)間間隔對(duì)顯示效果的影響(特別注意延長(zhǎng)相鄰兩行的掃描時(shí)間間隔后的顯示效果)。4.編寫(xiě)顯示字符(非漢字)的程序段。5.編寫(xiě)一個(gè)程序,在點(diǎn)陣面板上連續(xù)顯示多個(gè)字符。

思考題和練習(xí)2.編寫(xiě)一個(gè)程序,在點(diǎn)陣面板上顯示以上兩個(gè)圖形137實(shí)驗(yàn)十基本并行輸入/輸出在鍵盤(pán)接口中的應(yīng)用

實(shí)驗(yàn)?zāi)康?/p>

1.掌握矩陣鍵盤(pán)的接口驅(qū)動(dòng)原理。

2.掌握基本并行I/O和鍵盤(pán)的硬件接口方法。3.熟悉矩陣鍵盤(pán)的應(yīng)用編程。實(shí)驗(yàn)任務(wù)

1.寫(xiě)出鍵盤(pán)掃描的選通碼。

2.編寫(xiě)出矩陣鍵盤(pán)識(shí)鍵、判鍵的程序段。

實(shí)驗(yàn)十基本并行輸入/輸出在鍵盤(pán)接口中的應(yīng)用實(shí)驗(yàn)?zāi)康?38矩陣式鍵盤(pán)簡(jiǎn)介鍵盤(pán)是由若干按鍵組合而成的,常采用矩陣式連接,稱為矩陣式鍵盤(pán),即每條水平線和垂直線在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。當(dāng)需要的鍵數(shù)比較多時(shí),采用矩陣連接可以減少I(mǎi)/O口的占有。

矩陣式鍵盤(pán)簡(jiǎn)介139矩陣式鍵盤(pán)的編程

矩陣式鍵盤(pán)連接可分為編碼式和非編碼式兩種。本鍵盤(pán)共24鍵,采用非編碼式連接。其應(yīng)用編程可分為三部分:判鍵、識(shí)鍵和鍵處理。

▼判鍵判鍵即指判斷是否有鍵按下。確定矩陣式鍵盤(pán)上何鍵被按下采用一種“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識(shí)別方法。首先在程序啟動(dòng)時(shí),把74LS273輸出口(地址為1Y6=C0H,作為行掃描輸出)初始化到高電平(注意:列線狀態(tài)由74LS244輸入口(地址為1Y6=C7H)輸入,常態(tài)下通過(guò)拉高電阻為高電平)。這樣,所有的行輸出都是高電平,列輸入也都是高電平,代表無(wú)鍵按下。如果行線輸出有低電平,一旦有鍵按下,則列線輸入就會(huì)被拉低,這樣,通過(guò)讀入列線的狀態(tài)就可得知是否有鍵按下。

矩陣式鍵盤(pán)的編程140▼識(shí)鍵

識(shí)鍵即指在判斷有鍵按下時(shí),識(shí)別該鍵是哪個(gè)鍵。這可根據(jù)3行掃描輸出線哪列為低,8列輸入線哪一列為低,即由該按下鍵的行列位置,組合成代表的該鍵值。

具體編程方法:依次將行線置為低電平,即在置某行線為低電平時(shí),其它線為高電平。在確定某位行線置為低電平后,再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵,進(jìn)而確定該鍵的鍵值。

下面給出一個(gè)具體的例子:

輸入值為0xFE、輸出值為0xBF,則此鍵值為第一行第二列的交叉點(diǎn)的鍵值;若輸入值為0xFD,則此鍵值為第二行第八列的交叉點(diǎn)的鍵值。▼識(shí)鍵141▼鍵處理

鍵處理即在識(shí)別到某鍵按下(由鍵值表示)后,作出不同的處理。在應(yīng)用上,一般將鍵盤(pán)分為功能鍵和數(shù)字鍵(也可兩者復(fù)用),功能鍵一般采用散轉(zhuǎn)的辦法,讓程序執(zhí)行不同的操作。

實(shí)際上,鍵盤(pán)處理是很復(fù)雜的,它往往占到一個(gè)應(yīng)用程序的大部份代碼,可見(jiàn)其重要性,這種復(fù)雜并不來(lái)自于設(shè)備的本身,而是來(lái)自于操作者的習(xí)慣等等問(wèn)題,因此,在編寫(xiě)鍵盤(pán)處理程序之前,最好先把它從邏輯上理清,然后用適當(dāng)?shù)乃惴ū硎境鰜?lái),最后再編寫(xiě)代碼。本鍵盤(pán)共24個(gè)鍵,定義了功能

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論