嵌入式系统实验1分析.doc
文本预览下载声明
嵌入式系统原理及应用 实验一
【实验项目】 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
显示全部