嵌入式系统课程实验报告.doc

上传人:飞****2 文档编号:51983264 上传时间:2022-10-20 格式:DOC 页数:9 大小:860.50KB
返回 下载 相关 举报
嵌入式系统课程实验报告.doc_第1页
第1页 / 共9页
嵌入式系统课程实验报告.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《嵌入式系统课程实验报告.doc》由会员分享,可在线阅读,更多相关《嵌入式系统课程实验报告.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、班级:自动化082学号:姓名: 何振凯指导教师:周汝成绩:嵌入式课程设计实习报告设计任务一 十字路口交通灯控制一、设计目的:1了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O控制寄存器的设置方法;2掌握ARM7应用系统编程开发方法,能用C语言编写应用程序;3熟练掌握ADS1.2软件的使用以及PROTEUS仿真调试的方法;二、具体任务:1采用PROTEUS完成十字路口交通灯控制的硬件电路设计,要求单片机选型为飞利浦公司的LPC2106,东西南北方向分别设置红黄绿3个指示灯,东西方向和南北方向各用1个数码管显示通行时间;2用ADS1.2编写C语言应用程序,完成十字路口交通灯控制;3采

2、用PROTEUS将应用程序装载在LPC2106中,进行仿真验证。要求东西方向和南北方向的数码管显示通行时间并倒计时,可以设置成一样,例如都是9秒倒计时;每当倒计时时间到,完成红黄绿指示灯的状态切换,模拟实现十字路口的交通灯管理控制。三、硬件电路设计。我选择了以下器件来进行此实验的硬件设计:7SEG-COM-ANODE 7SEG-COM-CATHODE 7SEG-MPX2-CA LPC210610WATT0R1 AUDI01ULED-GREEN LED-REDLED-YELLOW PCELECT47U25V附图:四、源程序。源程序:#include config.h#include LPC210

3、6.huint32 shuzu9=0x0000c00c,0x0000f90c,0x0000a40c,0x0000b00c,0xc,0xc,0xc,0x0000f80c,0xc;uint32 shuzu14=0x0000c012,0x0000f912,0x0000a412,0x0000b012;uint32 shuzu29=0x0000c021,0x0000f921,0x0000a421,0x0000b021,0x,0x,0x,0x0000f821,0x;/*延迟数字显示时间*/void delay(uint32 q)uint32 q;for(;q0;q-);int main()int n,m;

4、/*设置端口为第一功能*/PINSEL0=0x;PINSEL1=0x;/*设置端口为输出*/IODIR=0xffffffff;while(1)for(n=8;n=0;n-)IOSET=shuzun;/输出所要显示的数据delay();IOCLR=0xffffffff; for(m=3;m=0;m-) IOSET=shuzu1m;/输出置1delay();IOCLR=0xffffffff;/输出清零for(n=8;n=0;n-)IOSET=shuzu2n;/输出所要显示的数据delay();IOCLR=0xffffffff; for(m=3;m=0;m-) IOSET=shuzu1m;/输出置1

5、delay();IOCLR=0xffffffff;/输出清零五、仿真效果。设计任务二 uC/OS-的移植与应用一、设计目的:1了解嵌入式实时操作系统C/OS-II可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及C/OS-II多任务管理的调度算法;2掌握C/OS-II在ARM7上移植的方法;3能将C/OS-II移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;二、具体任务:1C/OS-II移植在LPC2106中。2编写用户任务程序,完成实时温度的采集控制。硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成

6、A/D转换,并用数码管显示出来。三、硬件电路设计。我选择了以下器件来进行此实验的硬件设计:7SEG-MPX4-CC 24C02C74HC373 7404ADC0808 BUTTONCAP-ELEC LPC2106LED-BLUE LED-GREENNOT POT-LOG RES SW-DPST附图:四、源程序。源程序:#include config.h#define TASK_STK_SIZE 64#define key 0x#define adstart 0x#define adend 0xuint32 bai10=0xf,0x,0xb,0xf,0x,0xd,0xd,0x,0xf,0xf;u

