ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-

PPT
  • 阅读 35 次
  • 下载 0 次
  • 页数 174 页
  • 大小 1.817 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-
可在后台配置第一页与第二页中间广告代码
ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-
可在后台配置第二页与第三页中间广告代码
ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-
可在后台配置第三页与第四页中间广告代码
ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-
ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 174
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】ARM汇编语言程序设计基础课件第5章-嵌入式系统输入-.ppt,共(174)页,1.817 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44738.html

以下为本文档部分文字说明:

第5章嵌入式系统输入/输出设备接口5.1GPIO(通用输入/输出接口)5.1.1GPIO原理与结构GPIO(GeneralPurposeI/O,通用输入/输出接口)也称为并行I/O(parallelI/O)

,是最基本的I/O形式,由一组输入引脚、输出引脚或输入/输出引脚组成,CPU对它们能够进行存取操作。有些GPIO引脚能够通过软件编程改变输入/输出方向。一个双向GPIO端口(D0)的简化功能逻辑图如图5.1.1所示,图中PORT为数据寄存器和DDR(DataDirectionRegister)为

数据方向寄存器。图5.1.1双向GPIO功能逻辑图DDR设置端口的方向。如果DDR的输出为1,则GPIO端口为输出形式;如果DDR的输出为零,则GPIO端口为输入形式。写入WR—DDR信号能够改变DDR的输出状态。DDR在微控制器地址空间中是

一个映射单元。这种情况下,如果需要改变DDR,则需要将恰当的值置于数据总线的第0位(即D0),同时激活WR—DDR信号。读DDR,就能得到DDR的状态,同时激活RD—DDR信号。如果设置PORT引脚端为输出,则PORT寄存器控制着该引脚端状态。如果将PORT引脚端设置为输入,则此输

入引脚端的状态由引脚端上的逻辑电路层来实现对它的控制。对PORT寄存器的写操作,需要激活WR—PORT信号。PORT寄存器也映射到微控制器的地址空间。需指出,即使当端口设置为输入时,如果对PORT寄存器进行写操作,并不会对该引脚产生影响。但从PORT寄存器的读出,不管端口是什么

方向,总会影响该引脚端的状态。5.1.2S3C2410A输入/输出端口编程实例S3C2410A共有117个多功能复用输入/输出端口(I/O口),分为端口A~端口H共8组。为了满足不同系统设计的需要,每个I/O口可以很容易地通过软件对进行配置。每个引脚的功能必须在启动主程序之

前进行定义。如果一个引脚没有使用复用功能,那么它可以配置为I/O口。注意:端口A除了作为功能口外,只能够作为输出口使用。在S3C2410A中,大多数的引脚端都是复用的,所以对于每一个引脚端都需要定义其功能。为了使用I/O口,首先需要定义引脚的功

能。每个引脚端的功能通过端口控制寄存器(PnCON)来定义(配置)。与配置I/O口相关的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口数据寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、杂项控制寄存器以及外部中断控制寄存器(EXTINTN)等。S3C

2410A的I/O口配置情况请参考第3章如表3.4.1~3.4.7所列。下面介绍一个通过G口的控制发光二极管LED1和LED2轮流闪烁I/O口编程实例[徐英慧]。对I/O口的操作是通过对相关各个寄存器的读/写实现的

。要对寄存器进行读/写操作,首先要对寄存器进行定义。有关I/O口相关寄存器的宏定义代码如下://PortA控制寄存器#definerGPACON(*(volatileunsigned*)0x56000000)//PortA数据寄存器#defi

nerGPADAT(*(volati1eunsigned*)0x56000004)//PortB控制寄存器#definerGPBCON(*(volatileunsigned*)0x56000010)//PortB数据寄存器#definerGPBDAT(*(volatileun

signed*)0x56000014)//PortB上拉电阻禁止寄存器#definerGPBUP(*(volatileunsigned*)0x56000018)//PortC控制寄存器#definerGPCCON(*

(volatileunsigned*)0x56000020)//PortC数据寄存器#definerGPCDAT(*(volatileunsigned*)0x56000024)//PortC上拉电阻禁止寄存器#definerG

PCUP(*(volatileunsigned*)0x56000028)//PortD控制寄存器#definerGPDCON(*(volatileunsigned*)0x56000030)//PortD数据寄存器#definerGPDDAT(

*(volatileunsigned*)0x56000034)//PortD上拉电阻禁止寄存器#definerGPDUP(*(volatileunsigned*)0x56000038)//PortE控制寄存器#definerGPECON(*(volatileunsign

ed*)0x56000040)//PortE数据寄存器#definerGPEDAT(*(volatileunsigned*)0x56000044)//PortE上拉电阻禁止寄存器#definerGPEUP(*(volatileunsigned*)0x

56000048)//PortF控制寄存器#definerGPFCON(*(volatileunsigned*)0x56000050)//PortF数据寄存器#definerGPFDAT(*(volatileunsigned*)0x56000054)//PortF上拉电阻禁止寄存器#defi

nerGPFUP(*(volatileunsigned*)0x56000058)//PortG控制寄存器#definerGPGCON(*(volati1eunsigned*)0x56000060)//Por

tG数据寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)//PortG上拉电阻禁止寄存器#definerGPGUP(*(volatileunsigned*)0x56000068)

//PortH控制寄存器#definerGPHCON(*(volatileunsigned*)0x56000070)//PortH数据寄存器#definerGPHDAT(*(volatileunsigned*)0x560000

74)//PortH上拉电阻禁止寄存器#definerGPHUP(*(volatileunsigned*)0x56000078)要想实现对G口的配置,只要在地址0x56000060中给32位的每一位赋值就可以了。如果G口的某个引脚被配置为输出引脚,在PDATG对应的地址位

