收藏 分享(赏)

基本输入输出接口三PPT课件.ppt

上传人:微传9988 文档编号:2297126 上传时间:2018-09-10 格式:PPT 页数:110 大小:643KB
下载 相关 举报
基本输入输出接口三PPT课件.ppt_第1页
第1页 / 共110页
基本输入输出接口三PPT课件.ppt_第2页
第2页 / 共110页
基本输入输出接口三PPT课件.ppt_第3页
第3页 / 共110页
基本输入输出接口三PPT课件.ppt_第4页
第4页 / 共110页
基本输入输出接口三PPT课件.ppt_第5页
第5页 / 共110页
点击查看更多>>
资源描述

1、LCD控制器概述,2. 键盘和鼠标接口,1,3,2,4,常用的两种LCD,LCD接口编程,控制流程,控制流程,TFT控制器操作 LCD控制器的寄存器 LCD接口电路,TFT控制器操作,由上图可看出,S3C2410中的LCD控制器由REGBANK、LCDCDMA、VIDPRCS、TIMEGEN和LPC3600组成。其中,REGBANK有17个可编程寄存器组和25646的调色板存储器,可用来设定LCD控制器;LCDCDMA是一个专用DMA,可自动从帧存储器传输视频数据到LCD控制器,通过这个特殊的DMA,视频数据可不经过CPU处理就在屏幕上显示;VIDPRCS可接收从LCDCDMA来的视频数据并将

2、其修改到合适数据格式,然后经VD23:0送到LCD驱动器,如4/8单扫描或4双扫描显示模式;TIMEGEN则由可编程逻辑组成,可支持不同LCD驱动器接口时序和不同的速率,用于产生VFRAME、VLNE、VCLK、VM等信号。,通常的数据流如下:FIFO存储器通常位于LCDCDMA。当FIFO为空或部分为空时,LCDCDMA要求从基于突发传输模式的帧存储器中取出数据并存入要显示的图像数据,而这帧存储器是LCD控制器在RAM中开辟的一片缓冲区。当这个传输请求被存储器中的总线仲裁器接收后,系统存储器就给内部FIFO成功传输4个字。FIFO的总大小是28个字,其中,低位FIFOL是12个字,高位FIF

3、OH是16个字。S3C2410有两个FIFO,可支持双扫描显示模式,但在单扫描模式下只使用一个FIFO(FIFOH)。,S3C2410可支持STN-LCD和TFT-LCD,这里只介绍对TFT-LCD的控制。TIMEGEN可产生LCD驱动器的控制信号(如VSYNC、HSYNC、VCLK、VDEN和LEND等),这些控制信号与REGBANK寄存器组中的LCDCON1/2/3/4/5寄存器的配置关系相当密切。基于LCD控制寄存器中的这些可编程配置,TIMEGEN便可产生可编程控制信号来支持不同类型的LCD驱动器。而VSYNC和HSYNC脉冲的产生则依赖与LCD-CON2/3寄存器的HOZVAL域和L

4、INEVAL域的配置。HOZVAL和LINEVAL的值由LCD屏的尺寸决定:HOZVAL=水平显示尺寸-1LINEVAL=垂直显示尺寸-1,VCLK信号的频率取决于LCDCON1寄存器中的CLKVAL域。VCLK(单位是Hz)和CLKVAL的关系如下(其中CLKVAL的最小值是0):VCLK=HCLK/(CLKVAL+1)2 一般情况下,帧频率就是VSYNC信号的频率,与LCDCON1和LCDCON2/3/4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有关系。大多数LCD驱动器都需要与显示器相匹配的帧频率。,LCD控制器

5、的寄存器,启动一个与S3C2410A连接的LCD的显示,需要正确的配置与S3C2410A LCD控制器的相关寄存器。需要配置的相关寄存器如下: (1)LCDCON1(LCD控制寄存器1)LCDCON1(LCD控制寄存器1)是一个可读写的寄存器,地址为0x4D 000000,复位后的初始值为0x0000 0000。位功能描述如下表:,LCDCON1位功能描述,LCDCON2(LCD控制寄存器2)是一个可读写的寄存器,地址为0x4D00 0004,复位后的初始值为0x0000 0000。位功能描述如下:,LCDCON2位功能描述,LCDCON3(LCD控制寄存器3)是一个可读写的寄存器,地址为0x

