- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统实验1解读
嵌入式系统原理及应用 实验一
【实验项目】 GPIO实验——LED及按键
姓名:
班级:
学号:
【实验目的】
1、熟悉KEIL4嵌入式开发环境以及Proteus仿真环境;
2、了解ARM7 LPC2138虚拟开发板上各个器件;
3、掌握LPC2138的GPIO配置及使用方法。
【实验设备】
硬件:PC机一台。
软件:Keil uVision集成开发环境,Proteus仿真软件,LPC2138.DSN仿真电路图文件。
【实验原理】
1. LED电路
观察图1所示的LED驱动电路,当LPC2138单片机的GPIO口P0.8~P0.15输出为低电平时,LED D1~D8点亮。
图1. LED驱动电路
2. 按键电路
观察图2所示的按键接口电路,当按键K1~K6按下时,LPC2138单片机的GPIO口P0.16~P0.21为低电平。
图2. 按键接口电路
【实验内容】
项目1. 循环“点亮-熄灭”LED D1;
项目2. 按键K1控制LED D1的点亮和熄灭;
项目3. 以流水灯方式点亮LED D1~D8;
项目4. 按下按键K1改变LED D1~D8的流水方向。
【实验步骤】
项目1. 循环“点亮-熄灭”LED D1;
1. 建立一个新的keil工程;
(1)在D盘(或其它盘)根目录下新建一个以你学号为名的文件夹,并在其下创建“exp1”文件夹,在“exp1”文件夹下创建“exp1_1”子文件夹。
(2)新建一个新keil工程,名称为“exp1_1”,路径为“exp1_1”子文件夹。
(3)CPU型号选择为“NXP”中的“LPC2138”。
(4)开发环境询问是否将“启动代码”复制到工程中,点击“是”。
(5)将“添加文件”文件夹中的Config.h,Target.c,Target.h以及Deal_err.h复制到工程文件夹中(“exp1_1\”),并添加到工程。
(6)新建main.c文件,并添加至工程。
(7)在main文件开头包含相应的头文件:
(8)修改“目标选项(Target Option)”:
在“输出(Output)”选项卡里,勾选“生成十六进制文件(Create Hex File)”。
2. 配置LED D1对应的GPIO引脚P0.8,代码为:
3. 实现P0.8输出反转,代码为:
4. 延时函数代码为:
5. 点击“构建(Build)”,产生十六进制可执行文件。
6. 在Proteus中打开LPC2138.DSN仿真电路图文件,双击LPC2138器件。在对话框的“程序文件(Program File)”栏里选择上一步生成的十六进制Hex文件,并将时钟频率修改为“12MHz”
7. 运行仿真,观察并记录实验现象。
项目2. 按键K1控制LED D1的点亮和熄灭;
1. 新建Keil工程“exp1_2”。
2. 配置LED D1对应的GPIO引脚P0.8。
3. 配置按键K1对应的GPIO引脚P0.16,代码为:
4. 当K1按下时,点亮D1;K1松开时,熄灭D1:
5. 生成十六进制文件,在Proteus中观察并记录实验结果。
项目3. 以流水灯方式点亮LED D1~D8;
1. 新建Keil工程“exp1_3”。
2. 配置LED D1~D8对应的引脚,代码为
4. LED D1~D8流水点亮的代码为:
5. 生成十六进制文件,在Proteus中观察并记录实验结果。
项目4. 按下按键K1改变LED D1~D8的流水方向。
1. 新建Keil工程“exp1_4”。
2. 自己编写main.c文件。附上你的main.c中的所有代码:
#include LPC213x.h
#include Config.h
void delay (uint32 dly)
{
uint32 i;
for ( ; dly0; dly--)
for (i=0; iFcclk/8000; i++);
}
void main()
{
int i=8; //利用i来改变点亮的灯
char c=0; //定义一个流水方向的变量 PINSEL0 = 0; //使IO为GPIO
IO0DIR = 0xff00; //点亮 IO0SET = 0xff8; //熄灭 while (1)
{
if((IO0PIN0x10000) == 0)//如果按下键换流水方向 {
if(c==0)
c=1;
else
c=0;
de
您可能关注的文档
最近下载
- 2024年广东省初中学业水平考试模拟地理试卷(一)课件.pptx VIP
- 广州洪德巷历史文化街区保护利用规划.pdf
- 广州市人民南历史文化街区保护利用规划(文本+图纸).pdf VIP
- 关于烹饪的策划书3.pptx
- WALL·E《机器人总动员(2008)》完整中英文对照剧本.pdf VIP
- LDT 99.13-2008 建设工程劳动定额市政工程-维修养护工程.docx
- 实验报告之spss频数分析.docx VIP
- 新教科版科学小学科学五年级下册全册教案(表格式,可打印).docx
- 2022年新改版教科版五年级上册科学全册教案教学设计(新整理版).doc
- 某小区高楼变频恒压供水系统设计.docx
文档评论(0)