实验指导书1 GPIO输入输出控制实验
《嵌入式系统原理与应用》实验报告01-GPIO输出控制实验
硬件:PC机;
软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
3、实验内容与步骤
实验内容:
LPC2138外接3个按键,4个LED灯,实现不同流水灯的效果。
4、实验结果与数据处理
1.实验连接图
图1 实验原理图
2.程序代码
#include "config.h"
图3.3:模式3下蓝灯亮起
图3.4:模式3下绿灯亮起
5、分析与讨论
在这一次实验中,我学会了通过教程下载并安装了ADS和Proteus软件,同时根据录播,一步一步地熟悉两个软件的时候,同时也完成了利用仿真实验模拟了GPIO输出控制。初步掌握并理解了Proteus仿真软件的使用,对ARM7有了进一步的了解,为之后的学习打下了基础。
}
void LED_3(void)
{
IO0SET = 0x0001;
delay(1000);
IO0CLR = 0x0001;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0008;
delay(1000);
IO0CLR = 0x0008;
delay(1000);
IO0CLR = 0x0008;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0200;
delay(1000);
IO0CLR = 0x0200;
}
void LED_2(void)
{
IO0SET = 0x0200;
GPIO输入、输出控制实验代码
1.2.10_GPIO OUT1
2.2.11_GPIO OUT2
3.2.12_GPIO INPUT
4.输入输出综合实验(查询方式,1S由软件延时控制):
要求:每按一次KEY1键,同时要求LED1~LED8循环点亮。
1)初始状态或按下KEY1键(松开后保持),只点亮一只LED灯,每隔1秒右循环显示,移到LED8后回到LED1。
*名称:DelayNS()
*功能:长软件延时
*入口参数:dly延时参数,值越大,延时越久
*出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
#define LED2 1<<17// P2.17
#define LED31<<18// P2.18
#define LED41<<19// P2.19
#define LED51<<20 // P2.20
#define LED61<<21// P2.21
#define LED71<<22// P2.22
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
void readKey()
{
while((IOPIN&KEY)==0)
{
while((IOPIN&KEY)==0);
实验1GPIO控制实验
实验1 GPIO控制实验1.1 实验目的¾了解S3C2440的GPIO的分组和特点¾了解S3C2440的GPIO的工作模式和寄存器配置方法¾了解S3C2440的GPIO硬件连接原理¾掌握S3C2440的GPIO的使用方法1.2 实验内容¾使用C语言配置GPIO口的相应寄存器¾编写C语言程序,通过GPIO有规律的输出高低电平来控制一组LED的亮灭1.3 实验设备¾PC机¾TE2440开发板(配套5V,2A直流电源)¾ULINK2仿真器(配套USB线)¾交叉串口线1.4 实验原理1 GPIO介绍GPIO(General-Purpose IO ports),通用的IO端口。
一般的微处理器芯片都提供通用的可编程IO端口,用户可以通过配置寄存器将其配置成输入、输出或者其他特殊功能模式。
通用IO端口一般都可以实现按位操作,即用户可以针对IO端口的每一位(以下简称IO位)进行操作。
S3C2440有130个多功能复用的IO端口,分为端口A~J,共9组,如下所示。
z端口A(GPA),23位输出口z端口B(GPB),11位输入/输出口z端口C(GPC),16位输入/输出口z端口D(GPD),16位输入/输出口z端口E(GPE),16位输入/输出口z端口F(GPF),8位输入/输出口z端口G(GPG),16位输入/输出口z端口H(GPH),11位输入/输出口z端口J(GPJ),13位输入/输出口其中,GPA只能用作输出口或者其他特殊功能,GPB-GPJ可以用作输入、输出或者其他特殊功能。
所有IO端口都有相应的配置寄存器,包括端口控制寄存器、端口数据寄存器和端口上拉寄存器,在程序运行之前必须对每个用到的IO端口进行配置。
¾端口控制寄存器S3C2440的端口控制寄存器分别为GPACON-GPJCON。
解读:GPACON寄存器中的每一位对应GPA端口的每一个IO位(对应一个引脚),当某位被设为0时,相应引脚为输出引脚,此时可以向GPA 端口写入数据来让对应的引脚输出高低电平。
实验01-STM32F103-GPIO输入输出实验
最大输出速度为 10MHz
10
最大输出速度为 2MHz
11
最大输出速度为 50MHz
六、实验现象
把程序下载到神州Ⅱ号 STM32 开发板后,可以根据实验设计看到四个 LED(LD1-4) 单独或者轮流闪亮,实现流水灯的效果。
七、实验报告书写要求
说明:实验报告均按以下格式书写
1) 绘制程序流程图。 2) 写出程序清单。 3) 给出实验中用到的数据和实验结果。 4) 通过实验,分析你的收获、不足、问题。
三、实验电路原理图及其说明
在神州Ⅱ号 STM32 开发板中,一共有 5 个 LED 指示灯,其中一个是电源指示灯 LD5,其他的 4 个 LED (LD1、LD2、LD3 和 LD4)由 GPIO-PD 控制,4 个 LED 分别串了 470K Ω的电阻,起限流作用防止电流过大损坏 LED 和 GPIO 口。电路原理图如图 1 所示。
口可以自由编程,单 IO 口寄存器必须要按 32 位字被访问。STM32 的很多 IO 口都是 5V
兼容的,这些 IO 口在与 5V 电平的外设连接的时候很有优势。
STM32 的每个 IO 端口都有 7 个寄存器来控制:配置模式的 2 个 32 位的端口配置寄
存器 CRL 和 CRH、2 个 32 位的数据寄存器 IDR 和 ODR、1 个 32 位的置位/复位寄存器 BSRR、
五、实验原理
流水灯的关键实际上就是如何控制 STM32 处理器的 GPIO 接口,作为 IO 口,输出指 定的电平信号。
STM32 的 IO 口可以由软件配置成 8 种模式:模拟输入、输入悬空、输入下拉、输入
2
山东科技大学《微控制器原理》实验指导书
STM32F103-GPIO 基本输入输出实验
gpio实验报告
gpio实验报告GPIO实验报告引言:GPIO(General Purpose Input/Output)是通用输入/输出引脚的简称,是一种常用的数字接口技术。
在嵌入式系统和电子设计中,GPIO被广泛应用于与外部设备进行数据交互的过程中。
本实验报告将介绍GPIO的原理、应用以及实验过程和结果。
一、GPIO的原理和应用1.1 GPIO的原理GPIO是一种数字接口技术,通过控制电压的高低来实现数据输入和输出。
在嵌入式系统中,GPIO通常由微控制器或单片机提供,可以通过编程来控制GPIO 的状态。
GPIO引脚通常具有输入和输出两种模式,可以根据需要进行配置。
1.2 GPIO的应用GPIO在嵌入式系统和电子设计中有广泛的应用。
例如,可以使用GPIO将传感器的数据输入到微控制器,实现数据采集和处理;同时,也可以使用GPIO将微控制器的计算结果输出到执行器,实现控制功能。
此外,GPIO还可以用于控制LED灯、蜂鸣器等外部设备,实现各种交互效果。
二、实验过程和结果2.1 实验准备在进行GPIO实验之前,我们需要准备以下材料:- 一块可编程的嵌入式开发板- 杜邦线- LED灯- 电阻2.2 实验步骤1. 将LED灯的长脚连接到开发板的GPIO引脚上,短脚连接到电阻上,再将电阻的另一端连接到开发板的地线上。
2. 打开开发板的开发环境,创建一个新的项目。
3. 在项目中编写代码,配置GPIO引脚为输出模式。
4. 在代码中控制GPIO引脚的电平,使LED灯点亮。
5. 将代码下载到开发板上,观察LED灯是否亮起。
2.3 实验结果经过实验,我们成功地控制了GPIO引脚,使LED灯点亮。
这验证了GPIO的工作原理和应用。
三、实验总结通过本次实验,我们了解了GPIO的原理和应用,并成功地进行了实验验证。
GPIO作为一种常用的数字接口技术,在嵌入式系统和电子设计中具有重要的作用。
掌握GPIO的使用方法,可以实现与外部设备的数据交互和控制功能。
GPIO的使用实验报告
GPIO的使用实验报告本实验报告以“GPIO的使用”为主题,介绍了GPIO的基本概念、使用方法和在实际应用中的一些案例。
报告总共分为四个部分:介绍部分、实验原理、实验过程和实验结果分析。
一、介绍部分GPIO是General Purpose Input/Output的简称,中文名称为通用输入输出。
它是处理器芯片与外部电路之间的一个接口,可以通过编程来控制和读取电平状态。
通常情况下,GPIO的引脚既可以作为输入引脚,也可以作为输出引脚。
二、实验原理三、实验过程1. 设置GPIO引脚模式:在Python中,可以使用RPi.GPIO库来控制GPIO引脚。
首先需要导入RPi.GPIO库,然后使用GPIO.setmode(GPIO.BCM)来设置编码方式为BCM。
接着可以使用GPIO.setup(函数来设置引脚的输入/输出模式。
例如,GPIO.setup(17, GPIO.OUT)将引脚17设置为输出模式。
2. 控制输出引脚:使用GPIO.output(函数可以控制引脚的电平状态。
例如,GPIO.output(17, GPIO.HIGH)将引脚17设置为高电平,GPIO.output(17, GPIO.LOW)将引脚17设置为低电平。
3. 读取输入引脚:使用GPIO.input(函数可以读取引脚的电平状态。
例如,state = GPIO.input(17)将引脚17的电平状态赋值给变量state。
四、实验结果分析在实验中,我们先将引脚设置为输出模式,然后控制引脚输出高低电平,观察LED等外部设备的亮灭情况。
接着将引脚设置为输入模式,读取引脚的电平状态,判断外部设备的开关状态。
通过这些操作,我们可以了解到GPIO的基本使用方法和在实际应用中的一些场景。
总结:本次实验通过树莓派和GPIO库控制了GPIO引脚的输入和输出。
实验结果表明,我们可以通过编程实现对GPIO引脚的控制,进而控制外部设备的工作状态,实现了与外部电路的交互。
1_GPIO输出控制实验
将程序固化到片外NOR Flash(TE28F128J3芯片),脱机 运行程序。
广州致远电子有限公司
MagicARM270教学实验开发平台
MagicARM270教学实验开发平台
5.实验原理
GPDRx寄存器是来设置I/O为输出或输入模式,设置值 为1的位对应的I/O为输出模式,为0的位对应的I/O为 输入模式。当I/O设置为GPIO输出模式(Output模式)时, 可以通过写GPCRx控制相应I/O口输出低电平(写1的位 有效),或者写GPSRx控制相应I/O口输出高电平(写1的 位有效)。
广州致远电子有限公司
MagicARM270教学实验开发平台
6.实验步骤
(5) 选用DebugInFLASH生成目标,并设置生成flash.bin 文件,然后编译链接工程。
广州致远电子有限公司
MagicARM270教学实验开发平台
6.实验步骤
(6) 使 用 JFlashMM 软 件 将 flash.bin 烧 写 到 片 外 NOR FLASH,操作方法请参考<<MagicARM270实验理论指导 书>>第5章“ADS集成开发环境应用及JTAG烧写方法” 的说明。 (7)将MagicARM270实验箱上SW1的开关3拔到“LED”端 (即开关断开),将SW1的开关4拔到“BEEPC”端(即开 关连接),然后按RST键复位系统。 (8)观察程序是否能脱机运行,观察蜂鸣器及LED1~ LED4的控制是否正确。
广州致远电子有限公司
MagicARM270教学实验开发平台
GPIO的使用实验报告
实验二通用GPIO的使用(4学时)
一、实验目的
1、掌握C51芯片I/O接口的性能特点。
2、掌握STM32芯片I/O接口的性能特点。
3、对于C51芯片,使用P0、P1口做I/O接口,实现输入和
输出控制。
4、对于STM32芯片掌握GPIO的功能设定方法,使用
GPIO完成输入与输出的电路驱动
二、实验内容
1. P1口做为输出口控制“单只数码管循环显示0~9”。
2. 编写一段程序,并修改硬件电路,用P1.0-P1.6口控制
LED,P1.7控制LED的亮与灭(P1.7接按键,按下时LED 亮,不按时LED灭)。
3、用STM32芯片I/O接口实现流水灯的控制。
三、思考题
1、为什么P0作为I/O接口时,要接上拉电阻?
答:因为P0口作为I/O接口时内部是漏极开路型。
2、在实验内容2中,如果P0某个管脚接按键,该如何修改硬件和软件?
3、设计一单片机控制电路,用八只开关分别控制八只LED 的亮灭。
四、实验结果分析
对于问题2
四、结论
这次对单片机GPIO口的实验,我们分别做了51单片机和STM32f103r6对GPIO端口的应用,再通过protues的仿真验证,证明我们的思路是正确的。
由于在这次实验中没有吧protues8.6版本安装好,导致实验过程中出现了了一些延误,没能按照老师课堂的进度,但在实验课过后过后,及时复习和查资料,解决了这个问题。
实验过程中不足的有,对于实验仍处于生搬硬套的阶段,无法将老师理论课所讲与实验结合在一起,对于写代码的能力有待提高。
实验01-STM32F103-GPIO输入输出实验
STM32F103-GPIO 基本输入输出实验
实验 01 STM32F103-GPIO 基本输入输出实验
一、实验目的
学习 STM32F103VCT6 单片机的通用 GPIO 的基本输出输入功能,主要了解 STM32 的 GPIO 的原理和应用。
二、实验设备
1) 装有 RV MDK 仿真软件的 Pentium 以上的计算机一套; 2) J-Link-ARM V8 仿真器一套; 3) STM32F103VCT 的神舟 II 号开发板一套。
/* Private function prototypes -----------------------------------------------*/
void Delay(vu32 nCount);
void Turn_On_LED(u8 LED_NUM);
/* Private functions ---------------------------------------------------------*/
case 2: GPIO_SetBits(GPIO_LED,LD3_PIN); break; /*点亮 LD3 灯*/
4
山东科技大学《微控制器原理》实验指导书
STM32F103-GPIO 基本输入输出实验
case 3: GPIO_SetBits(GPIO_LED,LD4_PIN); break; /*点亮 LD4 灯*/
4 GPIOD GPIO_Pin_8
/*神舟 II 号 LED 数量*/ /*LED 使用的 GPIO 组*/ /*LD1 使用的 GPIO 管脚*/
#define LD2_PIN #define LD3_PIN #define LD4_PIN
IO口输入、输出实验
实验一I/O口输入、输出实验2010.04.20一、实验目的:了解LED二极管的工作原理。
掌握LED二极管亮灭左右移的编程方法。
二、实验原理:八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮。
我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
表1三、实验电路原理图四、程序框图实验程序:START: MOV ACC,#0FEH ;ACC中先装入LED1亮的数据(二进制的11111110)MOV P1,ACC ;将ACC的数据送P1口MOV R0,#7LOOP1: RL A ;将ACC中的数据左移一位MOV P1,A ;把ACC左移后的数据送p1口显示ACALL DELAY ;调用延时子程序DJNZ R0,LOOP1 ;没有移动够7次继续移动MOV R1,#7LOOP2: RR A ;将ACC中的数据右移一位MOV P1,A ;把ACC右移后的数据送p1口显示ACALL DELAYDJNZ R1,LOOP2AJMP START ;移动完7次后跳到开始重来,以达到循环流动效果;----- 延时子程序 -----DELAY: MOV R2,#255D1: MOV R3,#255DJNZ R3,$DJNZ R2,D1RET ;延时子程序结束,返回到调用处的下一句END ;程序结束实验现象:实验实现了单一灯的左移右移。
开始时P1.0口的LED点亮,然后P1.1→P1.2→P1.3→┅→P1.7的LED依次点亮,实现了右移。
当P1.7的LED点亮后,P1.6→P1.5→P1.4→┅→P1.0口的LED又依次点亮,实现了左移。
然后循环,从而实现灯的循环左右移。
实验结论:通过单片机对P1口赋值,然后利用移位RL和RR指令使相应的LED点亮,可以实现灯的左右移。
单片机实验一输入输出端口控制实验
单片机实验一输入输出端口控制实验昆明理工大学信息工程与自动化学院学生实验报告(2014 —2015 学年第2 学期)课程名称:嵌入式技术开课实验室:信自楼402 2015年4月21日一、实验目的1、熟悉μVision的使用方法及工程项目开发过程。
2、掌握C51程序设计方法。
3、掌握89C51单片机I/O的控制方法。
二、实验原理所谓通用I/O,也记为GPIO(General Purpose I/O),即基本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最基本形式。
电源(Vcc)代表高电平,对应数字信号“1”;地(GND)代表低电平,对应数字信号“0”。
作为通用输入引脚,MCU内部程序可以通过端口寄存器读取该引脚,知道该引脚是“1”(高电平)或“0”(低电平),即开关量输入。
作为通用输出引脚,MCU内部程序通过端口寄存器向该引脚输出“1”(高电平)或“0”(低电平),即开关量输出。
大多数通用I/O引脚可以通过编程来设定工作方式为输入或输出,称之为双向通用I/O。
1、上拉下拉电阻与输入引脚的基本接法芯片输入引脚的外部有三种不同的连接方式:带上拉电阻的连接、带下拉电阻的连接和“悬空”连接。
通俗地说,若MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”。
与之相对应,若MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。
这种做法使得,悬空的芯片引脚被上拉电阻或下拉电阻初 1 始化为高电平或低电平。
根据实际情况,上拉电阻与下拉电阻可以取值在1KΩ~10KΩ之间,其阻值大小与静态电流及系统功耗相关。
图1给出了一个MCU的输入引脚的三种外部连接方式,假设MCU内部没有上拉或下拉电阻,图中的引脚I3上的开关K3采用悬空方式连接就不合适,因为K3断开时,引脚I3的电平不确定。
在图1中,R1>>R2,R3<<R4,各电阻的典型取值为:R1=20K,R2=1K,R3=10K,R4=200K。
实验1输入输出实验
实验1 输入输出实验一、实验目的1. 掌握ARM的通用输入输出接口工作原理。
2. 学习编程实现GPIO的方法,掌握I/0的功能复用,并能熟练的配置。
二、实验内容1. 通过按键输入开关量。
2. 在实验箱的主板上点亮LED灯LED1、LED2和LED3(分别接GPC5、GPC6和GPC7),并轮流闪烁。
三、预备知识1. 用EW ARM集成开发环境,编写和调试程序的基本过程。
2. ARM应用程序的框架结构。
3. 了解GPIO。
四、实验设备及工具硬件:ARM嵌入式开发平台,PC机,JTAG仿真器。
软件:操作系统WindowsXP/7,EWARM集成开发环境,仿真器驱动程序,超级终端通讯程序。
五、实验原理及说明编写程序,当用户在实验箱上按下“INTKEY”键时,在中断服务子程序中将相关信息打印到串口中,并显示在超级终端上。
1. 上拉电阻和下拉电阻上拉就是将不确定的信号通过一个电阻箝位在高电平,电阻同时起限流作用,下拉同理;上拉是对器件注入电流,下拉是输出电流。
1)一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
2)数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定。
3)I/O端口驱动有的可以设置,有的不可以设置,有的是内置,有的是需要外接。
I/O 端口的输出通过一个电阻和电源连接在一起的时候,该电阻成为上拉电阻,也就是说,如果该端口正常时为高电平。
通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平。
当一个接有上拉电阻的端口设为输入状态时,它的常态就为高电平,用于检测低电平的输入。
4)上拉电阻是用来解决总线驱动能力不足时提供电流的,是拉电流;下拉电阻是用来吸收电流的,也就是我们通常所说的灌电流。
5)接电组就是为了防止输入端悬空。
实验一 GPIO 口控制实验
图 1.8
(5)将开发板上左上角的SW1拨到中间eZ430位置;通过USB线将MSP430F6638开发板上 的J6 端与PC相连。 (6)连接成功后可以在电脑的设备管理器中看到如图 1.9 所示的 MSP430 UART 端口。
(7)单击 Debug 按钮
图 1.9
烧写程序,出现如下调试界面。
(8)单击 Resume 按钮
实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为 机械能。直流电机的结构应由定子和转子两大部分组成。直流电机运行时静止不动的部分称
为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等 组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电进 行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器等组成。 z 直流电机控制原理:
(3)点击 File->New->CCS Project。
图 1.15
图 1.16
(4) 弹出如下对话框,键入项目名称(project name):DC motor,选择硬件类型(device): MSP430x6xx Family->MSP430F6638,在下列文件类型(Project templates and examples)中选择 Empty Project,最后点击 Finish。
图1.3 直流电机模块电路原理图
控制电路使用TI DRV8833 低电压电机驱动芯片,该芯片为玩具、打印机及其他机电一
体化应用提供了一款双通道桥式电机驱动器解决方案。它能驱动两个直流电机或一个步进电
机。nSLEEP引脚为高电平时表示使能设备,为低电平时表示进入低功耗睡眠模式。输入端控
嵌入式系统gpio输入输出实验报告
嵌入式系统gpio-输入输出实验报告嵌入式系统GPIO输入输出实验报告一、实验目的本实验旨在深入理解嵌入式系统中GPIO(General Purpose Input/Output)输入输出模块的功能及操作方法,通过实际操作学习GPIO的寄存器配置和使用方法,提高对嵌入式系统硬件的控制能力。
二、实验原理GPIO是一种通用输入输出接口,可以用于连接和控制外部设备。
它通常具有多个引脚,每个引脚都可以独立地配置为输入或输出模式,并可以通过软件控制实现高低电平的输入输出操作。
GPIO模块的主要功能包括:输入输出电平控制、输入输出方向控制、输出数据寄存器、输入数据寄存器等。
三、实验步骤1.硬件连接:连接开发板与PC,通过USB接口进行通信。
确保开发板的电源已经接通,并连接GPIO引脚与PC的串口。
2.开发环境搭建:安装开发板的驱动程序和开发工具,如Keil、JLink等。
3.编程语言选择:本实验采用C语言进行编程操作。
4.GPIO初始化和配置:根据实验要求,使用Keil软件编写代码,对GPIO进行初始化和配置。
具体步骤包括:定义GPIO引脚、设置引脚方向、配置输出数据寄存器等。
5.GPIO输入输出操作:通过Keil软件编写代码,实现GPIO的输入输出操作。
具体步骤包括:读取输入数据、写入输出数据等。
6.程序调试和测试:使用JLink工具对编写的程序进行调试和测试,确保程序的正确性和稳定性。
7.数据记录和分析:记录实验过程中的数据,包括输入输出的电平、时间等,进行分析和处理。
四、实验结果与分析通过本实验的操作,我们成功地实现了GPIO的输入输出操作。
在实验过程中,我们发现GPIO的配置和使用需要注意以下几点:1.GPIO引脚的编号和物理位置无关,因此需要根据实际需求进行选择和配置。
2.GPIO的输入输出方向可以独立设置,输入输出电平也可以通过软件进行控制。
3.在进行GPIO输入输出操作时,需要先对相应的寄存器进行配置,才能实现正确的输入输出。
实验报告1--GPIO输出按键输入实验
班级学号姓名实验日期室温大气压成绩实验题目:GPIO输出实验——按键输入检测实验一、实验目的:1、通过本实验学会ARM7.0软件的安装及掌握对该软件和EasyJTAG仿真器的使用;2、了解EasyARM2131开发板硬件结构,掌握各引脚功能和接线;3、掌握相关实验的程序,并能作出简单的修改并实现其功能;4、掌握GPIO输出实验---按键输入的检测。
二、实验仪器:EasyARM2131开发板一块及相关导线、计算机一台三、实验原理:下面是工程窗口中的图标介绍:如图4.2所示,当P0口连接GPIO且用于输入时,如用于检测按键的时候,由于P0口作GPIO输入时,内部无上拉内阻,所以需要加10K左右的上拉电阻,把I/O口拉到高电平。
当P0口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路如图4.14图4.14 按键输入原理图实验通过跳线JP8连线KEY3_P0.18,程序检测按键KEY3的状态,控制蜂鸣器BEEP的蜂鸣。
在实验中,需要将按键KEY3输入口P0.18设为输入口,而蜂鸣器控制口P0.7设为输出口。
蜂鸣器电路如图1.11所示,当跳线JP6连线蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器蜂鸣。
程序首先设置管脚连线寄存器PINSEL0和PINSEL1,设置P0.7为输出。
然后检测端口P0.18的电平,对P0.7进行相应的控制,流程图如图4.15所示,实现程序见程序清单4.7。
四、实验步骤:1、接好开发板与计算机的相关接线2、打开已安装好的H-JTAG和H-Flasher软件,并在H-Flasher软件中选择Flasher Selation→PHILIPS→LPC2318;然后再选择Programming→check。
操作过程中出现的窗口如下图(1)、(2)所示:图(1)图(2)3、Metrowerks CodeWarrior for ARM Developer Suite v1.2软件,点击File选择Open打开GPIO输出实验——按键输入检测实验文件夹,选择GPIO_Leds8-2.mcp文件,双击main.c ,打开主程序,并运行检查是否出现错误,无误后点击Dubeg按钮;操作过程中的窗口如下图(3)、(4)所示:图(3)图(4)4、出的AXD窗口中选择Options,点击configure target后,在跳出的choose target窗口中点击Ok,点击运行按钮(若点击运行按钮,开发板中的LED不会亮)则在PIO_Leds8-a.mcp窗口中点击Run按钮运行,并观察开发板上出现的现象是否符合实验要求窗口如下图(5)所示:图(5)5、程序清单4.7:按键输入程序如下#include "config.h"const uint32 BEEP = 1 << 7; // P0.7控制蜂鸣器const uint32 KEY1 = 1 << 18; // P0.18连接KEY3/************************************************************ ************************************************ 函数名称:main()** 函数功能:GPIO输入实验测试。
嵌入式系统GPIO 输入输出实验报告
试验四【1 】GPIO 输入试验一.试验目标1.可以或许应用GPIO的输入模式读取开关旌旗灯号.2.控制GPIO相干存放器的用法和设置.3.控制用C说话编写程序控制GPIO.二.试验情况PC机一台ADS 1.2集成开辟情况一套EasyARM2131教授教养试验平台一套三.试验内容1.试验经由过程跳线JP8 衔接,程序检测按键KEY1 的状况,控制蜂鸣器BEEP的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停滞蜂鸣.(调通试验后,改为KEY3键进行输入).2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时后关失落发光管并停滞蜂鸣,然后轮回这一进程直到检测按键没有输入.(键输入改为键KEY4,发光管改为LED6).3.联合试验三,当按下按键Key1时,启动赛马灯程序并控制蜂鸣器响,软件延时后关失落发光管并停滞蜂鸣,然后轮回这一进程直到检测按键再次按下.四.试验道理当P0 口用于GPIO输入时(如按键输入),内部无上拉电阻,须要加上拉电阻,电路图拜见图 4.2.进行GPIO 输入试验时,先要设置IODIR 使接口线成为输入方法,然后读取IOPIN 的值即可.图 4.2按键电路道理图试验经由过程跳线JP8 衔接,程序检测按键KEY1 的状况,控制蜂鸣器BEEP 的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停滞蜂鸣.在这个试验中,须要将按键KEY1 输进口P0.16 设为输进口而蜂鸣器控制口P0.7 设置为输出口.蜂鸣器电路如图 4.3所示,当跳线JP6 衔接蜂鸣器时,P0.7 控制蜂鸣器,低电日常平凡蜂鸣器鸣叫.LED灯电路如图4.4所示,低电日常平凡灯亮.图 4.3蜂鸣器控制电路图 4.4 LED 控制电路程序起首设置管脚衔接存放器PINSEL0 和PINSEL1,设置P0.16 为输入,设置为输出.然后检测端口P0.16 的电平,对进行响应的控制,流程图如图 4.5所示,实现程序见程序清单4.1.图 4.5按键输入试验流程图五、试验步调.源代码及调试成果内容1试验步调① 启动ADS1.2IDE集成开辟情况,选择ARM Executable Image for lpc2131工程模板树立一个工程BEEP_key.② 在user组里编写主程序代码main.c.③ 选用DebugInFLASH生成目标,然后编译链接工程.④ 将EasyARM教授教养试验开辟平台上的响应管脚跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停滞.如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量不雅察窗口,经由过程此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片表里存放器窗口.经由过程变量窗口可以不雅察变量BEEP.KEY1等的值和ARM7微控制器的片表里存放器窗口.如下图所示:⑧ 可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/撤消断点;或者全速运行程序,停滞程序运行,不雅察变量的值,断定蜂鸣器控制是否准确.如下图所示:图4.6未按下Key1时IO0PIN的值图4.7 按下Key1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变成0(F变成E),key1与P,按下Key1时,1变成0,存放器值变更,蜂鸣器响,解释控制是准确的. 现象描写:按下KEY1,蜂鸣器鸣叫,松开后停滞蜂鸣.源代码:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 衔接KEY1(改为KEY3时,只需“const uint32 KEY1 = 1 << 16”改为“const uint32 KEY3 = 1 << 18”,其余不变.)/********************************************************************************************* 函数名称:main()** 函数功效:GPIO 输入试验测试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,松开后停滞蜂鸣.** 跳线解释:把 JP8 的KEY1 跳线短接,JP11 衔接蜂鸣器.*******************************************************************************************/int main (void){ PINSEL0 = 0x00000000; // 所有管脚衔接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出,其余输入while (1){ if ((IO0PIN & KEY1) == 0) IO0CLR = BEEP; // 假如KEY1 按下,蜂鸣器鸣叫else IO0SET = BEEP; // 松开则停滞蜂鸣}return 0;}内容二试验步调① 启动ADS1.2IDE集成开辟情况,选择ARM Executable Image for lpc2131工程模板树立一个工程BEEP_key.② 在user组里编写主程序代码main.c.③ 选用DebugInFLASH生成目标,然后编译链接工程.④ 将EasyARM教授教养试验开辟平台上的响应管脚跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停滞.如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量不雅察窗口,经由过程此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片表里存放器窗口.经由过程变量窗口可以不雅察变量BEEP.KEY1等全局变量.i等当地变量和ARM7微控制器的片表里存放器窗口.如下图所示:左图所示为ARM7微控制器的片内存放器窗口.图4.9 当地变量图4.8 全局变量⑧ 可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/撤消断点;或者全速运行程序,停滞程序运行,不雅察变量的值,断定蜂鸣器控制是否准确.如下图所示:.图未按下KEY1时IO0PIN的值图4.11 按下KEY1后IO0PIN的值比较图4.10和4.11,发明按下KEY1后,IO0PIN存放器的第16位由1变成0;而KEY,当按下时输入低电平,这解释KEY1的控制是准确的.上图所示为运行“IO0CLR = BEEP”后IO0PIN存放器的值,与图4.10比较,发明第8位由1变成0,BEEP对应P,这解释BEEP的控制是对的.现象描写:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 衔接KEY1(改为KEY4按键时,只需把上句代码改为“const uint32 KEY4=1<<19”,其余不变)const uint32 LEDS4= 1 << 21; // P1[21]控制LED4,低电平点亮(改为LED6时,只需把上句代码改为“const uint32 LED6=1<<23”,其余不变.)/***************************************************************************** 函数名称:main()** 函数功效:GPIO 输入试验测试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,松开后停滞蜂鸣.** 跳线解释:把 JP8 的KEY1 跳线短接,JP11 衔接蜂鸣器.********************************************************************************** *********/int main (void){Uint32 i;PINSEL0 = 0x00000000; // 所有管脚衔接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0IO1DIR = LEDS4; // 设置LED4灯亮while (1){ if ((IO0PIN & KEY1) == 0)for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 假如KEY1 按下,蜂鸣器鸣叫IO1DCLR = LEDS4; // 设置LED4灯亮}else{IO0SET = BEEP; // 松开则停滞蜂鸣IO1SET= LEDS4; // 设置LED4灯灭}for(i=0; i<1000; i++); // 软件延时}return 0;}内容三试验步调① 启动ADS1.2IDE集成开辟情况,选择ARM Executable Image for lpc2131工程模板树立一个工程BEEP_key.② 在user组里编写主程序代码main.c.③ 选用DebugInFLASH生成目标,然后编译链接工程.④ 将EasyARM教授教养试验开辟平台上的响应管脚跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停滞.如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量不雅察窗口,经由过程此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片表里存放器窗口.经由过程变量窗口可以不雅察变量BEEP.KEY1等的值和ARM7微控制器的片表里存放器窗口.如下图所示:⑧ 可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/撤消断点;或者全速运行程序,停滞程序运行,不雅察变量的值,断定蜂鸣器控制是否准确.如下图所示:1时IO0PIN的值1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变成0(F变成E),key1与P,按下Key1时,1变成0,存放器值变更,蜂鸣器响,流水灯亮,解释控制是准确的.现象描写:当按下按键KEY1时,蜂鸣器鸣响,流水灯亮;松开后,蜂鸣器静音,流水灯灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY = 1 << 16; // P0.16 衔接KEY1const uint32 LEDS8 = 0xFF << 18; // P1[25:18]控制LED8~LED1,低电平点亮void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<50000; i++);}}/*********************************************************************** ********************** 函数名称:liushuideng()** 函数功效:流水灯显示试验.** 调试解释:衔接跳线 JP12 至LED8~LED1.************************************************************************ *******************//* 流水灯名堂,低电平点亮,留意挪用时刻用了取反操纵 */const uint32 LED_TBL[] ={0x00, 0xFF, // 全体熄灭后,再全体点亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个挨近后离开0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从双方叠加后递减};int liushuideng(void){ uint8 i;PINSEL1 = 0x00000000; // 设置管脚衔接GPIOIO1DIR = LEDS8; // 设置LED 控制口为输出while (1){for (i=0; i<42; i++){ /* 流水灯名堂显示 */IO1SET = ~((LED_TBL[i]) << 18);DelayNS(20);IO1CLR = ((LED_TBL[i]) << 18);DelayNS(20);}}return 0;}//主函数int main(void){uint32 i;PINSEL0 = 0x00000000; // 所有管脚衔接GPIO PINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0while (1){ if ((IO0PIN & KEY) == 0){for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 假如KEY 按下,蜂鸣器鸣叫liushuideng();}}else{IO0SET = BEEP; // 松开则停滞蜂鸣IO1SET= LEDS8;}for(i=0; i<100; i++); // 软件延时}return 0;}六.思虑题1.假如将P0.30设置为GPIO输入模式,且管脚悬空,那么读取P0.30得到的值是0照样1?或者是不肯定?当管脚悬空时,该管脚有可能是高电平也有可能是低电平.读取IO0PIN 的值其实不克不及肯定管教的值.有时管脚是高电平,读取到的不一定是高电平.2.假如须要读取当前P0.7的输出值(不是管脚上的电平),若何实现?将该管脚与一个LED衔接,若LED亮,则输出值为0,不然为1.。
GPIO实验报告
GPIO实验报告一、实验目的1.了解GPIO(通用输入/输出)的基本概念和原理。
2.掌握GPIO的接口配置和使用方法。
3.学会使用GPIO控制外部设备。
二、实验器材1. Raspberry Pi开发板2.杜邦线3.LED灯4.电阻5.面包板三、实验原理GPIO(General Purpose Input/Output)即通用输入/输出,是Raspberry Pi开发板上常用的一种数字接口类型,用于与外部设备进行数据交互。
GPIO接口可以配置为输入或输出模式,通过读取或写入电平状态来完成与外部设备的通信。
四、实验内容1. 连接电路:首先将LED灯连接到Raspberry Pi开发板的GPIO引脚上。
使用杜邦线将LED的正极连接到GPIO引脚,负极连接到开发板的接地引脚。
添加适当的电阻来限制电流。
2. 配置GPIO引脚:在Raspberry Pi上通过编程配置相应的GPIO引脚。
选择要使用的引脚,并将其设置为输出模式。
3. 点亮LED灯:使用编程语言(例如Python)控制GPIO引脚的电平状态,将引脚设置为高电平(3.3V),以点亮LED灯。
4.熄灭LED灯:将GPIO引脚的电平状态设置为低电平(0V),以熄灭LED灯。
五、实验步骤1.使用杜邦线将LED的正极连接到任意一个GPIO引脚(例如GPIO18),将负极连接到开发板的接地引脚。
添加一个适当的电阻。
2. 在Raspberry Pi上打开终端,进入编程环境(例如Python)。
3. 配置GPIO引脚。
在Python环境中,可以使用RPi.GPIO库来配置GPIO引脚。
导入库并设置GPIO引脚为输出模式,代码示例如下:```import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)GPIO.setup(18, GPIO.OUT)```4. 点亮LED灯。
使用GPIO.output(函数将GPIO引脚设置为高电平,代码示例如下:```GPIO.output(18, GPIO.HIGH)```5. 熄灭LED灯。
实验一 IO口输入、输出实验
贵州大学实验报告纸系别电科班级电科091班姓名学号课程名称单片机成绩评定教师签名实验时间2012年 5 月5 日实验一 I/O口输入、输出实验一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
三、实验内容以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。
以P3口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区),八位逻辑电平输出电路原理图参见图1-1。
八位逻辑电平显示电路原理图参见图1-2。
图1-2 八位逻辑电平显示图1-1 八位逻辑电平输出五、实验步骤㈠实验程序编写1、实验程序:;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口),K1;到CPU模块的P3.1口;;用8位数据线连接八位逻辑电平显示模块的JD4B到CPU模块的JD8(P1口。
;//****************************************************************** DIR BIT P3.0ORG 0000HLJMP STARTORG 0100HSTART: Output1: mov a, #0fEH mov r5, #8 loop1:CLR Cmov C,DIR JC Output2 mov P1, arl aAcall Delay djnz r5, loop1 Sjmp Output1 Output2: mov a, #07fH mov r5, #8 loop2:CLR Cmov C,DIR JNC Output1 mov P1, arr aAcall Delay djnz r5,loop2 Sjmp Output2 Delay:mov r6,#0mov r7,#0DelayLoop2:NOPNOPdjnz r7,DelayLoop2djnz r6,DelayLoop1retend2、修改后的程序为:ORG 0000HLJMP STARTORG 0100HSTART:Output1:mov a, #0fEHmov R5, #8loop1:MOV R2,P3CJNE R2,#0FFH,Output2mov P1, arl aAcall Delaydjnz R5, loop1Sjmp Output1Output2:mov R5, #8loop2:MOV R2,P3CJNE R2,#0FEH,Output3 mov P1, arr aAcall Delaydjnz R5,loop2Sjmp Output2Output3:mov a, #0FFHmov R5, #9loop3:MOV R2,P3CJNE R2,#0FDH,Output4 CLR Cmov P1, aRRC aAcall Delaydjnz R5, loop3mov R5, #8loop4:SETB CRLC AMOV P1,AAcall Delaydjnz R5, loop4Sjmp Output3Output4:MOV R2,P3CJNE R2,#0FCH,Output1MOV R3,#00HMOV R4,#08HMOV DPTR, #tab ; 表首址loop5:MOV A,R3MOVC A, @A+DPTR ; 查表读取第一个字节MOV P1,AINC R3ACALL DELAYDJNZ R4,loop5SJMP Output4Delay:mov r6,#0 ;延时程序DelayLoop1:mov r7,#0DelayLoop2:NOPNOPdjnz r7,DelayLoop2djnz r6,DelayLoop1rettab:DB 0FFH,0E7H,0C3H,81H,00H,81H,0C3H,0E7H End㈡系统各跳线器处在初始设置状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一GPIO输入输出控制实验GPIO输入输出控制实验11.实验目的(1)进一步掌握ADS 1.2集成开发环境的使用方法。
(2)掌握LPC2200专用工程模板的添加和使用。
(3)掌握EasyJTAG仿真器的安装和使用。
(4)能够在MagicARM2200教学实验开发平台上运行第一个程序(无操作系统)。
(5)熟悉LPC2000系列ARM7微控制器的GPIO控制。
(6)了解应用程序的固化方法。
2.实验设备●硬件:PC机一台MagicARM2200教学实验开发平台一套●软件:Windows98/XP/2000系统,ADS 1.2集成开发环境3.实验内容控制MagicARM2200教学实验开发平台上的蜂鸣器报警。
先使用片外RAM(MT45W4MW16芯片)进行调试,调试通过后将程序固化到片外FLASH(SST39VF160芯片),然后脱机运行。
4.实验预习要求(1)认真复习LPC2000系列ARM7微控制器的GPIO控制机制以及LPC2000管脚连接模块等内容。
(2)了解MagicARM2200教学实验开发平台的硬件结构,注意蜂鸣器的相关控制电路。
(3)了解MagicARM2200教学实验开发平台上的跳线。
(4)仔细阅读附带文档《ADS集成开发环境及仿真器应用》或其它相关资料,了解ADS 1.2集成开发环境、LPC2200专用工程模板、EasyJTAG仿真器的应用。
5.实验原理如图1.1所示,MagicARM2200实验箱主板上蜂鸣器使用PNP三极管Q12进行驱动控制,当控制P0.7输出低电平时,Q12导通,蜂鸣器蜂鸣;当控制P0.7输出高电平时,Q12截止,蜂鸣器停止蜂鸣;若把JP22断开,Q12截止,蜂鸣器停止蜂鸣。
由于P0.7口与(LPC2200的)SPI功能部件的SSEL0复用,所以此引脚上接一上拉电阻R86,防止在使用硬件SPI总线时由于SSEL0引脚悬空导致SPI操作出错。
J 1_P o r t图错误!文档中没有指定样式的文字。
.1 蜂鸣器控制电路6.实验步骤(1)连接EasyJTAG 仿真器和MagicARM2200教学实验开发平台,然后安装EasyJTAG 仿真器的驱动程序(若已经安装过,此步省略)。
(2)为ADS1.2增加LPC2200专用工程模板(若已增加过,此步省略)。
(3)启动ADS 1.2,使用ARM Executable Image for MaigcARM2200工程模板建立一个工程BeepCon_C 。
(4)在user 组中的main.c 中编写主程序代码。
(5)选用DebugInExram 生成目标,如图1.2所示,然后编译连接工程。
图1.2 选择生成目标(6)将MagicARM2200教学实验开发平台上的跳线器JP22短接,JP20断开,见图 。
图 1.3 蜂鸣器连接电路(7)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试(需要正确设置仿真器,参考产品光盘附带文档《ADS集成开发环境及仿真器应用》)。
注意:使用DebugInExram生成目标时,使用片外RAM进行仿真调试,建议AXD设置Halt Mode选择Halt program,Aux Option选择Erase Flash when need。
在AXD中设置仿真器参考如图所示。
图1.4 片外RAM调试的仿真器设置(8)若JTAG连接出错,或AXD主窗口没有显示Startup.S源程序,按文档《ADS集成开发环境及仿真器应用》介绍的方法进行处理。
(9)全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。
(10)单击Context Variable图标按钮(或者选择【Processor Views】->【Variables】)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。
选择【System Views】->【Debugger Internals】即可打开LPC2000系列ARM7微控制器的片内外设寄存器窗口。
(11)可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
(12)当仿真调试通过后关闭AXD,在ADS 1.2集成开发环境中选用RelOutChip生成目标,然后编译连接工程。
(13)将MagicARM2200教学实验开发平台上的JP22跳线短接,JP20跳线断开。
(14)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
此时EasyJTAG 仿真器将会把程序下载到片外FLASH上(需要正确设置仿真器,见图。
具体参考文档《ADS 集成开发环境及仿真器应用》)。
图1.5 片外FLASH调试的仿真器设置(15)按MagicARM2200教学实验开发平台上的RST复位键,观察程序是否能脱机运行。
(16)实验结束后,在AXD中设置仿真器为片外RAM调试方式的设置,以便于后面实验的正确操作。
7.实验参考程序GPIO输出控制实验1的参考程序见程序清单1.1。
程序清单1.1 GPIO输出控制实验1参考程序/***************************************************************************** 文件名:main.c* 功能:蜂鸣器控制。
对蜂鸣器B1进行控制,采用软件延时方法。
* 使用I/O口直接控制,采用灌电流方式。
* 说明:将跳线器JP22短接,JP20断开。
****************************************************************************/#include "config.h"#define BEEPCON 0x00000080 // P0.7引脚控制B1,低电平蜂鸣/***************************************************************************** 名称:DelayNS()* 功能:长软件延时。
* 入口参数:dly 延时参数,值越大,延时越久* 出口参数:无****************************************************************************/void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<5000; i++);}}/***************************************************************************** 名称:main()* 功能:控制蜂鸣器蜂鸣。
****************************************************************************/int main(void){; // 设置管脚连接模块连接至GPIO; // 设置BEEPCON IO口为输出方式while(1){; // BEEPCON = 0 蜂鸣器发声DelayNS(15); // 延时; // BEEPCON = 1蜂鸣器不发声DelayNS(15); // 延时}return(0);}8.思考(1)(基础实验)在实验参考程序中,如何控制蜂鸣器报警的速度?(2)(基础实验)如果把程序中的“#define BEEPCON 0x00000080”改成“#define BEEPCON 0x000000C0”,请问以下语句IO0DIR = BEEPCON;IO0CLR = BEEPCON;能否使蜂鸣器发声?为什么?GPIO 输入输出控制实验21.实验目的熟悉LPC2000系列ARM7微控制器的GPIO 控制。
2.实验设备● 硬件:PC 机 一台 MagicARM2200教学实验开发平台 一套● 软件:Windows98/XP/2000系统,ADS 1.2集成开发环境 3.实验内容使用GPIO 口控制8个LED 跑马灯显示。
4.实验预习要求(1)认真复习GPIO 控制机制以及LPC2000管脚连接模块内容。
(2)了解MagicARM2200教学实验开发平台的硬件结构,注意键盘及LED 显示电路。
(3)仔细阅读文档《ADS 集成开发环境及仿真器应用》或其它相关资料,了解ADS 1.2集成开发环境、LPC2200专用工程模板、EasyJTAG 仿真器的应用。
5.实验原理如图1.6所示,MagicARM2200实验箱主板上还有8个独立的发光二极管LED1~LED8,分别由P2.16~P2.23输出控制,控制I/O 输出高电平时对应的LED 熄灭,输出低电平时对应的LED 点亮,电路如图错误!文档中没有指定样式的文字。
.所示。
一般LED 的压降约为1.7V ,LED 点亮时的电流)(0034.04707.13.3A R V V I LED DD LED ≈-=-=,即3.4mA ,而LPC2290的I OL (I/O 低电平输出电流)最小值为4mA ,可以使用I/O 直接驱动。
这部分电路可以通过JP23跳线断开与LPC2200的连接。
图错误!文档中没有指定样式的文字。
.6 独立LED 控制电路6.实验步骤(1)启动ADS 1.2,使用ARM Executable Image for MaigcARM2200工程模板建立一个工程LEDCon_C 。
(2)在user 组中的main.c 中编写主程序代码。
(3)选用DebugInExram 生成目标,然后编译连接工程。
(4)将MagicARM2200教学实验开发平台上跳线器JP23全部短接,JP15跳线全部断开,见图1.(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6)单步运行程序,通过LED1~LED8的显示判断输出是否正确。
全速运行程序,观察LED1~LED8的显示。
图 1.7 LED连接电路7.实验参考程序GPIO输出控制实验2的参考程序见程序清单1.。
程序清单1.2 GPIO输出控制实验2参考程序/***************************************************************************** 文件名:main.c* 功能:LED显示控制。
* 通过GPIO直接控制8个LED产生跑马灯效果* 说明:将跳线JP23全部短接,JP15跳线全部断开。
* 这个警告可忽略,C2892E: signed constant overflow****************************************************************************/#include "config.h"#define LED1 1<<16 // P2.16#define LED2 1<<17 // P2.17#define LED3 1<<18 // P2.18#define LED4 1<<19 // P2.19#define LED5 1<<20 // P2.20#define LED6 1<<21 // P2.21#define LED7 1<<22 // P2.22#define LED8 1<<23 // P2.23#define LEDCON 0x00ff0000const uint32 DISP_TAB[8] = { 0xff01ffff, 0xff02ffff, 0xff04ffff, 0xff08ffff,0xff10ffff, 0xff20ffff, 0xff40ffff, 0xff80ffff };/***************************************************************************** 名称:DelayNS()* 功能:长软件延时* 入口参数:dly 延时参数,值越大,延时越久* 出口参数:无****************************************************************************/ void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<5000; i++);}}/***************************************************************************** 名称:main()* 功能:根据表DISP_TAB来控制LED显示。