6、4D00 0008,复位后的初始值为0x0000 0000。位功能描述如下表:,LCDCON3位功能描述,LCDCON4(LCD控制寄存器4)是一个可读写的寄存器,地址为0x4D00 000C,复位后的初始值为0x0000 0000。位功能描述如下表:,LCDCON5(LCD控制寄存器5)是一个可读写的寄存器,地址为0x4D00 0010,复位后的初始值为0x0000 0000。位功能描述如下表:,LCDCON5位功能描述,LCDSADDR1(STN型LCD/TFT型LCD帧缓冲起始地址寄存器1)是一个可读写的寄存器,地址为0x4D00 0014,复位后的初始值为0x0000 0000。位功能

7、描述如下:,LCDSADDR1位功能描述,LCDSADDR2(STN型LCD/TFT型LCD帧缓冲起始地址寄存器2)是一个可读写的寄存器,地址为0x4D00 0018,复位后的初始值为0x0000 0000。位功能描述如下:,LCDSADDR2位功能描述,需要注意的是,用户可以在LCD控制器打开的状态下通过改变LCDBASEU和LCD-BASEL的值来滚动屏幕。但是,在帧结束时,用户不能根据LCDCON1寄存器中LINEGNT字段的值来改变LCDBASEU和LCDBASEL寄存器,因为LCD FIFO预取下一帧数据的操作先于改变帧数据。如果这时改变帧数据,预取的FIFO数据将无效,并且将出现显

8、示错误。为了检查LINECNT,必须将中断屏蔽;否则如果在读LINECNT之后,刚好某个中断被执行,那么读取的LINECNT值可能是过期的。,LCDSADDR3(STN型LCD/TFT型LCD帧缓冲起始地址寄存器3)是一个可读写的寄存器,地址为0x4D00 00lC,复位后的初始值为0x0000 0000,用于设置虚拟屏地址。位功能描述如下:,LCDSADDR3位功能描述,RGB查找表寄存器包括REDLUT(红色查找表寄存器)、GREENLUT(绿色查找表寄存器)和BLUELUT(蓝色查找表寄存器)。在这3个寄存器中,可以分别设定使用的8种红色,8种绿色和4种蓝色。 REDLUT(STN型LC

9、D红色查找表寄存器)是一个可读写的寄存器,地址为0x4D00 0020,复位后的初始值为0x0000 0000。REDLUT的位功能如下表 GREENLUT(STN型LCD绿色查找表寄存器)是一个可读写的寄存器,地址为0x4D00 0024,复位后的初始值为0x0000 0000。GREENLUT的位功能如下表 BLUELUT(STN型LCD蓝色查找表寄存器)是一个可读写的寄存器,地址为Ox4D00 0028,复位后的初始值为0x0000。BLUELUT的位功能如下表,REDLUT位功能描述,GREENLUT位功能描述,BLUELUT位功能描述,DITHMODE(STN型LCD抖动模式寄存器)

10、是一个可读写的寄存器,地址为0x4D00 004C,复位后的初始值为0x0 0000,建议用户将其值设置为0x12210。在S3C2410A中,调节红色、绿色或蓝色的差异是通过时间抖动算法及帧率控制来实现的,因此需要设置抖动模式寄存器。位功能描述如下表:,DITHMODE位功能描述,TPAL(TFT型LCD临时调色板寄存器)是一个可读写的寄存器,地址为0x4D00 0050,复位后的初始值为0x0000 0000,寄存器的数据是下一帧的图象数据。位功能描述如下表:,TPAL位功能描述,LCD中断寄存器有LCDINTPND(LCD中断判断寄存器)、LCDSRCPND(LCD中断源判断寄存器)和L

