嵌入式学生信息查询系统Word文件下载.docx
《嵌入式学生信息查询系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式学生信息查询系统Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
5.声音文件转换………………………………………………20
八、实习心得……………………………………………21
九、参考文献………………………………………………22
一、实习目的
1、通过实验了解IIS音频接口的工作原理。
2、掌握有关音频处理的基础知识。
3、初步掌握液晶屏的使用及其设计方法。
4、掌握S3C2410X处理器的LCD控制其使用。
5、通过实验掌握对常用IIS接口音频芯片的控制方法。
6、通过实验掌握对处理器S3C2410X中IIS模块电路的控制方法。
7、掌握通过任务调度的方法把液晶显示函数添加到UCOS2中。
二、实习设备
1.硬件:
EmbestEduKit-IV平台,ULINK2仿真器套件,PC机。
2.软件:
μVisionIDEforARM集成开发环境,WindowsXP。
三、实习内容
在keil软件开发环境下,通过编写程序实现在键盘上输入学号,在液晶显示屏上显示相应的学生信息。
学生信息包括显示每个人的照片和姓名系别等,并用键控设置学生输出的顺序,显示相应学生的信息,然后设定一定延时顺序循环播放。
在显示信息的同时播放音频,按顺序读显示屏上的信息。
四、实习原理
1、数字音频基础:
人们日常生活听到的各种声音信息是典型的连续信号,它不仅在时间上连续,而且在幅度上也连续,我们称之为模拟音频。
对于计算机来说,处理和存储的只可以是二进制数,所以在使用计算机处理和存储声音信号之前,我们必须使用模数转换(A/D)技术将模拟音频转化为二进制数,这样模拟音频就转化为数字音频了。
所谓模数转换就是将模拟信号转化为数字信号,模数转换的过程包括采样、量化和编码三个步骤。
模拟音频向数字音频的转换是在计算机的声卡中完成的。
音频编码:
脉冲编码调制PCM(PulseCodeModulation)编码的方法是对语音信号进行采样,然后对每个样值进行量化编码,在“采样频率和采样精度”中对语音量化和编码就是一个PCM编码过程。
ITU-T的64kbit/s语音编码标准G.711采用PCM编码方式,采样速率为8KHz,每个样值用8bit非线性的μ律或A律进行编码,总速率为64kbit/s。
使用PCM编码的文件在Windows系统中保存的文件格式一般为大家熟悉的wav格式,实验中用到的就是一个采样44.100KHz,16位立体声文件g_ucWave1.wav和g_ucWave2.wav。
2、IIS音频接口
IIS接口(IntegrateInterfaceofSound)即集成音频接口,是一种串行总线设计技术,是SONY、PHILIPS等电子巨头共同推出的接口标准,主要针对数字音频处理技术和设备如便携CD机、数字音频处理器等。
在上世纪80年代首先被飞利浦用于消费音频,并在一个称为LRCLK(Left/RightCLOCK)的信号机制中经过多路转换,将两路音频信号变成单一的数据队列。
当LRCLK为高时,左声道数据被传输;
LRCLK为低时,右声道数据被传输。
与PCM相比,IIS更适合于立体声系统。
对于多通道系统,在同样的BCLK和LRCLK条件下,并行执行几个数据队列也是可能的。
由于IIS、PCM和类似的音频接口不能提供寄存器入口,因此需要独立的控制接口。
IIS总线仅处理音频数据,其它信号如控制信号等单独传送,基于减少引脚数目和布线简单的目的,IIS总线只由三根串行线组成:
时分复用的数据通道线,字选择线和时钟线。
3、LCD液晶显示原理
S3C2410XLCD控制器
●LCD控制器特点:
S3C2410X处理器集成了LCD控制器,主要功能是S3C2410XLCD控制器用于传输显示数据和产生控制信号。
它并支持屏幕水平和垂直滚动显示。
数据的传送采用DMA(直接内存访问)方式,以达到最小的延迟。
它可以支持多种液晶屏:
TFTLCD:
支持1,2,4或8bpp彩色调色显示;
支持16bpp和24bpp非调色真彩显示;
在24bpp模式下,最多支持16M种颜色;
支持多种屏幕大小;
典型的实际屏幕大小是:
640×
480,320×
240,160×
160和其它;
最大虚拟屏幕占内存大小为4M字节;
64K色模式下最大虚拟屏幕大小:
2048×
1024和其它;
LCD控制器内部结构LCD控制器主要提供液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。
S3C2410X处理器的LCD控制器主要部分框图如图6-4-2所示:
●TFTLCD显示
(1)LCD控制器时间相关参数设定
TIMEGEN产生LCD驱动器所需要的控制信号,例如VSYNC,HSYNC,VCLK,VDEN和LEND。
这些控制信号又和REGBANK中的寄存器LCDCON1/2/3/4/5的设置密切相关。
可以对REGBANK中的这些寄存器进行设置以产生适合于不同种类LCD驱动器的控制信号。
VSYNC是帧同步信号,VSYNC每发出1个脉冲,都意味着新的1屏视频资料开始发送,而HSYNC为行同步信号,每个HSYNC脉冲都表明新的1行视频资料开始发送。
而VSYNC和HSYNC脉冲的产生则依赖于LCDCON2/3寄存器的HOZVAL域和LINEVAL域的配置。
HOZVAL和LNEVAL的值由LCD屏的尺寸决定:
HOZVAL=水平显示尺寸-1
LINEVAL=垂直显示尺寸-1
VCLK信号的频率取决于LCDCON1寄存器中的CLKVAL域。
VCLK和CLKVAL的关系如下(其中CLKVAL的最小值是0):
VCLK(Hz)=HCLK/[(CLKVAL+1)x2]
一般情况下,帧频率就是VSYNC信号的频率,它与LCDCON1和LCDCON2/3/4寄存器的VSYNC、VB2PD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL和CLKVAL都有关系。
大多数LCD驱动器都需要与显示器相匹配的帧频率,帧频率计算公式如下:
FrameRate=1/[{(VSPW+1)+(VBPD+1)+(LIINEVAL+1)+(VFPD+1)}×
{(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)}×
{2×
(CLKVAL+1)/(HCLK)}]
针对16位TFT屏BSWP,HWSWP这两位用来控制字节交换和半字交换,主要用来大小头的问题,如果输出到屏上的汉字左右互换了,或者输出到屏上的图花屏了,可以更改这个选项。
图4-1-1像素在内存中表示的示意图
图4-1-216位TFT表示RGB
给一个16位数据的颜色数据(为了分析的方便,把它写成二进制)
RGB=1010110110111001
根据上面的结构可以得出分析一下RGB各是
a)blue:
{offset:
0,length:
5}偏移量为0,长度为5,从RGB中提取出来便是“11001”;
b)green:
{offset:
5,length:
6}偏移量为5,长度为6,从RGB中提取出来便是“101101”;
c)red:
11,length:
5}偏移量为11,长度为5,从RGB中提取出来便是“10101”。
图4-1-3像素点的RGB示意图
●TFTLCD控制器信号时序
TFT屏的典型时序。
其中VSYNC是帧同步信号,VSYNC每发出1个脉冲,都意味着新的1屏视频资料开始发送。
而HSYNC为行同步信号,每个HSYNC脉冲都表明新的1行视频资料开始发送。
而VDEN则用来标明视频资料的有效,VCLK是用来锁存视频资料的像数时钟。
并且在帧同步以及行同步的头尾都必须留有回扫时间,例如对于VSYNC来说前回扫时间就是(VSPW+1)+(VBPD+1),后回扫时间就是(VFPD+1);
HSYNC亦类同。
图4-1-4LCD时序图
图4-1-5LCD电路连接图
4.按键控制原理
在实验平台的主板上设计了两路外部按键,当键被按下时,会产生按键中断信号。
按键产生的中断信号经过CPLD逻辑处理后连接到CPU的中断引脚。
电路原理图如下:
图4-3-1按键电路图4-3-2按键电路
电路图4-3-1、4-3-2是主板上设计的两路按键,分别输出了两个按键信号:
EXINT0与EXINT1。
两路按键的原理是一样的。
这里以主板上的按键KEY2为例说明。
如图4-3-1右边的KEY2按键,其导出了一个输出信号KEY1,信号KEY1对应了标号EXINT0。
在没有键按下时,EXINT0信号为高电平,当有键按下时,EXINT0变为低电平。
EXINT0信号作为CPLD芯片的输入信号。
下面说明CPLD芯片上与按键中断相关的寄存器:
BIT7
BIT6
BIT5
BIT4
BIT3
BIT2
BIT1
BIT0
IRQNET
IRQKEY
IRQCF
IRQCAN
Reserved
EINT1
EINT0
表4-3-1中断控制寄存器CtrlReg1(地址0x06600000)
中断控制寄存器CtrlReg1是8位只写寄存器。
它的每个位分别控制了一个外部中断。
其中按键中断EINT0位于BIT1位。
往寄存器相应位写1,则相应中断被屏蔽;
相应位清零,则相应中断被打开。
表4-3-2中断状态寄存器StatusReg1(地址0x06200000)
状态寄存器StatusReg1是8位只读寄存器。
它的每个位分别实时反映了一个外部中断信号的状态,其中BIT1位反映了按键中断EINT0的状态,比如当前按建KEY2没有键按下,则中断信号引脚EINT0为高电平,此时寄存器StatusReg1的BIT1位也为高电平;
当有键按下,EINT0变为低电平,则StatusReg1的BIT1位也变为低电平
5、实习流程图
图5-1-1主程序流程图图5-1-2color_lcd_test()子程序
KEY1
KEY2
图5-1-3键盘中断子程序
六.主要程序
(1)主程序如下:
/**************main()函数部分程序*******************/
intmain()
{
sys_init();
//Initials3c2410'
sClock,Interrupt,PortandUART
color_lcd_test1();
color_lcd_test2();
color_lcd_test3();
color_lcd_test4();
while
(1)
{int_int();
}
(2)学生文字信息显示程序如下:
/**************color_lcd_test()函数部分程序*******************/
voidcolor_lcd_test1(void)
inti=100;
lcd_init_app();
lcd_clr();
lcd_clr_rect(0,0,800,480,WHITE);
BitmapViewTft16Bit_128160((unsignedchar*)gImage_aa);
Glib_Rectangle(5,5,795,475,BLACK);
Lcd_DspHz24(300,i,BLUE,"
电气信息工程学院"
);
Lcd_DspHz24(300,i+=30,RED,"
姓名"
Lcd_DspAscII8x16(350,140,RED,"
:
"
Lcd_DspHz24(380,130,BLACK,"
鲍晶晶"
班级"
Lcd_DspAscII8x16(350,170,RED,"
Lcd_DspHz24(380,i,BLACK,"
通信工程"
Lcd_DspAscII8x16(480,170,BLACK,"
11-1"
学号"
Lcd_DspAscII8x16(350,200,RED,"
Lcd_DspAscII8x16(380,200,BLACK,"
02"
Lcd_DspHz24(405,i,BLACK,"
号"
iis_test4();
voidcolor_lcd_test2(void)
BitmapViewTft16Bit_128160((unsignedchar*)gImage_bb);
冯广翠"
07"
voidcolor_lcd_test3(void)
BitmapViewTft16Bit_128160((unsignedchar*)gImage_cc);
高芳容"
08"
voidcolor_lcd_test4(void)
BitmapViewTft16Bit_128160((unsignedchar*)gImage_dd);
金雪"
14"
(3)学生图片信息显示程序如下:
/**************BitmapViewTft16Bit_128160()函数部分程序**********/
voidBitmapViewTft16Bit_128160(UINT8T*pBuffer)
UINT32Ti,j;
UINT32T*pView=(UINT32T*)frameBuffer16BitTft800480;
pView+=LCD_XSIZE_TFT_800480*100;
for(i=0;
i<
160;
i++)
{for(j=50;
j<
228/2;
j++)
{pView[j]=((*(pBuffer+3))<
<
8)|((*(pBuffer+2))<
0)|((*(pBuffer+1))<
24)|((*(pBuffer))<
16);
pBuffer+=4;
pView+=LCD_XSIZE_TFT_800480;
(4)键盘中断子程序如下:
/**************void__irqint_int()函数部分程序******************/
void__irqint_int(void)
unsignedcharStatus;
staticunsignedintkeynum=0;
Status=rCPLDIntStatus;
Status=~(Status&
0x6);
if(Status&
0x2)//KEY1
{
keynum++;
if(keynum>
4)
keynum=0;
switch(keynum)
case1:
color_lcd_test1();
break;
case2:
color_lcd_test2();
case3:
color_lcd_test3();
case4:
color_lcd_test4();
}
rCPLDIntControl|=(1<
1);
rCPLDIntControl&
=~(1<
elseif(Status&
0x4)//KEY2
keynum--;
if(keynum<
1)
}
2);
}
rEINTPEND=(1<
9);
ClearPending(BIT_EINT8_23);
(5)音频子程序如下:
/**************voidiis_test()函数部分程序******************/
voidiis_test1(void)
UINT8TucInput=0;
intnSoundLen=155956;
iis_init();
//initializeIIS
memcpy((void*)0x32000000,g_ucWave1,nSoundLen);
iis_play_wave(3,(UINT8T*)0x32000000,nSoundLen);
//nSoundLen=155956;
ucInput=0;
iis_close();
//closeIIS
voidiis_test2(void)
memcpy((void*)0x32000000,g_ucWave2,nSoundLen);
//nSoundLen=155956;
iis_cl