版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本章主要介紹的內(nèi)容:嵌入式系統(tǒng)的GPIO、A/D轉(zhuǎn)換器接口、D/A轉(zhuǎn)換器接口、鍵盤與LED數(shù)碼管接口、LCD顯示接口、觸摸屏接口的基本原理、電路結(jié)構(gòu)與編程方法等。重點(diǎn)內(nèi)容:嵌入式系統(tǒng)的GPIO、A/D轉(zhuǎn)換器接口、D/A轉(zhuǎn)換器接口、鍵盤與LED數(shù)碼管接口電路結(jié)構(gòu)與編程方法等。目的和要求:掌握嵌入式系統(tǒng)的GPIO、A/D轉(zhuǎn)換器接口、D/A轉(zhuǎn)換器接口、鍵盤與LED數(shù)碼管接口電路結(jié)構(gòu)與編程方法等。了解LCD顯示接口、觸摸屏接口的基本原理、電路結(jié)構(gòu)與編程方法等。第7章嵌入式系統(tǒng)輸入/輸出設(shè)備接口7.1.1GPIO原理與結(jié)構(gòu)GPIO(GeneralPurposeI/O,通用輸入/輸出接口)也稱為并行I/O(parallelI/O),是最基本的I/O形式,由一組輸入引腳、輸出引腳或輸入/輸出引腳組成,CPU對(duì)它們能夠進(jìn)行存取操作。有些GPIO引腳能夠通過(guò)軟件編程改變輸入/輸出方向。一個(gè)雙向GPIO端口(D0)的簡(jiǎn)化功能邏輯圖如圖,圖中PORT為數(shù)據(jù)寄存器和DDR(DataDirectionRegister)為數(shù)據(jù)方向寄存器。7.1GPIO(通用輸入/輸出接口)雙向GPIO功能邏輯圖7.1.1GPIO原理與結(jié)構(gòu)DQGQDQGQPORT引腳PORTDDRD0WR_PORTRD_DDRWD_DDRRD_PORTDDR設(shè)置端口的方向。如果DDR的輸出為1,則GPIO端口為輸出形式;如果DDR的輸出為零,則GPIO端口為輸入形式。寫入WR_DDR信號(hào)能夠改變DDR的輸出狀態(tài)。DDR在微控制器地址空間中是一個(gè)映射單元。這種情況下,如果需要改變DDR,則需要將恰當(dāng)?shù)闹抵糜跀?shù)據(jù)總線的第0位(即D0),同時(shí)激活WR_DDR信號(hào)。讀DDR,就能得到DDR的狀態(tài),同時(shí)激活RD_DDR信號(hào)。如果設(shè)置PORT引腳端為輸出,則PORT寄存器控制著該引腳端狀態(tài)。如果將PORT引腳端設(shè)置為輸入,則此輸入引腳端的狀態(tài)由引腳端上的邏輯電路層來(lái)實(shí)現(xiàn)對(duì)它的控制。對(duì)PORT寄存器的寫操作,需要激活WR_PORT信號(hào)。PORT寄存器也映射到微控制器的地址空間。需指出,即使當(dāng)端口設(shè)置為輸入時(shí),如果對(duì)PORT寄存器進(jìn)行寫操作,并不會(huì)對(duì)該引腳產(chǎn)生影響。但從PORT寄存器的讀出,不管端口是什么方向,總會(huì)影響該引腳端的狀態(tài)。7.1.1GPIO原理與結(jié)構(gòu)7.1.2S3C2410A輸入/輸出端口編程實(shí)例S3C2410A共有117個(gè)多功能復(fù)用輸入/輸出端口(I/O口),分為端口A~端口H共8組。為了滿足不同系統(tǒng)設(shè)計(jì)的需要,每個(gè)I/O口可以很容易地通過(guò)軟件對(duì)進(jìn)行配置。每個(gè)引腳的功能必須在啟動(dòng)主程序之前進(jìn)行定義。如果一個(gè)引腳沒(méi)有使用復(fù)用功能,那么它可以配置為I/O口。注意:端口A除了作為功能口外,只能夠作為輸出口使用。在S3C2410A中,大多數(shù)的引腳端都是復(fù)用的,所以對(duì)于每一個(gè)引腳端都需要定義其功能。為了使用I/O口,首先需要定義引腳的功能。每個(gè)引腳端的功能通過(guò)端口控制寄存器(PnCON)來(lái)定義(配置)。與配置I/O口相關(guān)的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、雜項(xiàng)控制寄存器以及外部中斷控制寄存器(EXTINTN)等。下面介紹一個(gè)通過(guò)G口的控制發(fā)光二極管LED1和LED2輪流閃爍I/O口編程實(shí)例。對(duì)I/O口的操作是通過(guò)對(duì)相關(guān)各個(gè)寄存器的讀/寫實(shí)現(xiàn)的。要對(duì)寄存器進(jìn)行讀/寫操作,首先要對(duì)寄存器進(jìn)行定義。
有關(guān)I/O口相關(guān)寄存器的宏定義代碼如下://PortA控制寄存器
#definerGPACON(*(volatileunsigned*)0x56000000)//PortA數(shù)據(jù)寄存器
#definerGPADAT(*(volati1eunsigned*)0x56000004)//PortB控制寄存器
#definerGPBCON(*(volatileunsigned*)0x56000010)
//PortB數(shù)據(jù)寄存器
#definerGPBDAT(*(volatileunsigned*)0x56000014)//PortB上拉電阻禁止寄存器
#definerGPBUP(*(volatileunsigned*)0x56000018)7.1.2S3C2410A輸入/輸出端口編程實(shí)例//PortC控制寄存器#definerGPCCON(*(volatileunsigned*)0x56000020)//PortC數(shù)據(jù)寄存器#definerGPCDAT(*(volatileunsigned*)0x56000024)
//PortC上拉電阻禁止寄存器#definerGPCUP(*(volatileunsigned*)0x56000028)//PortD控制寄存器#definerGPDCON(*(volatileunsigned*)0x56000030)//PortD數(shù)據(jù)寄存器#definerGPDDAT(*(volatileunsigned*)0x56000034)//PortD上拉電阻禁止寄存器#definerGPDUP(*(volatileunsigned*)0x56000038)7.1.2S3C2410A輸入/輸出端口編程實(shí)例//PortE控制寄存器#definerGPECON(*(volatileunsigned*)0x56000040)//PortE數(shù)據(jù)寄存器#definerGPEDAT(*(volatileunsigned*)0x56000044)
//PortE上拉電阻禁止寄存器#definerGPEUP(*(volatileunsigned*)0x56000048)//PortF控制寄存器#definerGPFCON(*(volatileunsigned*)0x56000050)
//PortF數(shù)據(jù)寄存器#definerGPFDAT(*(volatileunsigned*)0x56000054)
//PortF上拉電阻禁止寄存器#definerGPFUP(*(volatileunsigned*)0x56000058)7.1.2S3C2410A輸入/輸出端口編程實(shí)例//PortG控制寄存器#definerGPGCON(*(volati1eunsigned*)0x56000060)//PortG數(shù)據(jù)寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)
//PortG上拉電阻禁止寄存器#definerGPGUP(*(volatileunsigned*)0x56000068)//PortH控制寄存器#definerGPHCON(*(volatileunsigned*)0x56000070)//PortH數(shù)據(jù)寄存器#definerGPHDAT(*(volatileunsigned*)0x56000074)//PortH上拉電阻禁止寄存器#definerGPHUP(*(volatileunsigned*)0x56000078)7.1.2S3C2410A輸入/輸出端口編程實(shí)例要想實(shí)現(xiàn)對(duì)G口的配置,只要在地址0x56000060中給32位的每一位賦值就可以了。如果G口的某個(gè)引腳被配置為輸出引腳,在PDATG對(duì)應(yīng)的地址位寫入1時(shí),該引腳輸出高電平;寫入0時(shí)該引腳輸出低電平。如果該引腳被配置為功能引腳,則該引腳作為相應(yīng)的功能引腳使用。下面是實(shí)現(xiàn)LED1和LED2輪流閃爍的程序代碼。7.1.2S3C2410A輸入/輸出端口編程實(shí)例voidmain(void){intflag,i;TargetInit();
//進(jìn)行硬件初始化操作,包括對(duì)I/O口的初始化操作
for(;;){if(flag==0){for(i=0;i<1000000;i++);
//延時(shí)
rGPGCON=rGPGCON&0xfff0ffff|0x00050000;
//配置第8、第9位為輸出引腳
rGPGDAT=rGPGDAT&0xeff|0x200;
//第8位輸出為低電平,第9位輸出高電平
for(i=0;i<10000000;i++);
//延時(shí)
flag=1; }7.1.2S3C2410A輸入/輸出端口編程實(shí)例
else{for(i=0;i<1000000;i++);
//延時(shí)
rGPGCON=rGPGCON&0xfff0ffff(0x00050000;
//配置第8、第9位為輸出引腳
rGPGDAT=rGPGDAT&Oxdff|0x100;
//第8位輸出為高電平,第9位輸出低電平
for(i=0;i<1000000;i++);
//延時(shí)
flag=0;}}}7.1.2S3C2410A輸入/輸出端口編程實(shí)例7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理
A/D轉(zhuǎn)換器(模/數(shù)轉(zhuǎn)換器)完成電模擬量到數(shù)字量的轉(zhuǎn)換。實(shí)現(xiàn)A/D轉(zhuǎn)換的方法很多,常用的方法有計(jì)數(shù)法、雙積分法和逐次逼近法等。
1.計(jì)數(shù)式A/D轉(zhuǎn)換器原理計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)如圖。其中,Vi是模擬輸入電壓,VO是D/A轉(zhuǎn)換器的輸出電壓,C是控制計(jì)數(shù)端,當(dāng)C=1(高電平)時(shí),計(jì)數(shù)器開始計(jì)數(shù),C=0(低電平)時(shí),則停止計(jì)數(shù)。D7~D0是數(shù)字量輸出,數(shù)字輸出量同時(shí)驅(qū)動(dòng)一個(gè)D/A轉(zhuǎn)換器。7.2A/D轉(zhuǎn)換器接口計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理8位D/A轉(zhuǎn)換器8位計(jì)數(shù)器+比較器-VICCLKD7D6D5D4D3D2D1D0CLK開始轉(zhuǎn)換轉(zhuǎn)換結(jié)束V0
計(jì)數(shù)式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:①首先/CLR(開始轉(zhuǎn)換信號(hào))有效(由高電平變成低電平),使計(jì)數(shù)器復(fù)位,計(jì)數(shù)器輸出數(shù)字信號(hào)為00000000,這個(gè)00000000的輸出送至8位D/A轉(zhuǎn)換器,8位D/A轉(zhuǎn)換器也輸出0V模擬信號(hào)。②當(dāng)/CLR恢復(fù)為高電平時(shí).計(jì)數(shù)器準(zhǔn)備計(jì)數(shù)。此時(shí),在比較器輸入端上待轉(zhuǎn)換的模擬輸入電壓VI大于VO(0V),比較器輸出高電平,使計(jì)數(shù)控制信號(hào)C為1。這樣,計(jì)數(shù)器開始計(jì)數(shù)。③從此計(jì)數(shù)器的輸出不斷增加,D/A轉(zhuǎn)換器輸入端得到的數(shù)字量也不斷增加,致使輸出電壓VO不斷上升。在VO<VI時(shí),比較器的輸出總是保持高電平,計(jì)數(shù)器不斷地計(jì)數(shù)。④當(dāng)VO上升到某值時(shí),出現(xiàn)VO>VI的情況時(shí),此時(shí),比較器的輸出為低電平,使計(jì)數(shù)控制信號(hào)C為0,計(jì)數(shù)器停止計(jì)數(shù)。這時(shí)候數(shù)字輸出量D7~D0就是與模擬電壓等效的數(shù)字量。計(jì)數(shù)控制信號(hào)由高變低的負(fù)跳變也是A/D轉(zhuǎn)換的結(jié)束信號(hào),表示已完成一次A/D轉(zhuǎn)換。計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)簡(jiǎn)單,但轉(zhuǎn)換速度較慢。7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理
2.雙積分式A/D轉(zhuǎn)換器原理雙積分式A/D轉(zhuǎn)換器對(duì)輸入模擬電壓和參考電壓進(jìn)行兩次積分,將電壓變換成與其成正比的時(shí)間間隔,利用時(shí)鐘脈沖和計(jì)數(shù)器測(cè)出其時(shí)間間隔,完成A/D轉(zhuǎn)換。雙積分式A/D轉(zhuǎn)換器主要包括積分器、比較器、計(jì)數(shù)器和標(biāo)準(zhǔn)電壓源等部件,其電路結(jié)構(gòu)圖如圖。
雙積分式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:首先對(duì)輸入待測(cè)的模擬電壓Vi進(jìn)行固定時(shí)間的積分;然后轉(zhuǎn)換到標(biāo)準(zhǔn)電壓VR進(jìn)行固定斜率的反向積分(定值積分)如圖。反向積分進(jìn)行到一定時(shí)間,便返回起始值。從圖中可看出對(duì)標(biāo)準(zhǔn)電壓VR進(jìn)行反向積分的時(shí)間T2正比于輸入模擬電壓,輸入模擬電壓越大,反向積分回到起始值的時(shí)間T越長(zhǎng),有VI=(T2/T1)VR。用標(biāo)準(zhǔn)時(shí)鐘脈沖測(cè)定反向積分時(shí)間(如計(jì)數(shù)器),就可以得到對(duì)應(yīng)于輸入模擬電壓的數(shù)字量,實(shí)現(xiàn)A/D轉(zhuǎn)換。雙積分式A/D轉(zhuǎn)換器具有很強(qiáng)的抗工頻干擾能力,轉(zhuǎn)換精度高,但速度較慢。7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理雙積分式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖
7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理標(biāo)準(zhǔn)電壓時(shí)鐘邏輯控制計(jì)數(shù)器VI模擬輸入積分器比較器……積分輸出波形7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理UOUO‘積分輸出UOt1t2t3tT1T2T2‘
3.逐次逼近式A/D轉(zhuǎn)換器原理逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)如圖,其工作過(guò)程可與天平稱重物類比,圖中的電壓比較器相當(dāng)于天平,被測(cè)電壓Ux相當(dāng)于重物,基準(zhǔn)電壓Ur相當(dāng)于電壓法碼。該方案具有各種規(guī)格的按8421編碼的二進(jìn)制電壓法碼UR,根據(jù)Ux<UR和Ux>UR,比較器有不同的輸出以打開或關(guān)閉逐次逼近寄存器的各位。輸出從大到小的基準(zhǔn)電壓法碼,與被測(cè)電壓Ux比較,并逐漸減小其差值,使之逼近平衡。當(dāng)Ux=UR時(shí),比較器輸出為零,相當(dāng)于天平平衡,最后以數(shù)字顯示的平衡值即為被測(cè)電壓值。逐次逼近式A/D轉(zhuǎn)換器轉(zhuǎn)換速度快,轉(zhuǎn)換精度較高,對(duì)N位A/D轉(zhuǎn)換只需N個(gè)時(shí)鐘脈沖即可完成,可用于測(cè)量微秒級(jí)的過(guò)渡過(guò)程的變化,是在計(jì)算機(jī)系統(tǒng)中采用最多的一種A/D轉(zhuǎn)換方法。7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理逐次逼近比較寄存器(A/D)電壓比較器解碼開關(guān)網(wǎng)絡(luò)(D/A)譯碼顯示被測(cè)電壓時(shí)鐘脈沖基準(zhǔn)源ERUR基準(zhǔn)電壓UX△Ua1a2a3a4a5an……
4.A/D轉(zhuǎn)換器的主要指標(biāo)
(1)分辨率(Resolution)分辨率用來(lái)反映A/D轉(zhuǎn)換器對(duì)輸入電壓微小變化的響應(yīng)能力,通常用數(shù)字輸出最低位(LSB)所對(duì)應(yīng)的模擬輸入的電平值表示。n位A/D轉(zhuǎn)換能反應(yīng)1/2n滿量程的模擬輸入電平。分辨率直接與轉(zhuǎn)換器的位數(shù)有關(guān),一般也可簡(jiǎn)單地用數(shù)字量的位數(shù)來(lái)表示分辨率,即n位二進(jìn)制數(shù),最低位所具有的權(quán)值,就是它的分辨率。值得注意的是,分辨率與精度是兩個(gè)不同的概念,不要把兩者相混淆。即使分辨率很高,也可能由于溫度漂移、線性度等原因,而使其精度不夠高。7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理
(2)精度(Accuracy)精度有絕對(duì)精度(AbsoluteAccuracy)和相對(duì)精度(RelativeAccuracy)兩種表示方法。
①絕對(duì)精度在一個(gè)轉(zhuǎn)換器中,對(duì)應(yīng)于一個(gè)數(shù)字量的實(shí)際模擬輸入電壓和理想的模擬輸入電壓之差并非是一個(gè)常數(shù)。把它們之間的差的最大值,定義為“絕對(duì)誤差”。通常以數(shù)字量的最小有效位(LSB)的分?jǐn)?shù)值來(lái)表示絕對(duì)精度,如±1LSB。絕對(duì)誤差包括量化精度和其他所有精度。
②相對(duì)精度是指整個(gè)轉(zhuǎn)換范圍內(nèi),任一數(shù)字量所對(duì)應(yīng)的模擬輸入量的實(shí)際值與理論值之差,用模擬電壓滿量程的百分比表示。
例如,滿量程為l0V,10位A/D芯片,若其絕對(duì)精度為±1/2LSB,則其最小有效位的量化單位為9.77mV,其絕對(duì)精度為4.88mV,其相對(duì)精度為0.048%。
③轉(zhuǎn)換時(shí)間(ConversionTime)轉(zhuǎn)換時(shí)間是指完成一次A/D轉(zhuǎn)換所需的時(shí)間,即由發(fā)出啟動(dòng)轉(zhuǎn)換命令信號(hào)到轉(zhuǎn)換結(jié)束信號(hào)開始有效的時(shí)間間隔。轉(zhuǎn)換時(shí)間的倒數(shù)稱為轉(zhuǎn)換速率。例如AD570的轉(zhuǎn)換時(shí)間為25us,其轉(zhuǎn)換速率為40kHz。
④量程量程是指所能轉(zhuǎn)換的模擬輸入電壓范圍,分單極性、雙極性兩種類型。
例如,單極性的量程為0~+5V,0~+10V,0~+20V;雙極性的量程為-5~+5V,-10~+l0V。7.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理7.2.2S3C2410A的A/D轉(zhuǎn)換器1.S3C2410AA/D轉(zhuǎn)換器和觸摸屏接口電路S3C2410A包含一個(gè)8通道的A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)見(jiàn)圖,該電路可以將模擬輸入信號(hào)轉(zhuǎn)換成10位數(shù)字編碼(10位分辨率),差分線性誤差為1.0LSB,積分線性誤差為2.0LSB。在A/D轉(zhuǎn)換時(shí)鐘頻率為2.5MHz時(shí),其最大轉(zhuǎn)換率為500KSPS(KiloSamplesPerSecond,千采樣點(diǎn)每秒),輸入電壓范圍是0~3.3V。A/D轉(zhuǎn)換器支持片上操作、采樣保持功能和掉電模式。S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路如圖。S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路7.2.2S3C2410A的A/D轉(zhuǎn)換器外部晶體管控制8:1MUXADC輸入控制A/D轉(zhuǎn)換ADC接口觸摸屏控制器中斷發(fā)生器EINT[23]EINT[22]EINT[21]EINT[20]nYPONYMONnXPONXMONVDDA_ADCAIN[7]AIN[6]AIN[5]AIN[4]AIN[3]AIN[2]AIN[1]AIN[0]VSSA_ADCINT_ADCINT_TC等待中斷模式S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路7.2.2S3C2410A的A/D轉(zhuǎn)換器外部晶體管的控制邏輯EINT[23]EINT[22]EINT[21]EINT[20]nYPONYMONnXPONXMON外部電壓源AIN[7]XPAIN[5]XMYPYMS3C2410A觸摸屏
2.與S3C2410AA/D轉(zhuǎn)換器相關(guān)的寄存器使用S3C2410A的A/D轉(zhuǎn)換器進(jìn)行模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換,需要配置以下相關(guān)的寄存器。
(1)ADC控制寄存器(ADCCON)ADC控制寄存器(ADCCON)是一個(gè)16位的可讀/寫的寄存器,地址為0x58000000,復(fù)位值為0x3FC4。ADCCON位的功能描述如表所列。7.2.2S3C2410A的A/D轉(zhuǎn)換器ADC控制寄存器(ADCCON)的位功能(一)ADCCON符號(hào)位描述初始狀態(tài)ECFLG[15]A/D轉(zhuǎn)換狀態(tài)標(biāo)志(只讀)。0:A/D轉(zhuǎn)換中;1:A/D轉(zhuǎn)換結(jié)束0PRSCEN[14]A/D轉(zhuǎn)換器前置分頻器使能控制。0:禁止;1:使能0PRSCVL[13:6]A/D轉(zhuǎn)換器前置分頻器數(shù)值設(shè)置,數(shù)值取值范圍:1~255。A/D時(shí)鐘必須小于PCLK的1/5A/D時(shí)鐘=PCLK/(PRSCVL+1)0xFFSEL_MUX[5:3]模擬輸入通道選擇。
000:AIN0;001:AIN1;010:AIN2;011:AIN3;100:AIN4;101:AIN5;110:AIN6;111:AIN707.2.2S3C2410A的A/D轉(zhuǎn)換器ADCCON符號(hào)位描述初始狀態(tài)STDBM[2]
備用、等待或靜態(tài)(Standby)模式選擇。
0:正常模式;1:備用模式1READ_START[1]利用讀操作來(lái)啟動(dòng)A/D轉(zhuǎn)換。
0:不使能讀操作啟動(dòng);1:使能讀操作啟動(dòng)0ENABLE_START[0]A/D轉(zhuǎn)換通過(guò)將該位置1來(lái)啟動(dòng),如果READ_START有效(READ_START置1),則該位無(wú)效。
0:不操作;1:?jiǎn)?dòng)A/D轉(zhuǎn)換,A/D轉(zhuǎn)換開始后該位自動(dòng)清零07.2.2S3C2410A的A/D轉(zhuǎn)換器ADC控制寄存器(ADCCON)的位功能(二)
(2)ADC觸摸屏控制寄存器(ADCTSC)ADC觸摸屏控制寄存器(ADCTSC)是一個(gè)可讀/寫的寄存器,地址為0x58000004,復(fù)位值為0x058。ADCTSC的位功能描述如表所列。在正常A/D轉(zhuǎn)換時(shí),AUTO_PST和XY_PST都置成0即可,其他各位與觸摸屏有關(guān),不需要進(jìn)行設(shè)置。7.2.2S3C2410A的A/D轉(zhuǎn)換器ADC控制寄存器(ADCTSC)的位功能(一)ADCTSC符號(hào)位描述初始狀態(tài)Reserved[8保留位0YM_SEN[7]選擇YMON的輸出值。
0:YMON輸出0(YM=高阻)
1:YMON輸出1(YM=GND)0YP_SEN[6]選擇nYPON的輸出值。
0:nYPON輸出0(YP=外部電壓)
1:nYPON輸出1(YP連接到AIN[5])1XM_SEN[5]選擇XMON的輸出值。
0:XMON輸出0(XM=高阻)
1:XMON輸出1(XM=GND)07.2.2S3C2410A的A/D轉(zhuǎn)換器ADCTSC符號(hào)位描述初始狀態(tài)XP_SEN[4]選擇nXPON的輸出值。
0:nXPON輸出0(XP=外部電壓)
1:nXPON輸出1(XP連接AIN[7])0PULL_UP[3]上拉開關(guān)使能。
0:XP上拉使能;1:XP上拉不使能1AUTO_P5T[2]X位置和Y位置自動(dòng)順序轉(zhuǎn)換。
0:正常ADC轉(zhuǎn)換模式
1:自動(dòng)順序X/Y位置轉(zhuǎn)換模式0XY_PST[1:0]X位置或Y位置的手動(dòng)測(cè)量。
00:無(wú)操作模式;01:X位置測(cè)量
10:Y位置測(cè)量;11:等待中斷模式07.2.2S3C2410A的A/D轉(zhuǎn)換器ADC控制寄存器(ADCTSC)的位功能(二)
(3)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)是一個(gè)可讀/寫的寄存器,地址為0x58000008,復(fù)位值為0x00FF。ADCDLY的位功能描述如表所列。ADC啟動(dòng)延時(shí)寄存器(ADCDLY)的位功能
ADCDLY符號(hào)位描述DELAY[15:0](1)在正常轉(zhuǎn)換模式、分開的X/Y位置轉(zhuǎn)換模式和X/Y位置自動(dòng)(順序)轉(zhuǎn)換模式的X/Y位置轉(zhuǎn)換延時(shí)值。(2)在等待中斷模式:當(dāng)在此模式按下觸筆時(shí),這個(gè)寄存器在幾ms時(shí)間間隔內(nèi)產(chǎn)生用于進(jìn)行X/Y方向自動(dòng)轉(zhuǎn)換的中斷信號(hào)(INT_TC)。
注意:不能使用零位值(0x0000)。7.2.2S3C2410A的A/D轉(zhuǎn)換器
(4)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0和ADCDAT1)S3C2410A有ADCDAT0和ADCDAT1兩個(gè)ADC轉(zhuǎn)換數(shù)據(jù)寄存器。ADCDAT0和ADCDAT1為只讀寄存器,地址分別為0x5800000C和0x58000010。在觸摸屏應(yīng)用中,分別使用ADCDAT0和ADCDAT1保存X位置和Y位置的轉(zhuǎn)換數(shù)據(jù)。對(duì)于正常的A/D轉(zhuǎn)換,使用ADCDAT0來(lái)保存轉(zhuǎn)換后的數(shù)據(jù)。ADCDAT0的位功能描述如表所列,ADCDAT1的位功能描述如表所列,除了位[9:0]為Y位置的轉(zhuǎn)換數(shù)據(jù)值以外,其他與ADCDAT0類似。通過(guò)讀取該寄存器的位[9:0],可以獲得轉(zhuǎn)換后的數(shù)字量。7.2.2S3C2410A的A/D轉(zhuǎn)換器ADCDAT0的位功能描述(一)ADCDATO位名位描述UPDOWN[15]在等待中斷模式時(shí),觸筆的狀態(tài)為上還是下。
0:觸筆為下?tīng)顟B(tài);1:觸筆為上狀態(tài)AUTO_PST[14]是否使用自動(dòng)的X位置和Y位置的順序轉(zhuǎn)換。
0:正常A/D轉(zhuǎn)換;1:X/Y位置自動(dòng)順序測(cè)量XY_PST[13:12]手動(dòng)測(cè)量X位置或Y位置。
00:無(wú)操作模式;01:X位置測(cè)量
10:Y位置測(cè)量;11:等待中斷模式Reserved[11:10]保留XPDATA(正常ADC)[9:0]X位置的轉(zhuǎn)換數(shù)據(jù)值(包括正常A/D轉(zhuǎn)換的數(shù)據(jù)值)。取值范圍:0~3FF7.2.2S3C2410A的A/D轉(zhuǎn)換器ADCDATO位名位描述[15:10]與ADCDAT0的位功能相同YPDATA(正常ADC)[9:0]Y位置的轉(zhuǎn)換數(shù)據(jù)值(包括正常A/D轉(zhuǎn)換的數(shù)據(jù)值)。取值范圍:0~3FF7.2.2S3C2410A的A/D轉(zhuǎn)換器ADCDAT1的位功能描述(二)7.2.3S3C2410AA/D接口編程實(shí)例下面介紹一個(gè)A/D接口編程實(shí)例,其功能實(shí)現(xiàn)從A/D轉(zhuǎn)換器的通道0獲取模擬數(shù)據(jù),并將轉(zhuǎn)換后的數(shù)字量以波形的形式在LCD上顯示。模擬輸入信號(hào)的電壓范圍必須是0~2.5V。程序如下:
1.定義與A/D轉(zhuǎn)換相關(guān)的寄存器
定義如下:
#definerADCCON(*(volatileunsigned*)0x58000000)//ADC控制寄存器
#definerADCTSC(*(volatileunsigned*)0x58000004)//ADC觸摸屏控制寄存器
#definerADCDLY(*(volatileunsigned*)0x58000008)//ADC啟動(dòng)或間隔延時(shí)寄存器
#definerADCDAT0(*(volatileunsigned*)0x5800000c)//ADC轉(zhuǎn)換數(shù)據(jù)寄存器0
#definerADCDAT1(*(volati1eunsigned*)0x58000010)//ADC轉(zhuǎn)換數(shù)據(jù)寄存器
2.對(duì)A/D轉(zhuǎn)換器進(jìn)行初始化
程序中的參數(shù)ch表示所選擇的通道號(hào),程序如下:voidAD_Init(unsignedcharch){rADCDLY=100;
//ADC啟動(dòng)或間隔延時(shí)
rADCTSC=0;
//選擇ADC模式
rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0);
//設(shè)置ADC控制寄存器}7.2.3S3C2410AA/D接口編程實(shí)例
3.獲取A/D的轉(zhuǎn)換值
程序中的參數(shù)ch表示所選擇的通道號(hào),程序如下:intGet_AD(unsignedcharch){inti;intval=0;if(ch>7)return0;
//通道不能大于7
for(i=0;i<16;i++){
//為轉(zhuǎn)換準(zhǔn)確,轉(zhuǎn)換16次
rADCCON|=0x1;
//啟動(dòng)A/D轉(zhuǎn)換
rADCCON=rADCCON&0xffc7|(ch<<3);while(rADCCON&0x1);
//避免第一個(gè)標(biāo)志出錯(cuò)
while(!(rADCCON&0x8000));
//避免第二個(gè)標(biāo)志出錯(cuò)
val+=(rADCDAT0&0x03ff);Delay(10);}return(val>>4);
//為轉(zhuǎn)換準(zhǔn)確,除以16取均值}7.2.3S3C2410AA/D接口編程實(shí)例
4.主函數(shù)
實(shí)現(xiàn)將轉(zhuǎn)換后的數(shù)據(jù)在LCD上以波形的方式顯示,程序如下:voidmain(void){inti,p=0;unsignedshortbuffer[Length];
//顯示緩沖區(qū)
Target_Init();GUI_Init();
//圖形界面初始化
Set_Color(GUI_BLUE);
//畫顯示背景界面
Fill_Rect(0,0,319,239);Set_Color(GUI_RED);DrawLine(0,119,319,119);Set_Font(&GUI_Font8x16);
//設(shè)定字體類型API
Set_Color(GUI_WHITE);Set_BKColor(GUI_BLUE);
//設(shè)定背景顏色API
Fill_Rect(0,0,319,3);7.2.3S3C2410AA/D接口編程實(shí)例Fill_Rect(0,0,3,239);Fill_Rect(316,0,319,239);Fill_Rect(0,236,319,239);Disp_String(“ADCDEMO”,(320–8*8)/2,30);for(i=0;i<Length;i++)buffer[i]=0;while(1){p=0;for(i=0;i<Length;i++){buffer[p]=Get_AD(0);
//從通道獲取轉(zhuǎn)換后的數(shù)據(jù)
Delay(20);p++;}p=0;for(i=0;i<Length;i++){Uart_Printf(“%d\n”,buffer[p]);7.2.3S3C2410AA/D接口編程實(shí)例
p++;}p=0;for(i=0;i<Length;i++){buffer[p]=AD2Y(buffer[p]);P++;}p=0;for(i=0;i<Length;i++){Uart_Printf("量化后:%d\n",buffer[p]);p++;}ShowWavebuffer(buffer);//在LCD上顯示A/D轉(zhuǎn)換后的波形
Delay(1000);}}7.2.3S3C2410AA/D接口編程實(shí)例7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)的過(guò)程稱為數(shù)/模轉(zhuǎn)換。能夠完成這種轉(zhuǎn)換的電路叫做數(shù)/模轉(zhuǎn)換器,簡(jiǎn)稱為D/A轉(zhuǎn)換器,簡(jiǎn)記為DAC(DigitaltoAnalogConverter)。D/A轉(zhuǎn)換器將輸入的數(shù)字量轉(zhuǎn)換為模擬量輸出,數(shù)字量是由若干數(shù)位構(gòu)成的,例如一個(gè)8位的二進(jìn)制數(shù)D0~D7,每個(gè)數(shù)位都有一定的權(quán)值。當(dāng)Dn(n=0~7)=1就表示具有了這一位的權(quán)值,例如第3位D2的權(quán)值為22=4,最高位D7的權(quán)值為27=128。D/A轉(zhuǎn)換器把一個(gè)數(shù)字量變?yōu)槟M量,就是把每一位上的代碼按照權(quán)值轉(zhuǎn)換為對(duì)應(yīng)的模擬量,再把各位所對(duì)應(yīng)的模擬量相加,所得到各位模擬量的和便是數(shù)字量所對(duì)應(yīng)的模擬量。在集成化的D/A轉(zhuǎn)換器中,通常采用電阻網(wǎng)絡(luò)實(shí)現(xiàn)將數(shù)字量轉(zhuǎn)換為模擬電流,然后再用運(yùn)算放大器完成模擬電流到模擬電壓的轉(zhuǎn)換。目前D/A轉(zhuǎn)換集成電路芯片大都包含了這兩個(gè)部分,如果只包含電阻網(wǎng)絡(luò)的D/A芯片,則需要連接外接運(yùn)算放大器才能轉(zhuǎn)換為模擬電壓。根據(jù)電阻網(wǎng)絡(luò)的結(jié)構(gòu)可以分為權(quán)電阻網(wǎng)絡(luò)DAC、T型電阻網(wǎng)絡(luò)DAC、倒T型電阻網(wǎng)絡(luò)DAC、權(quán)電流DAC等形式。7.3D/A轉(zhuǎn)換器接口
1.T型電阻網(wǎng)絡(luò)DAC一個(gè)4位T型電阻網(wǎng)絡(luò)DAC如圖。電路由R-2R電阻解碼網(wǎng)絡(luò)、模擬電子開關(guān)和求和放大電路構(gòu)成,因?yàn)镽和2R組成T型,故稱為T型電阻網(wǎng)絡(luò)DAC。圖中電阻網(wǎng)絡(luò)中只有R和2R兩種電阻值,顯然克服了上面權(quán)電阻網(wǎng)絡(luò)DAC存在的缺點(diǎn)。4位T型電阻網(wǎng)絡(luò)DAC7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理2R2R2R2R2RRRR2RRFD0D1D2D3S0S1S2S3-+AVREFVOIr
由圖可知,根據(jù)等效電源定理不難看出,每經(jīng)過(guò)一個(gè)電阻并聯(lián)支路,等效電源電壓減少一半,而等效電阻不變,且均為R。電路中的信號(hào)傳遞過(guò)程如圖。當(dāng)傳遞至最左邊時(shí),運(yùn)放的輸入端等效內(nèi)阻仍為R,而等效電壓經(jīng)過(guò)N級(jí)則減為VREF/2n。當(dāng)傳遞到運(yùn)放的輸入端時(shí),其運(yùn)放的等效內(nèi)阻也是R,而等效電壓則為VREF/2n-1。根據(jù)疊加原理,運(yùn)放總的等效電壓是各支路等效電壓之和,即7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理T型網(wǎng)絡(luò)信號(hào)傳遞7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理2R2RVREF2n2RRVREF2n-1R2RRVREF2n-2R若取RF=3R,運(yùn)放的輸入端電流為:運(yùn)放的輸出電壓VO為:可見(jiàn),輸出模擬量VO與輸入數(shù)字量成正比。7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理
2.數(shù)/模轉(zhuǎn)換器的分類
(1)電壓輸出型電壓輸出型D/A轉(zhuǎn)換器雖有直接從電阻陣列輸出電壓的,但一般采用內(nèi)置輸出放大器以低阻抗輸出。直接輸出電壓的器件僅用于高阻抗負(fù)載,由于無(wú)輸出放大器部分的延遲,故常作為高速D/A轉(zhuǎn)換器使用。例如TLC5620。
(2)電流輸出型電流輸出型D/A轉(zhuǎn)換器(如THS5661A)直接輸出電流,但應(yīng)用中通常外接電流一電壓轉(zhuǎn)換電路得到電壓輸出。電流一電壓可以直接在輸出引腳上連接一個(gè)負(fù)載電阻,實(shí)現(xiàn)電流一電壓轉(zhuǎn)換。但多采用的是外接運(yùn)算放大器的形式。另外,大部分CMOSD/A轉(zhuǎn)換器當(dāng)輸出電壓不為零時(shí)不能正確動(dòng)作,所以必須外接運(yùn)算放大器。由于在D/A轉(zhuǎn)換器的電流建立時(shí)間上加入了外接運(yùn)算放入器的延遲,使D/A響應(yīng)變慢。此外,這種電路中運(yùn)算放大器因輸出引腳的內(nèi)部電容而容易起振,有時(shí)必須作相位補(bǔ)償。
(3)乘算型D/A轉(zhuǎn)換器中有使用恒定基準(zhǔn)電壓的,也有在基準(zhǔn)電壓輸入上加交流信號(hào)的,后者由于能得到數(shù)字輸入和基準(zhǔn)電壓輸入相乘的結(jié)果而輸出,因而稱為乘算型D/A轉(zhuǎn)換器(如AD7533)。乘算型D/A轉(zhuǎn)換器一般不僅可以進(jìn)行乘法運(yùn)算,而且可以作為使輸入信號(hào)數(shù)字化地衰減的衰減器及對(duì)輸入信號(hào)進(jìn)行調(diào)制的調(diào)制器使用。7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理
3.數(shù)/模轉(zhuǎn)換器(DAC)的主要技術(shù)指標(biāo)描述DAC技術(shù)性能有許多技術(shù)指標(biāo),這里主要介紹幾個(gè)主要技術(shù)指標(biāo)。
(1)分辨率(Resolution)DAC電路所能分辨的最小輸出電壓與滿量程輸出電壓之比稱為DAC的分辨率。最小輸出電壓是指輸入數(shù)字量只有最低有效位為1時(shí)的輸出電壓,最大輸出電壓是指輸入數(shù)字量各位全為1時(shí)的輸出電壓。DAC的分辨率可用下式表示:
分辨率=1/(2n-1)式中,n表示數(shù)字量的二進(jìn)制位數(shù)。DAC產(chǎn)生誤差的主要原因有:基準(zhǔn)電壓VREF的波動(dòng),運(yùn)放的零點(diǎn)漂移,電組網(wǎng)絡(luò)中電阻阻值偏差等原因。7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理
(2)轉(zhuǎn)換誤差轉(zhuǎn)換誤差常用滿量程FSR(FullScaleRange)的百分?jǐn)?shù)來(lái)表示。例如,一個(gè)DAC的線性誤差為0.05%,就是說(shuō)轉(zhuǎn)換誤差是滿量程輸出的萬(wàn)分之五。有時(shí)轉(zhuǎn)換誤差用最低有效位LSB(LeastSignificantBit)的倍數(shù)來(lái)表示。例如,一個(gè)DAC的轉(zhuǎn)換誤差是LSB/2,則表示輸出電壓的絕對(duì)誤差是最低有效位(LSB)為1時(shí)輸出電壓的1/2。DAC的轉(zhuǎn)換誤差主要有失調(diào)誤差和滿值誤差。失調(diào)誤差是指輸入數(shù)字量全為0時(shí),模擬輸出值與理論輸出值的偏差。在一定溫度下的失調(diào)誤差可以通過(guò)外部電路調(diào)整措施進(jìn)行補(bǔ)償,也有些DAC芯片本身有調(diào)零端進(jìn)行調(diào)零。對(duì)于沒(méi)有設(shè)置調(diào)零端的芯片,可以采用外接校正偏置電路加到運(yùn)放求和端來(lái)消除。滿值誤差又稱增益誤差,是指輸入數(shù)字量全為1時(shí),實(shí)際輸出電壓不等于滿值的偏差。滿值誤差通過(guò)調(diào)整運(yùn)放的反饋電阻加以消除。DAC的分辨率和轉(zhuǎn)換誤差共同決定了DAC的精度。要使DAC的精度高,不僅要選擇位數(shù)高的DAC,還要選用穩(wěn)定度高的參考電壓源VREF和低漂移的運(yùn)算放大器與其配合。7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理
(3)建立時(shí)間(SettingTime)建立時(shí)間是描述DAC轉(zhuǎn)換速度快慢的一個(gè)重要參數(shù),一般是指輸入數(shù)字量變化后,輸出模擬量穩(wěn)定到相應(yīng)數(shù)值范圍所經(jīng)歷的時(shí)間。DAC中的電阻網(wǎng)絡(luò),模擬開關(guān)等是非理想器件,各種寄生參數(shù)及開關(guān)延遲等都會(huì)限制轉(zhuǎn)換速度。實(shí)際上建立時(shí)間的長(zhǎng)短不僅與DAC本身的轉(zhuǎn)換速度有關(guān),還與數(shù)字量變化范圍有關(guān)。輸入數(shù)字量從全0變到全1(或者從全1變到全0)時(shí),建立時(shí)間最長(zhǎng),稱為滿量程變化建立時(shí)間。一般產(chǎn)品手冊(cè)上給出的是滿量程變化建立時(shí)間。根據(jù)建立時(shí)間的長(zhǎng)短,DAC可分為以下幾種類型:低速DAC,建立時(shí)間≥100μs;中速DAC,建立時(shí)間為10~100μs;高速DAC,建立時(shí)間為1~10μs;較高速DAC,建立時(shí)間為100ns~1μs;超高速DAC,建立時(shí)間為<100ns。顯然轉(zhuǎn)換速率也可以用頻率來(lái)表示。其他指標(biāo)還有線性度(Linearity)、轉(zhuǎn)換精度、溫度系數(shù)/漂移等。7.3.1D/A(數(shù)/模)轉(zhuǎn)換器的工作原理7.3.2S3C2410A與D/A轉(zhuǎn)換器的接口電路
1.MAX5380與S3C2410A的連接電路MAX5380是電壓輸出型的8位D/A轉(zhuǎn)換芯片,使用I2C串行接口,轉(zhuǎn)換速率高達(dá)400kHz,其輸入數(shù)字信號(hào)和輸出模擬信號(hào)的對(duì)應(yīng)關(guān)系如表。MAX5380與S3C2410A的連接電路如圖。MAX5380的時(shí)鐘SCL和數(shù)據(jù)輸入SDA連接到S3C2410A的IICSCL(GPE15)和IICSDA(GPE14),CON2的1、2兩端輸出轉(zhuǎn)換后的模擬信號(hào)值,其輸出電壓范圍為0~2V。S3C2410A通過(guò)I2C接口向MAX5380發(fā)送數(shù)據(jù),MAX5380將接收I2C總線的數(shù)據(jù),并將其轉(zhuǎn)換為模擬電壓信號(hào)輸出到CON2。MAX5380與S3C2410A的連接電路21OUTSCLGNDVDDSDAU14MAX538054123IICSCLIICSDAC28104VDD33AIN2J7CON2數(shù)字輸入模擬輸出11111111(255/256)×2V10000000十1V000000017.8mV000000000MAX5380數(shù)字輸入與模擬輸出對(duì)照表7.3.2S3C2410A與D/A轉(zhuǎn)換器的接口電路
2.MAX5380的軟件編程MAX5380的編程動(dòng)作通過(guò)函數(shù)voidiic_write_max5380(U32slvAdd,U8data)完成,其中slvAddr為從設(shè)備地址,MAX5380使用0x60;data為待寫入的數(shù)據(jù),即發(fā)送給MAX5380的數(shù)字值;iic_write_max5380的代碼請(qǐng)參考6.2節(jié)(I2C部分)。通過(guò)調(diào)用該函數(shù)可以實(shí)現(xiàn)給CON2輸出各種波形信號(hào)。7.3.2S3C2410A與D/A轉(zhuǎn)換器的接口電路(1)輸出三角波
for(j=0;j<20;j++){for(I=0;I<256;i++){iic_write_max5380(0x60,(u8)i);}for(i=256;i>=0;i--){iic_write_max5380(0x60,(u8)i);}}7.3.2S3C2410A與D/A轉(zhuǎn)換器的接口電路(2)輸出鋸齒波
for(j=0;j<20;j++){for(i=0;i<256;i++){iic_write_max3580(0x60,(U8)i);}}(3)輸出方波
for(j=0;j<20;j++){for(i=0;i<256;i++){iic_write_max3580(0x60,(U8)0);}for(i=0;i<256;i++){iic_write_max3580(0x60,(U8)0xff);}}7.3.2S3C2410A與D/A轉(zhuǎn)換器的接口電路7.4.1鍵盤與LED數(shù)碼管接口基本原理與結(jié)構(gòu)
1.鍵盤的分類鍵盤按與微控制器的連接方式,其結(jié)構(gòu)可分為線性鍵盤和矩陣鍵盤兩種形式。線性鍵盤由若干個(gè)獨(dú)立的按鍵組成,每個(gè)按鍵的一端與微控制器的一個(gè)I/O口相連。有多少個(gè)鍵就要有多少根連線與微控制器的I/O口相連,適用于按鍵少的場(chǎng)合。矩陣鍵盤的按鍵按N行M列排列,每個(gè)按鍵占據(jù)行列的一個(gè)交點(diǎn),需要的I/O口數(shù)目是N+M,容許的最大按鍵數(shù)是N×M。矩陣鍵盤可以減少與微控制器I/O接口的連線數(shù),是常用的一種鍵盤結(jié)構(gòu)形式。根據(jù)矩陣鍵盤的識(shí)鍵和譯鍵方法的不同,矩陣鍵盤又可以分為非編碼鍵盤和編碼鍵盤兩種。非編碼鍵盤主要用軟件的方法識(shí)鍵和譯鍵。根據(jù)掃描方法的不同,可以分為行掃描法、列掃描法和反轉(zhuǎn)法3種。編碼鍵盤主要用硬件(鍵盤和LED專用接口芯片)來(lái)實(shí)現(xiàn)鍵的掃描和識(shí)別,例如使用8279專用接口芯片。鍵盤的按鍵實(shí)際上就是一個(gè)開關(guān),常用的按鍵開關(guān)有機(jī)械式按鍵、電容式按鍵、薄膜式按鍵、霍耳效應(yīng)按鍵等。7.4鍵盤與LED數(shù)碼管接口
(1)機(jī)械式按鍵機(jī)械式按鍵開關(guān)的構(gòu)造有兩種。一種是內(nèi)含兩個(gè)金屬片和一個(gè)復(fù)位彈簧,按鍵時(shí),兩個(gè)金屬片便被壓在一起;另一種機(jī)械式按鍵是用底面帶一小塊導(dǎo)電橡膠的成型泡沫硅橡膠帽做的,壓鍵時(shí),導(dǎo)電橡膠將印制電路板上的兩條印制線短路。機(jī)械式按鍵的主要缺點(diǎn)是在觸點(diǎn)可靠地接觸之前會(huì)通斷多次,即容易產(chǎn)生抖動(dòng);另外,觸點(diǎn)變臟或氧化,使導(dǎo)通的可靠性降低。但機(jī)械式按鍵價(jià)格較低,手感好,使用范圍較廣。
(2)電容式按鍵電容式按鍵由印制電路板上的兩小塊金屬片和在泡沫橡膠片下面可活動(dòng)的另一塊金屬片構(gòu)成。壓鍵時(shí),可活動(dòng)的金屬片向兩塊固定的金屬片靠近,從而改變了兩塊固定的金屬片之間的電容。此時(shí),檢測(cè)電容變化的電路就會(huì)產(chǎn)生一個(gè)邏輯電平信號(hào),以表示該鍵己被按下。顯然,該類按鍵沒(méi)有機(jī)械觸點(diǎn)被氧化或變臟的問(wèn)題。7.4.1鍵盤與LED數(shù)碼管接口基本原理與結(jié)構(gòu)
(3)薄膜式按鍵薄膜式按鍵是一種特殊的機(jī)械式按鍵開關(guān),由三層塑料或橡膠夾層結(jié)構(gòu)構(gòu)成。上層在每一行鍵下面有一條印制銀導(dǎo)線,中間層在每個(gè)鍵下面有一個(gè)小圓孔,下層在每一列鍵下面也有一條印制銀導(dǎo)線。壓鍵時(shí)將上面一層的印制銀導(dǎo)線壓過(guò)中層的小孔與下面一層的印制銀導(dǎo)線接觸。薄膜式按鍵可以做成很薄的密封形式。
(4)霍耳效應(yīng)按鍵霍耳效應(yīng)按鍵利用活動(dòng)電荷在磁場(chǎng)中的偏轉(zhuǎn)效果。參考電流從半導(dǎo)體晶體的兩個(gè)相對(duì)面之間流過(guò),壓鍵時(shí),晶體便在磁力線垂直于參考電流方向的磁場(chǎng)中移動(dòng)。晶體在磁場(chǎng)中移動(dòng)會(huì)在晶體另外兩個(gè)相對(duì)的表面之間產(chǎn)生一個(gè)小電壓,該電壓經(jīng)過(guò)放大之后用來(lái)表示鍵已被壓下。該類按鍵是一種無(wú)機(jī)械觸點(diǎn)的按鍵開關(guān),密封性很好,但價(jià)格較高。7.4.1鍵盤與LED數(shù)碼管接口基本原理與結(jié)構(gòu)
2.LED數(shù)碼管LED(LightEmittingDiode,發(fā)光二極管)數(shù)碼管(也稱為七段數(shù)碼管)價(jià)格低廉、體積小、功耗低,而可靠性又很好,在嵌入式控制系統(tǒng)中應(yīng)用非常普遍。如圖,LED數(shù)碼管一般由8個(gè)發(fā)光管組成,分別稱為a、b、c、d、e、f、g7個(gè)字段和一個(gè)小數(shù)點(diǎn)段DP。通過(guò)7個(gè)字段的不同組合,可以顯示0~9和A~F共16個(gè)字母數(shù)字,從而實(shí)現(xiàn)十六進(jìn)制的顯示。例如,控制a、b、c、d、e、f段亮,g段不亮,就顯示出數(shù)字零。7.4.1鍵盤與LED數(shù)碼管接口基本原理與結(jié)構(gòu)(a)LED器件(b)共陽(yáng)極接法(c)共陰極接法7段LED顯示器7.4.1鍵盤與LED數(shù)碼管接口基本原理與結(jié)構(gòu)abcdefgDPabcdefgDPabcdefgDP陽(yáng)極控制端陰極控制端
LED數(shù)碼管可以分為共陽(yáng)極和共陰極兩種結(jié)構(gòu)如圖。在共陰極結(jié)構(gòu),各字段陰極控制端連接在一起接低電平,各字段陽(yáng)極控制端連接到高電平時(shí),則該段發(fā)光。例如,要顯示b字母,只要使c、d.、e、f、g陽(yáng)極接高電平即可實(shí)現(xiàn)。在共陽(yáng)極結(jié)構(gòu),各字段陽(yáng)極控制端連接在一起接高電平,各字段陰極控制端連接到低電平時(shí),則該段發(fā)光。例如,要顯示b字母,只要使c、d.、e、f、g陽(yáng)極接低電平即可實(shí)現(xiàn)。在多個(gè)LED數(shù)碼管顯示電路中,通常把陰(陽(yáng))極控制端連接到一個(gè)輸出端口,稱為位控端口;而把各字段(數(shù)據(jù)顯示段)連接到一個(gè)輸出端口,稱為段控端口。段控端口處應(yīng)輸出十六進(jìn)制數(shù)的7段代碼。7.4.1鍵盤與LED數(shù)碼管接口基本原理與結(jié)構(gòu)7.4.2用I/O口實(shí)現(xiàn)鍵盤接口將一個(gè)4位的BCD碼譯為L(zhǎng)ED的7位顯示代碼,可以采用專用譯碼芯片,如7447即采用專用的帶驅(qū)動(dòng)器的LED段譯碼器,可以實(shí)現(xiàn)對(duì)BCD碼的譯碼。另一種常用的辦法是軟件譯碼法,將0~F共16個(gè)數(shù)字(也可以為0~9)對(duì)應(yīng)的顯示代碼組成一個(gè)表,直接輸出7段碼。一個(gè)用I/O口實(shí)現(xiàn)的16個(gè)按鍵的鍵盤接口電路如圖。在本例中,采用了節(jié)省口線的“行掃描法”方法來(lái)檢測(cè)鍵盤,與4×4的矩陣鍵盤接口只需要8根口線,設(shè)置PF0~PF3為輸出掃描碼的端口,PF4~PF7為鍵值讀入口。ARM微處理器實(shí)現(xiàn)的鍵盤接口電路7.4.2用I/O口實(shí)現(xiàn)鍵盤接口ARMPF0PF1PF2PF3PF4PF5PF6PF70123456789ABCDEF+5V一個(gè)用I/O口實(shí)現(xiàn)的鍵盤接口,為了識(shí)別鍵盤上的閉合鍵,常采用行掃描法。行掃描法是使鍵盤上某一行線為低電平,而其余行接高電平,然后讀取列值,如果列值中有某位為低電平,則表明行列交點(diǎn)處的鍵被按下;否則掃描下一行,直到掃描完全部的行線為止。在電路中,按鍵設(shè)置在行、列交叉點(diǎn)上,行、列分別連接到按鍵開關(guān)的兩端。列線通過(guò)上拉電阻接到+5V上。平時(shí)無(wú)按鍵動(dòng)作時(shí),列線處于高電平狀態(tài);而當(dāng)有鍵按下時(shí),列線電平狀態(tài)將由通過(guò)此按鍵的行線電平?jīng)Q定:行線電平如果為低,列線電平為低;行線電平如果為高,則列線電平亦為高。通過(guò)這一點(diǎn)來(lái)識(shí)別矩陣式鍵盤是否被按下。因各按鍵之間相互發(fā)生影響,所以必須將行、列線信號(hào)配合起來(lái)并作適當(dāng)?shù)奶幚?,才能確定閉合鍵的位置。7.4.2用I/O口實(shí)現(xiàn)鍵盤接口
根據(jù)行掃描法的原理,識(shí)別矩陣鍵盤按鍵閉合分兩步進(jìn)行:(1)識(shí)別鍵盤哪一行的鍵被按下:讓所有行線均為低電平,檢查各列線電平是否為低,如果有列線為低,則說(shuō)明該列有鍵被按下,否則說(shuō)明無(wú)鍵被按下。(2)如果某列有鍵被按下,識(shí)別鍵盤哪一行的鍵被按下:逐行置低電平,并置其余各行為高電平,檢查各列線電平的變化,如果列電平變?yōu)榈碗娖?,則可確定此行此列交叉點(diǎn)處按鍵被按下。7.4.2用I/O口實(shí)現(xiàn)鍵盤接口7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口
一個(gè)5×4鍵盤及8位LED顯示電路如圖,該電路采用支持I2C總線協(xié)議的ZLG7290芯片。ZLG7290是一個(gè)采用I2C接口的鍵盤及LED驅(qū)動(dòng)器芯片,I2C串行接口提供鍵盤中斷信號(hào)方便與處理器接口,I2C接口傳輸速率可達(dá)32kbit/s,可驅(qū)動(dòng)8位共陰數(shù)碼管或64只獨(dú)立LED和64個(gè)按鍵,可控掃描位數(shù)可控任一數(shù)碼管閃爍,提供數(shù)據(jù)譯碼和循環(huán)移位段尋址等控制,8個(gè)功能鍵可檢測(cè)任一鍵的連擊次數(shù),無(wú)需外接元件即直接驅(qū)LED,可擴(kuò)展驅(qū)動(dòng)電流和驅(qū)動(dòng)電壓,提供工業(yè)級(jí)器件多種封裝形式PDIP-24和SO-24,引腳端功能如表。ZLG7290引腳端功能引腳符號(hào)類型描述13,12,21,22,3~6Dig7~Dig0輸入/輸出LED顯示位驅(qū)動(dòng)及鍵盤掃描線10~7,2,1,24,23SegH~SegA輸入/輸出LED顯示段驅(qū)動(dòng)及鍵盤掃描線20SDA輸入/輸出I2C總線接口數(shù)據(jù)/地址線19SCL輸入/輸出I2C總線接口時(shí)鐘線14/INT輸出中斷輸出端,低電平有效15/RES輸入復(fù)位輸入端,低電平有效17OSC1輸入連接晶體以產(chǎn)生內(nèi)部時(shí)鐘18OSC2輸出16VCC電源電源正端,電壓3.3~5.5V11GND電源地,電源負(fù)端7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口(a)ZLG7290控制電路7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口SEGASEGBSEGCSEGDSEGESEGFSEGGDPVDDOSC2OSC1RESDIG7DIG6DIG5DIG4DIG3DIG2DIG1DIP0SDASCLINTGND131221223456201914112324127891016181715DIG8DIG7DIG6DIG5DIG4DIG3DIG2DIP1IICSDAIICSCLKEY_INTGNDR423100KVDD33U405ZLG7290SEGASEGBSEGCSEGDSEGESEGFSEGGDPVDD33X4018MHzVDD33C40222pFC40122pF(b)八段數(shù)碼管連接電路7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口C1C2C3C4C4C3C2C1abcdefgDPDIG8DIG7DIG6DIG5129861174211053C1C2C3C4C4C3C2C1abcdefgDPDIG4DIG3DIG2DIG1129861174211053U404LED_CL5461ASU403LED_CL5461ASSEGASEGBSEGCSEGDSEGESEGFSEGGDPR413~R420220Ω×8(c)鍵盤及LED顯示電路5×4鍵盤及8位LED顯示電路7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口0123456789ABCDEF+-*FUN612345789KEYBOARD54U406R4213.3K×4R422
3.3KDIG1DIG2DIG3DIG4DIG5SEGASEGBSEGCSEGDD401D402D403D4041.鍵盤控制初始化程序/************************************名稱:keyboard_test*功能:測(cè)試八段數(shù)碼管*參數(shù):無(wú)*返回:無(wú)************************************Oidkeyboard_test(void){UINT8TucChar;UINT8TszBuf[40];uart_printf("\nKeyboardTestExample\n");uart_printf("Pressanykeytoexit…\n");Keyboard_init();7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口
g_nKeyPress=0xFE;While(1){f_nKeyPress=0;while(f_nKeyPress==0){if(uart_tetkey())
//PressanykeyfromUART0toexit
return;elseif(ucChar==7)
//orpress5*4Key-7toexit
return;elseif(g_nKeyPress!=0xFE)
//orSB1202/SB1203toexit
return;}7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口iic_read_keybd(0x70,0x1,&ucChar);
//getdatafromZLG7290
if(ucChar!=0){ucChar-key_set(ucChar);
//keymapforEdukitII
if(ucChar<16)sprintf(&szBuf,”presskey%d”,ucChar);elseif(ucChar<255)sprintf(&szBuf,”presskey%d”,ucChar);if(ucChar==0xFF)sprintf(&szBuf,”presskey%c”,ucChar);if(ucChar==0xFF)sprintf(&szBuf,”presskeyFUN”);7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口
#ifdefBOARDTESTprint_lcd(200,170,0x1c,&szBuf);#endifuart_printf(szBuf);uart_printf(“\n”)}}uart_printf(“end.\n”);}7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口2.中斷服務(wù)程序/***************************名稱:keyboard_int*功能:鍵盤中斷處理程序*參數(shù):無(wú)*返回:無(wú)***************************Voidkeyboard_int(void){UINT8TucChar;ClearPending(BIT_KINT1);f_nKeyPress=1;#ifdefBOARDTESTg_nKeyPress=0xFE;#endif}7.4.3采用專用芯片實(shí)現(xiàn)鍵盤及LED接口7.5.1LCD顯示接口原理與結(jié)構(gòu)
1.LCD顯示原理LCD(LiquidCrystalDisplay,液晶顯示器)中的液晶的分子晶體以液態(tài)而非固態(tài)形式存在。當(dāng)電流通過(guò)液晶層時(shí),分子晶體將會(huì)按照電流的流向方向進(jìn)行排列,沒(méi)有電流時(shí),它們將會(huì)彼此平行排列。將液晶倒入帶有細(xì)小溝槽的外層,液晶分子會(huì)順著槽排列,并且內(nèi)層與外層以同樣的方式進(jìn)行排列。液晶層能夠過(guò)濾除了那些從特殊方向射入之外的所有光線,能夠使光線發(fā)生扭轉(zhuǎn),使光線以不同的方向從另外一個(gè)面中射出。利用液晶的這些特點(diǎn),液晶可以被用來(lái)當(dāng)作一種既可以阻礙光線,也可以允許光線通過(guò)的開關(guān)。在LCD中,通過(guò)給不同的液晶單元供電,控制其光線的通過(guò)與否,達(dá)到顯示的目的。在LCD中,顯示面板薄膜被分成很多小柵格,每個(gè)柵格由一個(gè)電極控制,通過(guò)改變柵格上電極的電壓狀態(tài),就能控制柵格內(nèi)液晶分子的排列,從而控制光路的通斷。彩色LCD利用三原色混合的原理顯示不同的色彩。在彩色LCD中,每一個(gè)像素都是由3格液晶單元格構(gòu)成的,其中每一個(gè)單元格前面都分別有紅色、綠色或藍(lán)色的過(guò)濾片,光線經(jīng)過(guò)過(guò)濾片的處理變成紅色、藍(lán)色或者綠色,利用三原色的原理組合出不同的色彩。7.5LCD顯示接口
2.電致發(fā)光LCD通過(guò)控制每個(gè)柵格的電極加電與否來(lái)控制光線的通過(guò)或阻斷,從而顯示圖形。LCD的光源提供方式有透射式和反射式兩種。透射式LCD顯示器的屏后面有一個(gè)光源,可以不需要外部環(huán)境提供光源,如筆記本電腦的LCD顯示器。反射式LCD需要外部提供光源,靠反射光來(lái)工作。電致發(fā)光(EL)是將電能直接轉(zhuǎn)換為光能的一種發(fā)光現(xiàn)象。電致發(fā)光片是利用電致發(fā)光原理制成的一種發(fā)光薄片,具有超薄、高亮度、高效率、低功耗、低熱量、可彎曲、抗沖擊、長(zhǎng)壽命、多種顏色選擇等特點(diǎn),也用來(lái)作為L(zhǎng)CD液晶屏提供光源的一種方式。7.5.1LCD顯示接口原理與結(jié)構(gòu)
3.LCD種類LCD按照其液晶驅(qū)動(dòng)方式,可以分為TN
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州工業(yè)園區(qū)星澄學(xué)校行政輔助人員、后勤輔助人員招聘?jìng)淇碱}庫(kù)附答案
- 2026年投資項(xiàng)目管理師之宏觀經(jīng)濟(jì)政策考試題庫(kù)300道及參考答案(黃金題型)
- 2025年農(nóng)業(yè)農(nóng)村部科技發(fā)展中心招聘(4人)備考題庫(kù)附答案
- 山東理工大學(xué)國(guó)際教育學(xué)院國(guó)際中文教師招聘參考題庫(kù)附答案
- 2025年尋烏縣第三人民醫(yī)院招聘衛(wèi)生專業(yè)技術(shù)人員(勞動(dòng)合同制)7人備考題庫(kù)附答案
- 2026年福建省南平市松溪縣“校園行”緊缺急需學(xué)科專業(yè)教師25人招聘參考題庫(kù)附答案
- 2025廣西貴港市平南縣官成鎮(zhèn)政府公開招聘鄉(xiāng)鎮(zhèn)殘聯(lián)專職委員1人備考題庫(kù)附答案
- 2025年荷塘鎮(zhèn)廣盛屠宰場(chǎng)檢疫人員招聘考試題庫(kù)附答案
- 2026年理財(cái)規(guī)劃師之三級(jí)理財(cái)規(guī)劃師考試題庫(kù)500道【各地真題】
- 2025秋貴州貴陽(yáng)市觀山湖區(qū)第七中學(xué)招臨聘教師1人參考題庫(kù)附答案
- 教學(xué)副院長(zhǎng)述職報(bào)告課件
- 奮斗的主題班會(huì)課件
- 電務(wù)段干部考試題及答案
- 委托加工項(xiàng)目管理制度
- 2025年單次式拉絲機(jī)項(xiàng)目市場(chǎng)調(diào)查研究報(bào)告
- 紅薯創(chuàng)業(yè)項(xiàng)目計(jì)劃書
- 健美操運(yùn)動(dòng)智慧樹知到期末考試答案2024年
- Web設(shè)計(jì)與應(yīng)用智慧樹知到期末考試答案2024年
- 營(yíng)養(yǎng)支持在ICU的應(yīng)用課件
- +山東省煙臺(tái)市芝罘區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試卷(五四制)+
- 課程設(shè)計(jì)DLP4-13型鍋爐中硫煙煤煙氣袋式除塵濕式脫硫系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論