11、CDINTMSK (LCD中断屏蔽寄存器)。 LCDINTPND(LCD中断判断寄存器)是一个可读/写寄存器,地址为0X4D000054,复位后的初始值为0x0。LCDINTPND的位功能如下表。 LCDSRCPND(LCD中断源判断寄存器)是一个可读/写寄存器,地址为0X4D000058,复位后的初始值为0x0。LCDSRCPND的位功能如下表。 LCDINTMSK(LCD中断屏蔽寄存器)是一个可读/写寄存器,地址为0X4D00005C,复位后的初始值为0x3。LCDINTMSK的位功能如下表。,LCDPIND位功能描述,LCDSRCPND位功能描述,LCDINTMSK位功能描述,LPCSE

12、L(LPC3600模式控制寄存器)是一个可读/写寄存器,地址是0X4D000060,初始化值是0x4。位功能描述如下表:,LPCSEL位功能描述,LCD接口电路,从CPU的LCD控制器出来的信号包括24根数据线和若干根控制线。对于256色LCD,只需要其中低8位数据线即可。这些信号线是经过74HC245隔离后接到LCD模块,接256色屏时也由74HC245芯片完成电平转换。8位LCD模块除了需要控制信号和数据信号外,还需要一个22V左右的工作电压和上千伏的背光电压。前者由MAX629升压后得到,后者由一个逆变器模块提供。另外,LCD信号线驱动芯片74HC245的电源是可选的,2410S可以安装

13、5#的伪彩屏和8#的真彩屏。当使用5V电平的256色彩屏时,该芯片的电源使用5V;当使用3.3V的16位真彩屏时,选择3.3V。,LCD控制器概述,2. 键盘和鼠标接口,1,3,2,4,常用的两种LCD,LCD接口编程,控制流程,LCD接口编程,1、宏定义及屏幕数据缓冲区#define LCDWIDTH 640 /*LCD的宽度*/#define LCDHEIGHT 480 /*LCD的高度*/unsigned short * pLCDBuffer=(unsigned short *)0x32000000 /*屏幕数据缓冲区*/,2、LCD控制器初始化函数void LCD_init() uns

14、igned int I;unsigned int LCDBASEU,LCDBASEL,LCDBANK;rGPCCON=0xAAAAAAAA; /*端口C为特殊功能,10*/rGPCUP=0xFFFFFFFF; /*禁止所有引脚上拉*/rLCDCON1=(0xC1)|(0x35)|(18);/*rLCDCON1控制寄存器中的4:1为BPPMODE用来设置显示器的模式,这里使用的是16bpp的TFT,故其值为1100;6:5位为PNRMODE,用来设置显示模式,这里使用TFT类的LCD控制,故其值为11;17:8位为CLKVAL,用来决定VCLK与CLKVAL的速率*/,rLCDCON2=(0x2

15、024)|(47914)|(0x96)|0x1;/*rLCDCON2的31:24位为VBPD,用来设置TFT的帧课时范围前肩;23:14位为LINEVAL,用来设置垂直显示的尺寸(要减1);13:6位为VFPD,用来设置帧可视范围后肩;5:0位为VSPW,用来设置场同步脉冲宽度,这里设置为1*/rLCDCON3=(4719)|(6398)|15;/*rLCDCON3的25:19位为HBPD,用来设置TFT的行可视范围前肩;18:8位为HOZVAL,用来设置水平显示的尺寸(要减1);7:0位为HFPD(TFT),用来设置帧可视范围后肩*/,rLCDCON4=95|(138);/*rLCDCON4

16、控制寄存器的7:0位为HSPW/WLH位,在TFT-LCD中用来确定HSYNC水平同步脉冲宽度;15:8为MVAL,这里设置为0*/rLCDCON5=(111)|(19)|(18)|(13)|1;/*11位为FRM565,用来确定TFT-LCD的16bpp输出视频数据格式,这里设置为1表示使用5:6:5格式;10位为INVVCLK,用来设置VCLK信号的有效边沿,设置为1表示视频数据在VCLK信号的上升沿读取;9位为INVVLINE,用来设置VLINE/HSYNC脉冲的极性,设置为1表示反向;8位为INVVFRAME,用来设置VFRAME/VSYNC脉冲的极性,设置为0表示正常;5位为INVP

17、WREN,用来设置LCD_PWREN信号的极性,设置为1表示反向;,0位为HWSWP位,用来设置半字交换使能,设置为1表示使能。LCDBANK=0X320000022; /*设置帧缓冲区*/LCDBASEU=0X0;LCDBASEL=LCDBASEU+(480)*640;rLCDSADDR1=(LCDBANK21)|LCDBASEU;/*TFT帧缓冲区开始地址1*/rLCDSADDR2=LCDBASEL;/*TFT帧缓冲区开始地址2*/rLCDSADDR3=(640)|(011);/*TFT帧缓冲区开始地址3*/,rLCDINTMSK=(11)|1;/*屏蔽LCD帧同步中断,屏蔽LCD的FIF

18、O中断*/rLPCSEL=0;/*不使用LPC3600*/rTPAL=(024);/*不使用临时调色板*/for(i=0;iLCDWIDTH*LCDHEIGHT;i+) *(pLCDBuffer+i)=0x0; /*pLCDBuffer也就是TFT缓冲区*/rLCDCON1+=1; /*使能视频输出*/,3、测试函数/*变换RGB*/unsigned short Transform(unsigned int RGB) unsigned char *pbuf=(unsigned char *),Void Example (void) int j=0,i=0,k=0;unsigned int co

