综合实验报告.doc

上传人:土8路 文档编号:10013751 上传时间:2021-04-10 格式:DOC 页数:11 大小:170KB
返回 下载 相关 举报
综合实验报告.doc_第1页
第1页 / 共11页
综合实验报告.doc_第2页
第2页 / 共11页
综合实验报告.doc_第3页
第3页 / 共11页
综合实验报告.doc_第4页
第4页 / 共11页
综合实验报告.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《综合实验报告.doc》由会员分享,可在线阅读,更多相关《综合实验报告.doc(11页珍藏版)》请在三一文库上搜索。

1、重庆交通大学信息学院设计性实验报告成 绩: 班 级: 通信工程2班 学 号: 631106040204 姓 名: 何 国 焕 实验所属课程: ARM嵌入式系统基础 实验室(中心):语音楼二楼ARM实验室指 导 教 师 : 闫 果 实 验 时 间 : 2013.11.1 一、课程设计题目基于ARM的LED灯综合实验同组人: 631106040201:付航本实验包含三个模块:1. 运用LED灯进行ASCII码表的显示。要求:使用8个LED灯显示09、az, AZ的ASCII码的显示。每一个ASCII码值显示510秒,每一个ASCII值进行切换时,点亮8号LED灯。2. 运用LED灯自由制作流水灯显

2、示。要求:自行设计流水灯的样式,但不能雷同(同组人员也不能雷同)。3. 使用按键功能,实现模块1和模块2之间的切换。二、题目分析1. 对使用的ARM芯片的基本情况进行分析 1) 首先,ARM是低电平点亮,要将LED灯按要求点亮,即对应arm芯片的P1.16P1.23引脚。欲达到09、az, AZ的ASCII码的显示,而且我们做实验使用的是MagicARM2200-S的教学实验开发平台,它具有灵活的跳线选择(I/O与功能电路的连接),外设PACK和GPIO输出接口以及其他很多强大的功能。 2) 可以通过GPIO口的高低电平来控制八个流水灯的亮与灭,从而达到实验所要求的流水灯状态 3)可以利用外部

3、中断进行模式转换。在本次实验涉及到了:PINSEL1设置管脚连接GPIO功能,IO1DIR配置LED 控制I/O 的输入输出方向 ,IO1SET置高低电平,IO1CLR 低电平输出LED 显示结果。2. 分析LED灯、按键和ARM芯片的链接情况。8个LED灯分别用LED1LED8表示,则LED1LED8可以使用P1.16P1.23管脚的GPIO功能进行相应的控制,通过引脚连接模块的控制寄存器可以选择相应引脚的GPIO功能,低电平有效。按键连接的管脚为P0.20,在进行模式切换时可以使用ARM芯片的中断功能。具体做法是设置P0.20 脚为EINT3 功能,初始化为非向量中断,并设置为电平触发模式

4、,然后等待外部中断。中断服务程序将按键全局变量取反,然后等待中断信号的撤消,最后清除中断标志并退出中断。3、 功能设计1、 LED灯显示ASCII码模块ARM芯片的每个管脚功能可以通过PINSEL2寄存器进行选择,因此可以将LED灯连接的管脚P1.16P1.23设置为GPIO功能,然后将IO1DIR设置为输出控制方式,用以向IO1SET和IO1CLR寄存器写入相应值,控制引脚的输出电平。为了显示09、az, AZ的ASCII码的值,可以先通过字符数组存储ASCII码,然后将其强制转换为数值,接着使用前述方式对端口P1.16P1.23赋值,就可实现LED灯显示ASCII码。2、LED自由流水灯模

5、块本人的流水灯设计为前后各两个灯向中间汇聚,然后交错循环,4、 详细设计1、流水灯模块:图()是自己的跑马灯显示函数,函数名“guohuan”,显示规则是前后各两个灯,向中间汇聚,逐次循环,当遇到有按键切换是切换到ASCLL码,显示A到Z、a到z和0到9。2、LED灯显示ASCII码模块:图(2)为ASCLL码的显示及它与跑马灯之间的切换,期间包括了字符向码的转换,由于要转换成二进制,才能用灯的形式显示出来,函数完成该功能。本模块可以通过设置PINSEL2寄存器选择LED灯连接的8个管脚P1.16P1.23的GPIO功能。然后对IO1DIR寄存器第16位第23位赋值为1,将对应引脚设置为输出功

