第一篇:嵌入式系统设计基础总结报告
嵌入式系统设计基础
嵌入式系统设计基础
结题报告
学
生1: 学
生2: 学
生3: 组
长: 组长电话: 指导老师: 完成时间:
嵌入式系统设计基础
目录
目录....................................................................2 摘 要...................................................................3
一、课题概述...........................................................4
二、课题实施方案.......................................................4
2.1 方案说明........................................................4
2.1.1 LCD图像显示模块设计方案..................................4 2.1.2 触摸屏模块设计方案........................................5 2.1.3 音乐播放模块设计方案......................................5 2.1.4 键盘模块设计方案..........................................6 2.2 工程规范........................................................6
三、课题实施过程详述...................................................6
四、系统测试方法.......................................................8
五、结果分析...........................................................8
六、总结................................................................9 参考文献................................................................9 附录....................................................................9
嵌入式系统设计基础
摘 要
随着智能手机和平板电脑等便携式设备的兴起,ARM已经成为全球领先的半导体知识产权提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。ARM技术具有性能高、成本低和能耗省的特点。本文旨在初步接触嵌入式ARM技术。我们使用了天嵌TQ2440开发板以及ADS1.2来进行相关实验,主要制作了一个带背景音乐、可以使用触摸屏和键盘进行前后照片切换的数码相框。通过这次实验,我们对ARM技术有了一个初步的认识和了解,同时也掌握了一些编程和调试技术。
关键词:嵌入式,LCD图像显示,触摸屏
Abstract With the development of the smartphone and tablet computer, ARM has already become a leading semiconductor intellectual property provider in global market.More than 95% of the smartphone and tablet computer use the ARM framework.ARM has the advantages in performance, cost and efficiency.This paper aim at having a rough contact with embedded ARM and we use TQ2440 and ADS1.2 to conduct relevant experiments.Generally, we have made a digital album which can be controlled by touch panel.Through this experiment, we have grown a general acknowledge of ARM technology and master some coding and debugging technology.Keywords:embedded system, LCD display, touchpanel 3
嵌入式系统设计基础
一、课题概述
本文展示了一个使用ARM技术制作而成的带有背景音乐并且可以通过触摸屏和键盘控制的数码相框。数码相框在当今市面上也有销售,其功能主要是放映照片,绝大部分能够通过无线或蓝牙与移动设备进行连接,以达到实时放映的效果。我们所制作的数码相框总体而言功能并不是很强大,但也符合数码相框的基本原理并且实现了基本功能。本课题的核心问题是如何实现触摸屏精确地点击、图像切换显示还有音乐播放功能。
二、课题实施方案
本课题的基本设计方案分为四个模块,LCD图像显示模块、触摸屏模块、音乐播放模块以及键盘模块。整体的设计流程为首先完成在TQ2440开发板液晶显示屏上显示出六张自定义图像;然后实现按键控制图像的切换;再加入对触摸屏的操作,使得能够使用触摸屏切换图像;最后加上PWM蜂鸣器播放音乐的功能。
2.1 方案说明
2.1.1 LCD图像显示模块设计方案
为了实现带有背景音乐并且能够使用触摸屏控制的数码相框,我们首先要能够在开发板的显示屏上显示用户自定义的照片。由于我们所使用的开发板配备的是4.3寸的显示屏,所以图片尺寸要设定为480*272才能完美适应屏幕大小。在程序代码中,显示图片的功能由Paing_Bmp定义,具体为Paint_Bmp(0, 0, 480, 272, TQ_LOGO),其中,480、272对应的是要显示的照片的尺寸,因为我们用的是4.3寸屏,所以设定为480、272;而TQ_LOGO是图片的名称,名称由用户自己定义,这里的TQ_LOGO对应的是开发板开机显示的第一张LOGO照片。照片的显示本质上是对屏幕上每一个像素点赋值的过程,不断赋值的一个过程其实就是实现了对LCD的每个像素点进行逐行扫描写入不同像素点对应图片的不同位置的颜色值的过程。
图 1.像素扫描原理
因此,只要将图片的每一个像素点的值写入程序,就能够实现照片显示的功能。这里我们使用了天嵌科技光盘附带的bmp2h程序,将一个BMP图片文件转换为带有每行像素值的C文件,然后将C文件中的代码复制到LCD显示程序代码下,即可实现照片显示功能。
另外,由于480*272照片文件容量较大,缺省的内存设置无法满足显示6张照片的功能,会导致显示花屏。针对这个问题,我们是在nand.c文件中修改RdNF2SDRAM()函数中的U32 size = 0x100000,我们改成U32 size = 0x800000,这样就满足了照片显示的内存需求。
嵌入式系统设计基础
2.1.2 触摸屏模块设计方案
四线电阻式触摸屏硬件工作原理按照工作原理和传输信息的介质不同,触摸屏分为电阻式、电容感应式、红外线式以及表面声波式。由于电阻式触摸屏具有工作面与外界完全隔离,受环境影响较小,具有不怕灰尘和水汽、稳定性高、不漂移等优点,特别适合工业现场使用。因此我们选择了四线电阻式触摸屏。
我们使用触摸屏进行相册的前进和后退,具体来说,就是触摸屏幕上半部分,就跳转到前一张照片;反之,触摸下半部分,就跳转到下一张照片。实现该功能的关键在于设置一个标志位来判断当前放映的是6张照片中的哪一张,当xdata>500时,判断为下半部分;xdata<500时,判断为上半部分,然后一旦触摸屏幕,在判断触摸的是哪一个部分后就会进行加一或减一,以此循环。具体实现就是在LCD代码的while(1)中,加入一段判断选择程序,其中xdata对应的是屏幕的竖轴,ydata对应横轴。
另外,由于触控比较灵敏,会出现轻轻按一下却切换了好几张照片的情况,为了解决这个问题,就需要加入一段中断以及判断按下和松开状态。
图 2.状态转换图
2.1.3 音乐播放模块设计方案
S3C2440A 有五个十六位计时器。计时器 0, 1, 2, 和3有 Pulse Width Modulation(PWM)功能.计时器4 只有一个内部计时器,没有外部输出管脚。定时器0 有一个死区发生器,这可以给大电流设备使用。
定时器0和1共用一个8位预分频器,而定时器2、3和4共用其他一个8位预分频器。每个定时器有一个时钟分频器,可以生成5种不同的信号(1 / 2,1 / 4,1/ 8,1 / 16,和TCLK)。每个定时器模块,接收从其自己的时钟分频器发出的信号,收到相应的8位预分频器的时钟的时钟信号的时候。8位预分频器是可编程的,并且可以根据存储在TCFG0和TCFG1寄存器中的装载值细分(确定)像素时钟PCLK。
当计时器时使能的时候,该计时器的计数缓冲寄存器(TCNTBn)初始化,同时装载初始值到向下计数器当中。计时器的比较缓冲寄存器(TCMPBn)初始化的时候,自动装载一个初始值,用来和向下计数器的值进行比较。这种双重缓冲寄存器的机构,TCNTBn和TCMPBn,使计时器可以在PWM频率和占空比改变的时候保持稳定的PWM输出。
每一个定时器都有自己的有机器时钟驱动的十六位向下计数器。当向下计数器到达零的时候,定时器中断请求产生并通知CPU,定时器操作已经完成。当定时器向下计数器达 5
嵌入式系统设计基础
零的时候,相应的TCNTBn将会自动为下一次操作装载相应的计数值。然而,当计时器被停止的时候,例如,当定时器控制寄存器TCONn的使能位被清零的时候,TCNBn的值就不会被重新装载进计数器。TCMPBn的值是用于控制脉宽调制(PWM)的。定时器控制当向下计数器的值等于compare的值时,输出电平逻辑改变。因此,compare寄存器的值决定了PWM的占空比。
我们要调整PWM 的占空比进行电机控制或者电源控制的时候,只需要在程序中不断修改rTCNTB0 的值就可以了;而如果我们要改变PWM 的频率,我们只要通过不断的修改rTCNTB0 的值就可以了(当然也可以通过修改rTCNTB0 =(PCLK>>7)/freq 中的freq 的值来间接实现修改rTCNTB0 的值)。
2.1.4 键盘模块设计方案
我们知道有时触摸屏会不太好用,比如手湿了或者戴手套的时候,这时有了按键功能,就能起到很好的替换效果。我们主要用按键功能实现照片的前后切换,其原理和之前触摸屏切换类似,这里不多撰述。
2.2 工程规范
在本次课题实施中我们就TQ2440开发板实际开发操作方面总结出规范如下:(1)不要着急写代码,首先要将设计思路、功能模块等规划完成,然后才能进行下一步的工作。这样做有助于实际操作过程中的条理性,并且可以使项目处于可控、可实现的状态。
(2)在编写代码的时候一定要添加上相应的注释,增加代码的可读性,方便自己以后的修改和别人的理解。
(3)硬件上,接线时一定要仔细。注意串口线连接的位置,因为这涉及到烧录程序时端口的选择。
(4)从直观上看问题。每次修改程序之后先录入开发板,从显示屏实际显示效果上看是否实现功能而不是纠结于程序是否修改正确。
三、课题实施过程详述
1、实现六张图像的键盘控制切换;
在keyscan.c的static void __irq Key_ISR(void)中加入以下代码:
if(key == 0xff){flag3=0;Uart_Printf(“Interrupt occur...Key is released!n”);} else{ flag3++;if(flag3 == 8)flag3 = 2;if(flag3 == 1){
if(key == 2 && flag4<=6)
{flag4++;if(flag4==7)flag4=1;}
嵌入式系统设计基础
else if(key == 1 && flag4<=6){flag4--;if(flag4==-1)flag4=6;} else if(key == 3){flag5=1;Main();}}
Uart_Printf(“Interrupt occur...K%d is pressed!n”, key);ExitCritical(&r);}
switch(flag4){
case 1:Paint_Bmp(0, 0, 480, 272, tu1_320240);break;
case 2:Paint_Bmp(0, 0, 480, 272, tu2_320240);break;
case 3:Paint_Bmp(0, 0, 480, 272, tu3_320240);break;
case 4:Paint_Bmp(0, 0, 480, 272, tu4_320240);break;
case 5:Paint_Bmp(0, 0, 480, 272, tu5_320240);break;
case 6:Paint_Bmp(0, 0, 480, 272, tu6_320240);break;
}
2、实现触摸屏控制图片切换功能;
(1)在while(1)中来实现:通过使用对触摸屏进行触摸操作时返回的xdata 和ydata 的数值对我们要显示的图片进行控制选择,如下:
while(1)//to check Pen-up state { if(rSUBSRCPND &(BIT_SUB_TC))//check if ADC is finished with interrupt bit {
flag = 0;break;//if Stylus is up(1)state} flag++;if(flag == 8)
flag = 2;if(flag == 1){
if(xdata>500 && flag1<=6)
{flag1++;if(flag1==7)flag1=1;}
else if(xdata<500 && flag1<=6)
{flag1--;if(flag1==-1)flag1=6;}
else
flag1=0;
switch(flag1){
case 1:Paint_Bmp(0, 0, 480, 272, tu1_320240);break;
case 2:Paint_Bmp(0, 0, 480, 272, tu2_320240);break;
case 3:Paint_Bmp(0, 0, 480, 272, tu3_320240);break;
case 4:Paint_Bmp(0, 0, 480, 272, tu4_320240);break;
case 5:Paint_Bmp(0, 0, 480, 272, tu5_320240);break;
case 6:Paint_Bmp(0, 0, 480, 272, tu6_320240);break;
}} }
(2)编译修改好的程序生成所需要的bin文件,录入开发板并观测图像显示。
3、PWM蜂鸣器音乐播放功能。
这部分功能就是在原先功能基础上加入了蜂鸣器的播放功能。
嵌入式系统设计基础
四、系统测试方法
本文所使用的硬件环境为天嵌TQ2440,是由广州天嵌计算机科技有限公司所制造。软件环境为WINDOWS 10,带有2.40 GHz Core™ i5 处理器以及4GB RAM。编译环境为ARM Developer Suite(ADS)1.2版。
五、结果分析
由于无法体现触控功能和音乐播放功能,这里只展示了照片显示功能。数码相框显示的照片如下,从图片中可以看到照片显示功能十分完好:
嵌入式系统设计基础
六、总结
本文展现了我们制作的数码相框,虽然总的来讲功能比较简陋,但也是我们的一片心血。通过这次实验,我们对于ARM嵌入式开发有了一个初步的认识,也熟悉了整个开发过程。最为重要的是,这次的实验为我们未来的学习与工作打下了一个良好的基础,我们不仅体验了当今最为流行的嵌入式技术,更是懂得了嵌入式开发的思想核心。在这里,我们要感谢负责嵌入式实验相关工作的王建敏老师,以及教授嵌入式课程的韩军老师、薛雷老师以及陆小峰老师,他们为这门课付出了自己的心血,传授给我们无价的知识。总的来说,这次实验难度并不大,但学到的东西并不少,相信未来我们也许也将走上嵌入式开发的道路,为嵌入式领域贡献自己的一份力量。
参考文献
[1] 裸奔三部曲.广州天嵌计算机科技有限公司.2012:1-59 [2] TQ2440开发板使用手册.广州天嵌计算机科技有限公司.2012:271-298 附录
(1)触摸屏ADC 中断初始化的程序段
rADCDLY=50000;
//Normal conversion mode delay about(1/3.6864M)*50000=13.56ms rADCCON=(1<<14)+(ADCPRS<<6);//ADCPRS En, ADCPRS Value Uart_Printf(“nTouch Screen testn”);rADCTSC=0xd3;//Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En pISR_ADC =(int)AdcTsAuto;rINTMSK=~BIT_ADC;//ADC Touch Screen Mask bit clear rINTSUBMSK=~(BIT_SUB_TC);(2)触摸屏中断程序断
void __irq AdcTsAuto(void){ U32 saveAdcdly;if(rADCDAT0&0x8000){ //Uart_Printf(“nStylus Up!n”);rADCTSC&=0xff;// Set stylus down interrupt bit
嵌入式系统设计基础
} //else //Uart_Printf(“nStylus Down!n”);rADCTSC=(1<<3)|(1<<2);//Pull-up disable, Seq.X,Y postion measure.saveAdcdly=rADCDLY;rADCDLY=40000;
//Normal conversion mode delay about(1/50M)*40000=0.8ms rADCCON|=0x1;
//start ADC while(rADCCON & 0x1);
//check if Enable_start is low while(!(rADCCON & 0x8000));
//check if EC(End of Conversion)flag is high, This line is necessary!while(!(rSRCPND &(BIT_ADC)));//check if ADC is finished with interrupt bit xdata=(rADCDAT0&0x3ff);ydata=(rADCDAT1&0x3ff);//check Stylus Up Interrupt.rSUBSRCPND|=BIT_SUB_TC;ClearPending(BIT_ADC);rINTSUBMSK=~(BIT_SUB_TC);rINTMSK=~(BIT_ADC);rADCTSC =0xd3;
//Waiting for interrupt rADCTSC=rADCTSC|(1<<8);
// Detect stylus up interrupt signal.while(1)
//to check Pen-up state { if(rSUBSRCPND &(BIT_SUB_TC))//check if ADC is finished with interrupt bit { //Uart_Printf(“Stylus Up Interrupt~!n”);break;//if Stylus is up(1)state } } Uart_Printf(“count=%03d XP=%04d, YP=%04dn”, count++, xdata, ydata);//X-position Conversion data rADCDLY=saveAdcdly;rADCTSC=rADCTSC&~(1<<8);// Detect stylus Down interrupt signal.rSUBSRCPND|=BIT_SUB_TC;rINTSUBMSK=~(BIT_SUB_TC);// Unmask sub interrupt(TC)ClearPending(BIT_ADC);}(3)PWM蜂鸣器音阶发生功能
while(1){
U16 freq =800;
if((xdata>719 && ydata>800)){ Paint_Bmp(0,0,480,272,tu3_480272);freq=220;Buzzer_Freq_Set(freq);}
嵌入式系统设计基础
else if(xdata>526 && ydata>800){ Paint_Bmp(0,0,480,272,tu2_480272);freq=247;Buzzer_Freq_Set(freq);} else if(xdata>332 && ydata>800){ Paint_Bmp(0,0,480,272,tu1_480272);freq=262;Buzzer_Freq_Set(freq);} else if(xdata>719 && ydata<225){Paint_Bmp(0,0,480,272,tu6_480272);freq=294;Buzzer_Freq_Set(freq);} else if(xdata>526 && ydata<225){Paint_Bmp(0,0,480,272,tu5_480272);freq=330;Buzzer_Freq_Set(freq);} else if(xdata>332 && ydata<225){Paint_Bmp(0,0,480,272,tu4_480272);freq=349;Buzzer_Freq_Set(freq);} else if(xdata>719 && ydata>225&& ydata<800){freq=392;Buzzer_Freq_Set(freq);} else {freq=392;Buzzer_Freq_Set(freq);Buzzer_Stop();} Paint_Bmp1(-40, 70, 480, 272,4, tu1_480272);Paint_Bmp1(-40, 140, 480, 272,4, tu2_480272);Paint_Bmp1(-40, 210, 480, 272,4, tu3_480272);Paint_Bmp1(400, 70, 480, 272,4, tu4_480272);Paint_Bmp1(400, 140, 480, 272,4, tu5_480272);Paint_Bmp1(400, 210, 480, 272,4, tu6_480272);Delay(500);} }
第二篇:嵌入式系统基础课程设计报告
河南机电高等专科学校
嵌入式系统基础课程设计报告
系 部: 电子通信工程系 专 业: 班 级: 学生姓名: 学 号:
2012年 06月
嵌入式系统基础课程设计任务书
1.时间:2012年06月11日~2012年06月15日 2.课程设计单位:河南机电高等专科学校
3.课程设计目的:深入学习单片机编程技巧,熟悉电子产品设计制作全过程。能够利用汇编语言完成十字路口交通灯的设计。4.课程设计任务:
按交通灯的具体要求来写
―――-红色文字为说明,写报告时请先删除!!
嵌入式系统基础课程设计报告
前言:
×××××××××××××××××××××××××××××××××××××××××××××××-----宋体,小四,不加粗,单倍行距
实训报告: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
„„„„„„
×××××××××××××××××××××××××××××××
―――-红色文字为说明,写报告时请先删除!!
心得体会: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
„„„„„„
××××××××××××××××××××××××××××××××××××××××××××××××××
参考文献:
„„„以下红色文字为“参考文献”的示例,写报告时请先删除!!填写上你自己的“参考文献”
[1] 周小谦,丁功扬,郭日彩,三峡电力系统的形成和发展,电网技术。1998,88(3):p1-3 [2]-----宋体,小五,不加粗,单倍行距
第三篇:嵌入式系统基础课程设计报告
河南机电高等专科学校
《嵌入式系统基础》 课程设计报告
设计题目: 系 部: 电子通信工程系 班 级: 学 号: 学生姓名: 成 绩:
2012年 05月
《嵌入式系统基础》课程设计任务书 1.时间:2012年05月14日~2011年05月25日 2.课程设计单位:河南机电高等专科学校
3.课程设计目的:掌握《嵌入式系统基础》课程基本概念、基本原理,具有一定的单片机设计能力,能够利用所学知识完成设计内容,提高实际动手能力。4.课程设计任务:
①参考相关的的书籍、资料,根据设计要求完成原理图设计; ②制作电路板并完成调试; ③绘制软件流程图; ④完成软件设计并完成调试;
⑤作好笔记,对自己所发现的疑难问题及时请教解决; ⑥联系自己所学知识,总结本次设计经验; ⑦认真完成课程设计报告。
5.设计要求
根据所给具体的设计要求来写!
《嵌入式系统基础》课程设计报告
前言:
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
一、硬件设计
1.设计思路及原理框图
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
××××××××××××××××××××××××××××××× 2.采用的芯片功能介绍
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
××××××××××××××××××××××××××××××× 3.原理图
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
×××××××××××××××××××××××××××××××
二、软件设计
1.设计思路
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
××××××××××××××××××××××××××××××× 2.程序流程图(必须要有)
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× ………………
××××××××××××××××××××××××××××××× 3.具体程序(可选,但流程图一定要有)
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
×××××××××××××××××××××××××××××××
心得体会: ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
………………
×××××××××××××××××××××××××××××××
参考文献:
[1] 付家才 电子实验与实践.北京:高等教育出版社130-150页
[2] 李东生、张勇、许四毛 《Protel 99SE电路设计技术入门与应用》电子工业出版社231-300页
………………
格式要求:
标题按照所给模板格式书写。
正文字体为:中文宋体,西文(字母和数字):Times New Roman,小四号字; 段落:两端对齐,首行缩进2字符,行距固定值20磅,其他设置为默认。
―――-红色文字为说明,写报告时请先删除!!
第四篇:嵌入式系统原理实验总结报告
嵌入式系统原理实验总结报告
车辆座椅控制系统实验
2014/5/23
嵌入式系统原理实验总结报告
一、技术性总结报告
(一)题目:车辆座椅控制系统实验
(二)项目概述:
1.为了实现车辆座椅控制的自动化与智能化。
2.方便用户通过智能手机与车载传感器之间的联动。3.使车辆作为当今物联网中重要的一个节点发挥作用。
4.通过车辆座椅控制系统实验实现对嵌入式系统原理课程的熟练掌握与对嵌入式系统原理知识的深化记忆。
5.加强本组学生对嵌入式系统原理的更深层次的理解与运用。
(三)技术方案及原理
本次试验分为软件、硬件两个部分。1.软件部分。
A.智能手机部分,包括通过智能手机对座椅的控制部分、手机所携带的身份信息部分。
本部分软件使用Java编写,其程序部分为: 主程序:
package com.example.seat;
import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.os.Build;
import java.io.BufferedReader;import java.io.IOException;
import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.InetAddress;import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;
import android.view.KeyEvent;import android.view.View;import android.widget.Button;
public class MainActivity extends ActionBarActivity { private Button Up = null;private Button Left = null;private Button Dowm = null;private Button Right = null;private Socket socket = null;
private static final String HOST = “192.168.1.142”;
private static final int PORT = 10007;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initControl();
}
private void initControl(){
Up =(Button)findViewById(R.id.button1);
Up.setOnClickListener(new ReceiverListener());
}
class ReceiverListener implements OnClickListener {
protected String line;
@Override
public void onClick(View v){
// TODO Auto-generated method stub
new Thread(){
@Override
public void run(){
try {
Socket socket = new Socket(HOST, PORT);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
line = br.readLine();
br.close();
} catch(UnknownHostException e){
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendEmptyMessage(0);
}
}.start();
}
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu){
// Inflate the menu;this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
// Handle action bar item clicks here.The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();
if(id == R.id.action_settings){
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
} } 界面代码:
package=“com.example.seat” android:versionCode=“1” android:versionName=“1.0” > android:name=“android.permission.ACCESS_NETWORK_STATE”/> android:minSdkVersion=“8” android:targetSdkVersion=“19” /> android:allowBackup=“true” android:icon=“@drawable/ic_launcher” android:label=“@string/app_name” android:theme=“@style/AppTheme” > android:name=“com.example.seat.MainActivity” android:label=“@string/app_name” >
host = '' port = 10007
pwm = PWM(0x6F, debug=True)
servoMin = 125 # Min pulse length out of 4096 , 0.5 servoMax = 575 # Max pulse length out of 4096 , 2.3
def setServoPulse(channel, pulse):
pulseLength = 1000000
# 1,000,000 us per second
pulseLength /= 60
# 60 Hz
print “%d us per period” % pulseLength
pulseLength /= 4096
# 12 bits of resolution
print “%d us per bit” % pulseLength
pulse *= 1000
pulse /= pulseLength
if(pulse>servoMax): pulse = servoMax
if(pulse pwm.setPWM(channel, 0, int(pulse)) pwm.setPWMFreq(60) # Set frequency to 60 Hz pwm.setPWM(0, 0, servoMax) if __name__ == '__main__': s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(3) print 'Server is running on port %d, press Ctrl-C to terminate it.' % port pulse_ud = 1.9 pulse_lr = 1.9 setServoPulse(0,pulse_ud) setServoPulse(1,pulse_lr) while True: clientsock, clientaddr = s.accept() clientfile = clientsock.makefile('rw', 0) ctrlinfo = clientfile.readline().strip() print 'Control info is %s.n' % ctrlinfo if ctrlinfo == “up”: pulse_ud += 0.1 elif ctrlinfo == “down”: pulse_ud-= 0.1 elif ctrlinfo == “left”: pulse_lr += 0.1 elif ctrlinfo == “right”: pulse_lr-= 0.1 else: print “ERRORn” setServoPulse(0,pulse_ud) setServoPulse(1,pulse_lr) clientfile.close() clientsock.close() 2.硬件部分。 对车载座椅控制部分发出的信息的接受、识别、执行部分。本次试验使用的硬件设备包括:智能手机一部、“树莓派”一台、小舵机两台、舵机驱动板一个、无线网卡一个、杜邦线若干、5V电源一个、无线路由器一个 智能手机 树莓派(外) 树莓派(内) 小舵机 舵机驱动板 无线网卡 杜邦线 5V电源 无线路由器 (四)实验流程及结果 1.打开智能手机上的控制软件。 2.向车载座椅控制台发送信息。(发送信息分别为上、下、左、右)3.车载座椅控制台接受、识别并执行信息。4.通过小舵机的动作验证该实验是否成功。(详细见视频) 二、工作进度自评表 本次试验完成。 本次试验计划分为三个阶段。 第一阶段:智能手机部分、车载座椅控制部分和硬件部分的分别完成。本阶段完成。 第二阶段:智能手机部分、车载座椅控制部分和硬件部分的整合阶段。本阶段完成。 第三阶段:车辆座椅控制系统实验的验收调试阶段。本阶段完成。 三、组内人员自评 本次试验打到预期的实验目的。虽然在实验进行过程中遇到了不少的麻烦,但是通过我们成员自身的努力学习掌握了实验所要求的知识。最后实验的成功与组员之间的互相帮助与紧密配合是分不开的。 四、个人学习心得 本人通过此次实验,对于嵌入式系统原理有了更加深层次的了解。对于设计嵌入式系统原理的实验也有了较为高程度的提高。为了以后更进一步的学习并掌握嵌入式系统打下了坚实的一步。对于了解车辆座椅控制的自动化与智能化;了解用户通过智能手机与车载传感器之间的联动;了解车辆作为当今物联网中重要的一个节点都发挥了重要作用。通过车辆座椅控制系统实验实现对嵌入式系统原理课程的熟练掌握与对嵌入式系统原理知识的深化记忆。加强本组学生对嵌入式系统原理的更深层次的理解与运用。 嵌入式系统设计实验报告 班 级:学 号:姓 名:成 绩:指导教师: 20090612 2009112107 侯金钟 武俊鹏、刘书勇 1.实验一 1.1 实验名称 嵌入式系统硬件开发环境 1.2 实验目的 1.熟悉UP-net3000实验平台。 2.超级终端设置及BIOS 功能使用。 1.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 1.4 实验内容及要求 熟悉UP-net3000实验平台的硬件电路和外设,ARM JTAG的安装和使用,利用超级终端检验外设的工作状态。 1.5 实验设计与实验步骤 1.建立工程 (1)运行ARM SDT 2.5 集成开发环境(ARM Project Manager).(2)在新建的工程中,如图1A-2 所示,选中工程树的“根部”。 (3)因为开发板上的嵌入式处理器ARM7TDMI 没有浮点处理器,所以,如图1A-3 所 示,在弹出的对话框中设置Floating Point Processor 为none,并保持其他的设置不变。(4)选中工程树的“根部”,通过菜单Project | Tool Configuration for work1.apj | asmlink | Set,对整个工程的连接方式进行设置。(5)在弹出的对话框中,选中Entry and Base 标签,如图1A-4 所示,设置连接的Read-Only(只读)和Read-Write(读写)地址。 (6)选择Linker Configuration 的ImageLayout 标签,(7)选择Project | Edit Project Tamplete 菜单,弹出Project Template Editor 对话框。 (8)选择Project | Edit Variables for work1.apj,弹出Edit Variables for work1.apj 对话框。 2.进行程序的在线仿真、调试 1.6 实验过程与分析 熟悉UP-net3000实验平台的硬件电路和外设,安装了ARM JTAG,利用超级终端检验了外设的工作状态。 1.7 实验结果总结 软件安装成功,结果显示正常。 1.8 心得体会 通过此次试验,我对ARM的环境的功能有一定的了解与完善。对试验台有了基本的认识与使用。 2.实验二 2.1 实验名称 嵌入式系统软件开发环境 2.2 实验目的 1.熟悉ADS1.2 开发环境,学会ARM 仿真器的使用。 2.使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。 2.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 2.4 实验内容及要求 本次实验使用ADS 集成开发环境。新建一个简单的工程文件,并编译这个工程文件。学习ARM 仿真器的使用和开发环境的设置。下载已经编译好的文件到嵌入式控制器中运行。学会在程序中设置断点,观察系统内存和变量。 2.5 实验设计与实验步骤 (1)运行ADS1.2 集成开发环境(CodeWarrior for ARM Developer Suite)。 (2)在新建的工程中,选择Debug 版本,使用Edit | Debug Settings菜单对Debug 版本进行参数设置。(3)在Debug Settings 对话框中选择Target Settings 项。在Post-linker一栏中选择ARM from ELF。 (4)在Debug Settings 对话框中选择ARM Linker 项 (5)在第四步中如果选择简单的地址连接设置,在Debug Settings 对话框中选择ARM Linker 项 (6)回到的工程窗口中,选择Release 版本,使用Edit | Release Settings 菜单对Release 版本进行参数设置。(7)参照第(3)、(4)、(5)、(6)步在Release Settings 对话框中设置Release版本的Post-linker、连接地址范围、入口模块和输出文件。(8)回到如图1B-3 所示的工程窗口中,选择Targets 选项卡,如图1B-11 所示。选中DebugRel 版本,按Del 键将其删除。DebugRel 子树是一个折衷版本,通常用不到,所以在这里删除。 2.6 实验过程与分析 1)回到工程窗口选中Debug 版本,执行菜单Project | Make 对工程进行编译连接。(2)在ADS 中执行菜单Project | Debug 启动ADS1.2 的调试工具AXD。(3)在AXD 中执行菜单Options | Configure Target 对AXD 进行设置。(4)点Select 按钮选择远程连接为ARM ethernet driver,点Configure 按钮输入仿真器的IP 地址。 (5)等待程序装载完毕以后,通过Execute | Go 菜单以及Execute | Stop(或者工具栏中的相应按钮)运行或暂停程序。程序暂停后在窗口中将显示出程序暂停的位置。(6)通过Execute | Step 菜单(或者工具栏中的相应按钮)可以单步运行程序。 (7)程序停止后可以通过Processor Views | Sources 菜单查看源文件,并可在适当位置按F9 设置端点。 (8)使用在Processor View 菜单下的Registers、Variables 和Memory 命令可以查看工作寄存器或者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。 2.7 实验结果总结 超级终端输出“Hello World!”。 2.8 心得体会 基本了解了ADS1.2的配置条件,学会了ARM仿真器的使用方法。 3.实验三 3.1 实验名称 键盘及LED实验 3.2 实验目的 1.学习键盘及LED 驱动原理。 2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驱动17键的键盘和8个共阴极LED。 3.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 3.4 实验内容及要求 通过ZLG7289芯片驱动17键的键盘和8个共阴极LED,将按键值在LED上显示出来。要求从右至左循环显示至少四位数字。 基本功能实现之后可考虑实现从左至右显示四位及四位以上数字(最大八位),并可设置清零键等扩展功能。 3.5 实验设计与实验步骤 利用所给的基础代码进行调试,观察输出结果,结合指导书和教材掌握基本原理和源代码的编写方式。根据实验的要求设计函数流程,并反复调试,实现功能。1.新建工程,将“Exp3 键盘及LED 驱动实验”中的文件添加到工程。2.定义ZLG7289 寄存器(ZLG7289.h) #define ZLG7289_CS(0x20)//GPB5 #define ZLG7289_KEY(0x10)//GPG4 #define ZLG7289_ENABLE()do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON;rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0)#define ZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand;rSIOCON=ZLG7289SIOCtrl;}while(0)3.编写ZLG7289 驱动函数(ZLG7289.c)4.定义键盘映射表:(Keyboard16.c) unsigned char KeyBoard_Map[]= {4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//64 键值映射表,通过查找键盘映射表来确定键盘扫描码对应的按键值。 5.定义键值读取函数。(Keyboard16.c)6.编写主函数,将按键值在数码管上显示。 3.6 实验过程与分析 利用键盘驱动函数实现基本数字输入,然后利用循环左移函数实现输入数字做一样功能,并通过改变函数中相应delay的值来消除键盘按键带来的抖动。 3.7 实验结果总结 按键值可以在LED上显示出来。要求从右至左循环显示八位数字,同时可以复位清零。达到实验的效果。 3.8 心得体会 通过本次实验,我了解了LED的显示屏幕的数字的移位功能,这个功能不止可以用一个方法实现,而循环左移是其中比较巧妙且省力的一种,在遇到类似情况的时候,可以优先考虑能不能利用到文件中已经存在的函数,这样可以不必自己编写函数,省时省力。是一种可靠的方法。4.实验四 4.1 实验名称 电机转动控制及中断实验 4.2 实验目的 1.熟悉ARM本身自带的六路即三对PWM,掌握相应寄存器的配置。 2.编程实现ARM系统的PWM输出和I/O输出,前者用于控制直流电机,后者用于控制步进电机。 3.了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。 4.了解44B0处理器上中断的应用。5.学习在44B0处理器上中断的应用。 6.进一步熟悉平台外围硬件及其驱动程序的编写。 4.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 4.4 实验内容及要求 1.学习步进电机和直流电机的工作原理,了解实现两个电机转动对于系统的软件和硬件要求。学习ARM 知识,掌握 PWM 的生成方法,同时也要掌握 I/O的控制方法。 2.编程实现ARM芯片的一对PWM输出用于控制直流电机的转动,通过A/D旋钮控制其转动方式。 3.编程实现ARM的四路I/O通道,实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮控制步进电机的转角。 4.通过键盘控制直流电机与步进电机的切换。5.设置并启动定时器。 6.设置中断,编写定时器中断服务程序,对中断次数进行计数并在LED上显示结果。 4.5 实验设计与实验步骤 1.添加并打开工程。 2.进行直流电机初始化设置和代码编写。3.进行步进电机初始化设置和代码编写。 4.对Timer3编程,编写定时器中断服务程序,完成对中断次数的计数。5.编写LED计数显示函数,使LED能正确计数并显示0-9999。6.编写中断初始化函数和中断响应函数。7.终端下载测试。 4.6 实验过程与分析 1.对直流电机进行编程和测试,掌握转速和旋转方向的设定方法。 2.对步进电机进行编程和测试,掌握ARM的四路I/O通道,实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮控制步进电机的转角。 3.对主函数进行编程,用键盘响应直流电机与步进电机的切换控制。 4.掌握中断相关语句的应用,弄清定义的中断向量、中断向量号,编写中断响应函数,并完成中断响应控制。 4.7 实验结果总结 实现了直流电机与步进电机的基本设置和控制,可以通过键盘控制电机之间的切换。完成了中断的响应和定时中断。当对其中一个旋钮转动时,就可以由直流电机转换成步进电机的转换,达到实验的效果。 4.8 心得体会 通过本次实验,我了解了直流电机和步进电机的工作原理,同时也知晓了电机间的转换过程,了解其中的道理内涵,熟悉了ARM自带的A/D转换器的工作原理及编程方法,了解了中断的意义和实现方法,实现了简单了中断处理程序。同时我也收获了很多关于ARM处理机的相关知识。 5.实验五 5.1 实验名称 触摸屏驱动实验 5.2 实验目的 1.了解触摸屏的基本概念与原理。 2.理解触摸屏与LCD的关系。3.编程实现对触摸屏的控制。 4.熟悉用 ARM 内置的 LCD控制器驱动 LCD。 5.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 5.4 实验内容及要求 1.了解触摸屏基本原理,理解对触摸屏进行输出标定、与LCD显示器配合的过程。2.通过编程实现触摸两点自动在两点间划直线。3.通过编程实现在触摸屏上动态画出曲线。5.5 实验设计与实验步骤 1.添加并打开工程。 2.在头文件中定义宏和常量及驱动函数。 #define ADS7843_CTRL_START 0x80 #define ADS7843_GET_X 0x50 #define ADS7843_GET_Y 0x10 #define ADS7843_CTRL_12MODE 0x0 #define ADS7843_CTRL_8MODE 0x8 #define ADS7843_CTRL_SER 0x4 #define ADS7843_CTRL_DFR 0x0 #define ADS7843_CTRL_DISPWD 0x3 // Disable power down #define ADS7843_CTRL_ENPWD 0x0 // enable power down #define ADS7843_PIN_CS(1<<6)//GPF6 #define ADS7843_PIN_PEN(1<<5)//GPG5 /////////触摸屏动作//////// #define TCHSCR_ACTION_NULL 0 #define TCHSCR_ACTION_CLICK 1 //触摸屏单击 #define TCHSCR_ACTION_DBCLICK 2 //触摸屏双击 #define TCHSCR_ACTION_DOWN 3 //触摸屏按下 #define TCHSCR_ACTION_UP 4 //触摸屏抬起 #define TCHSCR_ACTION_MOVE 5 //触摸屏移动 #define TCHSCR_IsPenNotDown()(rPDATG&ADS7843_PIN_PEN)(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)//采样x 轴电压值,数据为12 位,参考电压输入模式为差分模式,允许省电模式 #defineADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE |ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)int TchScr_Xmax=1840,TchScr_Xmin=176, TchScr_Ymax=195,TchScr_Ymin=1910;//触摸屏返回电压值范围 #defineADS7843_CMD_X 3.校准触摸屏坐标,进行坐标转换。 4.实现触屏取点并显示功能。 将触摸动作及触摸点坐标在超级终端上显示出来。5.实现两点间自动划线功能。6.实现触摸屏动态划线功能。 可以使用TchScr_GetScrXY()函数(第三个参数为0)来获得液晶屏的x、y 方向的电压 范围,分别点触摸屏有效面积的左上角和右下角,得到下列参数: TchScr_Xmax=1840;TchScr_Xmin=176;TchScr_Ymax=195;TchScr_Ymin=1910;//此数值仅供参考,请以实际校对为准 5.6 实验过程与分析 1.在定义触屏响应功能的函数中对点击触屏进行响应函数的修改,在其中添加修改点颜色的函数,修改得到的触摸点的颜色,并显示在LCD上。 2.获取第一个点坐标并储存,获取第二个点坐标并储存,由编写的划线函数取得储存的两点间直线上所有点的坐标,并对其改变颜色,显示在LCD上,即完成划直线功能。 3.将划线函数应用到响应触屏移动消息的函数下,即可对连续获得的触摸坐标进行连续的画短直线,连接成曲线,完成动态划线功能。 5.7 实验结果总结 了解了触摸屏响应动作消息的函数的工作原理,通过修改实现了触摸屏响应不同动作进行画点、划线、动态划线的功能。验证触摸屏的灵敏度的实验。 5.8 心得体会 通过这次实验,我基本掌握了通过编程驱动触摸屏以及触摸屏响应时间,实现了触摸屏对不同动作消息的响应。同时也知晓了在触摸屏上的描点画线的实现,但是由于不知名的原因,描点画线的误差较大,位置偏差较大,同时触摸屏有时会不灵敏,出现时好时坏的现象,但是由于我们的辛勤钻研,最终克服了这个困难,实现了最后的触摸屏的实现。 6.实验六 6.1 实验名称 UCOS-Ⅱ在ARM微处理器上的裁剪 6.2 实验目的 1.了解UCOS-Ⅱ内核的主要结构。 2.掌握UCOS-Ⅱ裁剪的基本原理与嵌入式编程实现方法。3.学习如何根据具体情况对UCOS-Ⅱ操作系统进行裁剪。 4.通过对UCOS-Ⅱ配置文件(OS_CFG.H)中相关的配置常量进行设置,实现对UCOS-Ⅱ的裁剪。 6.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 6.4 实验内容及要求 对UCOS-Ⅱ内核进行裁剪并移植到ARM7微处理器上。 6.5 实验设计与实验步骤 1.按照要求,载入STARTUP目录下文件,完成系统初始化、环境配置。2.载入UCOS-Ⅱ的全部源码,与处理器架构相关的文件位于arch目录下。3.在os_cpu.h中编写与处理器和编译器相关的代码。 4.编写os_cpu_c.c等6个与操作系统相关的函数。5.编写os_cpu.asm等4个与处理器相关的函数。 6.6 实验过程与分析 按照实验步骤进行,得到了需要的系统。 6.7 实验结果总结 按照要求进行了裁剪,得到了满足需要又紧凑的应用软件系统。 6.8 心得体会 通过本次实验,我了解了UCOS-Ⅱ内核的主要结构,掌握UCOS-Ⅱ裁剪的基本原理与嵌入式编程实现方法,学会了如何根据具体情况对UCOS-Ⅱ操作系统进行裁剪。 7.实验七 7.1 实验名称 UCOS-Ⅱ在ARM微处理器上的移植和编译 7.2 实验目的 1.了解UCOS-Ⅱ内核的主要结构。 2.掌握将UCOS-Ⅱ内核移植到ARM7处理器上的基本方法。 7.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 7.4 实验内容及要求 1.将UCOS-Ⅱ内核进行移植到ARM7微处理器上。 2.编写两个简单任务,在超级终端上观察两个任务的切换。 7.5 实验设计与实验步骤 1.该实验的文件分为两类,其一是 STARTUP 目录下的系统初始化、配置等文件,其二是 UCOS-Ⅱ的全部源码,arch 目录下的 3 个文件是和处理器架构相关的。 2.设置 os_cpu.h 中与处理器和编译器相关的代码。 3.用 C 语言编写 6 个操作系统相关的函数(OS_CPU_C.C)。4.用汇编语言编写 4 个与处理器相关的函数(OS_CPU.ASM)。5.编写一个简单的多任务程序来测试一下移植是否成功。6.编译并下载移植后的 UCOS-Ⅱ。 7.6 实验过程与分析 1.按照实验步骤进行,将µC/OS-II 内核移植到了ARM7 微处理器上。2编写了两个简单任务,在超级终端上观察两个任务的切换。 7.7 实验结果总结 将µC/OS-II 内核顺利移植到了ARM7 微处理器上。 7.8 心得体会 通过本次实验,使我更加了解了µC/OS-II 内核的主要结构,掌握了ARM的C语言和汇编语言的编程方法,了解了ARM7处理器结构,掌握了将µC/OS-II 内核移植到ARM 7 处理器上的基本原理与嵌入式编程实现方法。 8.实验八 8.1 实验名称 综合实验 8.2 实验目的 对前七次实验进行总结,应用之前所学的知识,将前几次实验内容结合起来,完成键盘,LED,触摸屏,直流电机,步进电机各种功能的组合。实现一个较为全面的功能结构。 8.3 实验环境 硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发 环境、仿真器驱动程序、超级终端通讯程序。 8.4 实验内容及要求 对前七次实验进行总结,应用之前所学的知识,完成自拟的嵌入式系统,要求综合前期基础实验的各种功能。 8.5 实验设计与实验步骤 1.添加并打开工程。2.进行LCD设计,在LCD显示屏输出文本。 3.进行LED及键盘设计,完成LED输出显示功能和键盘输入功能。4.进行电机控制设计,完成键盘控制电机转动功能。5.进行中断设计,完成定时中断功能。 6.进行触摸屏设计,完成触摸屏感应和划线功能。7.进行裁剪和移植功能设计和完成。 8.6 实验过程与分析 1.完成LCD显示功能,在LCD显示屏上输出文本:“Hello World!”。2.进入界面触屏控制选择功能,实现触屏选择功能。 3.自定义四种种功能,第一为电机控制,从键盘读取命令,并将功能编号显示在LED上,LED显示的是计数的数据,同时旋转按钮完成电机转速的控制选择。 4.第三种功能为划线,功能编号显示在LED高四位上,同时LCD屏幕清屏,为划线功能做准备,可以实现划线功能。 5.第四种功能为定时中断,当由键盘控制时,LED显示数值清零,实现了中断。6.实现裁剪与移植功能。 8.7 实验结果总结 完成了各种基本功能,并通过自拟的系统将各种功能整合起来,完成了一个小的嵌入式系统,对前七次的功能有了更深入的了解。通过LED的计数,当在计数值在前30秒之内,由键盘控制LED的数值及显示,按键盘上的某一个按键,实现对LED上的数值清零,后30秒由触摸屏控制清零,并且在前30秒之内,旋转按钮,实现对直流电机的运转,并且到步进电机的转换。 8.8 心得体会 通过这次实验,我更加深刻地掌握了前几次实验中的基本功能的实现方法,并且把几种功能联合在一起,实现一些功能,把LED 显示屏,LCD触摸屏,键盘,直流电机,步进电机等等设备联合在一起,对该实验有一定的帮助与提高,而我和我的队友也对嵌入式系统有了更深入的了解,在此期间,也学习了关于ARM处理器的开发与实践,了解了关于手机的嵌入式设备的产生过程,我也深深的对此充满了兴趣,对未来的嵌入式课程设计奠定了深厚的基础,可是令我遗憾的是,我和队员的水平所限,没有完成中断优先级的控制。本来想完成更多的功能,可是最后由于时间紧迫,也有一些其他的事情来分神分心,所以就只能完成这些,但是在未来的几周内,嵌入式课程设计也给了我们很大的空间去做未完成的事情。我相信我们会做的更加完美,功能更强大,用于未来的生活中去实践。第五篇:嵌入式系统设计报告