19、lor;LCD_init();for(i=0;i8;i+) switch(i) case 0:color=0x00000000; /*RGB均为0黑色*/break; case 1:color=0x000000F8; /*R红色*/break;case 2:color=0x0000F0F8; /*R and G橙色*/,break;case 3:color=0x0000FCF8; /*R and G黄*/break;case 4: color=0x0000FC00; /*G绿色*/break;case 5:color=0x00F8FC00;/*G B青色*/break;case 6:color

20、=0x00F80000;/*B蓝色*/break;case 7:color=0x00F800F8;/*R and B 紫色*/break;,for(j=0;jLCDHEIGHT/8;j+) /*把相应的RGB数据填充到LCD的缓冲区里面*/ for(k=0;kLCDWIDTH;k+)*(pLCDBuffer+(i*LCDWIDTH*LCDHEIGHT/8)+(j*LCDWIDTH)+k)=Transform(color);while(1); ,LCD控制器概述,6. 键盘和鼠标接口,1,3,2,4,常用两种LCD,LCD接口编程,控制流程,常用的两种LCD,LCD1602 12864,LCD1

21、602,1602简介 程序实例,程序实例,#include #include #define uchar unsigned char #define uint unsigned int #pragma data:code const uchar table=“I LIKE AVR !“;/加引号意在把字符转化为ASCII码 const uchar table1=“WWW.TXMCU.COM“;,void delay(uint ms) uint i,j;for(i=0;ims;i+)for(j=0;j1141;j+);void write_com(uchar com)/根据写指令操作时序来写PO

22、RTD/E端变为低,,void write_dat(uchar dat)/根据写数据操作时序来写 PORTD|=BIT(4);PORTD,void main() uchar i;DDRB=0XFF;DDRD|=BIT(4)|BIT(5)|BIT(6);/根据管脚来写,分别为输出PORTD,for(i=0;i12;i+) write_dat(tablei);delay(5);write_com(0X80+0X50);/设置第二行显示位置delay(5);for(i=0;i13;i+) write_dat(table1i);delay(5);for(i=0;i16;i+) write_com(0X

23、18);/设置滚动,在1602英文资料中delay(500); ,LCD12864,12864简介 程序实例,程序实例,#include#include#define uchar unsigned char#define uint unsigned intvoid delay(uint ms);/延时函数void write_com(uchar com);/写入指令void write_dat(uchar dat);/写入数据void lcd_init(void);/初始化void set_xy(uchar xpos,uchar ypos);/设定显示位置void print(uchar x,

24、uchar y,uchar *str);/在指定位置显示void clr_lcd(void);/清屏,void delay(uint ms) uint i,j;for(i=0;ims;i+) for(j=0;j1141;j+);/*写指令*/void write_com(uchar com) PORTA/使能端置低,/*写数据*/void write_dat(uchar dat)PORTA|=BIT(6);/RS高电平写数据PORTC/使能端置低;,/*初始化*/void lcd_init(void) DDRB=0XFF; /输出DDRA|=BIT(5)|BIT(6)|BIT(7);/PA5,

