嵌入式系統(tǒng)(第5章ARM接口設(shè)計(jì)技術(shù))_第1頁
嵌入式系統(tǒng)(第5章ARM接口設(shè)計(jì)技術(shù))_第2頁
嵌入式系統(tǒng)(第5章ARM接口設(shè)計(jì)技術(shù))_第3頁
嵌入式系統(tǒng)(第5章ARM接口設(shè)計(jì)技術(shù))_第4頁
嵌入式系統(tǒng)(第5章ARM接口設(shè)計(jì)技術(shù))_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章ARM接口設(shè)計(jì)技術(shù)

LEDLCD顯示器接口132鍵盤接口芯片S3C44B0X簡介1以ARM7TMDI為內(nèi)核的高性能CPU推薦最高工作頻率為66MHz。具有71個(gè)通用多功能輸入輸出引腳,分別包含在如下7組端口中: 端口A:10位,輸出端口 端口B:11位,輸出端口 端口C:16位,輸入/輸出端口 端口D:8位,輸入/輸出端口 端口E:9位,輸入/輸出端口 端口F:9位,輸入/輸出端口 端口G:8位,輸入/輸出端口芯片S3C44B0X簡介2在一般的應(yīng)用中:PA:地址線。PB:bank選擇線和SDRAM的接口信號線。PC:數(shù)據(jù)線、IIS接口或LCD數(shù)據(jù)線等。PD:LCD的信號線。PE:串口信號線和定時(shí)器輸出。PF:多功能I/O口。PG:多功能I/O口。S3C44B0X的片上功能

2.5VARM7TDMI內(nèi)核,帶有8KB高速緩存器外部存儲器控制器LCD控制器2通道通用DMA、2通道外設(shè)DMA并具有外部請求引腳2通道UART,帶有握手協(xié)議和1通道SIO。1通道多主IIC-BUS控制器。1通道IIS-BUS控制器。5個(gè)PWM定時(shí)器和1通道內(nèi)部定時(shí)器??撮T狗定時(shí)器。71個(gè)通用I/O口、8通道外部中斷源。功耗控制:具有普通、慢速、空閑和停止模式。8通道10位ADC。具有日歷功能的RTC。具有PLL的片上時(shí)鐘發(fā)生器。

基于S3C44B0X嵌入式結(jié)構(gòu)

鍵盤概述幾種常用的按鍵:(1)機(jī)械式按鍵:開關(guān)構(gòu)造有兩種:

1種:內(nèi)含兩個(gè)金屬片和一個(gè)復(fù)位彈簧,按鍵時(shí)兩個(gè)金屬片被壓在一起

2種:由底面帶一小塊導(dǎo)電橡膠的成型泡沫硅橡膠帽做的,按鍵時(shí)導(dǎo)電橡膠將印制電路板上的兩條印制線短路缺點(diǎn):容易產(chǎn)生抖動(dòng)、觸點(diǎn)易變臟,氧化優(yōu)點(diǎn):價(jià)格低,手感好,使用廣泛

幾種常用的按鍵(2)電容式按鍵:由印制電路板上的兩小塊金屬片和一個(gè)在泡沫橡膠片下面的可活動(dòng)的另一塊金屬片構(gòu)成。按鍵時(shí)通過改變金屬片之間的電容產(chǎn)生信號。 解決了機(jī)械按鍵金屬觸點(diǎn)氧化變臟的問題。幾種常用的按鍵(3)薄膜式按鍵:由3層塑料或橡膠夾層構(gòu)成,通過內(nèi)部印制銀導(dǎo)線相連。 該類按鍵可以制成很薄的密封單元,用于環(huán)境較臟的應(yīng)用中。幾種常用的按鍵(4)霍耳效應(yīng)按鍵:利用活動(dòng)電荷在磁場中的偏轉(zhuǎn)效果形成的。 該類按鍵是一種無機(jī)械觸點(diǎn)的按鍵開關(guān),密封性好,但價(jià)格較高按鍵識別方法通常采用兩種方法:(1)行掃描法使鍵盤上某一行線為低電平,而其余行接高電平;然后讀取列值,如果列值中有某位為低電平,則表明行列交點(diǎn)處的鍵被按下;否則掃描下一行,直到掃描完全部的行線為止。按鍵識別方法(2)行反轉(zhuǎn)法行線接并行口先讓它工作在輸出方式下,將列線也接一個(gè)并行口,先讓它工作在輸入模式下。CPU通過輸出端口往各行線上全部送低電平,然后讀入列線的值。如果有某一鍵被按下,則必定會使某一列線值為0。然后,程序再對兩個(gè)并行端口進(jìn)行方式設(shè)置,使行線工作在輸入,列線工作在輸出,將剛才讀的列線值從列線所接的并行端口輸出,再讀取行線上的輸入值。

