ARM7嵌入式系统实践教程
2.3.2 LED显示与按键识别实验
六、编程
2、调用变量窗口、存储窗口 (1)单击按钮 ,进入用户程序调试窗口 (2)执行菜单Processor Views|Variables菜单命令,打开变量窗口,如下图: (3)执行菜单Processor Views|Memory菜单命令,打开存储器窗口,如下图:
2.3.2 LED显示与按键识别实验
三、接口电路
1、按键识别电路 (1)、Key1为按键; (2)、R18电阻 (3)、P0.20为 嵌入式处理器LPC2290 P0口的20引脚 (4)、工作原理:Key1键处于按下状态,P0.20引脚为低电平; Key1键处于 释放状态,P0.20引脚为高电平. 编写程序测试P0.20引脚为低电平或高电平 从而确认KEY1键是按下或未按下。
2.3.2 LED显示与按键识别实验
六、编程
1、启动IDE 在Windows XP系统窗口,执行【所有程序】| ARM Developer Suite V1.2|CodeWarrior For ARM Developer Suite 菜单命令,打 开IDE
2.3.2 LED显示与按键识别实验
六、编程
2.3.2 LED显示与按键识别实验
五、LED编程
1、配置P2.16、。。。、P2.23引脚为GPIO输出 将IO2DIR的[23:16]配置为1,P2.16、。。。、P2.23引脚即为GPIO输出 功能 配置语句: IO2DIR&=0xFF<<16; 2、控制LED (1)、仅控制LED1 配置 IO2SET 的位[16]=1 P2.16引脚为高电平,LED1灭,控制数据为0xFF01FFFF 配置 IO2CLR 的位[16]=1 P2.16引脚为低电平,LED1亮,控制数据为0xFF01FFFF LED2、。。。、LED8控制原理与LED1相同,控制数据分别为0xFF02FFFF、 0xFF04FFFF、 0xFF08FFFF、 0xFF10FFFF、 0xFF20FFFF、 0xFF40FFFF、 0xFF80FFFF (2)编写程序,使LED1、。。。、LED8按照控制策略显示。
编译main.c生成的输出文件
2.3.2 LED显示与按键识别实验
5、链接程序 单击按钮 ,链接程序,生成的可执行镜像文件如下图:
六、编程
镜像文件
2.3.2 LED显示与按键识别实验
六、编程
1、启动调试器、调入要调试的镜像文件 单击按钮 ,启动调试器AxD Debugger、调入要调试的镜像文件Exp2301.axf,如下 图:
2.3.2 LED显示与按键识别实验 四、Key1编程
1、配置P0.20引脚为GPIO功能 将PINSEL1的位[9:8]配置00,P0.20引脚即为GPIO功能 配置语句: PINSEL1&=(~(3<<8)); 2、配置P0.20引脚为GPIO输入 将IO0DIR的位20配置为0,P0.20引脚即为GPIO输入功能 配置语句: IO0DIR&=~(1<<20); 3、KEY1按键识别原理 IO0PIN寄存器位20=0 P0.20引脚为低电平; IO0PIN寄存器位20=1 P0.20引脚为高电平; 编写程序,判断IO0PIN位20为0或1来判断KEY1按键是否按下
2.3.2 LED显示与按键识别实验
三、接口电路
1、按键识别电路 (1)、LED1、LED2、。。。、LED8为发光二极管; (2)、R89、R90、R91、R92、R93、R94、R95、R96为电阻 (3)、P2.16、。。。P2.23为嵌入式处理器LPC2290 P2口的引脚 (4)、工作原理: 8路发光二极管控制电路。 以LED1发光二极管控制电路为例,说明发光二极管控制原理: P2.16引脚高电平,LED1灭; P2.16引脚低电平,LED1亮;编写程序,控 制P2.16引脚为高低电平,从而可控制LED1灭或亮。
2.3.2 LED显示与按键识别实验
六、编程
3、调试 (2)、调试LED • 鼠标移动到行号18前的空白处,双击鼠标,删除断点 • 鼠标移动到行号41前的空白处,双击鼠标,设置断点,记录为断点2 • 单击按钮 ,执行程序,程序停在断点1处, 如果有一个LED亮,依据DISP_TAB[nStep]查看显示数据,判别显示数据是否对应 亮LED,如果不对应,修改显示数据。 如果没有一个LED亮,依据以下顺序排除错误: 依据DISP_TAB[nStep]查看显示数据,如果错,修改显示数据 查看P2.16、。。。、P2.23初始化,如有错,修改错误 查看电路,如果电路没有问题,LED相应电路损坏 (3)、运行程序 • 删除所有断点 • 单击按钮 ,执行程序。按照要求操作,观察程序运行效果.
六、编程
2.3.2 LED显示与按键识别实验
六、编程
3、录入源程序 在源程序编辑窗口中,录入程序代码,然后执行File|Save菜单命令,保存源程序。
2.3.2 LED显示与按键识别实验
六、编程
4、编译、改错 单击按钮 ,编译程序,如有错误,根据错误提示信息,修改程序。然后重复执行 编译、改错操作,直至编译通过,生成输出文件如下图:
2.3.2 LED显示与按键识别实验
六、编程
3、调试 (1)、KEY1按键识别 • 鼠标移动到行号29前的空白处,双击鼠标,删除断点 • 鼠标移动到行号18前的空白处,双击鼠标,设置断点,记录为断点1 • 单击按钮 ,执行程序,程序停在断点1;单击按钮 ,执行x=IO0PIN语句 • 在Variable窗口,鼠标移动到变量x值处,右击鼠标,执行Format|Binary菜单命 令。 • 键KEY1未按下,查看变量 X位20的值,X[20]=0 • 按下KEY1 • 单击按钮 ,执行程序,程序停在断点1;单击按钮 ,执行x=IO0PIN语句 • 在Variable窗口,鼠标移动到变量x值处,右击鼠标,执行Format|Binary菜单命 令。 • 键KEY1按下,查看变量 X位20的值,如果X[20]=1,正确;否则,错误,错误检查次 序为: P0.20初始化 KEY1电路 如果以上都正确,KEY1损坏。
2.3.2 LED显示与按键识别实验
பைடு நூலகம்
一、目的
(1) 进一步掌握GPIO接口电路设计方法。 (2) 了解LED、按键接口电路的工作原理。 (3) 掌握LED显示控制、按键识别的编程方法。
2.3.2 LED显示与按键识别实验
二、题目
1、 8个LED按流水方式显示,即LED1亮,其他 LED灭;然后LED2亮,其他LED灭;以此类推。 重复进行以上操作。 2、 当LED2、LED4、LED6、LED8亮时,蜂鸣器 响;否则蜂鸣器不响。 3、 检测KEY1按键,如果KEY1按下,当前LED、 蜂鸣器操作状态保持不变;否则,继续执行1、 2控制策略。
2.3.2 LED显示与按键识别实验
3、调试控制蜂鸣器 (2)、配置蜂鸣器控制数据 • 执行Processor Views|Memory菜单命令,打开存储器窗口 • 在Start Address栏输入0x40003100,回车确认 • 双击存储单元0x40003100,录入0x03,回车确认,如下图:
六、编程
2.3.2 LED显示与按键识别实验
六、编程
3、调试控制蜂鸣器 (3)、调试 • 点击按钮 ,程序停在断点2处。如果蜂蜜器响,正确;如果蜂鸣器不响。检查 P0.7初始化、蜂鸣器电路。 • 点击按钮 ,程序停在断点1处。蜂蜜器不响。 • 去掉断点1、断点2,运行程序。 4、思考题 设计调试项,按照设计思路调试
1、创建工程:在IDE窗口中,执行File|New菜单命令,打开New窗口 (A)选择工程模板:ARM Executable Image For MagicARM2200 (B)为工程起一个名字: Exp2302 (C)配置工程存储路径:G:\Exp2302 工程模板 (D)击【确定】按钮,完成工程创建 工程名
工程存储路径
2.3.2 LED显示与按键识别实验
工程管理窗口
生成目标
六、编程
文件选项卡
链接顺序选项卡
2.3.2 LED显示与按键识别实验
工程管理存储路径内容
六、编程
数据目录 工程文件
输出文件存储路径
2.3.2 LED显示与按键识别实验
2、打开源程序编辑窗口 (1)、在工程管理窗口中,展开User目录; (2)、双击文件main.c,打开源程序main.c编程窗口,如下图