7、int32 shi10=0xf,0x,0xb,0xf,0x,0xd,0xd,0x,0xf,0xf;uint32 ge10=0xf,0x,0xb,0xf,0x,0xd,0xd,0x,0xf,0xf; OS_STK Task0StkTASK_STK_SIZE;OS_STK Task1StkTASK_STK_SIZE;OS_STK Task2StkTASK_STK_SIZE;INT32U i; void Task0(void *data);void Task1(void *data);void Task2(void *data);/* 函数名称: main* 功能描述: c语言的主函数,由它启动多任

8、务环境*/ int main (void) OSInit(); OSTaskCreate(Task0, (void *)0, &Task0StkTASK_STK_SIZE - 1, 2); OSTaskCreate(Task1, (void *)0, &Task1StkTASK_STK_SIZE - 1,3); OSTaskCreate(Task2, (void *)0, &Task2StkTASK_STK_SIZE - 1,4); OSStart(); return 0;void delay(INT32U t)while(t-);void L_Init (void) PINSEL0=0x;

9、PINSEL1=0x; IODIR|= 0x00002fFF; /* 函数名称:Task0* 功能描述: COS-II的第一个任务,通常由它初始化目标板和建立其它任务*/ void Task0(void *p_arg) p_arg = p_arg; TargetInit(); L_Init(); while(IOPIN&key)!=0); L_Init(); while(IOPIN&key)=0); IOCLR= 0x0000FFFF; OSTaskSuspend(OS_PRIO_SELF);/* 函数名称:Task1* 功能描述: COS-II的第2个任务,AD转换*/ void Task1

10、(void *p_arg) L_Init(); IOCLR=adstart; delay(50); IOSET=adstart; delay(50); IOCLR=adstart; delay(50); L_Init(); while(IOPIN&adend)=0); IOSET=115; OSTaskSuspend(OS_PRIO_SELF); /* 函数名称:Task2* 功能描述: COS-II的第3个任务,LED显示*/ void Task2(void *p_arg) INT32U g,s,b; L_Init(); b=i/100; s=i %100/10; g=i%10; while

11、(1) IOSET=baib; /数码管显示百位数据delay(100);IOCLR=baib;IOSET=shis; /数码管显示十位数据delay(100);IOCLR=shis;IOSET=geg; /数码管显示个位数据delay(100);IOCLR=geg; ; OSTaskResume(0);五、仿真效果。(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)六、实验心得体会在这二周的课程设计中,我学习到了很多书本上面没有学习到的知识,以前我们也都只是在上课的时候看着老师操作,听老师讲一些关于嵌入式学习过程中需要注意的内容,需要学习的一些语句,但是一直没有如此近距离的去接触过

12、嵌入式的操作。经过学习,我们知道学 ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于 API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。 因此对于初学者必然要把握住方向,自己的目标是什么,自己要

13、在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。在学习嵌入式系统的这两个星期,我觉得我学到了很多的东西,不仅巩固了C语言的使用,而且,在实验指导老师的教导下,我们学会了怎么去使用嵌入式系统,我们学会了怎么去讲嵌入式系统与protues系统相结合,从而用protues仿真软件看出我们程序需要体现的结果,也可以再一次的对程序进行一次检验。我们的实验是两个,第一个实验是交通灯的设计,在设计交通灯的时候,我们考虑了很多方案,后来,我们选择了使用共阴极的显示数码管,然后通过计算写出显示数码管从1到10的显示代码。之后就是交通

14、灯显示问题了,首先要确定什么时候红灯亮,什么时候绿灯亮,什么时候黄灯又亮,这些都是靠一些十六进制的数来代表的。 寄存器的使用在嵌入式系统设计中是很重要的一个部分,我们最开始了解的就是寄存器PINSEL0和PINSEL1的设置。LPC2106的I/O口全都是3功能服用端口,也就是说即可用作普通输入输出端口,又用作第2或第3种功能。设计人员可根据需要设置两个32位特殊功能寄存器PINSEL0和PINSEL1。PINSEL0对应引脚P0.0P0.15,PINSEL1对应引脚P0.16P0.31。都是寄存器中用两位来完成1根引脚的功能设置。接下来是GPIO方向寄存器的设置,当管脚配置为GPIO 模式时,可使用该寄存器控制管脚的方向。任意管脚的方向位的设置必须与管脚功能一致。输出置1寄存器,IOSET当管脚配置为GPIO 输出模式时,可使用该寄存器从管脚输出高电平。写入1 使对应管脚输出高电平。 写入0 无效。如果一个管脚被配置为输入或第二功能,写IOSET 无效。输出清零寄存器IOCLR当管脚配置为GPIO 输出模式时,可使用该寄存器从管脚输出低电平。写入1 使对应管脚输出低电平。 写入0 无效。如果一个管脚被配置为输入或第二功能,写IOCLR 无效。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com