用ARM芯片實(shí)現(xiàn)鍵盤接口1

例:與4X4的矩陣鍵盤接口,采用節(jié)省口線的“行掃描法”方法來檢測鍵盤,這樣只需要8根口線。選取PF口作為檢測鍵盤用端口,設(shè)定PF0–PF3為輸出掃描碼的端口,PF4--PF7為鍵值讀入口。用ARM芯片實(shí)現(xiàn)鍵盤接口2矩陣鍵盤按鍵的識別方法,此方法分兩步進(jìn)行:

①識別鍵盤哪一行的鍵被按下:

讓所有行線均為低電平,檢查各列線電平是否為低;

如果有列線為低,則說明該列有鍵被按下,否則說明無鍵被按下。用ARM芯片實(shí)現(xiàn)鍵盤接口2②如果某列有鍵被按下,識別鍵盤哪一行的鍵被按下:

逐行置低電平,并置其余各行為高電平,檢查各列線電平的變化;

如果列電平變?yōu)榈碗娖剑瑒t可確定此行此列交叉點(diǎn)處按鍵被按下。行掃描法獲取鍵值的程序1

接口中利用了PF口的相關(guān)寄存器,PF口的寄存器有3個(gè):PF口數(shù)據(jù)寄存器

PDATF、PF口上拉電阻寄存器

PUPF和PF口控制寄存器

PCONF。

PDATF位描述PF[8:0][8:0]當(dāng)端口設(shè)定為輸入口時(shí),這個(gè)寄存器的相應(yīng)位就對應(yīng)著引腳的狀態(tài);當(dāng)端口設(shè)定為輸出口時(shí),輸出引腳的狀態(tài)與該寄存器的相應(yīng)位相同;當(dāng)端口設(shè)定為多功能口時(shí),PDATF中的內(nèi)容無效PUPF位描述PF[8:0][8:0]0:相應(yīng)位的上拉電阻使能1:相應(yīng)位的上拉電阻禁止行掃描法獲取鍵值的程序2

PCONF位描述PF0[1:0]00:輸入01:輸出10:IICSCL 11:保留PF1[3:2]00:輸入01:輸出10:IICSDA 11:保留PF2[5:4]00:輸入01:輸出10:nWAIT 11:保留PF3[7:6]00:輸入01:輸出10:nXBACK 11:nXDACK0PF4[9:8]00:輸入01:輸出10:nXBREQ 11:nXDREQ0PF5[12:10]000:輸入 001:輸出 010:nRTS1011:SIOTxD 100:IISLRCK 其他:保留PF6[15:13]000:輸入 001:輸出 010:TxD1011:SIORDY 100:IISDO 其他:保留PF7[18:16]000:輸入 001:輸出 010:RxD1011:SIORxD 100:IISDI 其他:保留PF8[21:19]000:輸入 001:輸出 010:nCTS1011:SIOCLK 100:IISCLK 其他:保留行掃描法獲取鍵值的程序3

1.寄存器設(shè)置程序中,首先通過設(shè)置PCONF寄存器,來實(shí)現(xiàn)端口功能配置,然后再分別設(shè)置PDATF及PUPF寄存器。(1)設(shè)置PCONF寄存器由于需要設(shè)定PF0~PF3為輸出口,PF4~PF7為輸入口,因此,在端口工作之前設(shè)置:rPCONF=000000

000

00

01

01

01

01B=0x55;行掃描法獲取鍵值的程序3

(2)設(shè)置PDATF寄存器PF0~PF3作為輸出口輸出掃描碼時(shí),可采用如下語句:rPDATF=0xf0;//PF0~PF3全寫入0PF4~PF7作為輸入口讀入鍵值時(shí),采用如下語句:Keyval=(rPDATF&0xf0)>>4;行掃描法獲取鍵值的程序3

(3)設(shè)置PUPF寄存器設(shè)置內(nèi)部上拉電阻的語句為:rPUPF=0x00;//使能PF0~PF7的內(nèi)部上拉電阻行掃描法獲取鍵值的程序4