写入1时,该引脚输出高电平;写入0时该引脚输出低电平。如果该引脚被配置为功能引脚,则该引脚作为相应的功能引脚使用。下面是实现LED1和LED2轮流闪烁的程序代码。voidMain(void){intflag,i;TargetInit();//

进行硬件初始化操作,包括对I/O口的初始化操作for(;;){if(flag==0){for(i=0;i<1000000;i++);//延时rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置第8、第//9位为输出引脚rGPGDAT=rGPGDAT&0xef

f|0x200;//第8位输出为低电平//第9位输出高电平for(i=0;i<10000000;i++);//延时flag=1;}else{for(i=0;i<1000000;i++);//延时rGPGCON=rGPGCON&0xfff0ffff

(0x00050000;//配置第8、//第9位为输出引脚rGPGDAT=rGPGDAT&Oxdff|0x100;//第8位输出为高电平//第9位输出低电平for(i=0;i<1000000;i++);//延时flag=0;}}}5.2A/D转换器接口5.2.1A/D(模/数)转换的方法和原理

A/D转换器(模/数转换器)完成电模拟量到数字量的转换。实现A/D转换的方法很多,常用的方法有计数法、双积分法和逐次逼近法等。1.计数式A/D转换器原理计数式A/D转换器结构如图5.2.1所示。其中,Vi是模拟输入电压,VO是D/A转换器的输

出电压,C是控制计数端,当C=1(高电平)时,计数器开始计数,C=0(低电平)时,则停止计数。D7~D0是数字量输出,数字输出量同时驱动一个D/A转换器。图5.2.1计数式A/D转换器结构计数式A/D转换器的转换过程如下

:①首先/CLR(开始转换信号)有效(由高电平变成低电平),使计数器复位,计数器输出数字信号为00000000,这个00000000的输出送至8位D/A转换器,8位D/A转换器也输出0V模拟信号。②当/CLR恢复为高电平时.计数器准备计数。此时,在比较器输入端上待转换的模拟输入电压

Vi大于VO(0V),比较器输出高电平,使计数控制信号C为1。这样,计数器开始计数。③从此计数器的输出不断增加,D/A转换器输入端得到的数字量也不断增加,致使输出电压VO不断上升。在VO<Vi时,比较器的输出总

是保持高电平,计数器不断地计数。④当VO上升到某值时,出现VO>Vi的情况时,此时,比较器的输出为低电平,使计数控制信号C为0,计数器停止计数。这时候数字输出量D7~D0就是与模拟电压等效的数字量。计数控制信号由高变低的负跳变也是A/D转换

的结束信号,表示已完成一次A/D转换。计数式A/D转换器结构简单,但转换速度较慢。2.双积分式A/D转换器原理双积分式A/D转换器对输入模拟电压和参考电压进行两次积分,将电压变换成与其成正比的时间间隔,利用时钟脉冲和计数器测出其时间间隔,完成A/D转换。双积分式

A/D转换器主要包括积分器、比较器、计数器和标准电压源等部件,其电路结构图如图5.2.2(a)所示。双积分式A/D转换器的转换过程如下:首先对输入待测的模拟电压Vi进行固定时间的积分;然后转换到标准电压VR进

行固定斜率的反向积分(定值积分),如图5.2.2(b)所示。反向积分进行到一定时间,便返回起始值。从图5.2.2(b)中可看出对标准电压VR进行反向积分的时间T2正比于输入模拟电压,输入模拟电压越大,反向积分回到起始值的时间T越长,有Vi=(T2

/T1)VR。用标准时钟脉冲测定反向积分时间(如计数器),就可以得到对应于输入模拟电压的数字量,实现A/D转换。双积分式A/D转换器具有很强的抗工频干扰能力,转换精度高,但速度较慢。图5.2.2(a)双积

分式A/D转换器电路结构图双积分式A/D转换图图5.2.2(b)积分输出波形3.逐次逼近式A/D转换器原理逐次逼近式A/D转换器电路结构如图5.2.3所示,其工作过程可与天平称重物类比,图中的电压

比较器相当于天平,被测电压Ux相当于重物,基准电压Ur相当于电压法码。该方案具有各种规格的按8421编码的二进制电压法码Ur,根据Ux<Ur和Ux>Ur,比较器有不同的输出以打开或关闭逐次逼近寄存器的各位。输出从大到小的基准电压法码,与被测电压Ux比较,并逐渐减小其差值,使之逼近平衡。当Ux

=Ur时,比较器输出为零,相当于天平平衡,最后以数字显示的平衡值即为被测电压值。逐次逼近式A/D转换器转换速度快,转换精度较高,对N位A/D转换只需N个时钟脉冲即可完成,可用于测量微秒级的过渡过程的变化,是在计算机系统中采用最多的一种A/D转换方法。图5.2.3逐次逼近式A/D转换器电路结构

4.A/D转换器的主要指标(1)分辨率(Resolution)分辨率用来反映A/D转换器对输入电压微小变化的响应能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D转换能反应1/2n满量程的模拟输入电平。分辨率直接与转换器的位数有关,一般也可简单地用数字

量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,就是它的分辨率。值得注意的是,分辨率与精度是两个不同的概念,不要把两者相混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因,而使其精度不够高。(2)精度(Accuracy)精

度有绝对精度(AbsoluteAccuracy)和相对精度(RelativeAccuracy)两种表示方法。①绝对精度:在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。把它们之间的差的最大值,定

义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对精度,如±1LSB。绝对误差包括量化精度和其他所有精度。②相对精度是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。例如,满量程为l0V,10位A/D芯片,若

其绝对精度为±1/2LSB,则其最小有效位的量化单位为9.77mV,其绝对精度为4.88mV,其相对精度为0.048%。③转换时间(ConversionTime)转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。转换时间

的倒数称为转换速率。例如AD570的转换时间为25us,其转换速率为40kHz。④量程量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。例如,单极性的量程为0~+5V,0~+10V,0~+20V;双极性的量程为-5~+5V,-10~+l0V。5.2.2S3

C2410A的A/D转换器1.S3C2410AA/D转换器和触摸屏接口电路S3C2410A包含一个8通道的A/D转换器,内部结构见图5.2.4,该电路可以将模拟输入信号转换成10位数字编码(10位分辨率),差分线性误差为1.0LSB

,积分线性误差为2.0LSB。在A/D转换时钟频率为2.5MHz时,其最大转换率为500KSPS(KiloSamplesPerSecond,千采样点每秒),输入电压范围是0~3.3V。A/D转换器支持片上操作、

采样保持功能和掉电模式。S3C2410A的A/D转换器和触摸屏接口电路如图5.2.4所示图5.2.4S3C2410A的A/D转换器和触摸屏接口电路2.与S3C2410AA/D转换器相关的寄存器使用S3C24

10A的A/D转换器进行模拟信号到数字信号的转换,需要配置以下相关的寄存器。(1)ADC控制寄存器(ADCCON)ADC控制寄存器(ADCCON)是一个16位的可读/写的寄存器,地址为0x58000000,复位值为0x3FC4。ADCCON位的功能描述如表5.2.1所列。表5.2.1

ADC控制寄存器(ADCCON)的位功能ADCCON符号位描述初始状态ECFLG[15]A/D转换状态标志(只读)。0:A/D转换中;1:A/D转换结束0PRSCEN[14]A/D转换器前置分频器使能控制。0:禁止;1:使能0PRS

CVL[13:6]A/D转换器前置分频器数值设置,数值取值范围:1~255。注意:当前置分频器数值为N时,分频数值为N+1。0xFFSEL_MUX[5:3]模拟输入通道选择。000:AIN0;001:AIN1;010:A

IN2;011:AIN3;100:AIN4;101:AIN5;110:AIN6;111:AIN70STDBM[2]备用(Standby)模式选择。0:正常模式;1:备用模式1READ_START[1]利用读操作来启动A/D转换。0:不使能读

操作启动;1:使能读操作启动0ENABLE_START[0]A/D转换通过将该位置1来启动,如果READ_START有效(READ_START置1),则该位无效。0:不操作;1:启动A/D转换,A/D转换开始后该位自动清零0(2)AD

C触摸屏控制寄存器(ADCTSC)ADC触摸屏控制寄存器(ADCTSC)是一个可读/写的寄存器,地址为0x58000004,复位值为0x058。ADCTSC的位功能描述如表5.2.2所列。在正常A/D转换时,AUTO_PST和XY_

PST都置成0即可,其他各位与触摸屏有关,不需要进行设置。表5.2.2ADC控制寄存器(ADCTSC)的位功能ADCTSC符号位描述初始状态Reserved[8保留位0YM_SEN[7]选择YMON的输出值。0:YMON输出0(YM=高阻)1:YMON输出1(YM=G

ND)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)0XP_SEN[4]

选择nXPON的输出值。0:nXPON输出0(XP=外部电压)1:nXPON输出1(XP连接AIN[7])0PULL_UP[3]上拉开关使能。0:XP上拉使能;1:XP上拉不使能1AUTO_P5T[2]X位置和Y位置自动顺序转换。0:正常ADC转换模式1:自动顺序X/Y位置

转换模式0XY_PST[1:0]X位置或Y位置的手动测量。00:无操作模式;01:X位置测量10:Y位置测量;11:等待中断模式0(3)ADC启动延时寄存器(ADCDLY)ADC启动延时寄存器(ADCDLY)是一个可读/写的寄存器,地址为0x580

00008,复位值为0x00FF。ADCDLY的位功能描述如表5.2.3所列。表5.2.3ADC启动延时寄存器(ADCDLY)的位功能ADCDLY符号位描述DELAY[15:0](1)在正常转换模式、分开的X/Y位置转换模式和X/Y位置自动(顺序)转换模式的X/Y位置转换延时值。(2)在

等待中断模式:当在此模式按下触笔时,这个寄存器在几ms时间间隔内产生用于进行X/Y方向自动转换的中断信号(INT_TC)。注意:不能使用零位值(0x0000)(4)ADC转换数据寄存器(ADCDAT

0和ADCDAT1)S3C2410A有ADCDAT0和ADCDAT1两个ADC转换数据寄存器。ADCDAT0和ADCDAT1为只读寄存器,地址分别为0x5800000C和0x58000010。在触摸屏应用中,分别使用ADCDAT0和ADCDAT1保存X位置和Y位置的转

换数据。对于正常的A/D转换,使用ADCDAT0来保存转换后的数据。ADCDAT0的位功能描述如表5.2.4所列,ADCDAT1的位功能描述如表5.2.5所列,除了位[9:0]为Y位置的转换数据值以外,其他与ADCDAT0类似。通

过读取该寄存器的位[9:0],可以获得转换后的数字量。表5.2.4ADCDAT0的位功能ADCDATO位名位描述UPDOWN[15]在等待中断模式时,触笔的状态为上还是下。0:触笔为下状态;1:触笔为上状态AUTO_PST[14]X位置和Y位置的自动顺序转换

。0:正常A/D转换;1:X/Y位置自动顺序测量XY_PST[13:12]手动测量X位置或Y位置。00:无操作模式;01:X位置测量10:Y位置测量;11:等待中断模式Reserved[11:10]保留XPDATA(正常ADC)[9:0]X位置的转

换数据值(包括正常A/D转换的数据值)。取值范围:0~3FF表5.2.5ADCDAT1的位功能描述ADCDATO位名位描述[15:10]与ADCDAT0的位功能相同YPDATA(正常ADC)[9:0]Y位置的转换数据值(包括正常A/D转换的数据值)。取值范围:0

~3FF5.2.3S3C2410AA/D接口编程实例下面介绍一个A/D接口编程实例[徐英慧],其功能实现从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。模拟输入信号的

电压范围必须是0~2.5V。程序如下:1.定义与A/D转换相关的寄存器定义如下:#definerADCCON(*(volatileunsigned*)0x58000000)//ADC控制寄存器#definerADCTSC(*(volatile

unsigned*)0x58000004)//ADC触摸屏控制寄存器#definerADCDLY(*(volatileunsigned*)0x58000008)//ADC启动或间隔延时寄存器#definerADCDAT0(*(volatileuns

igned*)0x5800000c)//ADC转换数据寄存器0#definerADCDAT1(*(volati1eunsigned*)0x58000010)//ADC转换数据寄存器2.对A/D转换器进行初始化程序中的参

数ch表示所选择的通道号,程序如下:voidAD_Init(unsignedcharch){rADCDLY=100;//ADC启动或间隔延时rADCTSC=0;//选择ADC模式rADCCON=(1<<14)|(49<<6)|(ch<<3)|(

0<<2)|(0<<1)|(0);//设置ADC控制寄存器}3.获取A/D的转换值程序中的参数ch表示所选择的通道号,程序如下:intGet_AD(unsignedcharch){inti;intval=0;if(ch>7)return0;//通道不能大于7for(i=0;i<1

6;i++){//为转换准确,转换16次rADCCON|=0x1;//启动A/D转换rADCCON=rADCCON&0xffc7|(ch<<3);while(rADCCON&0x1);//避免第一个标志出错while(!(rADCCON&

0x8000));//避免第二个标志出错val+=(rADCDAT0&0x03ff);Delay(10);}return(val>>4);//为转换准确,除以16取均值}4.主函数实现将转换后的数据在LCD上以波形的方式显示,程序如下:voidMain(void){inti,P=0;un

signedshortbuffer[Length];//显示缓冲区Target_Init();GUI_Init();//图形界面初始化Set_Color(GUI_BLUE);//画显示背景界面Fill_Re

ct(0,0,319,239);Set_Color(GUI_RED);DrawLine(0,119,319,119);Set_Font(&GUI_Font8x16);//设定字体类型APISet_Color(GUI_W

HITE);Set_BKColor(GUI_BLUE);//设定背景颜色APIFill_Rect(0,0,319,3);Fill_Rect(0,0,3,239);Fill_Rect(316,0,319,239);Fill_Rect(0,2

36,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);//从通道获取转换后

的数据Delay(20);p++;}p=0;for(i=0;i(Length;i++){Uart_Printf(“%d\n‖,buffer[p]);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转换后的波形Delay(1000);}}5.3D/A转换器接口5.3.1D

/A(数/模)转换器的工作原理将数字信号转换成模拟信号的过程称为数/模转换。能够完成这种转换的电路叫做数/模转换器,简称为D/A转换器,简记为DAC(DigitaltoAnalogConverter)。D/A转换器将输入的数字量转换为模拟量输出,数字量是由若干数位构成

