2023年西安邮电大学嵌入式实验报告_第1页
2023年西安邮电大学嵌入式实验报告_第2页
2023年西安邮电大学嵌入式实验报告_第3页
2023年西安邮电大学嵌入式实验报告_第4页
2023年西安邮电大学嵌入式实验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安邮电大学(计算机学院)课内实验报告实验名称:嵌入式系统原理与应用<A>专业名称:软件工程班级:1101班学生姓名:学号(8位):指导教师:李宥谋实验日期:2023年12月25日实验一流水灯实验实验目的及实验环境实验目的熟悉LPC2023系列ARM7微控制器的GPIO输出控制。实验环境硬件: PC机一台LPC2131教学实验开发平台一套软件:Windows98/XP/2023系统,ADS1.2集成开发环境。实验内容使用GPIO口控制8个LED流水灯显示。方案设计①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131 工程模板建立一个工程LedDisp_C。②在user组里编写主程序代码main.c。③选用DebugInRam生成目的,然后编译链接工程。④将EasyARM教学实验开发平台上的P1.[18:25]管脚相应与LED[1:8]跳线 短接。⑤选择Project->Debug,启动AXD进行JTAG仿真调试。⑥全速运营程序,程序将会在main.c的主函数中停止。⑦单击ContextVariable图标按钮(或者选择Processor Views->Variables)打开变量观测窗口,通过此窗口可以观测局部变量 和全局变量。选择SystemViews->DebuggerInternals即可打开 LPC2023系列ARM7微控制器的片内外寄存器窗口。⑧可以单步运营程序,可以设立/取消断点;或者全速运营程序,停止程 序运营,观测变量的值,判断LED1~LED8控制是否对的。测试数据及运营结果五.总结1.实验过程中碰到的问题及解决办法;由于本次实验较简朴,且我们之前学习的微机原理课程也进行了流水灯的设计实验,所以对于本次实验,我完毕地很顺利,在实验中没有碰到问题。对设计及调试过程的心得体会。本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,设计过程也相对简朴,其重要目的是让我们熟悉一下实验环境,并且能在实验环境下进行简朴的实验操作,为之后的实验打下坚实的基础。附录:源代码(电子版)#include"config.h"constuint32LEDS8=0xFF<<18;//P1[25:18]控制LED1~LED8,低电平点亮constuint32KEY=1<<16; //P0.16连接KEY1constuint32DISP_TAB[10]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff,0xff};constuint32DISP_TAB2[10]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xff,0xff};voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--){for(i=0;i<5000;i++);}}intmain(void){uint8i; 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教学实验开发平台上运营第一个程序。熟悉LPC2023系列ARM7微控制器的GPIO控制。2.实验环境硬件: PC机一台LPC2131教学实验开发平台一套软件:Windows98/XP/2023系统,ADS1.2集成开发环境。二.实验内容P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。三.方案设计①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131 工程模板建立一个工程BeepCon_C。②在user组里编写主程序代码main.c。③选用DebugInRam生成目的,然后编译链接工程。④将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接。⑤选择Project->Debug,启动AXD进行JTAG仿真调试。⑥全速运营程序,程序将会在main.c的主函数中停止(由于main函数起 始处默认设立有断点)。⑦单击ContextVariable图标按钮(或者选择ProcessorViews->Variables) 打开变量观测窗口,通过此窗口可以观测局部变量和全局变量。选择 SystemViews->DebuggerInternals即可打开LPC2023系列ARM7微控制 器的片内外寄存器窗口。⑧可以单步运营程序,可以设立/取消断点;或者全速运营程序,停止程序 运营,观测变量的值,判断蜂鸣器控制是否对的。四.测试数据及运营结果五.总结1.实验过程中碰到的问题及解决办法;本次实验刚开始时,刚把板子接到电脑上,什么操作都还没进行,蜂鸣器就开始响了,并且停不下来,我也不知道是什么问题,之前历来没碰到过,最后不得不将老师请过来。本来是之前板子里嵌入的程序没有运营完,所以才会出现这种情况,只要将板子里的程序清干净就可以了。对设计及调试过程的心得体会。本次实验设计过程相较于之前的流水灯实验稍微复杂一些,但我并没有胆怯,而是反复实验,最终将程序调试成功。通过本次实验,我觉得在实验过程中坚持很重要,无论实验中碰到了什么问题,都不能容易放弃,一定要克服阻碍,继续向前。六.附录:源代码(电子版)#include"config.h"#defineBEEPCON1<<7 //P0.7引脚控制Beep,低电平蜂鸣voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--){for(i=0;i<5000;i++);}}intmain(void){PINSEL0=0x00000000;//设立管脚连接GPIOIO0DIR=BEEPCON; //设立I/O为输出while(1) {IO0SET=BEEPCON; //BEEPCON=1DelayNS(200);IO0CLR=BEEPCON; //BEEPCON=0DelayNS(200);}return(0);}实验三外中断实验一.实验目的及实验环境1.实验目的学习LPC2023系列ARM7微控制器的向量中断控制器及外中断的应用技术。2.实验环境硬件: PC机一台LPC2131教学实验开发平台一套软件:Windows98/XP/2023系统,ADS1.2集成开发环境。二.实验内容主程序闪烁LED,EINT使能/停止BEEP的鸣响。三.方案设计跳线LED1、Key1和Beep分别连接到P1.18、P0.16和P0.7管脚;使用KEY1模拟外中断;启动ADS1.2,使用ARMExecutableImageforlpc2131工程模板建立一个工程TimeEINT_C。在user组中的main.c中编写主程序代码;使用系统宏IRQEnable(),使能IRQ中断。装载并使能外中断;选用DebugInExram生成目的,然后编译连接工程。选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。全速运营程序,LED闪烁;每一次按键Key,蜂鸣器就会转换静音或鸣响状态。四.测试数据及运营结果五.总结1.实验过程中碰到的问题及解决办法;实验第一次运营时,蜂鸣器一直处在鸣响状态,及时按了按键,蜂鸣器还是一直鸣叫,不产生外中断。后来仔细检查了程序,发现本来是忘掉使能EINT0中断了,加上VICIntEnable=1<<0x0e代码,程序就能正常运营了。2.对设计及调试过程的心得体会。通过本次实验,我复习了中断的有关知识,了解了LPC2023向量中断控制器VIC的工作原理与编程细节,掌握了外中断技术的基本使用与编程。对于LPC2023系列ARM7微控制器的向量中断控制器及外中断的应用技术有了更加深刻的结识。六.附录:源代码(电子版)#include"config.h"#defineBEEPCON1<<7 //P0.7引脚控制Beep,低电平蜂鸣#defineLED11<<18 //P1.18引脚控制LED1,低电灯亮voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--){for(i=0;i<5000;i++);}}void__irqIRQ_Eint0(void){ if((IO0SET&BEEPCON)==0)//反转BEEPCON管教输出状态 IO0SET=BEEPCON; else IO0CLR=BEEPCON; while((EXTINT&0x01)!=0) EXTINT=0x01; //清除EINT0中断标志 VICVectAddr=0x00; //告知VIC中断解决结束}intmain(void){ intx; 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.实验目的熟悉LPC2023系列ARM7微控制器的定期器0的基本设立及定期中断应用2.实验环境硬件: PC机一台LPC2131教学实验开发平台一套软件:Windows98/XP/2023系统,ADS1.2集成开发环境。二.实验内容使用定期器0实现1秒定期,控制蜂鸣器蜂鸣。采用中断方式实现定期控制。备注:EasyARM2131实验板上的系统时钟默认为11.0592MHz;系统中已定义了符号常量Fpclk=11059200。三.方案设计=1\*GB3①启动ADS1.2,使用ARMExecutableImageforlpc2131工程模板建立 一个工程TimeOut_C。=2\*GB3②在user组中的main.c中编写主程序代码。=3\*GB3③主程序中使用IRQEnable()使能IRQ中断。=4\*GB3④选用DebugInExram生成目的,然后编译连接工程。=5\*GB3⑤将LPC2131实验板上的Beep跳线短接到P0.7。=6\*GB3⑥选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。=7\*GB3⑦全速运营程序,蜂鸣器会响一秒,停一秒,然后再响一秒……依次循环。四.测试数据及运营结果五.总结1.实验过程中碰到的问题及解决办法;运营本次实验时,蜂鸣器一直在响,并不像预期的那样响一秒,停一秒,然后再响一秒····依次循环。我检查了好久都没有发现问题,最后请教老师,才知道本来是我将定期时间设立得太小了,导致每次的时间间隔太短,蜂鸣器鸣响与停止之间转换太快,才会出现蜂鸣器一直鸣响的假状态。我也意识到在实验中,细节很重要,不容忽视。2.对设计及调试过程的心得体会。通过本次实验,我了解了LPC2023定期器的工作原理与控制方面的知识,复习了向量中断控制器,并且掌握了LPC2023系列ARM7微控制器定期器0的基本设立及定期中断技术的应用,可以使用定期器进行一些比较简朴的实验。本次实验,我的收获很大。六.附录:源代码(电子版)#include"config.h"#defineBEEP1<<7 /*P0.7控制BEEP,低电平蜂鸣 */void__irqIRQ_Timer0(void){ if((IO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论