6位7段LED数码管显示.

6位7段LED数码管显示.
6位7段LED数码管显示.

目录

1. 设计目的与要求..................................................... - 1 -

1.1 设计目的...................................................... - 1 -

1.2 设计环境...................................................... - 1 -

1.3 设计要求...................................................... - 1 -

2. 设计的方案与基本原理............................................... - 2 -

2.1 6 位 8 段数码管工作原理....................................... - 2 -

2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示................... - 3 -

2.3 动态显示原理.................................................. - 4 -

2.4 unSP IDE2.0.0 简介............................................ - 6 -

2.5 系统硬件连接.................................................. - 7 -

3. 程序设计........................................................... - 8 -

3.1主程序......................................................... - 8 -

3.2 中断服务程序.................................................. - 9 -

4.调试............................................................... - 12 -

4.1 实验步骤..................................................... - 12 -

4.2 调试结果..................................................... - 12 -

5.总结............................................................... - 14 -

6.参考资料........................................................... - 15 - 附录设计程序汇总.................................................... - 16 -

1.设计目的与要求

1.1 设计目的

1. 了解 6 位 7 段 LED数码管的工作原理。

2. 熟悉并进一步掌握定时器和时基信号的使用方法。

3. 掌握 SPCE061A单片机控制 LED数码管显示的方法。

4. 通过本次课程设计使学生对智能仪表与装置系统有更深一步的了解,培养学生

将理论知识综合利用的能力,并与实践紧密结合。

5. 掌握各子系统设计方法、步骤,培养学生创新能力,总结报告的能力。

1.2 设计环境

1. 装有 Windows 系统和μ’nSP(TM) IDE 仿真环境的 PC 机一台,μ’nSP(TM)

十六位单片机实验箱一个。

2. 本实验用到的实验箱硬件模块为:SPCE061A核心及周边电路模块(包含 32 个

I/O口),6位 8 段数码管电路模块。

1.3 设计要求

1. 编程要求:主程序利用 C 语言编写,中断服务程序利用汇编语言编写。

2. 实现功能:SPCE061A单片机控制 6 个 LED数码管的显示。

3. 实验现象:运行开始点亮所有的数码管,6 位 LED 数码管均显示 0 并持续

1s。1s 后,第一位数码管从 0 显示到9,刷新时间为 0.5s,其他数码管全

部显示 0。当第一位数码管显示到9 后,第一位数码管保持显示 9,第二位

数码管从 0 显示到 9,刷新时间为 0.5s,其他数码管显示 0。依次直到第 6

位数码管显示 9,即6 位数码管全部显示 9,6 位数码管全部显示 0,持续

1s,如此循环。(1s 的时间、0.5s 的时间都使用 2Hz 的时基信号(IRQ5)提

供)。6 位数码管的显示状态见表1.

表 1 6 位数码管显示状态

注意:①表中序号为0 和61 的状态持续1s;其他状态刷新时间为0.5s。

②表中需要类似“1~10”表示有十个状态。

2.设计的方案与基本原理

2.1 6 位 8 段数码管工作原理

实验箱的6 位8 段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。实验箱上的数码管共有两种,如图1。

图 1 两种数码管图

首先介绍两个基本概念:段码和位码,段码即段选信号SEG,它负责数码管显示的内容,图4-1中a~g、dp组成的数据(a 为最低位,dp 为最高位)就是段码。比如1的段码“0x06”(b=1,c=1,其他都为0,即段码为00000110b),8 的段码为“0x7f”;位码即位选信号DIG,它决定哪个数码管工作,哪个数码管不工作,比如仅使能DIG4,那么6 个LED 只有LED4 工作,而其它的五个都不工作。

当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。比如当在第一个数码管上显示一个“6”时,如图2,先选中第一位数码管的位信号(实验箱上标号是“1”),即先给和“1”相连接的I/O 口送1;再把段码设置为0x007d,即在a、c、d、e、f、g各段引出的端口检测到高电平,就可以显示一个“6”出来。

图 2 数码管显示“6”

2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示

实验箱在6位8 段数码管的上面有16 对排针,其中有7 个“a\b\c\d\e\f\g\”是控制此6位8 段数码管的段码选择的,另有 6 个“1\2\3\4\5\6”是控制 6 位8 段数码管位选择的,“DD”控制“点”或“分隔符号”,“DP”控制小数点。把实验箱上JP4 和JP5 的引针用跳线全部短接。框图如图3。

图 3 实验箱上SPCE061A和6位LED显示电路模块的连接

按照上面数码管的显示原理,当要在第四个数码管上显示一个“E”时,先要通过IOB12 端口给“4”端口送一个1,选中第四个数码管;由图4-1 可以看出,显示“E”时,需要a、d、e、f、g段被点亮,所以给IOA0、IOA3、IOA4、IOA5、IOA6 端口各送一个1,则在a、d、e、f、g 端口各能检测到一个高电平,就可以点亮a、d、e、f、g 段,显示一个“E”。

2.3 动态显示原理

动态显示是数码管显示比较常用的方式,可以很好的解决端口资源紧张问题。下面以四位数码管为例说明动态显示的原理,如图 4 所示

图 4 4位*7段数码管动态显示原理图

动态显示的过程:以显示“1234”为例说明,首先发送“1”的段码“0x06”至数码管,然后仅使能位信号DIG4,LED4 就会显示“1”,其余的数码管都是不工作的;延时一定时间之后再发送“2”的段码“0x5b”至数码管,同时仅使能位信号DIG3,这时“2”就会在LED3 上显示出来;延时之后再发送“3”的段码并使能位信号DIG2,LED2 就会显示“3”;延时一定时间之后再发送“4”的段码并使能位信号DIG1,LED1 就会显示“4”;延时之后再回过头来重新发送“1”的代码,并选中位信号DIG4,重复循环点亮数码管。由于相邻两次(第一次点亮LED4 和第二次点亮LED4)的时间间隔很短(t<10ms),看起来仿佛LED4 一直在显示“1”,4 各数码管整体看起来就在显示“1234”。

动态显示的延时很重要,延时太短,数码管发光时间过短,数码管的亮度不够;延时太长,回扫间隔过大(超过11ms),肉眼就会感觉到闪烁。该例程采用4KHz 中断作为时间基准执行动态扫描,每来一次中断,显示自动移位,回扫时间t = 0.25ms*6 = 1.5ms。

通过对I/O口的控制,定时1s 的时间和0.5s 的时间都使用2Hz 的时基信号(IRQ5)。按照基础实验中IRQ5 中断的工作原理,响应一次IRQ5_2Hz 中断需要0.5s 的时间,而响应两次中断的时间刚好是1s。按照实验要求,当开IRQ5_2Hz 中断时,6 位数码管全部显示“0”后,响应两次IRQ5_2Hz中断,再从第一个数码管开始显示;而刷新时间刚好是响应一次IRQ5_2Hz 中断的时间。

2.4 unSP IDE2.0.0 简介