的,例如一个8位的二进制数D0~D7,每个数位都有一定的权值。当Dn(n=0~7)=1就表示具有了这一位的权值,例如第3位D2的权值为22=4,最高位D7的权值为27=128。D/A转换器把一个数字量变为模拟量,就是把每一位上的代码按照权值转换为对应的模拟量,再把各位所对应的模拟量相加

,所得到各位模拟量的和便是数字量所对应的模拟量。在集成化的D/A转换器中,通常采用电阻网络实现将数字量转换为模拟电流,然后再用运算放大器完成模拟电流到模拟电压的转换。目前D/A转换集成电路芯片大都包含了这两个部分,如果只包含电阻网络的D/

A芯片,则需要连接外接运算放大器才能转换为模拟电压。根据电阻网络的结构可以分为权电阻网络DAC、T型电阻网络DAC、倒T型电阻网络DAC、权电流DAC等形式。1.T型电阻网络DAC一个4位T型电阻网络DAC如

图5.3.1所示。电路由R-2R电阻解码网络、模拟电子开关和求和放大电路构成,因为R和2R组成T型,故称为T型电阻网络DAC。图中电阻网络中只有R和2R两种电阻值,显然克服了上面权电阻网络DAC存在的缺点。图5.3.14位T型电阻网络DAC由图可知,根据

等效电源定理不难看出,每经过一个电阻并联支路,等效电源电压减少一半,而等效电阻不变,且均为R。电路中的信号传递过程如图5.3.2所示。当传递至最左边时,运放的输入端等效内阻仍为R,而等效电压经过N级则减为VREF/2n。当传递到运放的输入端时,其运放的等效内阻也是R,而等效电压则为VREF/2n-

1。根据叠加原理,运放总的等效电压是各支路等效电压之和,即(5.3.1)图5.3.2T型网络信号传递若取RF=3R,运放的输入端电流为运放的输出电压Vo为可见,输出模拟量VO与输入数字量成正比。(5.3.2)(5.3.3)2.数/模转换器的分类(1)电压输出型电压输出型

D/A转换器虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速D/A转换器使用。例如TLC5620。(2)电流输出型电流输出型D/A转换器(如THS5661A)直接输出电流,但应用中通常外接

电流一电压转换电路得到电压输出。电流一电压可以直接在输出引脚上连接一个负载电阻,实现电流一电压转换。但多采用的是外接运算放大器的形式。另外,大部分CMOSD/A转换器当输出电压不为零时不能正确动作,所以必

须外接运算放大器。由于在D/A转换器的电流建立时间上加入了外接运算放入器的延迟,使D/A响应变慢。此外,这种电路中运算放大器因输出引脚的内部电容而容易起振,有时必须作相位补偿。(3)乘算型D/A转换器中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电

压输入相乘的结果而输出,因而称为乘算型D/A转换器(如AD7533)。乘算型D/A转换器一般不仅可以进行乘法运算,而且可以作为使输入信号数字化地衰减的衰减器及对输入信号进行调制的调制器使用。3.数/模转换器(DAC)的主要技术指标描述DAC技术性能有许多技术指

标,这里主要介绍几个主要技术指标。(1)分辨率(Resolution)DAC电路所能分辨的最小输出电压与满量程输出电压之比称为DAC的分辨率。最小输出电压是指输入数字量只有最低有效位为1时的输出电压,最大输出电压是指输入数字量各位全为1时的输

出电压。DAC的分辨率可用下式表示:分辨率=1/(2n-1)式中,n表示数字量的二进制位数。DAC产生误差的主要原因有:基准电压VREF的波动,运放的零点漂移,电组网络中电阻阻值偏差等原因。(2)转换误差转换误差常用满量程FSR(Fu

llScaleRange)的百分数来表示。例如,一个DAC的线性误差为0.05%,就是说转换误差是满量程输出的万分之五。有时转换误差用最低有效位LSB(LeastSignificantBit)的倍数来表示。例如,一个DAC的转换误差是LSB/2,则表示输

出电压的绝对误差是最低有效位(LSB)为1时输出电压的1/2。DAC的转换误差主要有失调误差和满值误差。失调误差是指输入数字量全为0时,模拟输出值与理论输出值的偏差。在一定温度下的失调误差可以通过外部电路调整措施进行补偿,也

有些DAC芯片本身有调零端进行调零。对于没有设置调零端的芯片,可以采用外接校正偏置电路加到运放求和端来消除。满值误差又称增益误差,是指输入数字量全为1时,实际输出电压不等于满值的偏差。满值误差通过调整运放的反馈电阻加以消除。DAC的分辨率和转换误差共同决定了DAC的精度。要使D

AC的精度高,不仅要选择位数高的DAC,还要选用稳定度高的参考电压源VREF和低漂移的运算放大器与其配合。(3)建立时间(SettingTime)建立时间是描述DAC转换速度快慢的一个重要参数,一般

是指输入数字量变化后,输出模拟量稳定到相应数值范围所经历的时间。DAC中的电阻网络,模拟开关等是非理想器件,各种寄生参数及开关延迟等都会限制转换速度。实际上建立时间的长短不仅与DAC本身的转换速度有关,还与数字量变

化范围有关。输入数字量从全0变到全1(或者从全1变到全0)时,建立时间最长,称为满量程变化建立时间。一般产品手册上给出的是满量程变化建立时间。根据建立时间的长短,DAC可分为以下几种类型:低速DAC,建立时间≥100μs;中速DAC,建立时间为10~100μs;高

速DAC,建立时间为1~10μs;较高速DAC,建立时间为100ns~1μs;超高速DAC,建立时间为<100ns。显然转换速率也可以用频率来表示。其他指标还有线性度(Linearity)、转换精度、温度

系数/漂移等。5.3.2S3C2410A与D/A转换器的接口电路1.MAX5380与S3C2410A的连接电路MAX5380是电压输出型的8位D/A转换芯片,使用I2C串行接口,转换速率高达400kHz,其输

入数字信号和输出模拟信号的对应关系如表5.3.1所列。MAX5380与S3C2410A的连接电路如图5.3.3所示。表5.3.1MAX5380数字输入与模拟输出对照表数字输入模拟输出11111111(255/256)×2V10000000十1V000000017.8mV0000

00000图5.3.3MAX5380与S3C2410A的连接电路图5.3.3中,MAX5380的时钟SCL和数据输入SDA连接到S3C2410A的IICSCL(GPE15)和IICSDA(GPE14

),CON2的1、2两端输出转换后的模拟信号值,其输出电压范围为0~2V。S3C2410A通过I2C接口向MAX5380发送数据,MAX5380将接收I2C总线的数据,并将其转换为模拟电压信号输出到CON2。2.MAX5380的软件编程MAX5380的编程动作通过函数voidiic_write

_max5380(U32slvAdd,U8data)完成,其中slvAddr为从设备地址,MAX5380使用0x60;data为待写入的数据,即发送给MAX5380的数字值;iic_write_max5380的代码请参考6.2节(I2C部分)。通过调用该函数可以实现给

CON2输出各种波形信号。(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);}}(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(0x6

0,(U8)0);}for(i=0;i<256;i++){iic_write_max3580(0x60,(U8)0xff);}}5.4键盘与LED数码管接口5.4.1键盘与LED数码管接口基本原理与结构1.键盘的分类键盘按与微控制器

的连接方式,其结构可分为线性键盘和矩阵键盘两种形式。线性键盘由若干个独立的按键组成,每个按键的一端与微控制器的一个I/O口相连。有多少个键就要有多少根连线与微控制器的I/O口相连,适用于按键少的场合。矩阵键盘的按键按N行M列

排列,每个按键占据行列的一个交点,需要的I/O口数目是N+M,容许的最大按键数是N×M。矩阵键盘可以减少与微控制器I/O接口的连线数,是常用的一种键盘结构形式。根据矩阵键盘的识键和译键方法的不同,矩阵键盘又可以分为非编码键盘和编码键盘两种。非编码键盘主要用软件的方

法识键和译键。根据扫描方法的不同,可以分为行扫描法、列扫描法和反转法3种。编码键盘主要用硬件(键盘和LED专用接口芯片)来实现键的扫描和识别,例如使用8279专用接口芯片。键盘的按键实际上就是一个开关,常用的按键开关有机械式按

键、电容式按键、薄膜式按键、霍耳效应按键等。(1)机械式按键机械式按键开关的构造有两种。一种是内含两个金属片和一个复位弹簧,按键时,两个金属片便被压在一起;另一种机械式按键是用底面带一小块导电橡胶的成型泡沫硅橡胶帽做的,压键时,导电橡胶将印制电路板上的两条印制线短路

。机械式按键的主要缺点是在触点可靠地接触之前会通断多次,即容易产生抖动;另外,触点变脏或氧化,使导通的可靠性降低。但机械式按键价格较低,手感好,使用范围较广。(2)电容式按键电容式按键由印制电路板上的两小块金

属片和在泡沫橡胶片下面可活动的另一块金属片构成。压键时,可活动的金属片向两块固定的金属片靠近,从而改变了两块固定的金属片之间的电容。此时,检测电容变化的电路就会产生一个逻辑电平信号,以表示该键己被按下。显然,该类按键没有机械触点被氧化或变脏的问题。

(3)薄膜式按键薄膜式按键是一种特殊的机械式按键开关,由三层塑料或橡胶夹层结构构成。上层在每一行键下面有一条印制银导线,中间层在每个键下面有一个小圆孔,下层在每一列键下面也有一条印制银导线。压键时将上面一层的印制银导线压过中层的小孔与下面一层的

印制银导线接触。薄膜式按键可以做成很薄的密封形式。(4)霍耳效应按键霍耳效应按键利用活动电荷在磁场中的偏转效果。参考电流从半导体晶体的两个相对面之间流过,压键时,晶体便在磁力线垂直于参考电流方向的磁场中移动。晶体在磁场中移动会在晶体另外

