第23、24节课(第五章)_第1页
第23、24节课(第五章)_第2页
第23、24节课(第五章)_第3页
第23、24节课(第五章)_第4页
第23、24节课(第五章)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章

基于S3C2410的系统硬件设计主要内容1324S3C2410简介I/O口中断DMA5A/D接口6UART触摸屏7891011LCDUSB设备的数据收发音频录放键盘和LED控制5.6.1A/D接口原理

A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。双积分型的A/D转换器逐次逼近型的A/D转换器按照转换速度、精度、功能以及接口等因素,常用的A/D转换器有以下两种:5.6.2S3C2410A的A/D转换器

S3C2410A的A/D转换器包含一个8通道的模拟输入转换器,可以将模拟输入信号转换成10位数字编码。在AD转换时钟为2.5MHz时,其最大转换率为500KSPS,输入电压范围是0~3.3V。与A/D转换相关的存放器:ADC控制存放器〔ADCCON〕ADC触摸屏控制存放器〔ADCTSC〕ADC启动延时存放器(ADCDLY)ADC转换数据存放器(ADCDATn)5.6.3A/D接口编程实例

举例:从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。1.定义与A/D转换相关的存放器。#definerADCCON(*(volatileunsigned*)0x58000000)//ADC控制存放器#definerADCTSC(*(volatileunsigned*)0x58000004)//ADC触摸屏控制存放器#definerADCDLY(*(volatileunsigned*)0x58000008)//ADC启动或间隔延时存放器#definerADCDAT0(*(volatileunsigned*)0x5800000c)//ADC转换数据存放器0#definerADCDAT1(*(volatileunsigned*)0x58000010)//ADC转换数据存放器12.对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控制存放器}举例:从A/D转换器的通道0获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示。3.获取A/D的转换值。参数ch为选用的通道号。intGet_AD(unsignedcharch){inti;intval=0;if(ch>7)return0; //通道不能大于7for(i=0;i<16;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上以波形的方式显示。主要内容1324S3C2410简介I/O口中断DMA5A/D接口6UART触摸屏7891011LCDUSB设备的数据收发音频录放键盘和LED控制5.7.1键盘和LED的接口原理

HA7279A是一片具有串行接口并可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片。该芯片同时可连接多达64键的键盘矩阵,一片即可完成LED显示及键盘接口的全部功能。HA7279A一共有28个引脚:RESET:复位端。通常,该端接+5V电源;DIG0~DIG7:8个LED管的位驱动输出端;SA~SG:LED数码管的A段~G段的输出端;DP:小数点的驱动输出端;RC:外接振荡元件连接端。HD7279A与微处理器仅需4条接口线:CS:片选信号〔低电平有效〕;DATA:串行数据端。CLK:数据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。KEY:按键信号输出端。该端在无键按下时为高电平;而在有键按下时变为低电平,并一直保持到按键释放为止。