2.鍵盤掃描程序框圖行掃描法獲取鍵值的程序53.鍵盤掃描程序代碼

#include<string.h>#include<stdio.h>charReadKeyVal(void){ unsignedchari,j,H_val,L_val; charkeyval=-1;

rPCONF=0x55;

rPUPF=0x00;

rPDATF=0xf0;

if((L_val=(rPDATF&0xf0))!=0xf0) {//有鍵按下

H_val=0xfe;//行值,從第0行開始判斷

for(i=0;i<4;i++)行掃描法獲取鍵值的程序6 {

rPDATF=H_val;//行電平輸出

for(j=0;j<100;j++);//軟件延時(shí)

if((L_val=(rPDATF&0xf0))!=0xf0) {//該行有沒有鍵被按下

L_val=((L_val>>4))|0xf0;//設(shè)置行值格式

Keyval=get_val(H_val)×4+get_val(L_val); returnkeyval; } else

H_val=H_val<<1;//判斷下一行 } } returnkeyval;}

行掃描法獲取鍵值的程序7//get_val子函數(shù)是由掃描值、讀取的列值分別得到行號、列號//根據(jù)輸入8位2進(jìn)制數(shù)判斷是哪一行,哪一列charget_val(unsignedcharval){ unsignedchari,x; x=0;

for(i=0;i<4;i++) {

if((~val)==1)returnx;//全1返回

val=(val>>1)|0x80; x=x+1; }}

LED概述

LED:七段發(fā)光二極管,在專用的微型計(jì)算機(jī)系統(tǒng)中,特別是在嵌入式控制系統(tǒng)中,應(yīng)用非常普遍。它價(jià)格低廉、體積小、功耗低,可靠性好。兩種結(jié)構(gòu):共陽極和共陰極。LED譯碼在多個(gè)LED顯示電路中,通常把陰(陽)極控制端接至一輸出端口,我們稱它為位控端口;把數(shù)據(jù)顯示段接至一個(gè)輸出端口,我們稱這個(gè)端口為段控端口。段控端口處應(yīng)輸出十六進(jìn)制數(shù)的7段代碼。LED譯碼兩種譯碼方法:(1)采用專用芯片,可以實(shí)現(xiàn)對BCD碼的譯碼,但不能對大于9的二進(jìn)制數(shù)譯碼。(2)軟件譯碼法。在軟件設(shè)計(jì)時(shí),將0到F共16個(gè)數(shù)字(也可以為0到9)對應(yīng)的顯示代碼組成一個(gè)表。LED段碼表LED結(jié)構(gòu)數(shù)字顯示共陰極接法共陽極接法D7D6D5D4D3D2D1D07段代碼D7D6D5D4D3D2D1D07段代碼DPgfedcbaDPgfedcba0001111113FH11000000C0H10000011006H11111001F9H2010110115BH10100100A4H3010111114FH10110000B0H40110011066H1001100199H5011011016DH1001001092H6011111017DH1000001082H70000011107H11111000F8H8011111117FH1000000080H9011011116FH1001000090HA0111011177H1000100088HB011111007CH1000001183HC0011100139H11000110C6HD010111105EH10100001A1HE0111100179H1000011086HF0111000171H100011108EHP0111001173H100011008CH用ARM芯片實(shí)現(xiàn)LED顯示接口1

1.接口電路

用ARM芯片實(shí)現(xiàn)LED顯示接口22.初始化設(shè)置(1)設(shè)置PCONF、PCONG寄存器由于需要設(shè)定端口F、G為輸出口,因此,在端口工作之前設(shè)置:

rPCONF=

001001

0010101

01

01

01B=0x12555;

rPCONG=

0101

01

01

01

01

01

01B=0x5555;(2)設(shè)置PUPF、PUPG寄存器設(shè)置內(nèi)部上拉電阻的語句為:

rPUPF=0x00;//使能PF0-7的內(nèi)部上拉電阻

rPUPG=0x00;//使能PG0-7的內(nèi)部上拉電阻用ARM芯片實(shí)現(xiàn)LED顯示接口3

3.LED顯示流程圖

用ARM芯片實(shí)現(xiàn)LED顯示接口44.LED顯示代碼在內(nèi)存中開辟一個(gè)數(shù)組dis_8_num[],用來存放將要在8個(gè)LED數(shù)碼管上顯示的字符。緩沖區(qū)第1個(gè)數(shù)據(jù)送最左邊的LED,下一個(gè)數(shù)據(jù)送左邊的第2個(gè)LED,依次進(jìn)行直到最后一個(gè)數(shù)據(jù)送最右邊的LED;led_dis[]數(shù)組內(nèi)放置0~f對應(yīng)的7段段碼表,LED為共陽極結(jié)構(gòu)。用ARM芯片實(shí)現(xiàn)LED顯示接口4#include<string.h>#include<stdio.h>voidDisplayLedl(unsignedchardis_8_num[]){unsignedcharled_dis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x8C}; //0~F及小數(shù)位段碼表unsignedchari,j,D_val,B_val;用ARM芯片實(shí)現(xiàn)LED顯示接口5rPCONF=0x12555;rPCONG=0x5555;rPUPF=0x00;//使能PF0~PF7的內(nèi)部上拉電阻rPUPG=0x00;//使能PG0~PG7的內(nèi)部上拉電阻B_val=0x80;//確定起始顯示位,最左位for(i=0;i<8;i++){

D_val=dis_8_num[i];//取顯示字符

rPDATF=led_dis[D_val];//顯示該字符

rPDATG=B_val;

for(j=0;j<100;j++);//延時(shí)

B_val=B_VAL>>1;//右移下一位}}

LCD顯示器接口概述液晶:一種具有規(guī)則性分子排列的有機(jī)化合物,既不是固體也不是液體,介于固態(tài)和液態(tài)之間的物質(zhì)。

液晶顯示是一種被動(dòng)的顯示,它不能發(fā)光,只能使用周圍環(huán)境的光?;驹恚和ㄟ^給不同的液晶單元供電,控制其光線的通過與否,從而達(dá)到顯示的目的。LCD顯示器接口概述三種顯示方式:反射型,透射型和透反射型。市面上出售的LCD有兩種類型:(1)帶有驅(qū)動(dòng)電路的LCD顯示模塊,這種LCD可以方便地與各種低檔單片機(jī)進(jìn)行接口;(2)LCD顯示屏,沒有驅(qū)動(dòng)電路,需要與驅(qū)動(dòng)電路配合使用

S3C44B0X內(nèi)部LCD控制器

作用:把定位在系統(tǒng)存儲器中的視頻緩沖區(qū)的LCD圖象數(shù)據(jù)傳輸?shù)絃CD驅(qū)動(dòng)器,并產(chǎn)生必須的LCD控制信號。LCD控制器包含:REGBANK、LCDCDMA、VIDPRCS和TIMEGEN。