1. 为什么推出unSP IDE

2.0.0D (R)

为了提高μ’nSP IDE 工具的兼容性,让μ’nSP IDE 工具能支持更多的芯片,并且由于实验箱实验指导书的全面改版,IDE 下的例程全面修改、更新,凌阳科技推出了μ’nSP IDE 工具的最新版本——unSP IDE 2.0.0(以下简称:IDE2.0.0)。

IDE 2.0.0 作为μ’nSP IDE 工具截止现在(2005-11-11)最新的一个版本,它不但继承以前版本IDE 的特点,同时增加了一些新的功能,集纳了众多用户在使用μ’nSP IDE 过程中提出的一些意见,并包含了一些新的例程。

除增加了一些新的功能外,IDE2.0.0 在编译优化、代码查错定位等方面都有了一定的进步,用户在使用本版IDE 时,应该可以体会到,其对代码的严谨性有了更高的要求。而在新版IDE 的各个方面,都有所加强,用户在使用过程当用会有所体会。

新添加功能、加强原有功能等,都没有改变unSP IDE 一惯的使用方法,所以用户可以参考unSP IDE184(R) 的用户手册,以学习μ’nSP IDE 的基本操作及相关知识,这在IDE2.0.0 的使用当中是保持不变的。

2. 从IDE184 到IDE2.0.0D的变化

IDE1.8.4 是用户用的最多的一版μ’nSP IDE 工具,实际上在推出IDE1.8.4 之后,μ’nSP IDE 也在不断的升级,其间也出现了非常多的版本,比如已发布的就有IDE1.16.1 和IDE1.18.1;但相比之下,IDE2.0.0的版本有更多细节的完善,更多新功能的添加,为用户的代码编辑、工程调试等提供了更人性化的辅助功能和更便利的工具。

从较大的区别来看,IDE2.0.0 工具由IDE1.8.4 支持两颗芯片变为支持四颗芯片,增加了许多新的功能,并对一些旧的功能进行了改善,同时对IDE1.8.4 下包含的例程进行了修改、更新和规范化,走过了很长的路程,是对前面μ’nSP IDE 工具版本的升级。而IDE 在安装后的文件结构发生了一些变化,为后期加入更多的新芯片提供了统一的平台,也更符合IDE 版本维护的要求。

从细节上看,IDE2.0.0 在代码编译、优化以及错误、警告定位方面都作了改进,在调试时的增加变量提示、在Memery观察窗中数据变化以红色提示等等;为用户的软件编辑、调试提供了更加友好的界面。

在网上提供的《IDE User guide》(unSP IDE184 用户手册)中详细地介绍了μ’nSP

IDE 工具的使用方法.

2.5 系统硬件连接

硬件连接图如图3,IOA0~IOA7 分别接数码管的7 个段信号a~g 和小数点信号dp,IOB15~IOB12 连接数码管的位信号1~4,IOB2~IOB1 连接数码管的位信号5~6,IOB0 连接数码管的分隔符号信号DD,即把JP4 和JP5 的引针用跳线全部短接。

硬件电路连接图

3.程序设计

本程序由主程序和中断服务程序组成。

3.1主程序

主程序流程图如图5。先进行系统初始化;开2Hz 中断;进入数码管循环显示程序:判断位信号寄存器是否为0(位信号寄存器由读者自己定义,这个寄存器的内容在中断里会改变),如果为0,6 位数码管显示“000000”;如果不为零,按照位信号和段码显示数据进行显示。

图4-5 主程序流程图

主程序:

#include "SPCE061A.h"

#include "Dig.h"

#define C_IRQ5_2Hz 0x0004

unsigned int g_uiFirst = 0x0000; //用于控制1s延时unsigned int g_uiFlag; //用于控制数码管

unsigned int g_Data[11] = {0x0000,0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x00 6f}; //0, 1, 2, 3, 4, 5, 6, 7, 8, 9

unsigned int g_uiSeg; //段码指针

3.2 中断服务程序

由于显示数据的刷新时间为1s 和0.5s,因此考虑采用2Hz(0.5s)时基中断。并且在中断内部完成段码数据更新。具体的流程如图 6 示:

在中断服务程序中会用到三个重要的寄存器:中断计数寄存器、显示数据寄存器、位信号寄存器。其中中断计数寄存器用于记录第几次进入中断(前3次有效),显示数据寄存器的内容为当前被刷新显示数据的数值(0~9),位信号寄存器用于标识被刷新数据所在位。结合主程序分析中断程序:首先显示“000000”时需要延时1s,使用2Hz 中断产生1s 延时,需要连续响应两次中断,第二次响应中断延时满1s,设置显示数据寄存器和位信号寄存器,让第一位数码管显示1,其余各位仍为“0”,即显示“100000”;判断显示数据寄存器显示数据是否大于9,如果小于,显示数据寄存器数据加1;如果大于,判断位信号寄存器是否已经指向第六位数码管,否则位信号寄存器设置为指向下一位数码管,显示数据寄存器显示数据设置为0;如果已经指向第六位数码且显示数据寄存器为9,寄存器清零,清中断标志,中断返回。

中断服务程序流程图:

图 6 中断服务程序流程图

中断服务程序:

int main(void)