HD7279A与S3C2410A的连接原理图5.7.2键盘和LED控制的编程实例举例:通过按键来控制LED的显示。1.键盘中断的初始化voidKeyINT_Init(void){rGPFCON=(rGPFCON&0xF3FF)|(2<<10);rGPECON=(rGPECON&0xF3FFFFFF)|(0x01<<26);//设置GPE13为输出位,模拟时钟输出rEXTINT0&=0xff8fffff;//外部中断5低电平有效if(rEINTPEND&0x20)//去除外部中断5的中断挂起位rEINTPEND|=0x20;if((rINTPND&BIT_EINT4_7)){ rSRCPND|=BIT_EINT4_7; rINTPND|=BIT_EINT4_7;}rINTMSK&=~(BIT_EINT4_7);//使用外部中断4~7rEINTMASK&=0xffffdf;//外部中断5使能pISR_EINT4_7=(int)Key_ISR;}举例:通过按键来控制LED的显示。2.书写中断效劳子程序void__irqKey_ISR(void){ intj; rINTMSK|=BIT_ALLMSK;//关中断

if(rEINTPEND&0x20){ key_number=read7279(cmd_read);//读键盘指令程序

rINTMSK&=~(BIT_EINT4_7); switch(key_number){ case0x04:key_number=0x08;break; case0x05:key_number=0x09;break; case0x06:key_number=0x0A;break; case0x07:key_number=0x0B;break; case0x08:key_number=0x04;break; case0x09:key_number=0x05;break; case0x0A:key_number=0x06;break; case0x0b:key_number=0x07;break; default:break; } Uart_Printf("keyis%x\n",key_number); } rEINTPEND|=0x20; rSRCPND|=BIT_EINT4_7;rINTPND|=BIT_EINT4_7;}举例:通过按键来控制LED的显示。3.主程序的主要功能是根据按键键值,向HD7279A发送不同的处理命令,程序结构如下。voidMain(){ charp; Target_Init();//目标初始化

while(1){ switch(key_number){ case0:send_byte(cmd_test);//测试键

break;case1:for(p=0;p<8;p++){//右移8位

send_byte(0xA0); send_byte(0xC8+7); send_byte(p);long_delay();Delay(7000);}break;

//case2到case14 case15://最右两个数码管上显示15

write7279(decode1+5,key_number/16*8); write7279(decode1+4,key_number&0x0f); break; default:break; } key_number=0xff; Delay(50); }}