25、PA6,PA7设为输出DDRC|=BIT(7);/PC7设为输出;PORTA|=BIT(7);/通讯方式为并口 write_com(0x30);/设置显示初始行为开端;delay(5);write_com(0x0c);/开显示,游标管,反白关delay(5);write_com(0x01);/清屏delay(5);write_com(0x06);/写入时,游标右移delay(5);write_com(0x80);/写入第一行,/*设定显示位置 xpos(116),ypos(14)*/void set_xy(uchar xpos,uchar ypos) switch(ypos) case 1:

26、write_com(0x80|xpos);break;case 2:write_com(0x90|xpos);break;case 3:write_com(0x88|xpos);break;case 4:write_com(0x98|xpos);break;default:break;,/*在指定位置显示字符串*/void print(uchar x,uchar y, uchar *str)uchar lcd_temp;set_xy(x,y);lcd_temp=*str;while(lcd_temp!=0x00) write_dat(lcd_temp);lcd_temp=*(+str); ,*

27、清屏*/void clr_lcd(void) write_com(0x01);void main()lcd_init();/初始化/print(1,1,“直流多功能测试仪“);print(4,2,“Wellcome!“);print(5,3,“Zengjie“); ,I2S总线概述,7、音频接口,1,3,2,基于I2S的软件设计,基于I2S接口的硬件设计,I2S总线概述,I2S总线 音频序列接口格式,I2S总线,目前,越来越多的消费电子产品引入了数字音频系统。这些电子产品中数字化的声音信号由一系列的超大规模集成电路处理,常用的数字声音处理需要的集成电路包括A/D和D/A转换器、数字信号处理器、

28、数字滤波器和数字音频输入输出口等。 数字音频涉及概念很多,重要的是理解:采样和量化。采样就是每隔一定时间读一次声音信号的幅度,而量化则是将采样得到的声音信号幅度转换为数字值。从本质上讲,采样是时间上的数字化,而量化则是幅度上的数字化。 根据奈奎斯特(Nyquist)采样理论采样频率应高于输入信号的最高频率两倍。为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,要达到DVD的音质需要采用更高的采样频率。,量化是对模拟音频信号的幅度数字化,量化位数决定模拟信号数字化以后的动

29、态范围,常用的有8位、12位和16位。量化位越高,信号的动态范围越大,数字化后的音频信号就越接近原始信号,但所需要的存储空间也越大。 声道有单声道、双声道和多声道。双声道又称立体声,在硬件中有两条线路,音质和音色都优于单声道,但数字化后占据的存储空间的大小要比单声道多一倍。多声道能提供更好的听觉感受,不过占用的存储空间也更大。 数字音频系统需要多种集成电路,所以为这些电路提供一个标准的通信协议非常重要。IIS总线是NXP提出的音频协议,全称是数字音频集成电路通信总线(Inter-IC Sound Bus),是一种串行的数字音频总线协议。 S3C2410中的I2S总线接口模块如下图所示:,BRF

30、C是总线接口、内部寄存器及状态机的功能模块,总线接口逻辑和FIFO存取均由此控制; IPSR是两个5位的预分频器,其中,一个用于I2S总线接口的控制器时钟的产生。另一个用于外部编解码时钟的产生。 16字节的FIFO(TxFIFO、RxFIFO):在发送数据的传输过程中,数据被写入TxFIFO,在接收数据的传输过程中,数据从RxFIFO被读出; 主IISCLK发生器SCLKG是控制I2S数据传输的时钟信号产生器,数据传输的速率由该时钟信号确定。 CHNC模块是信道发生器及其状态机,SCLK信号和LRCK信号由此产生,并由信道状态机控制。,SFTR是16位的并/串转换和串/并转换寄存器,在发送时完

