首页 百科知识 “跑马灯”实验

“跑马灯”实验

时间:2022-10-27 百科知识 版权反馈
【摘要】:(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP.嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛.八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部分英文字母.见图8-1.八段数

8.1 “跑马灯”实验

8.1.1 实验目的

(1)通过实验掌握LED的显示控制方法.

(2)通过实验加深对IIC总线工作原理的掌握.

(3)通过实验掌握键盘控制与设计方法.

(4)熟练编写ARM核处理器S3C2410X中断处理程序.

8.1.2 实验设备

(1)硬件:Embest EduKit-Ⅲ实验平台,ULINK USB-JTAG仿真器套件,PC.

(2)软件:μVision IDE for ARM集成开发环境,Windows 98/2000/NT/XP.

8.1.3 实验内容

(1)编写程序使实验板上八段数码管循环显示字符.

(2)使用实验板上5×4用户键盘,编写程序接收键盘中断.

(3)通过IIC总线读入键值,并控制数码管变化.

(4)通过键盘控制数码管逐个显示0~7的字符,并实现闪烁等功能.

(5)可以通过键盘实现调频控制数码管显示的快慢.

8.1.4 实验原理

(1)八段数码管.

嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛.

①结构.

八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部分英文字母.见图8-1.

②类型.

八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管.

③工作原理.

以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮.

img412

图8-1 八段数码管的结构

电平信号按照dp,g,e,…,a的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表如下:

表8-1 常用字符的段码表

img413

④显示方式.

八段数码管的显示方式有两种,分别是静态显示和动态显示.

静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效.

动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的.

(2)IIC原理.

IIC原理请参考6.5.

(3)电路原理.

①数码管电路原理.

Embest EduKit-Ⅲ教学电路中使用的是共阴极八段数码管.数码管的显示由芯片ZLG7290进行控制,它的DIG1~DIG8引脚输出LED显示所需的位驱动信号,而SEGA~SEGG及DP引脚输出LED显示所需的段驱动信号.相关电路见图8-2和图8-3.

img414

图8-2 八段数码管连接电路

img415

图8-3 八段数码管控制电路

②键盘连接电路.

img416

图8-4 5×4键盘连接电路

③键盘控制电路.

键盘控制电路使用芯片ZLG7290控制,如图8-5.对应下图中的14引脚KEY_INT捕捉由键盘按下产生的中断触发信号.

img417

图8-5 5×4键盘控制电路

键盘动作由芯片ZLG7290检测,当键盘按下时,芯片检测到后在INT引脚产生中断触发电平通知处理器,处理器通过IIC总线读取芯片ZLG7290键值寄存器(01H)中保存的键值.

(4)软件程序设计.

八段数码管上显示的字符段码储存在数组f_szDigital[]中,通过IIC总线依次将它们写入到ZLG7290芯片的显示缓存寄存器(DpRam0~DpRam7)中,即可完成字符在八段数码管上的显示.

①IIC中断使能设置.

由于LED的段码是通过IIC总线传输的,需要采用中断方式来检测每个字节的传输,所以需要定义中断处理程序入口,使能中断.具体的实现方法如下:

rINTMSK &=~BIT_IIC; //使能中断

pISR_IIC=(unsigned)iic_int_8led; //将IIC中断处理程序指针指向iic_int

②初始化IIC接口

初始化IIC接口就是对IIC的相关寄存器进行初始设置.如下所示:

rIICADD=0x10;  //S3C2410X从设备地址

rIICCON=0xef;  //使能ACK和IIC总线中断,设置IICCLK为//MCLK/512,清除pending位以便响应中断.

rIICSTAT=0x10;  //使能发送/接收中断

③iic_write()函数介绍.

函数原型:void iic_write(UINT32TunSlaveAddr,UINT32TunAddr,UINT8TucData)

参数说明:unSlaveAddr——输入,IIC从设备地址(ZLG7290地址为0x70H)

unAddr——输入,数据地址(即ZLG7290显示缓冲区地0x10H~0x17H)

ucData——输入,数据值

函数返回值:NULL

所以,通过函数iic_write(0x70,0x10+i,f_szDigital[k])即可将数组f_szDigital[]中的第k+1个元素为段码的字符显示在第i个8段数码管上.

④系统流程图.

系统流程图如图8-6所示.

8.1.5 实验方法与操作步骤

(1)准备实验环境.

使用ULINK USB-JTAG仿真器连接到目标板上.使用Embest EduKit-Ⅲ实验板附带的串口线,连接实验板上的UART0和PC机的串口.

(2)串口接收设置.

在PC上运行Windows自带的超级终端串口通信程序(波特率115200、1位停止位、无校验位、无硬件流控制),或者使用其他串口通信程序.

(3)打开实验例程.

①拷贝实验平台附带光盘CD1\CD1_Basic_070615\Software文件夹到RealView MDK软件的安装目录的Keil\ARM\Boards\Embest\目录下(如果已经拷贝,可跳过此步骤).

img418

图8-6 系统流程图

②使用μVision IDE for ARM通过ULINK USB-JTAG仿真器连接实验板,打开实验例程目录keyboard_led_test子目录下的keyboard_test.Uv2例程,编译链接工程成功.

③根据ReadMe目录下的ReadMeCommon.txt及readme.txt文件配置集成开发环境(工程默认已经配置正确),点击工具栏img419”,在Option for Target对话框的Linker页中选择RuninRAM.sct分散加载文件,点击MDK的Debug菜单,选择Start/Stop Debug Session项或点击工具栏“img420”,下载工程生成的.axf文件到目标板的RAM中调试运行.

④如果需要将程序烧写固化到Flash中,仅需要更改分散加载文件即可(须慎用,这一步的操作将会破坏Flash中原有固化程序,建议实验中不操作).在Option for Target对话框的Linker页中选择RuninFlash.sct分散加载文件,重新编译工程,点击MDK的Flash菜单,选择Download烧写调试代码到目标系统的Nor Flash中,重启实验板,实验板将会运行烧写到Nor Flash中的代码.

⑤点击Debug菜单的Go或F5键运行程序.

(4)观察实验结果.

①在PC机上观察超级终端程序主窗口,可以看到如下界面:

boot success...

②实验系统中八段数码管分别显示0~7字符,并以跑马灯的形式轮流亮灭.

按键盘按键“1”,八段数码管从右到左依次显示0~7字符.

按键盘按键“2”,八段数码管从左到右依次显示7~0字符.

按键盘按键“3”,八段数码管先交替闪烁,再全部闪烁.

按键盘按键“+”,八段数码管从右到左依次显示0~7字符,并且频率增大.

按键盘按键“-”,八段数码管从右到左依次显示0~7字符,并且频率减小.

8.1.6 实验参考程序

(1)中断初始化.

LED和键盘中断初始化

img421

img422

(2)键盘控制LED变化.

img423

img424

img425

img426

img427

img428

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