嵌入式流水灯实验Word下载.docx

上传人:b****2 文档编号:15113386 上传时间:2022-10-27 格式:DOCX 页数:13 大小:243.17KB
下载 相关 举报
嵌入式流水灯实验Word下载.docx_第1页
第1页 / 共13页
嵌入式流水灯实验Word下载.docx_第2页
第2页 / 共13页
嵌入式流水灯实验Word下载.docx_第3页
第3页 / 共13页
嵌入式流水灯实验Word下载.docx_第4页
第4页 / 共13页
嵌入式流水灯实验Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

嵌入式流水灯实验Word下载.docx

《嵌入式流水灯实验Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式流水灯实验Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

嵌入式流水灯实验Word下载.docx

在EasyARM2131开发板上,接有一个蜂鸣器,由P0.7控制,通过跳线JP11选择连接。

蜂鸣器控制电路如所示。

图3-1蜂鸣器控制电路

如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平则停止鸣叫。

程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器,流程图见图3-2。

图3-2蜂鸣器控制实验流程图

2.GPIO输出实验-流水灯实验

单路LED控制

EasyARM2131开发板上有8个独立的LED,分别由8个GPIO口控制,现在使用其中一路进行实验,使用的电路如图3-3所示。

图3-3单路LED电路图

当跳线JP12连接LED1时,P1.18采用灌电流方式驱动LED1,当P1.18输出低电平时,LED1点亮,当P1.18输出高电平时,LED1熄灭。

实验程序首先设置管脚连接GPIO,接着设置P1.18口为输出模式,然后通过IO1CLR和IO1SET控制P1.18,驱动LED1的亮灭。

GPIO输出实验-流水灯实验

EasyARM2131开发板上的8路LED(LED8~LED1)分别可选择P1[25:

18]进行控制,电路如图3-4所示。

图3-48路LED控制电路

当跳线JP12全部选择LED8~LED1后,P1.25~P1.18分别控制这8路LED,就可以进行流水灯实验。

流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,程序清单所示为采用人为定义数组控制显示花样的实验程序,流程图如图3-5所示。

图3-5流水灯花样显示流程图

五、实验步骤

实验内容1步骤

①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BeepCon_C。

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

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

④选择Project->

Debug,启动AXD进行JLINK仿真调试。

在工程窗口中选择DebugInRAM生成目标,然后编译连接工程(单击Make按钮)。

如图所示。

选择DebugInRAM生成目标时,编译连接生成的目标代码就是用于在片内RAM调试。

打开ADS开发环境下的【Edit】->

【DebugInFLASHSettings...】,在”ARMfromELF”下Outputformat做如图选择,输出文件选择你的文件同一目录下,扩展名’.HEX’

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

⑦单击ContextVariable图标按钮(或者选择ProcessorViews->

Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。

选择SystemViews->

DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。

⑧可以单步运行程序,可以设置/取消断点;

或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。

在FLASH中调试

在工程窗口中选择DebugInFLASH生成目标,然后编译连接工程(单击Make按钮)。

选择DebugInFLASH生成目标时,编译连接生成的目标代码就是用于在片内FLASH调试。

编译连接通过后,按键盘的F5键,启动AXD进行调试。

注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH地址的调试文件时,将会擦除FLASH并下载代码到FLASH中。

脱机运行

使用DebugInFLASH生成目标,并进行调试后(使用JLINK仿真器),程序即烧写到片内FLASH中。

将JLINK电源断开,重新上电,程序将脱机运行;

实验内容2实验步骤

①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程LedDisp_C。

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

④将EasyARM教学实验开发平台上的P1.[18:

25]管脚对应与LED[1:

8]跳线短接gde台ngtheng。

⑤选择Project->

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

或者全速运行程序,停止程序运行,观察变量的值,判断LED1~LED8控制是否正确。

(3)实验参考程序

GPIO输出控制实验的参考程序见3-1。

程序清单1GPIO输出控制实验1的参考程序

/****************************************************************************

*文件名:

main.c

*功能:

蜂鸣器控制。

对蜂鸣器进行控制,采用软件延时方法。

*使用I/O口直接控制,采用灌电流方式。

*说明:

将P0.7与Beep短接。

****************************************************************************/

#include"

config.h"

#defineBEEPCON1<

<

7//P0.7引脚控制Beep,低电平蜂鸣

*名称:

DelayNS()

长软件延时。

*入口参数:

dly延时参数,值越大,延时越久

*出口参数:

voidDelayNS(uint32dly)

{

uint32i;

for(;

dly>

0;

dly--)

{

for(i=0;

i<

5000;

i++);

}

}

main()

控制蜂鸣器蜂鸣。

intmain(void)

PINSEL0=0x00000000;

//设置管脚连接GPIO

IO0DIR=BEEPCON;

//设置I/O为输出

while

(1)

{

IO0SET=BEEPCON;

//BEEPCON=1

DelayNS(200);

IO0CLR=BEEPCON;

//BEEPCON=0

return(0);

程序清单2

/*LED8~LED18个LED分别由P1.25~P1.18控制*/

constuint32LEDS8=(0xFF<

18);

//P1[25:

18]控制LED8~LED1,低电平点亮

/*********************************************************************************************函数名称:

**函数功能:

长软件延时

**入口参数:

dly延时参数,值越大,延时越久

**出口参数:

*******************************************************************************************/

voidDelayNS(uint32dly)

{uint32i;

for(;

dly--)

for(i=0;

50000;

/*******************************************************************************************

**函数名称:

流水灯显示实验。

**调试说明:

连接跳线JP12至LED8~LED1。

/*流水灯花样,低电平点亮,注意调用时候用了取反操作*/

constuint32LED_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//从两边叠加后递减

};

intmain(void)

{uint8i;

PINSEL1=0x00000000;

//设置管脚连接GPIO

IO1DIR=LEDS8;

//设置LED控制口为输出

while

(1)

{

for(i=0;

42;

i++)

{/*流水灯花样显示*/

IO1SET=~((LED_TBL[i])<

DelayNS(20);

IO1CLR=((LED_TBL[i])<

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

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1