嵌入式学生信息查询系统.docx

上传人:b****8 文档编号:9528987 上传时间:2023-02-05 格式:DOCX 页数:27 大小:1.16MB
下载 相关 举报
嵌入式学生信息查询系统.docx_第1页
第1页 / 共27页
嵌入式学生信息查询系统.docx_第2页
第2页 / 共27页
嵌入式学生信息查询系统.docx_第3页
第3页 / 共27页
嵌入式学生信息查询系统.docx_第4页
第4页 / 共27页
嵌入式学生信息查询系统.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

嵌入式学生信息查询系统.docx

《嵌入式学生信息查询系统.docx》由会员分享,可在线阅读,更多相关《嵌入式学生信息查询系统.docx(27页珍藏版)》请在冰豆网上搜索。

嵌入式学生信息查询系统.docx

嵌入式学生信息查询系统

嵌入式系统

实习报告

 

课题名称:

学生信息查询系统

学院:

电气信息工程学院

专业:

通信工程

班级:

通信11-1

姓名:

学号:

指导教师:

山传文

成绩:

日期:

2014.6.23-2014.7.4

 

目录

一、实习目的………………………………………………3

二、实习设备………………………………………………3

三、实习内容………………………………………………3

四、实习原理………………………………………………3

五、实习流程图……………………………………………8

六、主要程序………………………………………………9

七、实习步骤………………………………………………17

1.准备实验环境……………………………………………….17

2.串口接收设置……………………………………………….17

3.图片文件转换……………………………………………….17

4.将编写好的程序运行,并显示结果…………………………18

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:

{offset:

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

Reserved

表4-3-1中断控制寄存器CtrlReg1(地址0x06600000)

中断控制寄存器CtrlReg1是8位只写寄存器。

它的每个位分别控制了一个外部中断。

其中按键中断EINT0位于BIT1位。

往寄存器相应位写1,则相应中断被屏蔽;相应位清零,则相应中断被打开。

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

IRQNET

IRQKEY

IRQCF

IRQCAN

Reserved

EINT1

EINT0

Reserved

表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_DspHz24(300,i+=30,RED,"班级");

Lcd_DspAscII8x16(350,170,RED,":

");

Lcd_DspHz24(380,i,BLACK,"通信工程");

Lcd_DspAscII8x16(480,170,BLACK,"11-1");

Lcd_DspHz24(300,i+=30,RED,"学号");

Lcd_DspAscII8x16(350,200,RED,":

");

Lcd_DspAscII8x16(380,200,BLACK,"02");

Lcd_DspHz24(405,i,BLACK,"号");

iis_test4();

}

voidcolor_lcd_test2(void)

{

inti=100;

lcd_init_app();

lcd_clr();

lcd_clr_rect(0,0,800,480,WHITE);

BitmapViewTft16Bit_128160((unsignedchar*)gImage_bb);

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_DspHz24(300,i+=30,RED,"班级");

Lcd_DspAscII8x16(350,170,RED,":

");

Lcd_DspHz24(380,i,BLACK,"通信工程");

Lcd_DspAscII8x16(480,170,BLACK,"11-1");

Lcd_DspHz24(300,i+=30,RED,"学号");

Lcd_DspAscII8x16(350,200,RED,":

");

Lcd_DspAscII8x16(380,200,BLACK,"07");

Lcd_DspHz24(405,i,BLACK,"号");

iis_test4();

}

voidcolor_lcd_test3(void)

{

inti=100;

lcd_init_app();

lcd_clr();

lcd_clr_rect(0,0,800,480,WHITE);

BitmapViewTft16Bit_128160((unsignedchar*)gImage_cc);

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_DspHz24(300,i+=30,RED,"班级");

Lcd_DspAscII8x16(350,170,RED,":

");

Lcd_DspHz24(380,i,BLACK,"通信工程");

Lcd_DspAscII8x16(480,170,BLACK,"11-1");

Lcd_DspHz24(300,i+=30,RED,"学号");

Lcd_DspAscII8x16(350,200,RED,":

");

Lcd_DspAscII8x16(380,200,BLACK,"08");

Lcd_DspHz24(405,i,BLACK,"号");

iis_test4();

}

voidcolor_lcd_test4(void)

{

inti=100;

lcd_init_app();

lcd_clr();

lcd_clr_rect(0,0,800,480,WHITE);

BitmapViewTft16Bit_128160((unsignedchar*)gImage_dd);

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_DspHz24(300,i+=30,RED,"班级");

Lcd_DspAscII8x16(350,170,RED,":

");

Lcd_DspHz24(380,i,BLACK,"通信工程");

Lcd_DspAscII8x16(480,170,BLACK,"11-1");

Lcd_DspHz24(300,i+=30,RED,"学号");

Lcd_DspAscII8x16(350,200,RED,":

");

Lcd_DspAscII8x16(380,200,BLACK,"14");

Lcd_DspHz24(405,i,BLACK,"号");

iis_test4();

}

(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();

break;

case3:

color_lcd_test3();

break;

case4:

color_lcd_test4();

break;

}

rCPLDIntControl|=(1<<1);

rCPLDIntControl&=~(1<<1);

}

elseif(Status&0x4)//KEY2

{

keynum--;

if(keynum<1)

keynum=0;

switch(keynum)

{

case1:

color_lcd_test1();

break;

case2:

color_lcd_test2();

break;

case3:

color_lcd_test3();

break;

case4:

color_lcd_test4();

break;

}

rCPLDIntControl|=(1<<2);

rCPLDIntControl&=~(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)

{

UINT8TucInput=0;

intnSoundLen=155956;

iis_init();//initializeIIS

memcpy((void*)0x32000000,g_ucWave2,nSoundLen);

iis_play_wave(3,(UINT8T*)0x32000000,nSoundLen);//nSoundLen=155956;

ucInput=0;

iis_cl

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1