6、能。为了顺序显示ASCII码值,先将09、az, AZ共62个ASCII码保存在字符数组中,并将其转换为数值形式,保存在整型数组中。接着将ASCII码对应的数值左移16位(对应管脚P1.16P1.23),写入IO1CLR寄存器中,由于低电平有效,便可运用LED灯显示当前的ASCII码。为了区分不同的ASCII码,需要将ASCII码的显示时间进行设定。因此在显示之后需要进行延时。最后将IO1SET置位,以恢复LED灯全灭的状态,等待下个ASCII码的显示。通过key的值来控制流水灯的显示模式,并在显示过程中判断KEY的值是否改变,从而切换到另一种模式。 延 时 函 数DelayNS(uint32

7、 dly) 图(1)流水灯显示流程图图(2)码值显示流程5、 总结1. 描述实验的过程刚开始实验时没多大信心,前面对GPIO输出掌握不是很好,不过我们熟悉了LPC2000 系列ARM7 环境下的编程,加上老师的辅导,过程中也有和同学交流学习,做到了先了解运行机制再胸有成竹的编写代码。我们先从简单的入手,先完成了流水灯的设计,后面大量时间花在了按键切换上,有气馁,有失望,但在不懈努力下还是完成了实验要求。2. 记录实验中遇到的问题1)延时太短,不能正确判断实验正确性2) 延时太短,不能看到实验效果3) 忘记清零,导致LED全亮4) 按键切换较难理解,而且切换后还得显示三段ASCLL码3.评价和同

8、组人员的合作情况实验中我和同组成员紧密配合,能够在实验时间内完成老师安排的实验任务,我们在过程中相互鼓励支持,共同努力,虽然实验是枯燥无味的,而我们一起实验也不乏风趣,遇到困难不会退缩,而是迎难而上,通过各种渠道将问题解决,我们的合作不但完成了实验,也是我们之间的感情更近了一步,加强了我们之间的了解和关系。3. 对本次实验的总结与提高 本次试验考验了我们自己的动手能力,同时还是对我们平时学习实验,有了相当程度上的考核。由于是综合性实验,有用到前面实验的内容,之前做的GPIO输出控制实验,是对我们的操作进行了训练,而该实验则是真正考验我们课程学习与实验的掌握程度,加强了了实验动手能力,实验是最能

9、锻炼人能力的手段,也是区别个人能力的最有效途径,而要想提高实验动手能力,就得自己动手动脑,去探索,在实践中更贴切的理解他们之间的必然联系。 实验过程中在理论课程帮助很大,使我更加牢固的掌握了嵌入式的原理,并对嵌入式有了更进一步的熟悉,渐渐地了解了该课程的编程。这都来自于对程序运行过程的理解,对程序分析透彻了便能很好编程,相反如果对程序了解相对较少,编程常常遇到不少困难。该实验还让我懂得了理论与实践相结合的重要性,实践能很大程度加深对理论的理解,增长实践经验。没有相当的理论基础就没法实践,同样没有实践能力,空一身理论也没用武之地。 附录:(代码)#include config.h#define

10、BEEPCON 17 / P0.7 引脚控制B1,低电平蜂鸣,10; dly-) for(i=0; i5000; i+); /*名 称: disp()*功 能:输出数字指定内容的ASCII码,用LED灯显示*/ void guohuan() int i; for(i=0;i8;i+) IO1CLR = DISP_TAB7-i; IO1CLR = DISP_TAB6-i; IO1CLR = DISP_TABi; IO1CLR = DISP_TABi+1; DelayNS(50); / 延时 IO1SET = 0xffffffff; if(a=1) return; void disp(int p,

11、int q) int A,B,k; for(A=p;A=q; A+) B=A;for(k=0;k8;k+) if(B%2!=0)待添加的隐藏文字内容1 IO1CLR = DISP_TABk; B=B/2; DelayNS(50); / 延时 IO1SET = 0xffffffff; IO1CLR = DISP_TAB7; DelayNS(50); / 延时 IO1SET = 0xffffffff; if(a=0) return; void _irq IRQ_Eint3(void) uint32 j; if(a=0) a=1; else a=0; /* 等待外部中断信号恢复为高电平(若信号保持为

12、低电平,中断标志会一直置位) */while( (EXTINT&13)!=0 ) EXTINT = 13; / 清除EINT3 中断标志,13 等价于 0x08for(j = 0; j 0xfff; j+); / 软件延时消除按键抖动 VICVectAddr = 0; / 向量中断结束int main(void)/*PINSEL1 = 0x00000000;*/IO1DIR = LEDCON;IRQEnable(); / 开IRQ 中断PINSEL1 = 38; / 设置管脚连接,P0.20 设置为EINT3/*IO0DIR = BEEPCON; / 设置B1 控制口为输出,其它I/O 为输入

13、IO0SET = BEEPCON; / 设置BEEP 初始状态为静音*/* 打开EINT3 中断(使用非向量IRQ) */VICIntSelect = 0x00000000; / 设置所有中断分配为IRQ 中断VICDefVectAddr = (int)IRQ_Eint3; / 设置中断服务程序地址EXTMODE = 0x00; / 设置EINT3 中断为电平触发模式EXTINT = 13; / 清除EINT3 中断标志VICIntEnable = 117; / 使能EINT3 中断,EINT3 在Bit17 上while(1) / 等待中断 if(a=1) disp(0,9); disp(a,z); disp(A,Z); elseguohuan();return(0);

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1