主要内容1324S3C2410简介I/O口中断DMA5A/D接口6UART触摸屏7891011LCDUSB设备的数据收发音频录放键盘和LED控制5.8.1LCD显示原理所谓LCD,是LiquidCrystalDisplay的缩写,即液晶显示器。LCD液晶显示器主要有两类:STN〔SuperTwistedNematic,超扭曲向列型〕和TFT〔ThinFilmTransistor,薄膜晶体管型〕。对于S3C2410A的LCD控制器,同时支持STN和TFT显示器。STN与TFT的主要区别在于:从工作原理上看,STN主要是增大液晶分子的扭曲角,而TFT为每个像素点设置一个开关电路,做到完全单独的控制每个像素点;从品质上看,STN的亮度较暗,画面的质量较差,颜色不够丰富,播放动画时有拖尾现象,耗电量小,价格廉价;而TFT亮度高,画面质量高,颜色丰富,播放动画时清晰,耗电量大,价格高。常用的LCD显示模块有两种:一是带有驱动电路的LCD显示模块,一是不带驱动电路的LCD显示屏。大局部ARM处理器中都集成了LCD控制器,所以对于采用ARM处理器的系统,一般使用不带驱动电路的LCD显示屏。TFT(ThinFilmTransistor)LCD即薄膜场效应晶体管LCD,是有源矩阵类型液晶显示器(AM-LCD)中的一种。液晶平板显示器,特别TFT-LCD,是目前唯一在亮度、比照度、功耗、寿命、体积和重量等综合性能上全面赶上和超过CRT的显示器件,它的性能优良、大规模生产特性好,自动化程度高,原材料本钱低廉,开展空间广阔,将迅速成为新世纪的主流产品,是21世纪全球经济增长的一个亮点。1.TN型液晶显示器因技术层次较低,价格低廉,应用范围多在3英寸以下的小尺寸产品,而且仅能呈现出黑白单色及做一些简单文字、数字的显示,主要应用于电子表、计算器、简单的掌上游戏机等消费性电子产品。2.STN型液晶显示器较TFT型工艺简单,成品率较高、价格相对廉价,面向比照强烈与画面转换反响时间较快的商品,因此多应用于信息处理设备。如果在液晶面板前加一片彩色滤光片,那么可显示多种色彩,甚全可达全彩化程度。此种产品多使用于文字、数字及绘图功能的显示,例如低档的笔记本电脑、掌上电脑、股票机和个人数字助理〔PDA〕等便携式产品。3.TFT液晶显示器因为显示反响速度更快,适用于动画及显像显示,故广泛应用于数码相机、液晶投影仪、笔记本电脑、桌上型液晶显示器。由于其在色彩品质及反响速度方面较STN型产品为佳,因此也是目前市场上的主流产品。LCD接口设计LCD显示模块液晶显示是一种被动的显示,它不能发光,只能使用周围环境的光。它显示图案或字符只需很小能量。液晶显示所用的液晶材料是一种兼有液态和固体双重性质的有机物,它的棒状结构在液晶盒内一般平行排列,但在电场作用下能改变其排列方向。LCD的背光:EL〔场致发光〕:2000-3000小时和LED光源:字符模式,50000小时LCD的显示方式反射型LCD:底偏光片后面加了一块反射板,它一般在户外和光线良好的办公室使用。透射型LCD:底偏光片是透射偏光片,它需要连续使用背光源,一般在光线差的环境使用。透反射型LCD:是处于以上两者之间,底偏光片能局部反光,一般也带背光源,光线好的时候,可关掉背光源;光线差时,可点亮背光源使用LCD。反射型LCD的结构LCD通常由两种方式,一种是带有驱动芯片的LCD模块,根本上属于半成品一些新型的嵌入式处理器也可以直接使用芯片上的内置LCD控制器来构造显示模块,比方:s3c2410可以支持STN的彩色/灰度/单色三种模式和TFT模式,灰度模式下可支持4级灰度和16级灰度,彩色模式下最多支持256色,LCD的实际尺寸可支持到640X480。LCD的驱动方式总线驱动方式一般带有驱动模块的LCD显示屏使用这种驱动方式,由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以到达把相应数据送到相应显示缓存的目的。控制器扫描方式S3C2410X中具有内置的LCD控制器,它具有将显示缓存〔在系统存储器中〕中的LCD图象数据传输到外部LCD驱动电路的逻辑功能。S3C2410X中内置的LCD控制器可支持灰度LCD和彩色LCD。在灰度LCD上,使用基于时间的抖动算法〔time-basedditheringalgorithm〕和FRC(FrameRateControl)方法,可以支持单色、4级灰度和16级灰度模式的灰度LCD。在彩色LCD上,可以支持256级彩色。对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的存放器值,以适应不同的LCD显示板。嵌入式处理器与LCD的连接嵌入式处理器LCD模块数据总线存放器选择使能信号有LCD控制器的嵌入式处理器LCDLCD控制信号线从系统结构上来讲,由于显示器模块中已经有显示存储器。显存中的每一个单元对应LCD上的一个点,只要显存中的内容改变,显示结果便进行刷新。于是便存在两种刷新:1.直接根据系统要求对显存进行修改,一种是只需修改相应的局部就可以,不需要判断覆盖等;另一种就是有覆盖问题,计算起来比较复杂,而且每做一点小的屏幕改变就进行刷新,将增加系统负担。2.专门开辟显示内存,在需要刷新时候由程序进行显示更新。这样,不但可以减轻总线负荷,而且也比较合理,在有需要的时候进行统一的显示更新,界面也可以比较美观,不致由于无法预料的刷新动作导致显示界面闪烁。LCD模块的显示控制5.8.2S3C2410A的LCD控制器S3C2410A中的LCD控制器可支持STN和TFT两种液晶显示屏。LCD控制器支持单色、4级、16级灰度LCD显示,以及8位彩色、12位彩色LCD显示。LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600组成。8位彩色LCD显示原理与LCD相关的存放器LCD控制存放器1〔LCDCON1〕LCD控制存放器2〔LCDCON2〕LCD控制存放器3〔LCDCON3〕LCD控制存放器4〔LCDCON4〕LCD控制存放器5〔LCDCON5〕帧缓冲起始地址存放器1〔LCDSADDR1〕帧缓冲起始地址存放器2〔LCDSADDR2〕帧缓冲起始地址存放器3〔LCDSADDR3〕RGB查找表存放器〔REDLUT、GREENLUT、BLUELUT〕抖动模式存放器〔DITHMODE〕5.8.3LCD显示的编程实例举例:在LCD上填充一个蓝色的矩形,并画一个红色的圆。1.定义与LCD相关的存放器#define M5D(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@50Mhz,WLH=16hclk,WDLY=16hclk,LINEBLANK=16*8hclk,VD=8#defineLCDFRAMEBUFFER0x33800000//帧缓冲区起始地址举例:在LCD上填充一个蓝色的矩形,并画一个红色的圆。2.初始化LCD,即对相关存放器进行赋初值。其中参数type用于传递显示器的类型,如STN8位彩色、STN12位彩色等。voidLCD_Init(inttype){rIISPSR=(2<<5)|(2<<0);//IIS_LRCK=44.1Khz@384fs,PCLK=50Mhz.rGPHCON=rGPHCON&~(0xf<<18)|(0x5<<18);switch(type){caseMODE_CSTN_8BIT://STN8位彩色模式