两个相对的表面之间产生一个小电压,该电压经过放大之后用来表示键已被压下。该类按键是一种无机械触点的按键开关,密封性很好,但价格较高。2.LED数码管LED(LightEmittingDiode,发光二极管)数码管(也称为七段数码管)价格低廉、体积小、功耗低,而可靠性又很好,在嵌入式控制

系统中应用非常普遍。如图5.4.1(a)所示,LED数码管一般由8个发光管组成,分别称为a、b、c、d、e、f、g7个字段和一个小数点段DP。通过7个字段的不同组合,可以显示0~9和A~F共16个字母数字,从而实现

十六进制的显示。例如,控制a、b、c、d、e、f段亮,g段不亮,就显示出数字零。(a)LED器件(b)共阳极接法(c)共阴极接法图5.4.17段LED显示器LED数码管可以分为共阳极和共阴极两种结构,如图5.4.1(b)、(c)所示。在共阴极结构,各字段阴极控制端连接在一起接低电平,各

字段阳极控制端连接到高电平时,则该段发光。例如,要显示b字母,只要使c、d.、e、f、g阳极接高电平即可实现。在共阳极结构,各字段阳极控制端连接在一起接高电平,各字段阴极控制端连接到低电平时,则该段发光。例如,要显示b字

母,只要使c、d.、e、f、g阳极接低电平即可实现。在多个LED数码管显示电路中,通常把阴(阳)极控制端连接到一个输出端口,称为位控端口;而把各字段(数据显示段)连接到一个输出端口,称为段控端口。段控

端口处应输出十六进制数的7段代码。将一个4位的BCD码译为LED的7位显示代码,可以采用专用译码芯片,如7447即采用专用的带驱动器的LED段译码器,可以实现对BCD码的译码。另一种常用的办法是软件译码法,将0~F共16个数字(也可以为0~9)对应的显

示代码组成一个表,直接输出7段码。5.4.2用I/O口实现键盘接口一个用I/O口实现的16个按键的键盘接口电路如图5.4.2所示。在本例中,采用了节省口线的“行扫描法”方法来检测键盘,与4×4的矩阵键盘接口只需要8根口线,设置PF0~PF3为输出扫描码的端口,P

F4~PF7为键值读入口。图5.4.2ARM微处理器实现的键盘接口电路一个用I/O口实现的键盘接口,为了识别键盘上的闭合键,常采用行扫描法。行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如果列值中有某

位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫描完全部的行线为止。在图5.4.2所示电路中,按键设置在行、列交叉点上,行、列分别连接到按键开关的两端。列线通过上拉电阻接到+5V上。平时无按键动作时,列线处于高电平状态;而当有键按下时,列线电平状态将由通过此按键的

行线电平决定:行线电平如果为低,列线电平为低;行线电平如果为高,则列线电平亦为高。通过这一点来识别矩阵式键盘是否被按下。因各按键之间相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。根据行扫描法的原理,识别矩阵键盘按键闭合分两步进行:(1)识别键盘哪一行的键

被按下:让所有行线均为低电平,检查各列线电平是否为低,如果有列线为低,则说明该列有键被按下,否则说明无键被按下。(2)如果某列有键被按下,识别键盘哪一行的键被按下:逐行置低电平,并置其余各行为高电平,检查各列线电平的变化,如果列电平

变为低电平,则可确定此行此列交叉点处按键被按下。5.4.3采用专用芯片实现键盘及LED接口一个5×4键盘及8位LED显示电路如图5.4.3所示,该电路采用支持I2C总线协议的ZLG7290芯片。ZLG7290是

一个采用I2C接口的键盘及LED驱动器芯片,I2C串行接口提供键盘中断信号方便与处理器接口,I2C接口传输速率可达32kbit/s,可驱动8位共阴数码管或64只独立LED和64个按键,可控扫描位数可控任一数码管闪烁,提供数据译码和循环移位段寻址等控制,8个功能键可检

测任一键的连击次数,无需外接元件即直接驱LED,可扩展驱动电流和驱动电压,提供工业级器件多种封装形式PDIP-24和SO-24,引脚端功能如表5.4.1所示。表5.4.1ZLG7290引脚端功能引脚符号类型描述13,12,21,22,3~6Dig7~Dig0输入/输出LED显示位驱

动及键盘扫描线10~7,2,1,24,23SegH~SegA输入/输出LED显示段驱动及键盘扫描线20SDA输入/输出I2C总线接口数据/地址线19SCL输入/输出I2C总线接口时钟线14/INT输出中断输出端,低电平有效

15/RES输入复位输入端,低电平有效17OSC1输入连接晶体以产生内部时钟18OSC2输出16VCC电源电源正端,电压3.3~5.5V11GND电源地,电源负端(a)ZLG7290控制电路(b)八段数码管连接电路(c)键盘及LED显