31、成并行数据转换为串行数据输出,在接收时完成串行数据转换为并行数据输入。 控制器的时钟频率信号PCLK是通过抽样频率选取的,PCLK是由I2S的预分频器系列数决定的。,I2S数据传输由查询方式和DMA方式,在查询方式下,I2S总线接口的控制寄存器中由FIFO准备好标志位,该位用于数据的发送和接收。当FIFO准备好要传输的数据且传送FIFO不为空时,则FIFO准备好标志位设为1.如果传送FIFO为空,则FIFO准备好标志位设为0。当接收FIFO不满时,接收FIFO准备好标志位设为1,表示FIFO可以接收数据。否则,该位设为0,表示满。 在DMA方式下写入FIFO或读取FIFO都是通过DMA控制器完

32、成。,音频序列接口格式,I2S总线由4种信号,包括串行音频数据输入IISDI、串行音频数据输出IISDO、左右信道选择LRCK、串行时钟SCLK。,串行数据传输串行数据传输(SD)由时钟信号同步控制,且串行数据线上每次传输一个字节的数据。当音频数据被数字化成二进制流后,传输时先将数据分成字节,每个字节的数据传输从左边的二进制位(MSB)开始。 字段选择音频一般由左声道和右声道组成,使用字段选择(LRCK)就是用来选择左右声道,LRCK=1,表示选择左声道;LRCK=0,表示选择右声道。如果不在外部加以控制的话,LRCK会在MSB传输前的一个时钟周期发生变化,这有助于数据接收方和发送方保持同步。

33、此外,LRCK能让接收设备存储前一个字节,并且准备接收下一个字节。,时钟信号I2S总线中,任何一个能够产生时钟信号(SCLK)的集成电路都可以称为主设备,从设备从外部时钟的输入得到时钟信号。,I2S控制寄存器,IISCON:I2S控制器,用来设定I2S总线的工作方式,其地址为0x55000000,复位后初始值为0x100。 IISMOD:I2S模式寄存器,用来设定I2S的主从模式等参数,其地址为0x5500004,复位后初始值为0x00; IISPSR:I2S总线的分频系数寄存器,用来设定预分频器系数的值,其地址为0x55000008,复位后的初始值为0x000; IISFCON:I2S总线F

34、IFO的寄存器,用来设定FIFO的传输模式,其地址为0x5500000C,复位后的初始值为0x0000; IISFIFO:I2S总线FIFO的寄存器,用于I2S发送/接收数据的访问,其地址为0X55000010,复位后的初始值为0x0000。I2S总线接口中包含2个64字节的FIFO缓冲器,用于发送和接收模式。每个FIFO缓冲器中的单元是16位的,因此共有32个单元。IISFIFO寄存器是可读写的。,IISCON位功能,IISMOD位功能,IISPSR位功能,IISFCON位功能,IISFIFO位功能,I2S总线概述,7、音频接口,1,3,2,基于I2S的软件设计,基于I2S接口的硬件设计,基

35、于I2S接口的硬件设计,S3C2410芯片中有两条串行数据线,一条是输入信号数据线,一条是输出信号线,可以同时发送和接收模式。三星的I2S接口有3种工作模式:1)正常传输模式正常模式下,使用IISCON寄存器对FIFO进行控制。如果传输FIFO缓存为空,IISCON的第7位设置为“0”,表示不能继续传输数据,需要CPU对缓存进行处理。如果传输FIFO缓存非空,IISCON的第7位设置为“1”,表示可以继续传输数据。同样,数据接收时,如果FIFO满,标识位为“0”,此时需要CPU对FIFO进行处理;如果FIFO没有满,那么标识位是“1”,这个时候可以继续接收数据。,DMA模式通过设置IISFCO

36、N寄存器可以使I2S接口工作在这种模式下。在这种模式下,FIFO寄存器组的控制权掌握在DMA控制器上,当FIFO满时,由DMA控制器对FIFO中的数据进行处理。DMA模式的选择由IISCON寄存器的第4和第5位控制。 传输/接收模式在这种模式下,I2S数据线可以同时接收和发送音频数据。,I2S总线概述,7、音频接口,1,3,2,基于I2S的软件设计,基于I2S接口的硬件设计,基于I2S接口的软件设计,UDA1314和三星的ARM处理器之间通过I2S总线进行数据交换。在ARM处理器端,使用DMA模式接收数据。三星的ARM处理器有4个DMA通道,I2S总线复用其中的两个DMA通道,用于全双工数据交

