首页 百科知识 8位数码管显示数字实验总结

8位数码管显示数字实验总结

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

7.5 数码管显示实验

7.5.1 实验目的

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

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

7.5.2 实验设备

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

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

7.5.3 实验内容

编写程序使实验板上八段数码管循环显示0~9字符.

7.5.4 实验原理

(1)八段数码管.

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

①结构.

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

img331

图7-11 八段数码管的结构

②类型.

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

③工作原理.

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

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

表7-2 常用字符的段码表

img332

④显示方式.

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

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

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

(2)IIC原理.

IIC原理请参考6.5.

(3)电路原理.

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

img333

图7-12 八段数码管连接电路

(4)软件程序设计.

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

①IIC中断使能设置.

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

rINTMSK=rINTMSK &(~(BIT_ALLMSK|BIT_IIC));//使能中断

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

img334

图7-13 八段数码管控制电路

②初始化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个八段数码管上.

7.5.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\目录下(如果已经拷贝,可跳过此步骤).

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

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

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

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

(4)观察实验结果.

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

boot success...

8-segment Digit LED Test Example(Please look at LED)

②实验系统八段数码管循环显示0~9字符.

7.5.6 实验参考程序及流程图

img337

图7-14 数码管显示实验主程序流程图

img338

图7-15 数码管显示iic_write_8led函数流程图

(1)LED测试程序.

img339

img340

(2)IIC总线读写程序.

img341

img342

img343

7.5.7 练习题

编写程序首先从左到右显示1、2、3、4、5、6、7、8,然后全部熄灭,再从右向左显示1、2、3、4、5、6、7、8,之后循环往复.

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

我要反馈