收藏 分销(赏)

西安邮电大学嵌入式实验报告.doc

上传人:w****g 文档编号:7209635 上传时间:2024-12-28 格式:DOC 页数:16 大小:380KB 下载积分:8 金币
下载 相关 举报
西安邮电大学嵌入式实验报告.doc_第1页
第1页 / 共16页
西安邮电大学嵌入式实验报告.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
西安邮电大学嵌入式实验报告 资料仅供参考 西 安 邮 电 大 学 (计算机学院) 课内实验报告 实验名称: 嵌入式系统原理与应用<A> 专业名称: 软件工程 班 级: 1101班 学生姓名: 学号(8位): 指导教师: 李宥谋 实验日期: 12月25日 实验一 流水灯实验 一. 实验目的及实验环境 1. 实验目的 l 熟悉LPC 系列ARM7微控制器的GPIO输出控制。 2. 实验环境 l 硬件: PC机 一台 LPC2131教学实验开发平台 一套 l 软件:Windows 98/XP/ 系统,ADS1.2集成开发环境。 二. 实验内容 使用GPIO口控制8个LED流水灯显示。 三. 方案设计 ① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131 工程模板建立一个工程LedDisp_C。 ② 在user组里编写主程序代码main.c。 ③ 选用DebugInRam生成目标,然后编译链接工程。 ④ 将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线 短接gde台ngtheng 。 ⑤ 选择Project->Debug,启动AXD进行JTAG仿真调试。 ⑥ 全速运行程序,程序将会在main.c的主函数中停止。 ⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,经过此窗口能够观察局部变量 和全局变量。选择System Views->Debugger Internals 即可打开 LPC 系列ARM7微控制器的片内外寄存器窗口。 ⑧ 能够单步运行程序,能够设置/取消断点;或者全速运行程序,停止程 序运行,观察变量的值,判断LED1~LED8控制是否正确。 四. 测试数据及运行结果 五.总结 1.实验过程中遇到的问题及解决办法; 由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设计实验,因此对于本次实验,我完成地很顺利,在实验中没有遇到问题。 2. 对设计及调试过程的心得体会。 本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,而且能在实验环境下进行简单的实验操作,为之后的实验打下坚实的基础。 六. 附录:源代码(电子版) #include "config.h" const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制LED1~LED8,低电平点亮 const uint32 KEY = 1 << 16; //P0.16连接KEY1 const uint32 DISP_TAB[10] ={ 0x01, 0x02, 0x04, 0x08,0x10,0x20,0x40,0x80, 0xff, 0xff}; const uint32 DISP_TAB2[10] = { 0x80 , 0x40, 0x20, 0x10, 0x08,0x04, 0x02,0x01, 0xff, 0xff}; void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++); } } int main(void) { uint8 i;   PINSEL0 = 0x00; // P0[15:0] 用作GPIO   PINSEL1 = 0x00; // P0[31:16] 用作GPIO PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIO IO1DIR = LEDS8; // 设置P1[25:18]为输出口,控制LED[7:0] while(1) { if((IO0PIN&KEY)!=0) // 测试KEY 按键 for(i=0; i<8; i++) { IO1CLR = DISP_TAB[i]<<18; DelayNS(50); IO1SET = 0xffffffff; } DelayNS(10); if((IO0PIN&KEY)==0) // 测试KEY 按键 for(i=0; i<8; i++) { IO1CLR = DISP_TAB2[i]<<18; DelayNS(50); IO1SET = 0xffffffff; } DelayNS(10); } return(0); } 实验二 蜂鸣器实验 一.实验目的及实验环境 1.实验目的 l 掌握LPC2131工程模板的使用。 l 掌握EasyJTAG仿真器的安装和使用。 l 能够在EasyARM教学实验开发平台上运行第一个程序。 l 熟悉LPC 系列ARM7微控制器的GPIO控制。 2.实验环境 l 硬件: PC机 一台 LPC2131教学实验开发平台 一套 l 软件:Windows 98/XP/ 系统,ADS1.2集成开发环境。 二.实验内容 P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。 三.方案设计 ① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131 工程模板建立一个工程BeepCon_C。 ② 在user组里编写主程序代码main.c。 ③ 选用DebugInRam生成目标,然后编译链接工程。 ④ 将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接gde台ngtheng 。 ⑤ 选择Project->Debug,启动AXD进行JTAG仿真调试。 ⑥ 全速运行程序,程序将会在main.c的主函数中停止(因为main函数起 始处默认设置有断点)。 ⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables) 打开变量观察窗口,经过此窗口能够观察局部变量和全局变量。选择 System Views->Debugger Internals 即可打开LPC 系列ARM7微控制 器的片内外寄存器窗口。 ⑧ 能够单步运行程序,能够设置/取消断点;或者全速运行程序,停止程序 运行,观察变量的值,判断蜂鸣器控制是否正确。 四.测试数据及运行结果 五.总结 1.实验过程中遇到的问题及解决办法; 本次实验刚开始时,刚把板子接到电脑上,什么操作都还没进行,蜂鸣器就开始响了,而且停不下来,我也不知道是什么问题,之前从来没遇到过,最后不得不将老师请过来。原来是之前板子里嵌入的程序没有运行完,因此才会出现这种情况,只要将板子里的程序清干净就能够了。 2. 对设计及调试过程的心得体会。 本次实验设计过程相较于之前的流水灯实验稍微复杂一些,但我并没有害怕,而是重复试验,最终将程序调试成功。经过此次实验,我觉得在实验过程中坚持很重要,无论实验中遇到了什么问题,都不能轻易放弃,一定要克服阻碍,继续向前。 六.附录:源代码(电子版) #include "config.h" #define BEEPCON 1<<7 // P0.7引脚控制Beep,低电平蜂鸣 void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++); } } int main(void) { PINSEL0 = 0x00000000; // 设置管脚连接GPIO IO0DIR = BEEPCON; // 设置I/O为输出 while(1) { IO0SET = BEEPCON; // BEEPCON = 1 DelayNS(200); IO0CLR = BEEPCON; // BEEPCON = 0 DelayNS(200); } return(0); } 实验三 外中断实验 一.实验目的及实验环境 1.实验目的 学习LPC 系列ARM7 微控制器的向量中断控制器及外中断的应用技术。 2.实验环境 l 硬件: PC机 一台 LPC2131教学实验开发平台 一套 l 软件:Windows 98/XP/ 系统,ADS1.2集成开发环境。 二.实验内容 主程序闪烁LED,EINT使能/停止 BEEP的鸣响。 三.方案设计 ① 跳线LED1、Key1和Beep分别连接到P1.18、P0.16和P0.7管脚;使用KEY1模拟外中断; ② 启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立一个工程TimeEINT_C。 ③ 在user 组中的main.c 中编写主程序代码;使用系统宏IRQEnable(),使能IRQ 中断。 ④ 装载并使能外中断; ⑤ 选用DebugInExram 生成目标,然后编译连接工程。 ⑥ 选择【Project】->【Debug】,启动AXD 进行JTAG 仿真调试。 ⑦ 全速运行程序,LED闪烁; ⑧ 每一次按键Key,蜂鸣器就会转换静音或鸣响状态。 四.测试数据及运行结果 五.总结 1.实验过程中遇到的问题及解决办法; 实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中断了,加上VICIntEnable = 1<<0x0e代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。 经过本次实验,我复习了中断的有关知识,了解了LPC 向量中断控制器VIC的工作原理与编程细节,掌握了外中断技术的基本使用与编程。对于LPC 系列ARM7 微控制器的向量中断控制器及外中断的应用技术有了更加深刻的认识。 六.附录:源代码(电子版) #include "config.h" #define BEEPCON 1<<7 // P0.7 引脚控制Beep,低电平蜂鸣 #define LED1 1<<18 // P1.18 引脚控制LED1,低电灯亮 void DelayNS(uint32 dly) { uint32 i; for(; dly>0; dly--) { for(i=0; i<5000; i++); } } void __irq IRQ_Eint0(void) { if ((IO0SET & BEEPCON) == 0 ) // 反转BEEPCON管教输出状态 IO0SET = BEEPCON; else IO0CLR = BEEPCON; while ( (EXTINT &0x01) != 0 ) EXTINT = 0x01; // 清除EINT0中断标志 VICVectAddr = 0x00; // 通知VIC 中断处理结束 } int main(void) { int x; PINSEL0 = 0x00000000; // 设置管脚连接GPIO PINSEL1 = 0x00000001; // 设置管脚P0.16为 EINT0 IO0DIR = BEEPCON; // 设置 P0.7 为输出 IO1DIR = LED1; // 设置 P1.18 为输出 EXTMODE = 0x00; IRQEnable(); VICDefVectAddr = (int)IRQ_Eint0; // 设置 EINT0 为非向量IRQ 中断 EXTINT = 0x01; // 清除 EINT0 中断标志 VICIntEnable = 1<<0x0e; // 使能 EINT0 中断 while(1) // 等待EINT0中断 { if (x!=0) { IO1SET = LED1; x = 0; } else { IO1CLR = LED1; x = 1; } DelayNS(100); } return(0); } 实验四 定时器中断实验 一.实验目的及实验环境 1.实验目的 熟悉LPC 系列ARM7 微控制器的定时器0的基本设置及定时中断应用 2.实验环境 l 硬件: PC机 一台 LPC2131教学实验开发平台 一套 l 软件:Windows 98/XP/ 系统,ADS1.2集成开发环境。 二.实验内容 使用定时器0 实现1 秒定时,控制蜂鸣器蜂鸣。采用中断方式实现定时控制。 备注:EasyARM2131实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量 Fpclk = 11059200 。 三.方案设计 ① 启动ADS 1.2,使用ARM Executable Image for lpc2131工程模板建立 一个工程 TimeOut_C。 ② 在user 组中的main.c 中编写主程序代码。 ③ 主程序中使用IRQEnable( )使能IRQ 中断。 ④ 选用DebugInExram 生成目标,然后编译连接工程。 ⑤ 将LPC2131实验板上的Beep跳线短接到P0.7。 ⑥ 选择【Project】->【Debug】,启动AXD 进行JTAG 仿真调试。 ⑦ 全速运行程序,蜂鸣器会响一秒,停一秒,然后再响一秒……依次循环。 四.测试数据及运行结果 五.总结 1.实验过程中遇到的问题及解决办法; 运行本次实验时,蜂鸣器一直在响,并不像预期的那样响一秒,停一秒,然后再响一秒····依次循环。我检查了好久都没有发现问题,最后请教老师,才知道原来是我将定时时间设置得太小了,导致每次的时间间隔太短,蜂鸣器鸣响与停止之间转换太快,才会出现蜂鸣器一直鸣响的假状态。我也意识到在实验中,细节很重要,不容忽视。 2. 对设计及调试过程的心得体会。 经过本次实验,我了解了LPC 定时器的工作原理与控制方面的知识,复习了向量中断控制器,而且掌握了LPC 系列ARM7 微控制器定时器0的基本设置及定时中断技术的应用,能够使用定时器进行一些比较简单的实验。本次实验,我的收获很大。 六.附录:源代码(电子版) #include "config.h" #define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */ void __irq IRQ_Timer0 (void) { if ((IO0SET & BEEP) == 0) IO0SET = BEEP; /* 关闭BEEP */ else IO0CLR = BEEP; T0IR = 0x01; /* 清除中断标志 */ VICVectAddr = 0x00; /* 通知VIC中断处理结束 */ } int main (void) { PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */ IO0DIR = BEEP; /* 设置BEEP控制口输出 */ IRQEnable(); /* IRQ中断使能 */ /* 定时器0初始化 */ T0TC = 0; /* 定时器设置为0 */ T0PR = 0; /* 时钟不分频 */ T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志*/ T0MR0 = Fpclk; /* 1秒钟定时;系统中已定义Fpclk = 11059200 */ T0TCR = 0x01; /* 启动定时器 */ /* 设置定时器0中断IRQ */ VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */ VICVectCntl0 = 0x20 | 0x04;/*设置定时器0中断通道分配最高优先级*/ VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */ VICIntEnable = 1 << 0x04; /* 使能定时器0中断 */ while (1); return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 远程教育/电大

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服