S3C44B0X內(nèi)部LCD控制器

REGBANK:有18個(gè)可編程寄存器,用于配置LCD控制器。LCDCDMA:專用DMA,可以自動(dòng)地將顯示數(shù)據(jù)從幀內(nèi)存中傳送到LCD驅(qū)動(dòng)器中。

VIDPRCS:從LCDCDMA接收數(shù)據(jù)。TIMEGEN:包含可編程的邏輯,支持常見的LCD驅(qū)動(dòng)器所需要的不同接口時(shí)間和速率的要求。產(chǎn)生VFRAME,VLINE,VCLK,VM信號。TIMEGENREGBANKLCDCDMAVIDPRCSLCD控制器和LCD驅(qū)動(dòng)器之間的接口信號

(1)VFRAME:幀同步信號,告訴LCD新的一幀開始。LCD控制器在一個(gè)完整幀顯示完成后立即插入一個(gè)VFRAME信號,并開始新一幀的顯示。(2)VLINE:線同步脈沖信號,用于LCD驅(qū)動(dòng)器將水平線(行)移位寄存器的內(nèi)容傳送給LCD屏顯示。LCD控制器在整個(gè)水平線(整行)數(shù)據(jù)移入LCD驅(qū)動(dòng)器后,插入一個(gè)VLINE信號。LCD控制器和LCD驅(qū)動(dòng)器之間的接口信號

(3)VCLK:像素時(shí)鐘信號,由LCD控制器送出的數(shù)據(jù)在VCLK的上升沿處送出,在VCLK的下降沿處被LCD驅(qū)動(dòng)器采樣。(4)VM:電壓極性信號,VM信號被LCD驅(qū)動(dòng)器用于改變行和列的電壓極性,從而控制像素點(diǎn)的顯示或熄滅。VM信號可以與每個(gè)幀同步,也可以與可變數(shù)量的VLINE信號同步。(5)VD[3:0]:LCD像素點(diǎn)數(shù)據(jù)輸出端口。(6)VD[7:4]:LCD像素點(diǎn)數(shù)據(jù)輸出端口。

