嵌入式系统实验指导书

阅读: 评论:0

5. 2 LED控制实验
5. 2. 1 实验目的
掌握利用S3C2410X芯片地址总线扩展的I/O来驱动LED显示;
了解ARM芯片中利用总线扩展I/O口的使用方法。
5. 2. 2 实验设备
硬件:Embest EduKit-IV平台ULINK2仿真器套件,PC机;
软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP
5. 2. 3 实验内容
编写程序,控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1->LED2->LED3->LED4->LED1->LED2->LED3->LED4->全亮->全灭,如此反复。
5. 2. 4 实验原理
在开发LED驱动之前,首先了解本实验的原理图:EduKit-IV设计了5LEDD1D5pgl3)用于指示和控制系统的状态,其中D2指示电源的状态,其他4个的状态是用户可编程的(SYSLED1SYSLED4),在EduKit-IV中,这4 LED的状态通过扩展I/O接口进行控制。
EduKit-IV LED所用到的扩展I/O如图5-2-1所示:
5-2-1 片选信号的产生
利用3/8译码器将A18-A20扩展了7个外设片选信号CS1-CS7CS1CS2引出到外部扩展接
EXCON_B3CS3CS4为总线扩展输入的芯片74HC541的片选。CS5CS6,和CS7为总线扩展输出的芯片74HC573的片选。
片选信号在接入74HC573前经过了如下处理:
5-2-2 OLE信号的产生
其中CS5CS6CS7 3个片选信号和写使能信号通过74HC32或门输出一个选通信号LE为低电平。
5-2-3 LE信号的产生
前面或门输出的LE选通信号经过74HC04反相得到高电平后再连接到扩展输出芯片74HC573
EduKit-IV LED接口电路如图ctp版材5-2-4和图5-2-5所示。在本实验平台上,如图5-2-4,芯片74VHC573DT的选通物理地址为0x21180000,当访问这个物理地址的时候,就可以访问其上的硬件资源了。这里可以把其理解为一个寄存器,寄存器地址是0x21180000,它的低4位控制了4磁化净水器LED灯,通过访问地址为0x21180000的寄存器,往其低4位置高/低电平,从而控制相应的4LED灯的亮/灭。
(注意:寄存器0x21180000是只写的,在软件编程时只能往里写数据,不能从里读数据)
5-2-4 LED写入数据如图5-2-5所示,LED1-44LED采用了共阳极的接法,分别与SYSLED1-4相连,通过SYSLED1-4引脚的高低电平来控制发光二极管的亮与灭。当这几个管脚输出高电平的时候发光二极管熄灭,反之,发光二极管点亮。
5. 2. 5 实验步骤 患者腕带
1. 准备实验环境
使用ULINK2仿真器连接Embest EduKit-IV实验平台的主板JTAG接口;使用Embest EduKit-IV实验平台附带的交叉串口线,连接实验平台主板上的COM2PC机的串口(一般
PC只有一个串口,如果有多个请自行选择,笔记本没有串口设备的可购买USB转串口适配器扩充);使用Embest EduKit-IV实验平台附带的电源适配器,连接实验平台主板上的电源接口。
2. 串口接收设置
PC机上运行windows自带的超级终端串口通信程序,或者使用实验平台附带光盘内设置好了的超级终端,设置超级终端:波特率1152001位停止位、无校验位、无硬件流控制,或者使用其它串口通信程序。(注:超级终端串口的选择根据用户的PC串口硬件不同,请自行选择,如果PC机只有一个串口,一般是COM1
3. 打开实验例程
1)拷贝实验平台附带光盘DISK3_S3C2410\03-Codes\01-MDK\Mini2410-IV文件夹到MDK的安装路径:Keil\ARM\Boards\Embest\(如果本实验之前已经拷贝,可以跳过这一步)。(注:用户也可拷贝工程到任意目录,本实验为了便于教学,故统一实验路径);
2)运行μVision IDE for ARM软件,点击菜单栏Project,选择Open Project…,在弹出
的对话框选择实验例程目录空调用制冷技术LED_Test子目录下的LED_Test.Uv2工程。
3)默认打开的工程在源码编辑窗口会显示实验例程的说明文件,详细阅读并理解实验内容。
4)工程提供了两种运行方式:一是下载到SDRAM中调试运行,二是固化到Nor Flash中运行。用户可以在工具栏Select Target下拉框中选择在RAM中调试运行还是固化Flash中运行。如下图所示:
5-2-6 选择运行方式
下面实验将介绍下载到SDRAM中调试运行,所以我们在Select Target下拉框中选择LED_Test IN RAM
5)接下来开始编译链接工程,在菜单栏Projiet选择Build target或者Rebuild all target files编译整个工程,用户也可以在工具栏单击“”或者“”进行编译。
6 编译完成后,在输出窗口可以看到编译提示信息,比如".\SDRAM\LED_Test.axf" - 0 Error(s), 1 Warning(s).,如果显示0 Error(s)即表示编译成功。
7)拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug->Start/Stop Debug Session项将编译出来的映像文件下载到SDRAM中,或者单击工具栏“”按钮来下载。
8)下载完成后,单击菜单栏Debug->Run项运行程序,或者单击工具栏“”按钮来全速运行程序。用户也可以使用进行单步调试程序。
9)全速运行后,用户可以在超级终端看到程序运行的信息。
10)用户可以Stop程序运行,使用μVision IDE for ARM的一些调试窗口跟踪查看程序运行的信息。
注:如果在第4)步用户选择在Flash人体红外感应器中运行,则编译链接成功后,单击菜单栏Flash->Download项将程序固化到NorFlash中,或者单击工具栏按钮“”固化程序,从实验平台的主板拔出JTAG线,给实验平台重新上电,程序将自动运行。
4. 观察实验结果
在执行到第8)步时,可以看到超级终端上输出如下字符。观察发光二极管的亮灭情况,可以观察到的现象与前面实验内容中的相符,说明实验成功的实现了利用总线扩展I/0LED的驱动。
*******************************************************************
** 英蓓特EduKit系列嵌入式教学系统平台 **
** Embest EduKit Series Embedded Teaching Platform **
*******************************************************************
Expand I/O (Diode Led) Test Example
Please Look At The LEDS
end.
5. 完成实验练习题
理解和掌握实验后,完成实验练习题。
5. 2. 6 实验参考程序
/*********************************************************************************************
* File led_test.c
* Author: embest
* Desc Led_Test
* History:
*********************************************************************************************/
/*------------------------------------------------------------------------------------------*/
/* include files */
/*------------------------------------------------------------------------------------------*/
#include "2410lib.h"
/*------------------------------------------------------------------------------------------*/
/* constant define */
/*------------------------------------------------------------------------------------------*/
#define LEDADDR (*(volatile unsigned char*)0x21180000) // LED Address
/*********************************************************************************************
* name: led_on
* func: turn on the leds one by one
* para: none
* ret: none
* modify:
* comment:
*********************************************************************************************/
void led_on(void)
{
int i,nOut;
nOut = 0xFF;
LEDADDR = nOut & 0xFE;
for(i = 0; i < 100000; i++);
LEDADDR = nOut & 0xFC;
for(i = 0; i < 100000; i++);
LEDADDR = nOut & 0xF8;
for(i = 0; i < 100000; i++);
LEDADDR = nOut & 0xF0;

本文发布于:2023-06-12 03:28:14,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/136079.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实验   平台   运行   信号   程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图