示电路图5.4.35×4键盘及8位LED显示电路(图与表中的引脚端符号统一,以表为准)1.键盘控制初始化程序/************************************名称:keyboard_tes

t*功能:测试八段数码管*参数:无*返回:无************************************Oidkeyboard_test(void){UINT8TucChar;UINT8TszBuf[40];uart_pr

intf(―\nKeyboardTestExample\n‖);uart_printf(―Pressanykeytoexit…\n‖);Keyboard_init();g_nKeyPress=0xFE;While

(1){f_nKeyPress=0;while(f_nKeyPress==0){if(uart_tetkey())//PressanykeyfromUART0toexitreturn;elseif(ucChar==7)//orpress5*4Key

-7toexitreturn;elseif(g_nKeyPress!=0xFE)//orSB1202/SB1203toexitreturn;}iic_read_keybd(0x70,0x1,&ucChar);//getdatafromZLG7290If(uc

Char!=0){ucChar-key_set(ucChar);//keymapforEdukitIIif(ucChar<16)sprintf(&szBuf,‖presskey%d‖,ucChar);elseif(uc

Char<255)sprintf(&szBuf,‖presskey%d‖,ucChar);if(ucChar==0xFF)sprintf(&szBuf,‖presskey%c‖,ucChar);if(

ucChar==0xFF)sprintf(&szBuf,‖presskeyFUN‖);#ifdefBOARDTESTprint_lcd(200,170,0x1c,&szBuf);#endifuart_printf(szBuf);uart_printf(―

\n‖)}}uart_printf(―end.\n‖);}2.中断服务程序/***************************名称:keyboard_int*功能:键盘中断处理程序*参数:无*返回:无***************************Voidkeyboard_i

nt(void){UINT8TucChar;ClearPending(BIT_KINT1);f_nKeyPress=1;#ifdefBOARDTESTg_nKeyPress=0xFE;#endif}5.5LCD显示接口5.5.1LCD显示接

口原理与结构1.LCD显示原理LCD(LiquidCrystalDisplay,液晶显示器)中的液晶的分子晶体以液态而非固态形式存在。当电流通过液晶层时,分子晶体将会按照电流的流向方向进行排列,没有电流时,它们将会彼此平行排列。将液晶倒入带有细小沟槽的外层,液晶分子会顺着槽

排列,并且内层与外层以同样的方式进行排列。液晶层能够过滤除了那些从特殊方向射入之外的所有光线,能够使光线发生扭转,使光线以不同的方向从另外一个面中射出。利用液晶的这些特点,液晶可以被用来当作一种既可以阻碍光线,也可以允许光线通过的开关。在LCD中,通过给不同的液晶

单元供电,控制其光线的通过与否,达到显示的目的。在LCD中,显示面板薄膜被分成很多小栅格,每个栅格由一个电极控制,通过改变栅格上电极的电压状态,就能控制栅格内液晶分子的排列,从而控制光路的通断。彩色LCD利用三原色混合

的原理显示不同的色彩。在彩色LCD中,每一个像素都是由3格液晶单元格构成的,其中每一个单元格前面都分别有红色、绿色或蓝色的过滤片,光线经过过滤片的处理变成红色、蓝色或者绿色,利用三原色的原理组合出不同的色彩。2.电致发光LCD通过控制每个栅格的电极加电与否来控制光线的通过或阻断,从而显示图形。

LCD的光源提供方式有透射式和反射式两种。透射式LCD显示器的屏后面有一个光源,可以不需要外部环境提供光源,如笔记本电脑的LCD显示器。反射式LCD需要外部提供光源,靠反射光来工作。电致发光(EL)是将电能直接转换为光能的一种发光现象。电致发光片是利用电致发光原理制成的一种发光薄

片,具有超薄、高亮度、高效率、低功耗、低热量、可弯曲、抗冲击、长寿命、多种颜色选择等特点,也用来作为LCD液晶屏提供光源的一种方式。3.LCD种类LCD按照其液晶驱动方式,可以分为TN(TwistNematic,扭转向列)型、STN(SuperTwistedNe

matic,超扭曲向列)型和TFT(ThinFilmTransistor,薄膜晶体管)型3大类。TN型LCD的分辨率很低,一般用于显示小尺寸黑白数字、字符等,广泛应用于手表、时钟、电话、传真机等一般家电用品的数字显示。STN型LCD的光

线扭转可以达到180°~270°,液晶单元按阵列排列,显示方式采用类似于CRT的扫描方式,驱动信号依次驱动每一行的电极,当某一行被选定的时候,列向上的电极触发位于行和列交叉点上的像素,控制像素的开关,在同一时刻只有一点(一个像素)受控。彩色LCD的每个像素点有RGB3个像素点,并在

这3个像素点上的光路上增加相关滤光片,利用三原色原理显示彩色图像。STN型LCD的像素单元如果通过的电流太大,会影响附近的单元,产生虚影。如果通过的电流太小,单元的开和关就会变得迟缓,降低对比度并丢失移

动画面的细节。而且随着像素单元的增加,驱动电压也相应提高。STN型LCD很难做出高分辨率的产品,一般应用于一些对图像分辨率和色彩要求不是很高、小尺寸电子显示的领域,如移动电话、PDA、掌上型电脑、汽车导航系统、电子词典等中。TFT

型LCD在STN型LCD的基础上,增加了一层薄膜晶体管(TFT)阵列,每一个像素都对应一个薄膜晶体管,像素控制电压直接加在这个晶体管上,再通过晶体管去控制液晶的状态,控制光线通过与否。TFT型LCD的每个像素

都相对独立,可直接控制,单元之间的电干扰很小,可以使用大电流,提供更好的对比度、更锐利和更明亮的图像,而不会产生虚影和拖尾现象,同时也可以非常精确的控制灰度。TFT型LCD的结构如图5.5.1所示。TFT型LCD响

应快、显示品质好,适用于大型动画显示,被广泛应用于笔记本电脑、计算机显示器、液晶电视、液晶投影机及各式大型电子显示器等产品。近年来也在手机、PDA、数码相机、数码摄像机等手持类设备广泛应用。图5.5.1TFT型LCD的结构4.LCD的驱动市面上出售的LCD有两种类型:一种是带有LCD

控制器的LCD显示模块,这种LCD通常采用总线方式与各种单片机进行接口。另一种是没有带LCD控制器的LCD显示器,需要另外的LCD控制器芯片或者是在主控制器芯片内部具有LCD控制器电路。在单片机系统中,LCD往往是通过LCD控制器芯片连在单片机总线上,或者通过并行接口、串行接口与单片

机相连。而现在许多SOC芯片中都集成了LCD控制器,支持TN型LCD或者TFT型LCD。例如大部分的ARM处理器中都集成了LCD控制器。5.5.2S3C2410A的LCD控制器1.S3C2410A的LCD控制器内部结构在S3C2410A芯片中具有LCD控制器,可以将

显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上,支持640×480、320×240和160×160等多种显示屏尺寸的STN型LCD和TFT型LCD。对于STN型LCD,LCD控制器可

支持4位双扫描,4位单扫描和8位单扫描3种显示类型;支持4级和16级灰度级单色显示模式,支持256色和4096色显示;在256色显示模式下,最大可支持4096×1024,2048×2048和1024×4096显示。对于TFT型LCD,可支持1,2,4,8bpp(bitsperp

ixel)调色板显示模式和16bpp非调色板真彩显示。S3C2410A的LCD控制器支持单色,4级、16级灰度LCD显示,以及8位彩色、12位彩色LCD显示,采用时间抖动算法(Time-basedDitheringAlgorithm和帧率控制(FrameRat

eControl)方法;彩色显示采用RGB的格式,通过软件编程可以实现332的RGB调色格式。可以通过对LCD控制器中的各寄存器写入不同的值,来配置不同尺寸、不同的垂直和水平像素点、数据宽度、接口时间及刷新率的LCD。S3C2410A的LCD控制器内部结构方框图

如图5.5.2所示,由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600等模块组成。REGBANK模块具有17个用于配置LCD控制器的可编程寄存器和256×16的调色存储器。LCDCDMA是一个专用的DMA,它可以自动地将显示数

据从帧内存传送到LCD驱动器中。利用这个专用的DMA,可以实现在不需要CPU介入的情况下显示数据。VIDPRCS从LCDCDMA接收数据,将相应格式的数据通过VD[23:0]发送到LCD的驱动器上,例如4/8位单扫描和4位双扫描显示模式。TIMEGEN包含可编程的逻辑功能,以支持常用

的LCD驱动器所需要的不同接口时序和速率的要求。TIMEGEN模块产生VFRAME、VLINE、VCLK及VM等信号。LPC3600是用于TFT型LCDLTS350Q1-PDl或LTS350Ql-PD2的时序控制逻辑单元。图5.5.2LCD控制器的结构框图S3C2410ALCD控制器

的外部接口信号有33个,包括24个数据位和9个控制位如下:VFRAME/VSYNC/STV:帧同步信号(STN)/垂直同步信号(TFT)/SECTFT信号。VLINE/HSYNC/CPV:行同步脉冲信号(STN)/水平同

步信号(TFT)/SECTFT信号。VCLK/LCD_HCLK:像素时钟信号(STN/TFT)/SECTFT信号。VD[23,0]:LCD像素数据输出端口(STN/TFT/SECTFT)。VM/VDEN/TP:LCD驱动

器的交流偏置信号(STN)/数据使能信号(TFT)/SECTFT信号。LEND/STH:行结束信号(TFT)/SECTFT信号。LCD_PWREN:LCD面板电源使能控制信号。LCDVF0:SECTFT信号OELCDVF1:S

ECTFT信号REVLCDVF2:SECTFT信号REVB2.LCD显示数据格式例如一个320×240个像素,8bpp的256色LCD,显示一屏所需的显示缓存为320×240×8位,即76800字节。在显示缓存器中,每个像素占一个字节,每个字节中又有RGB格式(332或者233)的区分,具

体由硬件决定。例如332的RGB格式如图5.5.3(a)所示,红、绿、蓝三个颜色分量分别占3位、3位、2位。8位256彩色显示的显示缓存器与LCD屏上的像素点是对应的,每个字节对应LCD上的一个像素点,如图5.5.3(

b)所示。在彩色图像显示时,通过配置相应的寄存器,首先要给显示缓存区一个首地址,这个地址要在4字节对齐的边界上,而且要在SDRAM的4MB空间之内。以显示缓存首地址开始的连续76800字节,就是显示缓存区,显示缓存区的数据会直接显示到LCD屏上。改变该显示缓存区内数据,LCD显示

屏上的图像随之变化。(b)显示缓存中的数据在显示屏上的显示格式(a)帧内存数据在显示缓存中的格式图5.5.38位256色LCD显示数据格式3.S3C2410ALCD控制器的相关寄存器启动一个与S3C2410A连接的LCD的显示,需要正确的配置与S3C2410ALC

D控制器的相关寄存器。需要配置的相关寄存器如下。(1)LCDCON1(LCD控制寄存器1)LCDCON1(LCD控制寄存器1)是一个可读/写的寄存器,地址为0x4D000000,复位后的初始值为0x00000000。LCDCON1的位功能如表5.5.1所列。表5.5.1LCD

CON1的位功能位名位功能初始状态LINECNT(只读)[27:18]提供行计数器的状态。从LINEVAL向下计数到00000000000CLKVAL[17:8]确定VCLK的速率。STN:VCLK=

HCLK/(CLKVAL×2)(CLKVAL≥2)TFT:VCLK=HCLK/[(CLKVAL+1)×2](CLKVAL≥0)0000000000MMODE[7]确定VM的启动速率。0:每一帧;1:由MVAL

定义0PNRMODE[6:5]选择显示模式。00:4位双扫描显示模式(STN);01:4位单扫描显示模式(STN);10:8位单扫描显示模式(STN);11:TFT型LCD面板00BPPMODE[4:1〕选择BP

P(BitsPerPixel)模式。0000:1bppSTN,单色模式;0001:2bppSTN,4级灰度模式;0010:4bppSTN,16级灰度模式;0011:8bppSTN,彩色模式;0100:12bppSTN,彩色模式;1000:1bppTFT;

1001:2bppTFT;1010:4bppTFT;1011:8bppTFT;1100:16bppTFT;1101:24bppTFT0000ENVID[0]LCD视频输出和逻辑的使能/禁止。0:禁止视频输出和LCD控制信号;

1:使能视频输出和LCD控制信号0(2)LCDCON2(LCD控制寄存器2)LCDCON2(LCD控制寄存器2)是一个可读/写的寄存器,地址为0x4D000004,复位后的初始值为0x00000000。LCDCON1的位功能如表5.5.2所列。表5.5.2LCDCON2的

位功能位名位功能初始状态VBPD[31:24]TFT型LCD:在垂直同步周期后,帧启动时,垂直后沿停止的行数;STN型LCD:这些位设置为00x00LINEVAL[23:14]TFT/STN:这些位确定LCD面板垂直尺寸0000000000(3)LCD

CON3LCDCON3(LCD控制寄存器3)是一个可读/写的寄存器,地址为0x4D000008,复位后的初始值为0x00000000。LCDCON3的位功能如表5.5.3所列。表5.5.3LCDCON3的位功能位名位功

能初始状态HBPD(TFT)[25:19]TFT型LCD:水平后沿,在HSYNC下降沿和有效数据启动之间的VCLK周期数0000000WDLYSTN型LCD:使用位[20:19]确定VLINE和VCLK之间的延时。

00:16HCLK;0l:32HCLK;10:48HCLK;11:64HCLK;位[25:21]保留HOZVAL[18:8]TFT型LCD/STN型LCD:确定LCD显示屏的水平尺寸,HOZVAL值的确定必须满足一行总的字节数是4的倍数(4nbytes

)。在单色模式,如果LCD的水平尺寸是120个像素点,x=120不能被支持,因为一行包含15字节(不是4的倍数)。在单色模式,x=128可以被支持,因为1行包含16字节(是4的倍数)。LCD驱动器将丢弃额外

的8个像素点00000000000HFPD(TFT)[7:0]TFT型LCD:水平前沿,在有效数据结束和HSYNC上升沿之间的VCLK周期数0x00LINEBLANKSTN型LCD:确定行扫描的空闲时间,能够微调VLIN

E的速率。LINEBLANK的单位是HCLK×8。例如:如果LINEBLANK为10,则在80个HCLK期间向VCLK中插入空闲时间(4)LCDCON4(LCD控制寄存器4)LCDCON4(LCD控制寄存器4)是一个可读/写的寄存器,地址为0x4D00000C,复位后的初始值为0x00000

000。LCDCON4的位功能如表5.5.4所列。表5.5.4LCDCON4的位功能位名位功能初始状态MVAL[15:8]STN型LCD:如果MMODE位设置为1,该位定义VM信号的速率。速率VM=速率V

LINE/(2×MVAL)0x00HSPW(TFT)[7:0]TFT型LCD:水平同步脉冲宽度,根据计算的VCLK数定义HSYNC脉冲的高电平宽度0x00WLHSTN型LCD:位[1:0〕确定VLINE高电平的宽度,根据计算的

HCLK数定义VLINE脉冲的高电平宽度。00:16HCLK;01:32HCLK;10:48HCLK;11:64HCLK;位[7:2]保留。(5)LCDCON5LCDCON5(LCD控制寄存器5)是一个可读/写的寄存器,地址为0x4D000010,复位后的初始值为0x000000

00。LCDCON5的位功能如表5.5.5所列。表5.5.5LCDCON5的位功能位名位功能初始状态Reserved[31:17」保留位,这些位设置为00VSTATUS[16:15]TFT型LCD:垂直状态(只读)。00:VSYNC;01:后沿

;10:有效;11:前沿00HSTATUS[14:13]TFT型LCD:水平状态(只读)。00:HSYNC;01:后沿;10:有效;11:前沿00BPP24BL[12]TFT型LCD:这一位选择24bpp图象存储器的顺序。0:LSB有效;1:MSB有效0FRM565[11]TF

T型LCD:这一位定义16bpp输出图象数据的格式。0:5:5:5:1格式;1:5:6:5格式0INVVCLK[10]STN型LCD/TFT型LCD:这一位控制设置VCLK有效沿的极性。0:在VCLK下降沿读取图象数据;1:在VCLK上升沿读取图象数据0INVVLINE[9]S

TN型LCD/TFT型LCD:这一位指示VLINE/HSYNC脉冲的极性。0:正常;1:反相0INVVFRAME[8]STN型LCD/TFT型LCD:这一位指示VFRAME/VSYNC脉冲的极性。0:正常;1:反相0INVVD[7]STN型LCD/TFT型LCD:这一位指示VD(视频数据)脉冲的极

性。0:正常;1:VD反相0INVVDEN[6]TFT型LCD:这一位指示VDEN信号的极性。0:正常;1:反相0INVPWREN[5]STN型LCD/TFT型LCD:这一位指示PWREN信号的极性。0:正常;1:反相0INVLEND[4]TFT型LCD:这一位指示LEND信号的极

性。0:正常;1:反相0PWREN[3]STN型LCD/TFT型LCD:LCD_PWREN输出信号使能/不使能。0:PWREN信号不使能;1:PWREN信号使能0BSWP[1]STN型LCD/TFT型LCD:字节交换控制位。0

:交换禁止;1:交换使能0HWSWP[0]STN型LCD/TFT型LCD:半字节交换控制位。0:交换禁止;1:交换使能0(6)LCDSADDR1LCDSADDR1(STN型LCD/TFT型LCD帧缓冲起始地址寄存器1)是一个可读/写的寄存器,地址为

0x4D000014,复位后的初始值为0x00000000。LCDSADDR1的位功能如表5.5.6所列。表5.5.6LCDSADDR1的位功能位名位功能初始状态LCDBANK[29:21]位[29:21]用于指示视频缓冲区在系统存储器中的段地址A[30:2

2]。在可视区移动时,LCDBANK数值也不能改变。LCD帧缓冲区应当与4MB区域对齐,以确保在可视区移动时,LCDBANK数值也不改变。因此需要小心使用内存分配函数malloc()。0x00LCDBASEU[20:0]位[20:0]用来指示

高端地址计数器的起始地址A[21:1],即指示单扫描LCD的帧存储器中的LCD帧缓冲区起始地址A[21:1〕;或者指示在双扫描LCD中高端帧存储器的起始地址A[21:1]。0x000000(7)LCDSADD

R2LCDSADDR2(STN型LCD/TFT型LCD帧缓冲起始地址寄存器2)是一个可读/写的寄存器,地址为0x4D000018,复位后的初始值为0x00000000。LCDSADDR2的位功能如表5.5.7所列。表5.5.7LCDSADD

R2的位功能位名位功能初始状态LCDBASEL[20:0]位[20:0]用来指示低端地址计数器的起始地址A[21:1],即指示单扫描LCD的帧存储器中的LCD帧缓冲区结束地址A[21:1〕;或者指示在双扫描LCD中低端帧

存储器的起始地址A[21:1]。LCDBASEL=((帧结束地址)>>1)+1=LCDBASEU+(PAGEWIDTH+OFFSIZE)x(LINEVAL+1)0x0000需要注意的是,用户可以在LCD控制器打开的状态下通过改变LCDBASEU和LCD-BASEL的值来滚动屏幕

。但是,在帧结束时,用户不能根据LCDCON1寄存器中LINEGNT字段的值来改变LCDBASEU和LCDBASEL寄存器,因为LCDFIFO预取下一帧数据的操作先于改变帧数据。如果这时改变帧数据,预取的FIFO数据将无效,并且将出现显示错误。为了检查L

INECNT,必须将中断屏蔽;否则如果在读LINECNT之后,刚好某个中断被执行,那么读取的LINECNT值可能是过期的。(8)LCDSADDR3LCDSADDR3(STN型LCD/TFT型LCD帧缓冲起始地址寄存器

3)是一个可读/写的寄存器,地址为0x4D0000lC,复位后的初始值为0x00000000,用于设置虚拟屏地址。LCDSADDR3的位功能如表5.5.8所列。表5.5.8LCDSADDR3的位功能位名

位功能初始状态OFFSIZE[21:11]位[21:11]用于设置虚拟屏偏移量大小(即半字的数量)。该数值定义前一个LCD行上的最后半字与新的LCD行上的第一个半字之间的差值。00000000000PAGEWIDTH[10:0]位[10:0]

〕用于设置虚拟屏的页宽度(即半字的数量)。该数值定义帧的可视区宽度。000000000需要注意的是:在位ENVID为0时,PAGEWIDTH和OFFSIZE的数值必须改变。(9)RGB查找表寄存器RGB查找表寄存器包括REDL

UT(红色查找表寄存器)、GREENLUT(绿色查找表寄存器)和BLUELUT(蓝色查找表寄存器)。在这3个寄存器中,可以分别设定使用的8种红色,8种绿色和4种蓝色。①REDLUT(STN型LCD红色查找表寄存器)是一个可读写的寄存器,地址为0

x4D000020,复位后的初始值为0x00000000。REDLUT的位功能如表5.5.9所列。表5.5.9REDLUT的位功能位名位功能初始状态REDVAL[31:0][31:0]位定义8种可能的

红色组合。000=REDVAL[3:0];001=REDVAL[7:4]010=REDVAL[11:8];011=REDVAL[15:12]100=REDVAL[19:16];101=REDVAL[23:20]110=REDVAL[27:24];111=REDVA

L[31:28]0x00000000②GREENLUT(STN型LCD绿色查找表寄存器)是一个可读/写的寄存器,地址为0x4D000024,复位后的初始值为0x00000000。GREENLUT的位功能如表5.5.10所列。

表5.5.10GREENLUT的位功能位名位功能初始状态GREENVAL[31:0][31:0]位定义8种可能的绿色组合。000=GREENVAL[3:0];001=GREENVAL[7:4];010=GREENVAL[11:8];011=GREENVA

L[15:12];100=GREENVAL[19:16];101=GREENVAL[23:20];110=GREENVAL[27:24];111=GREENVAL[31:28]0x00000000③BLUELUT(STN型LCD蓝色查找表寄存器)是一个可读/写的寄存器,地址为Ox4D00002

8,复位后的初始值为0x0000。BLUELUT的位功能如表5.5.11所列。表5.5.11BLUELUT的位功能位名位功能初始状态BLUEVAL[15:0][15:0]位定义4种可能的蓝色组合。00=BLUEVAL[3:0];01=BLUEVAL[7:4];10=BLUEVAL[11:8

];11=BLUEVAL[15:12]0x0000注意:Address从0x4D00002C到0x4D000048的地址不能够使用,保留用于测试模式。(10)DITHMODE(STN型LCD抖动模式寄存器)DITHMOD

E(STN型LCD抖动模式寄存器)是一个可读/写的寄存器,地址为0x4D00004C,复位后的初始值为0x00000,建议用户将其值设置为0x12210。在S3C2410A中,调节红色、绿色或蓝色的差异是通过时间抖动算法及帧率控制来实现的,因此需要设置抖动模式寄存器。DITHM

ODE的位功能如表5.5.12所列。表5.5.12DITHMODE的位功能位名位功能初始状态DITHMODE[18:0]用户使用下面的数值:0x00000或者0x122100x00000(11)TPALTPAL(TFT型LCD临时调色板寄存器)是一个可读/写的寄存器,地

址为0x4D000050,复位后的初始值为0x00000000,寄存器的数据是下一帧的图象数据。TPAL的位功能如表5.5.13所列。表5.5.13TPAL的位功能位名位功能初始状态TPALEN[24]临时调色板寄存器使能位。0:不使能

;1:使能0TPALVAL[23:0]临时调色板数值寄存器TPALVAL[23:16]:RED(红色)TPALVAL[15:8]:GREEN(绿色)TPALVAL[7:0]:BLUE(蓝色)0x000000(12)LCD中断

寄存器LCD中断寄存器有LCDINTPND(LCD中断判断寄存器)、LCDSRCPND(LCD中断源判断寄存器)和LCDINTMSK(LCD中断屏蔽寄存器)。①LCDINTPND(LCD中断判断寄存器)是一个可读/写寄存器,地址为0X4D000054,复位后的初始

值为0x0。LCDINTPND的位功能如表5.5.14所列。表5.5.14LCDINTPND的位功能位名位功能初始状态INT_FrSyn[1]LCD帧同步中断判断位。0:没有中断请求;1:帧已有中断请求0INT_FiCnt[0]LCDFIFO中断判断

位。0:没有中断请求;1:LCDFIFO已有中断请求0②LCDSRCPND(LCD中断源判断寄存器)是一个可读/写寄存器,地址为0X4D000058,复位后的初始值为0x0。LCDSRCPND的位功能

如表5.5.15所列。表5.5.15LCDSRCPND的位功能位名位功能初始状态INT_FrSyn[1]LCD帧同步中断源判断位。0:没有中断请求;1:帧已有中断请求0INT_FiCnt[0]LCDFIFO中断源判断位。0:没有中断请求;1:LC

DFIFO已有中断请求0③LCDINTMSK(LCD中断屏蔽寄存器)是一个可读/写寄存器,地址为0X4D00005C,复位后的初始值为0x3。LCDINTMSK的位功能如表5.5.16所列。表5.5.16LCDINT

MSK的位功能位名位功能初始状态FIWSEL[2]确定LCDFIFO的触发器电平。0:4words(字);1:8words(字)INT_FrSyn[1]屏蔽LCD帧同步中断。0:中断服务有效;1:中断服务被屏蔽1INT_FiCnt[0]屏蔽LCDFIFO中断。0:中断服

务有效;1:中断服务被屏蔽1(13)LPCSEL(LPC3600模式控制寄存器)是一个可读/写寄存器,地址是0X4D000060,初始化值是0x4。LPCSEL的位功能如表5.5.17所列。表5.5.17LPCSEL的位功能位名位功能初始状态Reserved[2]

保留1RES_SEL[1]1=240×3200LPC_EN[0]确定LPC3600使能/不使能。0:LPC3600不使能;1:LPC3600使能05.5.3S3C2410ALCD显示的编程实例[徐英慧]本实例实现在LCD上填充一个蓝色的矩形,并画一个

红色的圆。要实现以上功能,需要完成的主要工作如下。1.定义与LCD相关的寄存器代码如下:#defineM5D(n)((n)&0x1fffff)#defineMVAL(13)#defineMVAL_USED(

0)#defineMODE_CSTN_8BIT(0x2001)#defineLCD_XSIZE_CSTN(320)#defineLCD_YSIZE_CSTN(240)#defineSCR_XSIZE_CSTN(LCD_XSIZE_CSTN*2)/

/虚拟屏幕大小#defineSCR_YSIZE_CSTN(LCD_YSIZE_CSTN*2)#defineHOZVAL_CSTN(LCD_XSIZE_CSTN*3/8-1)//有效的VD数据是8#defineLINEVAL_

CSTN(LCD_YSIZE_CSTN-1)#defineWLH_CSTN(0)#defineWDLY_CSTN(0)#defineLINEBLANK_CSTN(16&0xff)#defineCLKVAL_CSTN(6)//130Hz@50M

Hz,WLH=16hclk,WDLY=16hclk,LINEBLANK=16*8hclk,VD=8#defineLCDFRAMEBUFFER0x33t800000//帧缓冲区起始地址2.初始化LCD初始化LCD程序完成对相关寄存器的

赋初值。这里使用函数LCDInit实现,其中参数type用于传递显示器的类型,如STN8位彩色、STN12位彩色等。具体代码如下:VoidLCD_Init(inttYPe){//用于降低功耗rIISPSR=(2<<5)|(2<<0);//IIS_LRCK=44.1kHz@3

84fs,PCLK=50MHzrGPHCON=rGPHCON&~(0xf<<18)|(0x5<<18);switch(type){caseMODE_CSTN_8BIT://STN8位彩色模式frameBuffer8

Bit=(U32(*)[SCR_XSIZE_CSTN/4])LCDFRAMEBUFFER;rLCDCON1=(CLKVAL_CSTN<<8)|(MVAL_USED<<7)|(2<<5)|(3<<1)|0;//8-bit单扫描,8bppCSTN

,ENVID=关闭rLCDCON2=(0<<24)|(LINEVAL_CSTN<<14)|(0<<6)|0;rLCDCON3=(WDLY_CSTN<<19)|(HOZVAL_CSTN<<8)|(LINEBLANK_CSTN<<0);rLCDCON4=(MVA

L<<8)|(WLHCSTN<<0);rLCDCON5=0;rLCDSADDR1=(((U32)frameBuffer8Bit))>>22)<<21)|M5D((U32)frameBuffer8Bit>>1);rLCDSADDR2=M5D(((U32)frameBuffer8Bit+((S

CR_XSIZE_CSTN)*LCD_YSIZE_CSTN))>>1);rLCDSADDR3=(((SCR_XSIZE_CSTN-LCD_XSIZE_CSTN)/2)<<11)|(LCD_XSIZE_CSTN/2);rDIT

HMODE=0;rREDLUT=0xfdb96420;rGREENLUT=0xfdb96420;rBLUELUT=0xfb40;break;default:break;}}3.常用的绘图函数将LCD控制器配置为STN8

位256色显示屏之后,只需要修改帧缓冲的相应内容就可在LCD上显示数据了。下面的函数PutCstnBBit()实现了在LCD的(x,y)处打点的功能。voidPutCstn8Bit(U32x,U32y,U32c){if(x<SCR_XSIZE_

CSTN&&y<SCR_YSIZE_CSTN)frameBuffer8Bit[(y)][(x)/4]=(frameBuffer8Bit[(y)][x/4]&~(0xff000000>>((x)%4)*8))}((c&0x000

000ff)<<((4-1-((x)%4))*8));}其他图形显示功能,如画线、画圆、画矩形等,只需要按照一定规则在LCD上打点就可以了。EL-ARM-830系统为用户提供了一系列绘图的API函数,主要有:U32GUI_Init(void);//GUI初始化voidDraw_Poin

t(U16x,U16y);//绘制点APIU32Get_Point(U16x,U16y);//得到点APIvoidDraw_HLine(U16y0,U16x0,U16x1);//绘制水平线APIvoidDraw_VLine(U16x0

,U16y0,U16y1);//绘制竖直线APIvoidDraw_Line(I32x1,I32y1,I32x2,I32y2);//绘制线APIvoidDraw_Circle(U32x0,U32y0,U32r);//绘制圆APIvoidFill_Circle(U16x

0,U16y0,U16r);//填充圆APIvoidFill_Rect(U16x0,U16y0,U16x1,U16y1);//填充区域APIvoidSet_Color(U32color);//设定前景颜色APIvoidSe

t_BkColor(U32color);//设定背景颜色APIvoidSet_Font(GUI_FONT*pFont)://设定字体类型APIvoidDisp_String(constI8*s,I16x,I1

6y);//显示字体API4.主函数通过调用初始化函数及绘图API函数,实现在LCD上填充一个蓝色的矩形,并画一个红色的圆。具体代码如下:voidMain(void){intCount=3000;Target_Init();//硬件初始化

GUI_Init();//图形用户接口初始化,包括对LCD的初始化Set_Color(GUI_BLUE);Fill_Rect(0,0,319,239);Delay(Count);Sets_Color(GUI_RED);

Draw_Circle(100,100,50);Delay(Count);while(1);}5.6触摸屏接口5.6.1触摸屏工作原理与结构触摸屏附着在显示器的表面,根据触摸点在显示屏上对应坐标点的显示内容或图形符号,进行相应的操

作。触摸屏按其工作原理可分为矢量压力传感式、电阻式、电容式、红外线式和表面声波式5类。在嵌入式系统中常用的是电阻式触摸屏。电阻触摸屏结构如图5.6.1(c)所示,最上层是一层外表面经过硬化处理、光滑防刮的塑料层,内表面也涂有一层导电层(ITO或镍金);基层采用一层玻璃或薄膜

,内表面涂有叫作ITO的透明导电层;在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘。在每个工作面的两条边线上各涂一条银胶,称为该工作面的一对电极,一端加5V电压,一端加0V,在工作面的一个方向上形

成均匀连续的平行电压分布。当给X方向的电极对施加一确定的电压,而Y方向电极对不加电压时,在x平行电压场中,触点处的电压值可以在Y+(或Y—)电极上反映出来,通过测量Y+电极对地的电压大小,通过A/D转换,便可得知触点的X坐标值。同理,当给Y电极对施加电压,而X电极对

不加电压时,通过测量X+电极的电压,通过A/D转换便可得知触点的Y坐标。当手指或笔触摸屏幕时(如图5.6.1(c)所示),两个相互绝缘的导电层在触摸点处接触,因其中一面导电层(顶层)接通X轴方向的5V均匀电压场(如图5.6.1(a)所示),

使得检测层(底层)的电压由零变为非零,控制器检测到这个接通后,进行A/D转换,并将得到的电压值与5V相比,即可得触摸点的X轴坐标为(原点在靠近接地点的那端):同理也可以得出Y轴的坐标。图5.6.1触摸屏坐标识别原理电阻式触摸屏有

四线式和五线式两种。四线式触摸屏的X工作面和Y工作面分别加在两个导电层上,共有4根引出线:X+、X-,Y+、Y-分别连到触摸屏的X电极对和Y电极对上。四线电阻屏触摸寿命小于100万次。五线式触摸屏是四

线式触摸屏的改进型。五线式触摸屏把X工作面和Y工作面都加在玻璃基层的导电涂层上,工作时采用分时加电,即让两个方向的电压场分时工作在同一工作面上,而外导电层则仅仅用来充当导体和电压测量电极。五线式触摸屏需要引出5根线。五线电阻屏的触摸寿命可以达到3500万次。五线电阻屏的ITO层可以

做得更薄,因此透光率和清晰度更高,几乎没有色彩失真。注意:电阻触摸屏的外层复合薄膜采用的是塑胶材料,太用力或使用锐器触摸可能划伤触摸屏,从而导致触摸屏报废。5.6.2采用专用芯片的触摸屏控制接口ADS7843是TI公司生产的4线式电阻触摸屏转换接口芯片,是一款具有同步

串行接口的12位取样模数转换器,在125KHz吞吐速率和2.7V电压下的功耗为750µW,而在关闭模式下的功耗仅为0.5µW,ADS7843采用SSOP-16引脚封装形式,温度范围是-40~+85℃。ADS7843具

有两个辅助输入(IN3和IN4)可设置为8位或12位模式,X+、X-、Y+、Y-为转换器模拟输入端,DCLK为外部时钟输入引脚端,/CS片选端,其外部连接电路如图2-44所示。电路的工作电压VCC为2.7~5.25V,基准电压VREF为1V~+V

CC,基准电压确定了转换器的输入范围。输出数据中每个数字位代表的模拟电压等于基准电压除以4096。平均基准输入电流由ADS7843的转换率来确定。采用ADS7843专用芯片对触摸屏进行控制,处理是否有笔或手指按下触摸屏,并在按下时分

别给两组电极通电,然后将其对应位置的模拟电压信号经过A/D转换后送到微处理器。图2-44ADS7843触摸屏控制接口ADS7843送到微控制器的X与Y值仅是对当前触摸点的电压值的A/D转换值,这个值的大小不但与触摸屏的分辨率有关,而且也与触摸屏与LCD贴合的情况

有关。一般来说,LCD分辨率与触摸屏的分辨率不一样,坐标也不一样。因此,要想使LCD坐标与触摸屏坐标一致,还需要在程序中进行转换。假设LCD分辨率是320×240,坐标原点在左上角;触摸屏分辨率是900×9

00,坐标原点在左上角,则转换公式如下:xLCD=[320×(x-x2)/(x1-x2)];yLCD=[240×(y-y2)/(y1-y2)]。如果坐标原点不一致,比如LCD坐标原点在右下角,而触摸屏原点在左上角,则转换公式如下:xLCD=320-[320×(x-x2)/(x1-

x2)];yLCD=240-[240×(y-y2)/(y1-y2)]。5.6.3S3C2410A的触摸屏接口电路1.S3C2410A与触摸屏的接口电路结构S3C2410A内部具有触摸屏接口,触摸屏接口包含1个外部晶体管控制逻辑和1个带有中断产生逻辑的ADC接口逻辑,它使用控

制信号nYPON、YMON、nXPON和XMON控制并选择触摸屏面板,使用模拟信号AIN[7]和AIN[5]分别连接X方向和Y方向的外部晶体管,与触摸屏的接口电路如图5.6.2所示。在图5.20中,XP(X+)与S3C2410A的A[7]口

相连,YP(Y+)与S3C2410A的A[5]口相连。需要注意的是,外部电压源应当是3.3V,外部晶体管的内部电阻应该小于5Ω,当S3C2410A的nYPON、YMON、nXPON和XMON输出不同的电

平时,外部晶体管的导通状况不同,分别连接X的位置(通过A[7])和丫的位置(通过A[5])输入。当nYPON、YMON、nXPON和XMON输出等待中断状态电平时,外部晶体管控制器输出低电平,与VDDA_ADC相连的晶体管导通,中断线路处于上拉状

态。当触笔单击触摸屏时,与AIN[7]相连的XP出现低电平,于是AIN[7]是低电平,内部中断线路出现低电平,进而引发内部中断。触摸屏XP口需要接一个上拉电阻。图5.6.2CPU与触摸屏连接图2.使用触摸屏的配置过程在S3C2410A构成的嵌入式系统中使用触摸

屏,配置过程如下:(1)通过外部晶体管将触摸屏引脚连接到S3C2410A上;(2)选择分开的X/Y位置转换模式或者自动(顺序)X/Y位置转换模式,来获取X/Y位置;(3)设置触摸屏接口为等待中断模式;(4)如果中断发生,将激活相

应的转换过程(X/Y位置分开转换模式或者X/Y位置自动(顺序)转换模式);(5)得到X/Y位置的正确值以后,返回等待中断模式。3.触摸屏的接口模式S3C2410A与触摸屏接口有5种接口模式。(1)普通的A/D转换模式在普通的A/D转换模式,AUTO_PST=0,XY_PST=0。这个模式可以在初

始化设置时,读ADCDAT0(ADC数据寄存器0)的XPDATA数值,通过设置ADCCON和ADCTSC完成。(2)分开的X/Y位置转换模式分开的X/Y位置转换模式由X位置模式和Y位置模式两种转换模式组成。分开的X/Y

位置转换模式下的转换条件如表5.6.1所列。X位置模式(ADCTSC寄存器的AUTO_PST=0和XY_PST=1)写X的位置转换数据到ADCDAT0寄存器的XPDATA位,完成转换后,触摸屏接口产生中断请求(INT_ADC)到中断控制器;Y位置模式(ADCTSC寄存器的AUTO_

PST=0和XY_PST=2)写Y的位置转换数据到ADCDAT1寄存器的YPDA_TA位,,完成转换后,触摸屏接口产生中断请求(INT_ADC)到中断控制器。表5.6.1分开的X/Y位置转换模式的转换条件XPX

MYPYMX位置转换外部电压GND(地)AIN[5]Hi-Z(高阻状态)Y位置转换AIN[7]Hi-Z(高阻状态)外部电压GND(地)(3)自动(顺序)X/Y位置转换模式当ADCTSC寄存器的AUTO_PST=1和XY_PST=0时进入自动(顺序)X/Y位置转换模式模式。首先写X

的位置转换数据到ADCDAT0寄存器的XPDATA位,然后写Y的位置转换数据到ADCDAT1寄存器的YPDA_TA位,完成转换后,触摸屏接口产生中断请求(INT_ADC)到中断控制器。转换条件与分开的X/Y位置转换

模式下的转换条件相同。(4)等待中断模式当ADCTSC寄存器的XY_PST=3时,进入等待中断模式模式。在等待中断模式,等待触笔点下。当触笔点下触摸屏后,它将产生INT_TC中断。进入等待中断模式的条件如表5.6.2所示。表5.6.2等待中

断模式下的转换条件模式XPXMYPYM等待中断模式上拉高阻AIN[5]GND(5)待机模式(StandbyMode)当ADCCON寄存器的STDBM位设置为1时,进入待机模式。进入待机模式模式后,A/D转换停止,ADC

DAT0的XPDATA和ADCDAT1的YPDATA保持上次转换的数值。与ADC和触摸屏相关的需要设置的寄存器有3个:ADCCON、ADCTSC和ADCDLY,另外还有2个只读的寄存器:ADCDAT0和ADC

DAT1。有关这些寄存器的位描述请参阅“5.2.2S3C2410A的A/D转换器”一节。4.S3C2410A的触摸屏坐标转换控制电路S3C2410A的触摸屏坐标转换控制电路如图5.6.3所示。在图5.6.3中,AIN[7]与触摸屏的X+连接,AIN[

5]与触摸屏的Y+连接。图5.6.3中使用了4个MOSFET,nYPON、YMON、nXPON和XMON等控制信号分别与4个MOSFET相连。图5.6.3触摸屏坐标转换控制电路5.触摸屏控制程序例一个触摸屏控制程序例如下所示:在Ts_Sep函数中进行触摸屏初始化、启动触摸屏测

试等动作。触摸屏初始化主要是对rADCCON和rADCTSC两个寄存器进行配置。并设置为等待中断模式。初始化完毕后就设置触摸屏中断服务函数Adc_or_TsSep)并启动触摸屏中断,然后在主程序中等待。此时,一旦有触摸动作将引发触摸屏中断,而转

入到AdcorTsS即进行处理。通过rADCTSC的bit8可以判断触摸笔是按下或者抬起。在采集之后就可以对数据进行处理,开始的两次采集认为是屏幕准的数据,分别保存到ts_lefttop_x,ts_lefttop

_y,ts_rightbot_x,ts_rightbot_y变量中,它们保存的是屏幕左上角和右下角触摸屏坐标的x和y值。屏幕校准之后将自动转入到采集状态,获取的触摸屏坐标需要转换成为I_cn坐标,方法是根据获取的根据LCD左上角(0,0)和右下角(319,239

)的触摸屏坐标(ts_lefttop_x,ts_left-top_y)和(ts_rightbot_x,ts_rightbot_y)计算得到。计算公式如下,其中(x,y)为待求点的触摸屏坐标:代码如下所示:第5章思考题与习题1.分析双向GPIO

端口(D0)的功能逻辑图(图5.1.1),简述其工作原理。2.登录www.samsung.com,查阅S3C2410A输入/输出端口(I/O口)有关资料,简述其接口分类与功能。3.分析计数式A/D转换器结构图(图5.2.1),

简述其工作原理。4.分析双积分式A/D转换器结构图(图5.2.2),简述其工作原理。5.分析逐次逼近式A/D转换器结构图(图5.2.3),简述其工作原理。6.简述A/D转换器的主要指标。7.分析S3C2410A的A/D转换器和触摸屏接口电路

,简述其工作原理。8.与S3C2410A的A/D转换器相关的寄存器有哪些?各自的功能?9.简述ADC控制寄存器(ADCCON)的位功能。10.简述ADC控制寄存器(ADCTSC)的位功能。11.简述ADC启动延时寄存器(ADCDLY)的位功能。12.

简述ADC转换数据寄存器的位功能。13.试编写从A/D转换器的通道1获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示的程序。14.试分析图5.3.1T型电阻网络DAC的工作原理。15.简述数/模转换器的类型与特点。16.简述数/模转换器(

DAC)的主要技术指标。17.登录www.maxim-ic.com,查找MAX5380资料,分析其内部结构、引脚端功能与应用电路和编程方法。18.简述线性键盘和矩阵键盘、非编码键盘和编码键盘的区别。19.简述LED数码管的工作原理。20.试分析图5.4.2的键盘接口电路工作原理和编程方

法。21.登录www.zlgmcu.com,查找ZLG7290资料,分析其内部结构、引脚端功能、应用电路和编程方法。22.简述LCD的显示原理。23.简述TN型、STN型和TFT型LCD的区别。24.试分析图5.5.2S3C2410A的L

CD控制器内部结构与功能。25.试分析S3C2410ALCD控制器的外部接口信号的种类与功能。26.简述LCD显示数据格式的特点。27.与S3C2410A的LCD控制器相关的寄存器有哪些?各自的功能?28.简述LCDCON1~LCDCON5的位功能。29.简述LCDSADDR1~LC

DSADDR3的位功能。30.简述RGB查找表寄存器的位功能。31.简述LCD中断寄存器的位功能。32.简述电阻触摸屏的结构与工作原理。33.登录http://focus.ti.com.cn,查找ADS7843资料,分析其内部结构、引脚端功能、应用电路和编程方法。34.试分析

S3C2410A内部触摸屏接口的结构与功能。35.简述使用触摸屏的配置过程。36.S3C2410A与触摸屏接口有几种接口模式?各有什么特点

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?