37、换。与I2S交互的数据经过I2S控制器写入FIFO寄存器组,将FIFO填充满以后,通过DMA控制器一次性写入预先分配的内存缓存区中。 应用程序第一次使用音频设备并向设备里面传输数值的时候,驱动程序必须完成下面任务:,1)通过程序控制音频设备并且为设备设置好工作参数(包括速度、声道、采样宽度),同时设置好对应的传输总线I2S 2)根据采样参数计算出缓冲段的大小(程序也可以指定缓存区的大小),分配对应的DMA空间供设备使用。 3)向缓存区填入应用程序生成的数据 4)如果第一个缓存区填充完毕,音频设备就开始播放填入数据;对于播放要求比较高的应用,可以等两个或者更多的缓存区段被填充满以后再开始播放。

38、5)应用程序继续填充缓存区。如果所有的缓存区都被使用,那么应用程序将转入挂起状态,直到第一个缓存区内的数据播放完毕,音频设备发出一个中断,通知应用程序继续向缓存区输入数据。,应用程序从设备里面读取数据的操作和向设备里面写数据的操作是类似的,具体过程如下: 1)通过程序控制音频设备,并且为设备设置好工作参数; 2)根据采样参数计算出缓冲段的大小; 3)激活录音设备开始录音; 4)录音设备将处理好的数据填入缓冲区,在这个期间应用程序挂起,直到缓存区被填满; 5)当第一个缓存区被填满以后,应用程序将缓存区中的数据复制到应用程序的内存区域; 6)当缓存区中的数据读完以后,读操作挂起,等待音频设备填充其

39、他的缓存区,直到录音结束。,本章练习,1、GPxCON中每两位控制一根引脚:00表示_,01表示_,10表示_。 2、为了识别键盘上的闭合键,通常可以采用两种方式:_和_。 3、实现A/D转换的方法很多,常用的方法有_、_和_。 4、显示器依据制造材料不同,可以分为_、_和_。 5、S3C2410芯片共有几个I/O端口?各端口各有多少根I/O引脚? 6、若需要把端口G的低8位用作输入外部设备数据的8位数据线、高8位用作输出数据的8位数据线,写出相应的初始化程序。,7、写出7段LED显示器的字符显示编码表。(分共阴极和共阳极两种情况写明,并标明点亮的段)。 8、写一个通过G口的控制发光二极管LE

40、D1和LED2轮流闪烁I/O口编程实例.电路如下所示:,答案,1、输入 输出 特殊应用 2、行扫描法和行发转法 3、计数法、双积分法、逐次逼近法 4、阴极射线显示器、发光二极管显示器、液晶显示器 5、共有8个I/O端口A端口有23个输出引脚,B端口有11个输入/输出引脚。C端口有16个输入/输出引脚,端口D有16个输入/输出引脚,端口E有16个输入/输出引脚,端口F有18个输入/输出引脚,端口G有16个输入/输出引脚,端口H有11个输入/输出引脚,6、void init()rGPGCON=rGPGCON,/Port G控制寄存器 #define rGPGCON (*(volati1e unsi

41、gned*)0x56000060) /Port G数据寄存器 #define rGPGDAT (*(volatile unsigned*)0x56000064) /Port G上拉电阻禁止寄存器 #define rGPGUP (*(volatile unsigned*)0x56000068) /端口G的GPG8控制LED1的亮灭,低电平时为亮 #define led1light()rGPGDAT=rGPGDAT,Void main() int flag,i;Target Init();/进行硬件初始化操作,包括对IO口的初始化操作led1clear();led2clear();for(;)if(flag = = 0)for(i = 0;i 1000000;i+); /延时rGPGCON=(rGPGCON|0x00050000),for(i = 0;i 10000000;i+); /延时flag = 1;elsefor(i = 0;i 1000000;i+); /延时rGPGCON=(rGPGCON|0x00050000)for(i = 0;i 10000000;i+); /延时flag = 0;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报