信息技术工程学院课程设计课程:ARM嵌入式处理系统结构与编程题目:AD转换与LCD控制综合应用专业:计算机科学与技术班级:姓名:学号:2013年1月6日至2013年1月13日一、实验目的和意义1、促进学生对ARM处理器系统的进一步理解。2、熟悉基于硬件平台的软件开发过程。该软件的开发涉及S3C2410处理器硬件初始化以及LCD控制器、AD转换器等外围设备的控制。3、通过该软件的开发,既能使学生掌握相关硬件的控制知识和编程技巧,更能培养学生的实践能力和独立进行系统开发的能力。二、设备及工具PC机一台WINDOWSXP系统ADS1.2集成开发环境ARM的D/A接口实验、LCD的驱动控制实验.三、基本要求1、程序首先通过AD转换输入实验箱上三个电位器的值。2、将三个值分别规范化为0~255范围的数值。3、程序根据这三个值来控制LCD显示不同的颜色,即三个电位器的值代表显示像素R、G、B的值,全屏幕显示该R、G、B值确定的颜色。4、调整电位器时屏幕颜色实时进行相应变化。四、功能划分本课题有两部分组成,AD转换器部分负责采集三个电位器值的功能,并将值规范为0~255内的数值。这三个值分别代表R、G、B,三个颜色叠加,便是最终显示的颜失。LCD显示器部分负责的功能是将值转换为相应的颜色并显示。1、ARMS3C2410X芯片自带一个8路10位A/D转换器,最大转换率为500K,非线性度为正负1.5位,其转换时间可以通过下式计算:如果A/D使用的时钟为50MHz,预定标器的值为49,那么:A/D转换频率=50MHz(49+1)=1MHz转换时间=1/(1MHz/5时钟周期)=1/200kHz=5us注意:因为A/D转换器的最高时钟频率是2.5MHz,所以转换速率可达500kSPS.2、LCD的功能是通过控制加电与否来使光线通过或挡住,从而显示图形。液晶得名于其物理特性:它的分子晶体,以液态存在而非固态。LCD显示屏,没有驱动电路,需要与驱动电路配合使用。特点是体积小,但却需要另外的驱动芯片。将A/D转换器与LCD相结合,便能实现转动电位器便能控制不同颜色的显示。五、设计原理LCD显示器的基本原理就是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元的通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过。A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。A/D转换的数据可以通过中断或查询的方式来访问,如果是用中断方式,全部的转换时间(从A/D转换的开始到数据读出)要更长,因为中断服务程序返回和数据的访问的原因。如果是查询方式则要检测ADCCON[15](转换结束标志位)来确定从ADCDAT寄存器读取的数据是否是最新的转换数据。六、详细设计及程序分析开发板初始化及初始化A/D转换器externU32LCDBufferII2[480][640];//LCD输出显示声明,屏幕480*640voidARMTargetInit(void);voidinit_ADdevice(){//AD开发板初始化rADCCON=(PRSCVL|ADCCON_ENABLE_START|STDBM|PRSCEN);}//获取三个电位器的值(函数实现)intGetADresult(intchannel){rADCCON=ADCCON_ENABLE_START_BYREAD|(channel3)|PRSCEN|PRSCVL;hudelay(10);while(!(rADCCON&ADCCON_FLAG));//转换结束return(0x3ff&rADCDAT0);//返回采样值}主程序intmain(void){inti,j,k,ADData[3];//数组中分别存放电位器的处理值U32jcolor;ARMTargetInit();//开发版初始化LCD_Init();//LCD初始化init_ADdevice();//初始化AD转换器Uart_Printf(0,\n);while(1){for(i=0;i3;i++)//循环3次采集数据{ADData[i]=GetADresult(i)/4;//数据采集,处理,将采集的数据规范为0~255范围内//ADData[i]=GetADresult(i)/4;Uart_Printf(0,ADData%d=%d\t,i,ADData[i]);hudelay(5);//延迟}for(k=0;k240;k++)//宽240(屏幕的一半),第一个通道{for(j=0;j210;j++)//长为640的三分之一,第一块分屏LCDBufferII2[k][j]=0x000000f8;//Rhudelay(5);LCDBufferII2[k][j]=ADData[0];//0x00f80000B,蓝色}for(k=0;k240;k++)//第二个通道{for(j=213;j422;j++)LCDBufferII2[k][j]=0x0000fc00;//Ghudelay(5);LCDBufferII2[k][j]=ADData[1];}for(k=0;k240;k++)//第三个通道{for(j=424;j640;j++)LCDBufferII2[k][j]=0x00f80000;//Bhudelay(5);LCDBufferII2[k][j]=ADData[2];//}//jcolor=((ADData[2]216)|(ADData[1]28)|(ADData[0]2));jcolor=((ADData[2]&0xff)16)|((ADData[1]&0xff)8)|(ADData[0]&0xff);//三个值分别为R、G、B的值,共24位,用十六进制表示为0x00000000,后六位表示R、G、B,所以要将三个数转换为十六进制,然后拼接,分别左移16位,左移8位,不移位,实现拼接。for(k=240;k480;k++){for(j=0;j640;j++)LCDBufferII2[k][j]=jcolor;//像素位共480*640,为每一个像素点收集颜色}Uart_Printf(0,jcoloris:%x\n,jcolor);LCD_Refresh();//整个显示屏的颜色收集满后,刷新}}七、流程图初始化开发版ARMTargetInit()初始化LCDLCD_Init()初始化AD转换器init_ADdevice()用AD转换器采样三位电位器的值并将其规范化将采样的值转化为十六进制,并拼接转换给每一个像素点收集颜色LCD显示颜色刷新八、总结在这次一周的嵌入式课程设计中,经过我组成员的共同努力,并在老师的细心指导下,成功实现了A/D转换器和LCD显示的综合控制,在完成课设基本要求的基础上,加以分屏创新。在这过程中,我们都收获颇丰,从这学期学习《ARM嵌入式系统结构与编程》这课程开始,到学期末进行嵌入式课程设计结束,将书本上抽象的知识成功运用到实践中,并对ADS等相关软件进一步熟悉,掌握的更加牢固。同时对S3C2410的开发工具箱的功能也有了进一步的了解,会使用一些小程序编写。同时也发现了个人能力的不足,还需更加努力地学习,特别是在编程方面还需要提高和进步,希望自己能再接再厉,不断提高个人能力。参考书目:[1]邱铁《ARM嵌入式系统结构与编程》,北京,清华大学出版社,2009年