数码管计时与 LED 点阵显示
概述
此数码管计时与 LED 点阵显示,是在 UP-TECH S2410/P270 DVP 嵌入式实,验平
台上实现的,其数码管计时精度为 1s。所使用的芯片主要有 74hc273 芯片。通过系统电
源开关即可开始倒计时,用系统中的两片七段数码管将时间以 XX(秒)的形式显示给用
户,计时过程结束后 LED 点阵开始循环动态显示。
一、 设计要求
按下电源按钮,数码管开始计时,即可显示 XX。经过指定时间之后,LED 点阵开始
循环动态显示。设计要求如下:
(1) 用七段数码管来显示时间,从 00 计到 99,重复两次
(2) 用 LED 点阵循环显示顺序:全亮-“王”字-全黑
二、 设计思想
(1) 计时
数码管工作原理,由于本次设计中采用的是七段数码管,因此每个数码管
包含了 7 个发光二级管。假设 a 为最上一横,那么 b,c,d,e,f 则以顺时针排列,g 为中间那
一横。由于开发板中的连接是共阳极,假设要显示 0 的话,只需 a,b,c,d,e,f 为 0 即可,而
g 为 1.从开发板上的连接可以看到 a 对应 d0,b 对应 d1,···h 对应 d7,所以当需要显示
0 时,单片机输出应该为 11000000,即 0XC0,然后以此类推可以得出显示其他数字时
所对应
的 单 片 机 输 出 . 显 示 0-9 的 译 码 值
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90。
片选控制,对于 LED 与点阵显示的控制,通过 IOCTL 函数来实现,IOCTL 函数通过
第二个参数来控制是显示数码管还是点阵。当第二个参数设为 0x11 时,数码管点亮,当
该 数 为 0x12 时 , 点 阵 点 亮 。 由 于 倒 计 时 是 利 用 数 码 管 来 实 现 , 故 函 数 应 写 为
ioctl(fd,0x12,LEDWORD)。
计时控制设计,本次设计要求数码管从 00 计时到 99 且要循环 2 次。因此在程序中首
先定义一个数组,分别装入 0 到 9 的译码值。设置一个 for 循环,循环 2 次。在循环中设
置一个子循环,循环 10 次,其中循环变量 i 用来指示数组的第几个数,由于有两个数码管
要同时显示,所以 LEDWORD 为 16 位的数。将 LEDWORD 左移 8 位,然后将低八位赋
值 LEDWORD=(LEDWORD[i]<<8)|LEDWORD[i],从而实现两个数码管显示相同的数值。
倒计时的时间差控制由延时函数来实现。
(2) 点阵动态显示
LED点阵工作原理,本次设计中采用8X8LED点阵。点阵LED 驱动器逻辑中设置了8
个字节的缓冲区,每个字节按位对应点阵LED 模块上的一列8 个点。驱动器中的扫描电路
会将缓冲区的内容不断输出到LED 模块,CPU 可以读写此缓冲区,从而可以更新现实内
容。CPLD 内定义了“UPTECH”的字模,在上电后自动将此字模填充到缓冲区,并产生时
序定期更新字模在缓冲区的位置,从而实现字符的滚动效果。当CPU 第1 次写缓冲区之后,
驱动器停止“UPTECH”字符显示,继而可以接受CPU 写入的数据并加以显示。
片 选 控 制 , 动 态 显 示 是 利 用 点 阵 发 光 , 所 以 函 数 应 写 为
评论1
最新资源