LCD控制器的操作

(1)顯示類型3種:4位雙掃描,4位單掃描,8位單掃描顯示模式。(2)像素點(diǎn)字節(jié)數(shù)據(jù)格式在彩色模式下,1個(gè)字節(jié)8位(3位紅色、3位綠色、2位藍(lán)色)的圖像數(shù)據(jù)對應(yīng)于一個(gè)像素點(diǎn)。

(3)虛擬顯示支持硬件方式的水平或垂直滾動(dòng)。如果要使屏幕滾動(dòng),顯示緩沖區(qū)的大小要大于LCD顯示屏的大小。LCD控制器的操作

(4)查找表查找表即調(diào)色板表,用于各種色彩選擇或灰度級別選擇。在灰度模式,通過查找表可以在16級灰度中選擇4種灰度。在彩色模式,1個(gè)字節(jié)的圖像數(shù)據(jù)組成是3位紅色,3位綠色,2位藍(lán)色。通過查找表,可以選擇16級紅色中的8種,16級綠色中的8種,16級藍(lán)色中的4種,構(gòu)成8×8×4=256色。每個(gè)色彩級別由4位數(shù)據(jù)表示,因此共有16個(gè)色彩級別可供選擇。

LCD控制參數(shù)

(1)水平掃描次數(shù)HOZVAL的計(jì)算公式:HOZVAL=(顯示寬度/VD數(shù)據(jù)線的位數(shù))-1其中,在彩色模式下,顯示寬度=3×每行的像素點(diǎn)數(shù)目。本例采用的LCD,HOZVAL=(320×3/8)-1個(gè)像素。(2)垂直掃描次數(shù)LINEVAL的計(jì)算公式:在單掃描顯示類型下:LINEVAL=(顯示高度)-1在雙掃描顯示類型下:LINEVAL=(顯示高度/2)-1本例采用的LCD,LINEVAL=240-1個(gè)像素。LCD控制參數(shù)

(3)像素時(shí)鐘VCLK計(jì)算公式:VCLK=MCLK/(CLKVAL×2),單位為赫茲(Hz)

時(shí)鐘變量CLKVAL的值決定了VCLK的頻率,由LCD控制器向VD端口傳輸數(shù)據(jù)的速率,以便使VCLK的值大于數(shù)據(jù)傳輸?shù)乃俾?。?)數(shù)據(jù)傳輸速率的公式為:數(shù)據(jù)傳輸速率=HS×VS×FR×MV其中,HS是LCD的行像素值;VS是LCD的列像素值;FR是幀速率;MV是模式值,

LCD控制器專用寄存器

LCD控制器主要提供液晶屏顯示數(shù)據(jù)的傳送時(shí)鐘和各種信號產(chǎn)生及控制功能。LCD控制器專用寄存器主要有:

LCD控制寄存器1(LCDCON1)LCD控制寄存器2(LCDCON2)LCD控制寄存器3(LCDCON3)幀緩沖區(qū)起始地址寄存器1(LCDSADDR1)幀緩沖區(qū)起始地址寄存器2(LCDSADDR2)幀緩沖區(qū)起始地址寄存器3(LCDSADDR3)紅色查找表寄存器(REDLUT)綠色查找表寄存器(GREENLUT)藍(lán)色查找表寄存器(BLUELUT)LCD應(yīng)用實(shí)例-接口電路

I/O口LCD功能設(shè)置

通常采用S3C44B0X的PC口和PD口作為LCD驅(qū)動(dòng)接口,因此需要設(shè)置PC口工作在第3功能狀態(tài)和PD口工作在第2功能狀態(tài)。(見教材附錄AS3C44B0X端口引腳定義,非普通輸入/輸出功能狀態(tài))設(shè)置對應(yīng)I/O口控制寄存器的語句:rPCONC=0000

00

00

00

00

00

001111

11

110000

0000B=0x0000ff00;rPUPC=0x00;//上拉使能rPCOND=0xaaaa;rPUPD=0x00;

初始化流程圖

初始化程序代碼1U32*pLCDBuffer16=(U32*)0xc000000;U32LCDBuffe

溫馨提示

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

最新文檔

評論

0/150

提交評論