{

unsigned int Dis1[6] = {0x003f,0x003f,0x003f,0x003f};

unsigned int uiIntStatus;

uiIntStatus = *P_INT_Ctrl_New; //开2Hz中断uiIntStatus |= C_IRQ5_2Hz;

*P_INT_Ctrl = uiIntStatus;

g_uiFlag = 0x0000; //该变量在2Hz中断当中会被修改

g_uiSeg = 0; //该变量在2Hz中断当中会被修改,以便及时刷新显示

DIG_Init(); //显示初始化,同时会打开IRQ4的4KHz中断

while(1)

{

if(g_uiFlag == 0x0000)

{

DIG_SetAll(Dis1); //设置数码管全部显示0 }

if(g_uiFlag != 0x0000)

{

DIG_Set(g_uiFlag,g_Data[g_uiSeg]); //刷新6位数码管显示值}

*P_Watchdog_Clear = 0x0001;

}

}

4.调试

4.1 实验步骤

1. 新建一个工程 ex1_Led_Show,新建一个 C 语言文件 main.c,新建一个汇编语言文件 isr.asm。

(根据读者需要可以自己新建文件)

2. 拷贝头文件 SPCE061A.inc 和 SPCE061A.h 到新建工程 ex1_Led_Show,这两个文件在 IDE的安装路径\SPCE061A\include 路径下可以找到。

3. 添加 SPCE061A.h、SPCE061A.inc到工程的“Head Files”;添加后可以直接用这两个头文件中申明的变量或者地址单元。

4. 按照程序流程图编写程序。

5. Rebuild All。

6. 按照硬件连接图连接电路,注意断开 JP3 和 JP7 的所有引针,以免影响输出显示数据。

4.2 调试结果

调试结果如下图:

运行开始时

图7运行开始时

运行到第1位9、第2位1时

图8 运行到第1位9、第2位1时运行到前两位都为9时

图9 运行到前两位都为9时

运行到6位都为9时

图10 运行到6位都为9时

5.总结

在这为期两周的课程设计中,通过对6位7段LED数码管显示的设计与分析,我清楚地认识到了自己以前仅仅学到的书本上的知识的欠缺与经验的不足,所谓实践出真知,智能仪器本就是一种实践操作环节十分重要的课程,而这次的课设正好弥补了我操作方面的不足,进而更加巩固了这方面的知识。

课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。尤其是硬件方面的知识,我们更为的稀少,以前的课程中学到的基本都是软件方面LabVIEW的使用等等,而硬件却是很少接触到,因此对于硬件我们是知之甚少。然而我们通过不断地查阅6位7段LED数码管和IDE的相关资料,对其有了进一步的认识,还有硬件设备与软件的连接,我们也都出现过问题,但最总都能认真的一一排除予以解决。最终,我们达到了任务书上的要求,完成了本次的智能仪器课程设计。

在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成

想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

最后感谢本次课程设计中老师与同学们的帮助与指导,使我获益匪浅!

6.参考资料

【1】朱麟章蒙建波主编.检测理论及应用. 重庆大学出版社 2007.8(2)

【2】张国雄编著.测控电路天津大学出版社 2005.1

【3】费业泰编著.误差理论与数据处理 .合肥工业出版社 2005.1

【4】王志刚编著.单片机应用技术及实训.北京:清华大学出版社 2004.5

附录设计程序汇总

Main.c

#include "SPCE061A.h"

#include "Dig.h"

#define C_IRQ5_2Hz 0x0004

unsigned int g_uiFirst = 0x0000; //用于控制1s延时

unsigned int g_uiFlag; //用于控制数码管

unsigned int g_Data[11] = {0x0000,0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x00 6f};

//0, 1, 2, 3, 4, 5, 6, 7, 8, 9

unsigned int g_uiSeg; //段码指针

//========================================================

// 语法格式:int main(void)

// 实现功能:数码管显示

// 参数:无

// 返回值:无

//========================================================

int main(void)

{

unsigned int Dis1[6] = {0x003f,0x003f,0x003f,0x003f};

unsigned int uiIntStatus;

uiIntStatus = *P_INT_Ctrl_New; //开2Hz中断

uiIntStatus |= C_IRQ5_2Hz;

*P_INT_Ctrl = uiIntStatus;

g_uiFlag = 0x0000; //该变量在2Hz中断当中会被修改

g_uiSeg = 0; //该变量在2Hz中断当中会被修改,以便及时刷新显示

DIG_Init(); //显示初始化,同时会打开IRQ4的4KHz中断

while(1)

{

if(g_uiFlag == 0x0000)

{

DIG_SetAll(Dis1); //设置数码管全部显示0

}

if(g_uiFlag != 0x0000)

{

DIG_Set(g_uiFlag,g_Data[g_uiSeg]); //刷新6位数码管显示值}

*P_Watchdog_Clear = 0x0001;

}

}

Isr.asm

.INCLUDE SPCE061A.inc

.INCLUDE Dig.inc

.EXTERNAL _g_uiFirst

.EXTERNAL _g_uiFlag

.EXTERNAL _g_uiSeg

.TEXT

//========================================================

// 汇编格式:_IRQ4

// 实现功能:1KHz中断调用F_DIG_Drive函数

// 参数:无

// 返回值:无

//========================================================

.PUBLIC _IRQ4

_IRQ4:

push r1,r5 to [sp]

r1 = C_IRQ4_1KHz

test r1,[P_INT_Ctrl]

jnz ?L_IRQ4_1KHz

r1 = C_IRQ4_2KHz

test r1,[P_INT_Ctrl]

jnz ?L_IRQ4_2KHz

?L_IRQ4_4KHz:

call F_DIG_Drive //F_DIG_Drive函数是数码管显示函数,定义在Dig.asm文件中

r1 = C_IRQ4_4KHz

[P_INT_Clear] = r1

pop r1,r5 from [sp]

reti

?L_IRQ4_2KHz:

[P_INT_Clear] = r1

pop r1,r5 from [sp]

reti

?L_IRQ4_1KHz:

call F_DIG_Drive

[P_INT_Clear] = r1

pop r1,r5 from [sp]

reti

//========================================================

// 汇编格式:_IRQ5

// 实现功能:2Hz中断进行显示处理

// 参数:无

// 返回值:无

//========================================================

.PUBLIC _IRQ5

_IRQ5:

push r1,r5 to [sp]

r1 = C_IRQ5_2Hz

test r1,[P_INT_Ctrl]

jnz ?L_IRQ5_2Hz

?L_IRQ5_4Hz:

r1 = C_IRQ5_4Hz

[P_INT_Clear] = r1

pop r1,r5 from [sp]

reti

?L_IRQ5_2Hz:

r1 = [_g_uiFirst]

cmp r1,0x0001 //第2次进入中断

ja ?Start //时间〉=1s

r1 = [_g_uiFirst] //时间小于1s

r1 += 1

[_g_uiFirst] = r1

goto ?Exit

?Start:

r1 = [_g_uiFirst]

cmp r1,2 //1s

jne ?Next

r1 += 1 //初始化g_uiFlag、g_uiSeg显示"1000"

[_g_uiFirst] = r1

r1 = 1

[_g_uiFlag] = r1

r1 = 2

[_g_uiSeg] = r1

goto ?Exit

?Next:

r1 = [_g_uiSeg]

cmp r1,9 //更改段码指针,显示数值加1

ja ?Next1

r1 += 1

[_g_uiSeg] = r1

goto ?Exit

?Next1:

r1 = [_g_uiFlag] //更改被刷新数码管位

cmp r1,4

je ?Last

r1 += 1

[_g_uiFlag] = r1

r1 = 2

[_g_uiSeg] = r1

goto ?Exit

?Last:

r1 = 0x0000 //置标志,重新显示“000000”

[_g_uiFirst] = r1

[_g_uiFlag] =r1

goto ?Exit

?Exit:

r1 = C_IRQ5_2Hz

[P_INT_Clear] = r1

pop r1,r5 from [sp]

Reti

Dig.asm

.DEFINE SEG_IO_Port 0 // 若LED段选使用IOA口则采用该行定义

//.DEFINE SEG_IO_Port 1 // 若LED段选使用IOB口则采用该行定义

.DEFINE SEG_IO_HighByte 0 // 若LED段选使用IO口低8位则采用该行定义

//.DEFINE SEG_IO_HighByte 1 // 若LED段选使用IO口高8位则采用该行定义

//================================================

// LED位控制端口设定

//================================================

//.DEFINE DIG_IO_Port 0 // 若LED位选使用IOA口则采用该行定义.DEFINE DIG_IO_Port 1 // 若LED位选使用IOB口则采用该行定义

/////----- 数码管的位数 -----/////

.DEFINE DIG_Count 4

七段数码管显示

七段数码管显示设计报告 目录 一、设计任务 二、题目分析与整体构思 三、硬件电路设计 四、程序设计 五、心得体会

一.设计任务 数码的显示方式一般有三种:第一种是字型重叠式;第二种是分段式;第三种是点阵式。目前以分段式应用最为普遍,主要器件是七段发光二极管(LED)显示器。它可分为两种,一是共阳极显示器(发光二极管的阳极都接在一个公共点上),另一是共阴极显示器(发光二极管的阳极都接在一个公共点上,使用时公共点接地)。 数码管动态扫描显示,是将所用数码管的相同段(a~g 和p)并联在一起,通过选位通 信号分时控制各个数码管的公共端,循环依次点亮各个数码管。当切换速度足够快时,由于人眼的“视觉暂留”现象,视觉效果将是数码管同时显示。 根据七段数码管的显示原理,设计一个带复位的七段数码管循环扫描程序,本程序需要着重实现两部分: 1. 显示数据的设置:程序设定4 位数码管从左至右分别显示1、2、3、4; 2. 动态扫描:实现动态扫描时序。 利用EXCD-1 开发板实现七段数码管的显示设计,使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA相应引脚。四位数码管与FPGA 之间通过8 位拨码开关(JP1)进行连接。 二.题目分析与整体构思 使用EXCD-1 开发板的数码管为四位共阴极数码管,每一位的共阴极7 段数码管由7 个发光LED 组成,呈“”字状,7 个发光LED 的阴极连接在一起,阳极分别连接至FPGA 相应引脚。SEG_SEL1、SEG_SEL2、SEG_SEL3 和SEG_SEL4 为四位7 段数码管的位选择端。当其值为“1”时,相应的7 段数码管被选通。当输入到7 段数码管SEG_A~ SEG_G 和SEG_DP 管脚的数据为高电平时,该管脚对应的段变亮,当输入到7 段数码管 SEG_A~SEG_G 和SEG_DP 管脚的数据为低电平时,该管脚对应的段变灭。该四位数码管与FPGA 之间通过8 位拨码开关(JP1)进行连接,当DIP 开关全部拨到上方时(板上标示为:7SEGLED),FPGA 的相应IO 引脚和四位7 段数码管连接,7 段数码管可以正常工作;当DIP 开关全部拨到下方时(板上标示为:EXPORT5),FPGA 的相应IO引脚与7 段数码管断开,相应的FPGA 引脚用于外部IO 扩展。 注意:无论拨码开关断开与否,FPGA 的相应IO 引脚都是与外部扩展接口连接的,所 以当正常使用数码管时,不允许在该外部扩展接口上安装任何功能模块板。 数码管选通控制信号分别对应4 个数码管的公共端,当某一位选通控制信号为高电平时,其对应的数码管被点亮,因此通过控制选通信号就可以控制数码管循环依次点亮。一个数码管稳定显示要求的切换频率要大于50Hz,那么4 个数码管则需要50×4=200Hz 以上的切换频率才能看到不闪烁并且持续稳定显示的字符。 三.硬件电路设计 设计结构图如下:

LED数码管显示实验

信息工程学院实验报告 课程名称:单片机原理及接口 实验项目名称:LED 数码管显示实验 实验时间:2016年3月11日 班级:通信141 姓名: 学号: 一、实 验 目 的: 熟悉keil 仿真软件、proteus 仿真软件、软件仿真板的使用。了解并熟悉一位数码管与 多位LED 数码管的电路结构、与单片机的连接方法及其应用原理。学习proteus 构建LED 数 码管显示电路的方法,掌握C51中单片机控制LED 数码管动态显示的原理与编程方法。 二、实 验 设 备 与 器 件 硬件:微机、单片机仿真器、单片机实验板、连线若干 软件:KEIL C51单片机仿真调试软件,proteus 系列仿真调试软件 三、实 验 原 理 LED 显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七 段LED ,这种显示器有共阴极与共阳极两种。 共阴极LED 显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发 光二极管则点亮;共阳极LED 显示器的发光二极管阳极并接。 七段LED 数码管与单片机连接时,只要将一个8位并行输出口与显示器的发光二极管引 脚相连即可。8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制 成 绩: 指导老师(签名): a f b e g c d dp 1 2 3 4 5 10 9 8 7 6 g f a b e d c dp (a) 共阴极 (b) 共阳极 (c) 管脚配置

发光二极管的8位字节数据称为段选码。 多位七段LED数码管与单片机连接时将所有LED的段选线并联在一起,由一个八位I/O 口控制,而位选线分别由相应的I/O口线控制。如:8位LED动态显示电路只需要两个八位I/O口。其中一个控制段选码,另一个控制位选。 由于所有位的段选码皆由一个I/O控制,因此,在每个瞬间,多位LED只可能显示相同的字符。要想每位显示不同的字符,必须采用动态扫描显示方式。即在每一瞬间只使某一位显示相应字符。在此瞬间,位选控制I/O口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符,段选控制I/O口输出相应字符段选码。如此轮流,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。 不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。由人眼的视觉特性,每一位LED在一秒钟内点亮不少于30次,其效果和一直点亮相差不多。 四、实验内容与步骤 1、电路图的设计。 (1)打开proteus软件,单击P,打开搜索元器件窗口,如图 1-1 所示: 图1-1 搜索元器件 (2)添加元器件AT89C51、CAP、BUTTON、LED-BLUE、RES、CRYSTAL、7SEG-MPXI1CC,修改元器件的参数,绘制电路图,如图1-2 所示:

七段数码管及其驱动七段数码管及其驱动原理,

[转]7段数码管管脚顺序及译码驱动集成电路74LS47,48 7段数码管管脚顺序及译码驱动集成电路74LS47,48 这里介绍一下7段数码管见下图7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg 这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数!74ls48引脚图管脚功能表 74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,下面我就给大家介绍一下这个元件的一些参数与应用技术等资料。74ls48引脚功能表—七段译码驱动器功能表http://www.51hei. com/chip/312.html74LS47引脚图管脚功能表:

实验一_用七段数码管显示简单字符--译码器及其使用 实验报告

用七段数码管显示简单字符——译码器及 其应用 实验报告 专业班级:2011级计算机1班 学号:1137030 姓名:赵艺湾 实验地点:理工楼901 实验时间:2012.9.26

实验一用七段数码管显示简单字符——译码 器及其应用 一、实验目的 1、了解显示译码器的结构和理解其工作原理。 2、学习7段数码显示译码器设计。 3、学习用基逻辑门、3-8译码器、4-1选择器控制显示器的显示。 二、实验内容 1、了解逻辑门、3-8译码器、4-1选择器的工作原理,设计基本电路,实现以下功能: C2C1C0是译码器的3个输入,用C2C1C0的不同取值来选择在七段数码管上输出不同字符。七段数码管是共阳极的。 图1 七段译码器 C2C1C0 的不同取值对应显示的字母如下: 图2 字符编码

三、实验仪器及设备: 一、PC 机 二、 Quartus Ⅱ 9.0 三、 DE2-70 四、显示器 四、实验步骤 1、列出真值表,计算要实现以上功能时数码管的0-7段对应的逻辑函数式。 真值表如下: 函数表达式如下: “0”=' 02C C + “1”=“2”=0' 1' 012C C C C C ++ “3”=(2C +1C +' 0C )(2C +0C +'1C )(2C +'1C +' 0C ) “4”=“5”=2C “6”=2C +1C +02C C 2、新建一个 quartusII 工程,用以在DE2_70平台上实现所要求的电路。 建立一个BDF 文件,基于SSI ,实现七段译码器电路,用SW3_SW1作为输入C2C1C0, DE2_70平台上的的数码管分别为HEX0~HEX7,输出接HEX1。 参照de2_70_pin_assignments.csv 中的引脚分配表配置引脚。 新建仿真文件,给出输入信号,观察输出信号是否符合要求。 编译工程,完成后下载到FPGA 中。 拨动波段开关并观察七段数码管HEX0的显示,以验证设计的功能是否正确。 基于3-8译码器和4-1选择器重复上述2.、中的步骤完成设计。

实验四八位七段数码管动态显示电路的设计

八位七段数码管动态显示电路的设计 一、实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、学习VHDL的CASE语句及多层次设计方法。 二、实验原理 七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图4-4-1所示。 图4-1 静态七段数码管 由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。共阳极性的数码管与之相么。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。 三、实验内容 本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。在实验中时,数字时钟选择1024HZ作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。 四、实验步骤 1、打开QUARTUSII软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。 3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光 盘中提供的示例程序。 4、编写完VHDL程序后,保存起来。方法同实验一。

5、对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。 6、编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译 一次,以使管脚分配生效。 7、根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。 如果是调用的本书提供的VHDL代码,则实验连线如下: CLK:FPGA时钟信号,接数字时钟CLOCK3,并将这组时钟设为1024HZ。 KEY[3..0]:数码管显示输入信号,分别接拨动开关的S4,S3,S2,S1。 LEDAG[6..0]:数码管显示信号,接数码管的G、F、E、D、C、B、A。 SEL[2..0]:数码管的位选信号,接数码管的SEL2、SEL1、SEL0。 8、用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与 自己的编程思想一致。 五、实验现象与结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字信号源模块的时钟选择为1464HZ,拨动四位拨动开关,使其为一个数值,则八个数码管均显示拨动开关所表示的十六进制的值。

6位7段LED数码管显示实验

6位7段LED数码管显示实验 【实验要求】1)初始化时,使6位LED均显示8,显示时间为1s。2)从第一个LED开始,从0显示到9,0.5s刷新一次。直到最后一个LED。【实验目的】1)熟悉并进一步掌握定时器中断的使用和时基信号的使用。2)进一步巩固I/O口的使用方法。3)了解6位7段LED数码管的使用。【实验设备】1)装有u’nsp IDE仿真环境的PC机一台。2)μ’nSP?十六位单片机实验箱一个。【实验原理】通过对I/O口的控制,初始化时点亮所有的数码管,即6位LED数码管均显示8。1s 后,从第一位数码管开始从0显示到9,刷新时间为0.5s。直到最后一个数码管。1s的时间使用定时器A (FIQ);0.5s的时间使用2HZ的时基信号(IRQ5)。【硬件连接图】A0—A6 接A---G A8—A13 接CS1—CS6 B0—B7 接KEY 【实验步骤】⑴按硬件电路原理图进行连接。⑵画程序流程图。⑶编写程序。⑷调试程序。⑸结合硬件调试,实现最终功能。【主程序流程图】 广告灯设计(利用取表方式) 桂林电子工业学院孙安青 https://www.360docs.net/doc/646100487.html, 1.实验任务 利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。 2.电路原理图 3.系统板上硬件连线 把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L 1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。 4.程序设计内容 在用表格进行程序设计的时候,要用以下的指令来完成 (1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。 (2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。 因此,只要把控制码建成一个表,而利用MOVC工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:

数码管显示原理

数码管显示原理 我们最常用的是七段式和八段式LED 数码管,八段比七段多了一个小数点,其他的基本相同。所谓的八段就是指数码管里有八个小LED 发光二极管,通过控制不同的LED 的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED 的另一端高电平,它便能点亮。而共阳极就是将八个LED 的阳极连在一起。其原理图如下。

其中引脚图的两个COM 端连在一起,是公共端,共阴数码管 要 将其接地,共阳数码管将其接正5伏电源。一个八段数码管称为一 位,多个数码管并列在一起可构成多位数码管,它们的段选线(即 a,b,c,d,e,f,g,dp )连在一起,而各自的公共端称为位选线。显示时, 都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点 亮。数码管的8段,对应一个字节的8位,a 对应最低位,dp 对应最 高位。所以如果想让数码管显示数字 0,那么共阴数码管的字符编码 为00111111,即0x3f ;共阳数码管的字符编码为11000000,即0xc0。 可以看出两个编码的各位正好相反。如下图。 MW 引脚图 共阴极 *5V 共阳取 g f vpM a ti e d COM c

共阴扱共阳极 共阳极的数码管0~f的段编码是这样的: unsigned char code table[]={ // 共阳极0~f 数码管编码0xc0,0xf9,0xa4,0xb0,//0~3 0x99,0x92,0x82,0xf8,//4~7 0x80,0x90,0x88,0x83,//8~b 0xc6,0xa1,0x86,0x8e //c~f }; 共阴极的数码管0~f的段编码是这样的: un sig ned char code table[]={// 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; 共阴极0~f数码管编码 //0~3 //4~7 //8~b //c~f Qa

7段数码管显示电路

4.4 显示模块 4.4.1 7段数码管的结构与工作原理 7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成 数字显示,另外一个圆形的发光二极管显示小数点。 当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,如图4.9所示。 4.4.2 7段数码管驱动方法 发光二极管(LED 是一种由磷化镓(GaP )等半导体材料制成的,能直接将电能转变成光能的发光显示器件。当其内部有一一电流通过时,它就会发光。 7段数码管每段的驱动电流和其他单个LED 发光二极管一样,一般为5~10mA ;正向电压随发光材料不同表现为1.8~2.5V 不等。 7段数码管的显示方法可分为静态显示与动态显示,下面分别介绍。 (1) 静太显示 所谓静态显示,就是当显示某一字符时,相应段的发光二极管恒定地寻能可截止。这种显示方法为每一们都需要有一个8位输出口控制。对于51单片机,可以在并行口上扩展多片锁存74LS573作为静态显示器接口。 静态显示器的优点是显示稳定,在发光二极管导通电注一定的情况下显示器的亮度高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU 才执行一次显示更新子程序,这样大大节省了CPU 的时间,提高了CPU 的工作效率;缺点是位数较多时,所需I/O 口太多,硬件开销太大,因此常采用另外一种显示方式——动态显示。

(2)动态显示 所谓动态显示就是一位一位地轮流点亮各位显示器(扫描),对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮),但利用人眼的视觉暂留效应和发光二极管熄 灭时的余辉效应,看到的却是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参烽,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需一个8位I/O 口(称为扫描口或字位口),控制各位LED 显示器所显示的字形也需要一个8位口(称为数据口或字形口)。 动态显示器的优点是节省硬件资源,成本较低,但在控制系统运行过程中,要保证显示器正常显示,CPU 必须每隔一段时间执行一次显示子程序,这占用了CPU 的大量时间,降低了CPU 工作效率,同时显示亮度较静态显示器低。 综合以上考虑,由于温度显示为精确到小数点后两位,故只需4个数码管,又考虑到CPU 工作效率与电源效率,本毕业设计采用静态显示。为共阳极显示。 4.4.3 硬件编码 动74LS47是一款BCD 码转揣为7段输出的集成电路芯片,利用它可以直接驱动共阳 极的7段数码管。它的引脚分部和真值表分别下图。

6位7段LED数码管显示

目录 1. 设计目的与要求..................................................... - 1 - 1.1 设计目的...................................................... - 1 - 1.2 设计环境...................................................... - 1 - 1.3 设计要求...................................................... - 1 - 2. 设计的方案与基本原理............................................... - 2 - 2.1 6 位 8 段数码管工作原理....................................... - 2 - 2.2 实验箱上 SPCE061A控制 6 位 8 段数码管的显示................... - 3 - 2.3 动态显示原理.................................................. - 4 - 2.4 unSP IDE2.0.0 简介............................................ - 6 - 2.5 系统硬件连接.................................................. - 7 - 3. 程序设计........................................................... - 8 - 3.1主程序......................................................... - 8 - 3.2 中断服务程序.................................................. - 9 - 4.调试............................................................... - 12 - 4.1 实验步骤..................................................... - 12 - 4.2 调试结果..................................................... - 12 - 5.总结............................................................... - 14 - 6.参考资料........................................................... - 15 - 附录设计程序汇总.................................................... - 16 -

用七段数码管显示简单字符

用七段数码管显示简单字符——译码器及其应 用 一、实验目的 1、了解显示译码器的结构和理解其工作原理。 2、学习7段数码显示译码器设计。 3、学习用基逻辑门、3-8译码器、4-1选择器控制显示器的显示。 二、实验内容 1、了解逻辑门、3-8译码器、4-1选择器的工作原理,设计基本电路,实现以下功能: C2C1C0是译码器的3个输入,用C2C1C0的不同取值来选择在七段数码管上输出不同字符。七段数码管是共阳极的。 图1 七段译码器 C2C1C0的不同取值对应显示的字母如下: 图2 字符编码

三、实验仪器及设备: 一、PC 机 二、 Quartus Ⅱ 9.0 三、 DE2-70 四、显示器 四、实验步骤 1、列出真值表,计算要实现以上功能时数码管的0-7段对应的逻辑函数式。 真值表如下: 函数表达式如下: “0”=' 02C C + “1”=“2”=0'1'012C C C C C ++ “3”=(2C +1C +'0C )(2C +0C +'1C )(2C +' 1C +'0C ) “4”=“5”=2C “6”=2C +1C +02C C 2、新建一个 quartusII 工程,用以在DE2_70平台上实现所要求的电路。 建立一个BDF 文件,基于SSI ,实现七段译码器电路,用SW3_SW1作为输入C2C1C0, DE2_70平台上的的数码管分别为HEX0~HEX7,输出接HEX1。 参照de2_70_pin_assignments.csv 中的引脚分配表配置引脚。 新建仿真文件,给出输入信号,观察输出信号是否符合要求。 编译工程,完成后下载到FPGA 中。 拨动波段开关并观察七段数码管HEX0的显示,以验证设计的功能是否正确。 基于3-8译码器和4-1选择器重复上述2.、中的步骤完成设计。

实验一 七段数码显示译码器

实验一七段数码显示译码器 一、实验目的 1.学会的破解quartusII方法并破解机房电脑。 2.掌握七段数码管显示的工作原理并能够用verilog语言编程。 3.初步了解quartusII建立程序编译、仿真及下载的操作流程并学会七段数码显示译码器的 Verilog硬件设计。 二、实验原理 7段数码管是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能做十进制BCD译码,然而数字系统中的处理和运算都是二进制,所以输出表达都是十六进制的,为了满足十六进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。本实验中的7段译码管输出信号LED7S的7位分别接数码管的7个段,高位在左,低位在右 三、实验内容 1、实现BCD/七段显示译码器的“ Verilog ”语言设计。 说明:7段显示译码器的输入为:IN0…IN3共4根, 7段译码器的逻辑表,同学自行设计,要求实现功能为:输入“ 0…15 ”(二进制)输出“ 0…9…F ”(显示数码),输出结果应在数码管(共阴)上显示出来。 2、使用工具为译码器建立一个元件符号 3、设计仿真文件,进行验证。 4、编程下载并在实验箱上进行验证。 四、实验步骤 第一步破解quartusII 1.在安装目录找到本机中关于quartusII的证书文件 2.运行未破解的quartusII,在【tools】>【license setup】路径下的倒数第三行中找到本机 网卡号并复制; 3.以记事本方式打开证书文件,在编辑替换中将证书文件中host id后面的号码替换为上一 步复制的内容,保存退出; 4.在quartusII中打开【tools】>【license setup】中找到证书所在路径并打开单击ok即完成 破解。 证书所在目录license setup选项

4位7段数码管驱动电路设计要求

4位7段数码管驱动电路 图1 开发板电路原理图 信号说明

1. iRST_N(异步复位) 当iRST_N信号为低时,Seg7_Driver模块中的所有寄存器异步复位为初值。 2. iCLK 模块的输入时钟40MHz。 3. iSeg_Val[15:0] 7段数码管输入二进制值,0x0~0xF iSeg_Val[15:12],左侧第一位7段数码管的值。 iSeg_Val[11: 8],左侧第两位7段数码管的值。 iSeg_Val[ 7: 4],左侧第三位7段数码管的值。 iSeg_Val[ 3: 0],左侧第四位7段数码管的值。 4. iDot_Val[3:0] 各位7段数码管小数点的显示,值为1表示显示小数点,0表示不显示小数点。 iDot_Val[3],左侧第一位7段数码管的小数点。 iDot_Val[2],左侧第两位7段数码管的小数点。 iDot_Val[1],左侧第三位7段数码管的小数点。 iDot_Val[0],左侧第四位7段数码管的小数点。 5. oDisplay[7:0] 7段数码管的数据信号。4位7段数码管共用数据信号。7段数码管为共阳极连接,各段数据线为0时,对应段发光。 6. oDis_En[3:0] 各位7段数码管的使能信号,低有效。

oDis_En[3],左侧第一位7段数码管的使能信号。 oDis_En[2],左侧第两位7段数码管的使能信号。 oDis_En[1],左侧第三位7段数码管的使能信号。 oDis_En[0],左侧第四位7段数码管的使能信号。 建议的分块: 将整个驱动电路分成Seg7_Ctrl模块与Seg7_Hex2seg模块 Seg7_Ctrl模块负责产生数码管动态显示的控制信号oDis_En的时序 Seg7_Hex2Seg模块负责将二进制值转换成数据码管显示的数据值,包括小数点的值。 注意点: 1. 动态显示过程是利用人眼的视觉残留现象来实现的,应选择适当的数码管扫描频率。可先 选择数码管的扫描显示的刷新率为125Hz(8ms),即每位数码管用2ms。 2. 完成基本功能后,可实验改变刷新率,观察数码管显示的效果,并思考原因。 3. 如果要使得数码管能够显示,A,b,C,n,o等其他字符,模块应该作怎样的修改?

七段数码管显示实验

单片机实验报告

实验九七段数码管显示实验 一、实验目的 1.学习七段数码管的工作原理; 2.学习数码管与8051单片机的接口方法; 3.掌握动态扫描显示技术。 二、实验原理 如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管亮 共阴极接法共阳极接法 图4.9-1 暗的不同组合,可以显示多种数字、字母以及其它符号。LED数码管中的发光二极管共有两种连接方法: 1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED显示器为共阴极接法 2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。 为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp 8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。

表4.9-1 共阴极LED 数码管字形代码 字型 共阴极字形代码 字型 共阴极字形代码 字型 共阴极字形 代码 0 3FH 6 7DH C 39H 1 06H 7 07H d 5EH 2 5BH 8 7FH E 79H 3 4FH 9 6FH F 71H 4 66H A 77H 灭 00H 5 6DH b 7CH *实际上试验中使用的是共阳极数码管,这里就不一一列出。 2、动态显示 按图4.9-2(b )连接线路,通过交替选中LED1和LED0循环显示两位十进制数。七段数码管段码连接不变,位码驱动输入端S1、S0接8255A C 口的PC1、PC0,通过C 口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。请编程实现在两个LED 数码管上循环显示00 99,程序流程图如图4.9-3(b)所示。 (a) 静态显示程序流程图 (b) 动态显示程序流程图 图4.9-3 十位数的段码至A 口 个位数的段码至A 口 开始 开始 返回DOS 返回DOS 延时并修改要显示的数字

BCD七段数码管显示译码器电路

BCD七段数码管显示译码器电路 7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数! 发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光,有红、黄、绿等色。只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。图4 - 17(a)是共阴式LED数码管的原理图,图4-17(b)是其表示符号。使用时,公共阴极接地,7个阳极a~g由相应的BCD七段译码器来驱动(控制),如图4 - 17(c)所示。 BCD七段译码器的输入是一位BCD码(以D、C、B、A表示),输出是数码管各段的驱动信号(以F a~F g表示),也称4—7译码器。若用它驱动共阴LED数码管,则输出应为高有效,即输出为高(1)时,相应显示段发光。例如,当输入8421码DCBA=0100时,应显示,即要求同时点亮b、c、f、g段,熄灭a、d、e段,故译码器的输出应为F a~F g=0110011,这也是一组代码,常称为段码。同理,根据组成0~9这10个字形的要求可以列出8421BCD七段译码器的真值表,见表4 - 12(未用码组省略)。

七段数码管循环显示

(封面) 天津理工大学中环信息学院 电子技术课程设计 设计题目:七段数码管循环显示控制电路设计 姓名:诸钦峰学号:11160014 系别:电子信息工程系专业班级:物联网1班 开始日期: 2013年6月24日完成日期2013 年07月01日 指导教师:彭利标成绩评定等级

天津理工大学中环信息学院 课程设计任务书 系别:电子信息工程系班级:物联网1班姓名:诸钦峰学号:11160014 本表附在课程设计说明书的目录之后。

天津理工大学中环信息学院 课程设计成绩评定表 系别:电子信息工程系班级:物联网1班姓名:诸钦峰学号:11160014 本表附在课程设计任务书之后。

目录 一、设计意义 (4) 二、主要任务 (5) 2.设计方案比较 (5) 三、电路组成框图 (8) 1.数列循环电路的设计 (8) 2.序列显示电路的设计 (8) 2.1十进制自然数序列的显示电路 (8) 2.2奇数序列显示电路 (9) 2.3偶数序列显示电路 (9) 2.4音乐序列显示电路 (10) 3.脉冲产生电路的设计 (11) 4.二分频电路的设计 (11) 四、电路原理图 (12) 五、各电路的仿真测试 (14) 1.脉冲产生电路的仿真 (15) 2.二频分电路的仿真 (16) 六、元件清单 (16) 七、总结 (16)

一、设计意义 这次的课程设计主要是用计数器来实现的,这个七段数码管循环显示控制电路设计的实质就是要产生一系列有规律的数列, 然后通过一个七段数码管显示出来。这里使用的只要就是计数器, 计数器在时序电路中应用的很广泛,它不仅可以用于对脉冲进行计数,还可用于分频,定时,产生节拍脉冲以及其他时序信号。运用计数器的不同的功能和不同的接发就可以实现不同的序列输出了。 而这次的内容还包括分电路图的整合,使这个七段数码管能够按照要求那个依次输出自然序列,奇数序列,偶数序列还有音乐序列。为了实现这个循环输出的功能,在设计的时候还用到了一个以为寄存器,可以利用它的输出端来控制四个计数器的工作情况, 可以让四个计数器依次工作,就可以达到要求的依次循环输出数列。 最后还有一个部分就是脉冲的产生基于多谐振荡器可以产生方波,就可以利用它来产生脉冲信号了。而这个多谐振荡器采用的是 555 定时器来完成的。这个设计基本上就是由以上三个部分连接在一起组成的。 1、基本方案框图 计数器输出信号,将信号给译码器和脉冲信号再由脉冲信号和译码器分别编成自然序列,奇数序列,偶数序列和音乐序列,最后由数码管显示出来。 图1 七段数码管显示的基本方框图

7段数码管实验报告

EDA 实验报告 实验名称: 7段数码管控制接口学院:信息工程学院 专业: 11级电子信息工程2班年级、班: 2009级2班 学生姓名:王璐 指导教师:郭华 2014 年 6 月24 日

7段数码管控制接口 一、实验要求。 用设计一个共阴7 段数码管控制接口,要求:在时钟信号的控制下,使 6 位数码管动态刷新显示0—F,其中位选信号为8-3 编码器编码输出。 二、实验内容。 在实验仪器中,8 位7 段数码显示的驱动电路已经做好,并且其位选信(SEL[7..0])为一3-8 译码器的输出,所以我们在设计7 段数码管控制接口时,其位选信号输出必须经8-3编码。 显示控制器的引脚图如图40-1: 图1 图中CP 为时钟输入端,SEGOUT[7..0]为段驱动输出;SELOUT[2..0]为位选信号输出;NUMOUT[3..0]为当前显示的数据输出。 图40-2 7段显示控制器仿真波形图 从图40-2可以看出,6位数码管是轮流点亮的,我们以NUMOUT=1 这段波形为参考:当SELOUT为000时,点亮第一位显示器,显示的数字为1,同时,NUMOUT 输出的数据也为“0001”。同理,当SELOUT 为001 时,点亮第二位显示器,显示数字为1,直到 6 位显示器全都显示完毕,等待进入下一个数字的显示。 同时,还有一个问题不可忽视,位扫描信号的频率至少需要多少以上,才能使显示器不闪烁?简单的说,只要扫描频率超过眼睛的视觉暂留频率24HZ以上就可以达到点亮单个显示,却能享有6个同时显示的视觉效果,而且显示也不闪烁。当我们输入频率为5MHZ时,我们通过加法计数器来产生一个约300HZ 的信号,并且由它来产生位选信号,请参考下面程序段:

七段LED数码管显示电路设计(精)

实验七七段LED数码管显示电路设计 一、实验目的 1.学习EDA软件的基本操作 2.学习使用原理图进行设计输入 3.初步掌握软件输入、编译、仿真和编程的过程 4.学习实验开发系统的使用方法 二、实验说明 本实验通过七段LED数码管显示电路的设计,初步掌握EDA 设计方法中的设计输入、编译、综合、仿真和编程的基本过程。七段LED数码管显示电路有四个数据输入端(D0-D3),七个数据输出端(A-G。 三、实验要求 1、完成七段LED数码管显示电路的原理图输入并进行编译 2、对设计的电路经行仿真验证 3、编程下载并在实验开发系统上验证设计结果 四、实验步骤 1、新建工程 2、新建Verilog HDL文件 3、在文本输入窗口键入代码 4、保存HDL文件

5、编译文件直至没有错误 6、新建波形文件 7、添加观察信号 8、添加输入激励,保存波形文件 9、功能仿真 七段LED数码管显示电路真值表: 输入D3D2D1D0G F E D C B A 000000111111 100010000110 200101011011 300111001111 401001100110 501011101101 601101111101 701110001111 810001111111

910011101111 A10101110111 B10111111100 C11001111001 D110111011110 E11101111001 F11111110001五、电路原理图 啊Verilog代码描述: module qiduan(data_in,data_out; input [3:0]data_in; output [6:0]data_out; reg [6:0]data_out; always @(data_in begin casex(data_in 4'b0000:data_out<=7'b0111111;

组合电路——7段数码管显示驱动电路设计报告

实验一、组合电路——7段数码管显示驱动电路设计 一、实验目的 了解EDA实验箱7位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。 二、硬件要求 主芯片为Cyclone V E,型号为EP4CE22F17C8,7位八段数码管显示器,四位拨码开关。 三、实验内容 用四位拨码开关产生8421BCD码,用CPLD分别产生7段数码管扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。 四、实验原理 1、7 2、 动信号a,b,c,d,e,f,g。通过调节四位拨码开关的状态,数码管应显示与之对应的字符。 五、实验连线 输入:将芯片管角a0~a3分别接4个拨码开关; 输出:将芯片管角led7s0~7分别接到数码管7段驱动信号a、b、c、d、e、f、g上。六、实验源程序:decl7s.vhd libraryieee; use ieee.std_logic_1164.all; entity decl7s is port(a:instd_logic_vector(3 downto 0); led7s:outstd_logic_vector(6 downto 0));

end; architecture one of decl7s is begin process(a) begin case a is when "0000" => led7s<="0111111"; when "0001" => led7s<="0000110"; when "0010" => led7s<="1011011"; when "0011" => led7s<="1001111"; when "0100" => led7s<="1100110"; when "0101" => led7s<="1101101"; when "0110" => led7s<="1111101"; when "0111" => led7s<="0000111"; when "1000" => led7s<="1111111"; when "1001" => led7s<="1101111"; when "1010" => led7s<="1110111"; when "1011" => led7s<="1111100"; when "1100" => led7s<="0111001"; when "1101" => led7s<="1011110"; when "1110" => led7s<="1111001"; when "1111" => led7s<="1110001"; when others => null; end case; end process; end; 七、波形仿真结果

嵌入式ARM键盘接口和七段数码管的控制实验

实验三键盘接口和七段数码管的控制实验 一、实验目的 1. 学习4X4键盘的与CPU的接口原理 2. 掌握键盘芯片HD7279的使用,及8位数码管的显示方法; 二、实验内容 1. 通过4X4按键完成在数码管上的各种显示功能,以及LCD上显示。 三、实验设备 1.EL-ARM-830+教学实验箱,PentiumII以上的PC机,仿真调试电缆。 2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境, 仿真调试驱动程序。 四、实验原理 键盘和7段数码管的控制实验,是通过键盘的控制芯片HD7279A来完成的。它的信号线及控制线连接到S3C2410上,驱动线直接连到8位共阴的7段数码管上。由于其芯片的接口电压是5V的,而S3C2410的接口电压是3.3V,所以,HD7279A的信号、控制线经过CPLD 把电压转换到3.3V,然后送入CPU中。 HD7279是一片具有串行接口的可同时驱动8位共阴式数码管或独立的LED的智能显示驱动芯片。该芯片同时还可连接多达64键的键盘矩阵,单片即可完成显示键盘接口的全部功能。内部含有译码器可直接接受BCD码或16进制码并同时具有两种译码方式。此外还具有多种控制指令如消隐、闪烁、左移、右移、段寻址等,具有片选信号可方便地实现多于8位的显示或多于64键的键盘接口。 HD7279在与S3C2410接口中,它使用了4根接口线。片选信号#CS(低电平有效),时钟信号CLK,数据收发信号DATA,中断信号#KEY(低电平送出),EL-ARM-830+实验箱与其的接口中,使用了三个通用I/O接口,和一个外部中断,实现了与HD7279A的连接,S3C2410的外部中断接HD7279的中断#KEY,三个I/O口分别与HD7279A的其他控制、数据信号线相连。HD7279的其他管脚分别接4X4按键和8位数码管。 当程序运行时,按下按键,平时为高电平的HD7279A的#KEY就会产生一个低电平,送给S3C2410的外部中断5请求脚,在CPU中断请求位打开的状态下,CPU会立即响应外部中断5的请求,PC指针就跳入中断异常向量地址处,进而跳入中断服务子程序中,由于外部中断4/5/6/7使用同一个中断控制器,所以,还必须判断一个状态寄存器,判断是否是外部中断5的中断请求,当判断出是外部中断5的中断请求,则程序继续执行,CPU 这时,通过发送#CS片选信号选中HD7279A,再发送时钟CLK信号和通过DATA线发送控制指令信号给HD7279A,HD7279A得到CPU发送的命令后,识别出该命令,然后,扫描按键,

相关文档
最新文档