当前位置:文档之家› 西安邮电大学嵌入式实验报告

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

西安邮电大学(计算机学院)课内实验报告实验名称:嵌入式系统原理与应用<A>专业名称:软件工程班级:1101班学生姓名:学号(8位):指导教师:李宥谋实验日期:2013年12月25日实验一流水灯实验一.实验目的及实验环境1.实验目的●熟悉LPC2000系列ARM7微控制器的GPIO输出控制。

2.实验环境●硬件:PC机一台LPC2131教学实验开发平台一套●软件:Windows 98/XP/2000系统,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]跳线短接。

⑤选择Project->Debug,启动AXD进行JTAG仿真调试。

⑥全速运行程序,程序将会在main.c的主函数中停止。

⑦单击Context Variable图标按钮(或者选择ProcessorViews->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。

选择System Views->Debugger Internals 即可打开LPC2000系列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连接KEY1const 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] 用作GPIOPINSEL1 = 0x00; // P0[31:16] 用作GPIOPINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIOIO1DIR = 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.实验目的●掌握LPC2131工程模板的使用。

●掌握EasyJTAG仿真器的安装和使用。

●能够在EasyARM教学实验开发平台上运行第一个程序。

●熟悉LPC2000系列ARM7微控制器的GPIO控制。

2.实验环境●硬件:PC机一台LPC2131教学实验开发平台一套●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。

二.实验内容P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。

三.方案设计①启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BeepCon_C。

②在user组里编写主程序代码main.c。

③选用DebugInRam生成目标,然后编译链接工程。

④将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接。

⑤选择Project->Debug,启动AXD进行JTAG仿真调试。

⑥全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。

⑦单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。

选择System Views->Debugger Internals 即可打开LPC2000系列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 = 1DelayNS(200);IO0CLR = BEEPCON; // BEEPCON = 0DelayNS(200);}return(0);}实验三外中断实验一.实验目的及实验环境1.实验目的学习LPC2000 系列ARM7 微控制器的向量中断控制器及外中断的应用技术。

2.实验环境硬件:PC机一台LPC2131教学实验开发平台一套软件:Windows 98/XP/2000系统,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. 对设计及调试过程的心得体会。

通过本次实验,我复习了中断的有关知识,了解了LPC2000 向量中断控制器VIC的工作原理与编程细节,掌握了外中断技术的基本使用与编程。

对于LPC2000 系列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;elseIO0CLR = BEEPCON;while ( (EXTINT &0x01) != 0 )EXTINT = 0x01; // 清除EINT0中断标志VICVectAddr = 0x00; // 通知VIC 中断处理结束}int main(void){int x;PINSEL0 = 0x00000000; // 设置管脚连接GPIOPINSEL1 = 0x00000001; // 设置管脚P0.16为EINT0IO0DIR = 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.实验目的熟悉LPC2000 系列ARM7 微控制器的定时器0的基本设置及定时中断应用2.实验环境●硬件:PC机一台LPC2131教学实验开发平台一套●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。

相关主题