frameBuffer8Bit=(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=(MVAL<<8)|(WLH_CSTN<<0);rLCDCON5=0;rLCDSADDR1=(((U32)frameBuffer8Bit>>22)<<21)|M5D((U32)frameBuffer8Bit>>1);rLCDSADDR2=M5D(((U32)frameBuffer8Bit+((SCR_XSIZE_CSTN)*LCD_YSIZE_CSTN))>>1);rLCDSADDR3=(((SCR_XSIZE_CSTN-LCD_XSIZE_CSTN)/2)<<11)|(LCD_XSIZE_CSTN/2);rDITHMODE=0; rREDLUT=0xfdb96420; rGREENLUT=0xfdb96420; rBLUELUT=0xfb40; break;default:break;}}举例:在LCD上填充一个蓝色的矩形,并画一个红色的圆。3.书写常用的绘图函数。函数_PutCstn8Bit()实现了在LCD的〔x,y〕处打点的功能。void_PutCstn8Bit(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&0x000000ff)<<((4-1-((x)%4))*8));}4.书写主函数,通过调用初始化函数及绘图API函数,实现在LCD上填充一个蓝色的矩形,并画一个红色的圆。voidMain(void){intCount=3000; Target_Init();//硬件初始化

GUI_Init();//图形用户接口初始化,包括对LCD的初始化

Set_Color(GUI_BLUE); Fill_Rect(0,0,319,239); Delay(Count); Set_Color(GUI_RED); Draw_Circle(100,100,50); Delay(Count);while(1);}

主要内容1324S3C2410简介I/O口中断DMA5A/D接口6UART触摸屏7891011LCDUSB设备的数据收发音频录放键盘和LED控制5.9.1触摸屏工作原理根据采用的不同技术原理,触摸屏可分为以下五类:矢量压力传感式、电阻式、电容式、红外线式和外表声波式。其中电阻式触摸屏在嵌入式系统中用的较多,结构如下。5.9.2S3C2410A的触摸屏接口S3C2410A支持触摸屏接口,它由一个触摸屏面板、四个外部晶体管、一个外部电压源、信号AIN[7]和信号AIN[5]组成。CPU与触摸屏连接图5.9.3触摸屏编程实例举例:在触摸屏上按下的位置画一个点。1.对与触摸屏相关的存放器进行初始化voidTouch_Init(void){rADCDLY=(0x5000);//ADC启动或间隔延时 rADCTSC=(0<<8)|(1<<7)|(1<<6)|(0<<5)|(1<<4)|(0<<3)|(0<<2)|(3);//设置成为等待中断模式:1101 rADCCON =(1<<14)|(49<<6)|(7<<3)|(0<<2)|(1<<1)|(0);//设置ADC控制存放器}举例:在触摸屏上按下的位置画一个点。2.对触摸屏中断进行初始化voidTouchINT_Init(void){if((rSRCPND&BIT_ADC))//去除中断挂起位 rSRCPND|=BIT_ADC;if((rINTPND&BIT_ADC)) rINTPND|=BIT_ADC;if((rSUBSRCPND&BIT_SUB_TC)) rSUBSRCPND|=BIT_SUB_TC;if((rSUBSRCPND&BIT_SUB_ADC))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论