基于SPCE061A单片机的六位七段LED数码管显示设计.doc
《基于SPCE061A单片机的六位七段LED数码管显示设计.doc》由会员分享,可在线阅读,更多相关《基于SPCE061A单片机的六位七段LED数码管显示设计.doc(29页珍藏版)》请在沃文网上搜索。
1、 摘 要随着计算机的越来越普及,人们对与信息的了解也越来越方便。而对于人机交流这块现在也是大家在重点研究的方面,像键盘等外部设备能提供给我们交流的平台。而除了PC机系统外想单片机、PLC等小型系统需要更适合的人机界面。多位LED设备就可以很好的完成这一任务,而且相比PC机等成本更加合理。本次课程设计是基于SPCE061A单片机的六位七段LED数码管显示设计,其是凌阳科技的一款16位微控制器,内嵌32KB闪存和2KB字SRAM。CPU最高可工作在49MHz的主频下,较高的处理速度使SPCE061A能够非常容易、快速地处理复杂的数字信号。其中的六段七位LED数码管可以很迅速的实现从“000000”
2、到“999999”的显示变化。关键词:SPCE061A单片机,六段七位LED数码管目 录1. 实验箱简介22.设计总体思路42.1设计思路43.硬件部分63.1各部分元件介绍63.1.1 SPCE061A63.1.2 6位7段数码管工作原理73.2硬件设计方案83.3基本原理104.软件部分104.1中断服务程序流程图104.2设计步骤124.3主程序135. 调试结果及分析246.总结与心得277.参考文献28 1. 实验箱简介1.1整体介绍 凌阳十六位单片机(SPCE061A)实验箱是集单片机应用技术、在线调试、在线仿真等功能于一体的强大开发系统,SPCE061A及其系列产品将带领MCU的
3、应用迈入片上系统(SOC)时代,使在体验凌阳音频的欢快愉悦中轻松步入单片机及其嵌入式系统的流行领域。图1-1 实验箱实物图 1.2功能特点凌阳科技大学计划实验箱的主要硬件配置: (1)主控芯片SPCE061A,凌阳16位单片机。 (2)44矩阵键盘和6位8段数码管,采用动态扫描方式驱动44矩阵键盘。 (3)18高低电平发生按键和8个发光二极管。 (4)I/O可选5V3.3V输出电路以及可选外部电压输入电路。 (5)两路0-3V可调A/D输入电压,为A/D数据采集等提供便利。(6)双色88 LED点阵,可以完成图形、字模显示。 (7)RS232接口可实现直接与PC机进行通讯。 (8)利用串行设备
4、输入输出接口(SIO接口)扩展外部存储芯片SPR4096A,为实验箱系统增加4M Bits Flash 或32K Bits SRAM的存储空间。 (9)USB1.1 接口,提供完整的单片机固体程序、上位机驱动程序源代码及其完整的软件包和应用范例,可直接进行USB通讯。 (10)带背光的12864点阵液晶模组,内藏凌阳的一款LCD驱动芯片SPLC501,采用最新的COG(Chip on Glass)技术使驱动和液晶合二为一。 (11)两路音频输出电路,采用凌阳音频功放芯片SPY0030A,可以充分体验SPCE061A带来的听觉效果。 (12)MIC 输入电路,配合SPCE061A内部的AGC和O
5、PI电路,可获得理想的语音效果。 (13)SPCE061A内置ICE电路,配合凌阳在线调试器PROBE和软件开发环境IDE可方便的实现在线编程、仿真、下载、调试等功能。2.设计总体思路2.1设计思路 本次设计要求完成基于单片机六位七段LED数码管的显示系统的设计。运行开始点亮所有的数码管,6位LED数码管均显示0并持续1s。1s后,第一位数码管从0显示到9,刷新时间为0.5s,其他数码管全部显示0。当第一位数码管显示到9后,第一位数码管保持显示9,第二位数码管从0显示到9,刷新时间为0.5s,其他数码管显示0。依次直到第6位数码管显示9,即6位数码管全部显示9,6位数码管全部显示0,持续1s,
6、如此循环。(1s的时间、0.5s的时间都使用2Hz的时基信号(IRQ5)提供)。6位数码管的显示状态见。 2.2 主程序流程图主程序流程图如图2-1。先进行系统初始化;开2Hz中断;进入数码管循环显示程序:判断位信号寄存器是否为0(位信号寄存器由读者自己定义,这个寄存器的内容在中断里会改变),如果为0,6位数码管显示“000000”;如果不为零,按照位信号和段码显示数据进行显示。图 2-1 系统流程图3.硬件部分3.1各部分元件介绍3.1.1 SPCE061ASPCE061A提供了位控制结构的I/O端口,每一位都可以被单独定义用于输入或输出数据。通常,对某一位的设定包括以下3个基本项:数据向量
7、Data、属性向量Attribution和方向控制向量Direction。3个端口内每个对应的位组合在一起,形成一个控制字,用来定义相应I/O口位的输入输出状态和方式。SPCE061A有32个可编程I/O端口,分为两组:IOA015口和IOB015口,其中每一个端口都可以被单独设置为输入或者输出口。图 3-1 SPCE061A结构图3.1.2 6位7段数码管工作原理首先介绍两个基本概念:段码和位码,段码即段选信号SEG,它负责数码管显示的内容,图4-2中ag、dp 组成的数据(a 为最低位,dp 为最高位)就是段码。比如1的段码“0x06”(b=1,c=1,其他都为0,即段码为00000110
8、b),8 的段码为“0x7f”;位码即位选信号DIG,它决定哪个数码管工作,哪个数码管不工作,比如仅使能DIG4,那么4 个LED 只有LED4 工作,而其它的三个都不工作。当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。比如当在第一个数码管上显示一个“6”时,如图3-4,先选中第一位数码管的位信号(实验仪上标号是“DIG1”),即先给和“DIG1”相连接的I/O 口送1;再把段码设置为0x007d,即在a、c、d、e、f、g 各段引出的端口为高电平,就可以显示一个“6”出来。图3-2 数图码管示意图 3-3 数码管电路图图 3-4 数码管显示“6”3.2硬件
9、设计方案硬件连接图如图3-3,IOA0IOA7分别接数码管的7个段信号ag和小数点信号dp,IOB15IOB12连接数码管的位信号14,IOB2IOB1连接数码管的位信号56,IOB0连接数码管的分隔符号信号DD,即把JP4和JP5的引针用跳线全部短接。实验箱在6位8段数码管的上面有16对排针,其中有7个“abcdefg”是控制此6位8段数码管的段码选择的,另有6个“123456”是控制6位8段数码管位选择的,“DD”控制“点”或“分隔符号”,“DP”控制小数点。把实验箱上JP4和JP5的引针用跳线全部短接。框图如图3-4。图 3-3 试验箱上SPCE061A和6位LED显示电路模块的连接图
10、3-4实物连接图3.3基本原理本实验用到的实验箱硬件模块为:SPCE061A核心及周边电路模块(包含32个I/O口),6位8段数码管电路模块。图 3-5 硬件原理图4.软件部分4.1中断服务程序流程图 由于显示数据的刷新时间为1s和0.5s,因此考虑采用2Hz(0.5s)时基中断。并且在中断内部完成段码数据更新。具体的流程如图 4-6示:在中断服务程序中会用到三个重要的寄存器:中断计数寄存器、显示数据寄存器、位信号寄存器。其中中断计数寄存器用于记录第几次进入中断(前3次有效),显示数据寄存器的内容为当前被刷新显示数据的数值(09),位信号寄存器用于标识被刷新数据所在位。结合主程序分析中断程序:
11、首先显示“000000”时需要延时1s,使用2Hz中断产生1s延时,需要连续响应两次中断,第二次响应中断延时满1s,设置显示数据寄存器和位信号寄存器,让第一位数码管显示1,其余各位仍为“0”,即显示“100000”;判断显示数据寄存器显示数据是否大于9,如果小于,显示数据寄存器数据加1;如果大于,判断位信号寄存器是否已经指向第六位数码管,否则位信号寄存器设置为指向下一位数码管,显示数据寄存器显示数据设置为0;如果已经指向第六位数码且显示数据寄存器为9,寄存器清零,清中断标志,中断返回。 图 4-1 中断服务程序流程图4.2设计步骤1. 新建一个工程ex1_Led_Show,新建一个C语言文件m
12、ain.c,新建一个汇编语言文件isr.asm。(根据读者需要可以自己新建文件) 2. 拷贝头文件SPCE061A.inc和SPCE061A.h到新建工程ex1_Led_Show,这两个文件在IDE的安装路径SPCE061Ainclude路径下可以找到。3. 添加SPCE061A.h、SPCE061A.inc到工程的“Head Files”;添加后可以直接用这两个头文件中申明的变量或者地址单元。4. 按照程序流程图编写程序。5. Rebuild All。6. 按照硬件连接图连接电路,注意断开JP3和JP7的所有引针,以免影响输出显示数据。 7. 下载程序到实验箱,根据数码管显示的现象,判断是否
13、和实验要求相统一。 8. 观察LED显示数据和实验箱播报的数据,分析是不是和实验要求相统一。4.3主程序#include SPCE061A.h#include Dig.h#define C_IRQ5_2Hz0x004unsigned int g_uiFirst = 0x0000;/用于控制1s延时unsigned int g_uiFlag;/用于控制数码管unsignedintg_Data11=0x0000,0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f; /0,1, 2, 3, 4, 5, 6, 7,
14、8,9unsigned int g_uiSeg;/段码指针int main(void) unsigned int Dis16 = 0x003f,0x003f,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_In
15、it(); /显示初始化,同时会打开IRQ4的4KHz中断while(1)if(g_uiFlag = 0x0000) DIG_SetAll(Dis1); /设置数码管全部显示0if(g_uiFlag != 0x0000)DIG_Set(g_uiFlag,g_Datag_uiSeg);/刷新6位数码管显示值*P_Watchdog_Clear = 0x0001;.INCLUDE SPCE061A.inc.INCLUDE Dig.inc.EXTERNAL _g_uiFirst.EXTERNAL _g_uiFlag.EXTERNAL _g_uiSeg.TEXT.PUBLIC _IRQ4_IRQ4:pu
16、sh r1,r5 to spr1 = C_IRQ4_1KHztest r1,P_INT_Ctrljnz ?L_IRQ4_1KHzr1 = C_IRQ4_2KHztest r1,P_INT_Ctrljnz ?L_IRQ4_2KHz?L_IRQ4_4KHz:call F_DIG_Drive /F_DIG_Drive函数是数码管显示函数,定义在Dig.asm文件r1 = C_IRQ4_4KHzP_INT_Clear = r1pop r1,r5 from spreti?L_IRQ4_2KHz:P_INT_Clear = r1pop r1,r5 from spreti?L_IRQ4_1KHz:call
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SPCE061A 单片机 六位七段 LED 数码管 显示 设计
