6位7段LED数码管显示要点.docx

上传人:b****3 文档编号:1495888 上传时间:2022-10-22 格式:DOCX 页数:30 大小:300.91KB
下载 相关 举报
6位7段LED数码管显示要点.docx_第1页
第1页 / 共30页
6位7段LED数码管显示要点.docx_第2页
第2页 / 共30页
6位7段LED数码管显示要点.docx_第3页
第3页 / 共30页
6位7段LED数码管显示要点.docx_第4页
第4页 / 共30页
6位7段LED数码管显示要点.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

6位7段LED数码管显示要点.docx

《6位7段LED数码管显示要点.docx》由会员分享,可在线阅读,更多相关《6位7段LED数码管显示要点.docx(30页珍藏版)》请在冰豆网上搜索。

6位7段LED数码管显示要点.docx

6位7段LED数码管显示要点

 

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.

 

表16位数码管显示状态

注意:

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

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

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

2.16位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所示

图44位*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.4unSPIDE2.0.0简介

1.为什么推出unSPIDE2.0.0D(R)

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

IDE2.0.0)。

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

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

而在新版IDE的各个方面,都有所加强,用户在使用过程当用会有所体会。

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

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

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

从较大的区别来看,IDE2.0.0工具由IDE1.8.4支持两颗芯片变为支持四颗芯片,增加了许多新的功能,并对一些旧的功能进行了改善,同时对IDE1.8.4下包含的例程进行了修改、更新和规范化,走过了很长的路程,是对前面μ’nSPIDE工具版本的升级。

而IDE在安装后的文件结构发生了一些变化,为后期加入更多的新芯片提供了统一的平台,也更符合IDE版本维护的要求。

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

在网上提供的《IDEUserguide》(unSPIDE184用户手册)中详细地介绍了μ’nSPIDE工具的使用方法.

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"

#defineC_IRQ5_2Hz0x0004

unsignedintg_uiFirst=0x0000;//用于控制1s延时

unsignedintg_uiFlag;//用于控制数码管

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

unsignedintg_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中断服务程序流程图

中断服务程序:

intmain(void)

{

unsignedintDis1[6]={0x00

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1