基于F2812扩展数码管显示设计
摘要
LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,h来表示。
在本设计中,我们做了数码管的设计,利用DSP芯片的GPIO口驱动数码管,使得数码管显示出正确的数字,而数码管数字的显示,则是通过GPIO口的高低电平控制,而高低电平则是通过程序控制的。如此我们便成功设计出了基于F2812的数码管的显示。
目录
一、 设计目的与任务书 1
1.1、设计目的 1
1.2、设计任务书 1
1.2.1设计技术指标要求 1
1.2.2设计要求完成以下内容 1
1.2.3设计要求 1
1.2.4整体方案设计 2
二、硬件介绍及系统配置 2
2.1、DSP特点 2
2.2、TMS320F281x芯片 2
2.2.1主要性能: 2
2.2.2芯片引脚有7大类: 2
2.2.3基本介绍 3
三、硬件电路设计 4
3.1、DSP最小系统 4
3.2、数码管显示模块 6
四、设计实现程序 6
五、程序调试 7
5.1、调试过程 7
5.2、编译结果 8
5.3、遇到的问题以及解决办法 8
六、课程设计总结 9
6.1、课题总结 9
6.2、个人心得 9
前 言
20世纪60年代以来,随着大规模集成电路、数字计算机等信息技术的飞速发展,数字信号处理(Digital Signal Processing , DSP)技术应运而生并得到快速发展。在过去的20多年时间里,DSP在理论和应用方面不断的进步和完善,在越来越多的应用领域中迅速取代传统的模拟信号处理方法,并且开辟出许多的应用领域。
由于DSP技术应用非常广泛,迫切需要一种能高效完成复杂数字信号处理或数字系统控制,能够作为DSP系统核心的器件。因此,众多半导体厂商投入到高性能数字信号处理器(Digital Signal Processors,DSP)芯片的研发当中。1982年,美国德州仪器公司(Texas Instruments Incorporation,TI)推出了该公司的第一款DSP芯片,很快DSP芯片就以其数字器件特有的稳定性、可重复性、可规模集成和易于实现DSP算法等优点,为数字信号处理技术带来了更大的发展和应用前景。
1、设计目的与任务书1.1、设计目的 如今DSP已经成为运用很广泛的嵌入式芯片,它的功能强大,能完成很多一般芯片不能完成的数据处理,大量使用DSP已经是全球的潮流。通过课程设计,使我们综合运用 DSP 技术课程和其他有关课程的理论和生产实际知识去分析和解决具体问题的能力得到提高,并使其所学知识得到进一步巩固、深化和发展;初步培养学生对工程设计的独立工作能力,学习设计的一般方法;以及锻炼我们查阅资料、方案比较、团结合作的能力。学会简单电路的实验调试和整指标测试方法,增强我们的动手能力,为以后学习和工作打下基础。 1.2、设计任务书 1.2.1设计技术指标要求(1)利用DSP的CPU硬件资源 (2)使用GPIO引脚 (3)外接直流5V的数码管灯 1.2.2设计要求完成以下内容(1)设计说明书 (2)电路原理图 (3)各设计模块单元原理 (4)实验结果动态显示说明 (5)附录全部元件清单 1.2.3设计要求(1)设计必须符合国家现行设计政策 (2)依据国标及有关规定 (3)在保证运行安全可靠的前提下,尽量满足经济性 (4)积极选用新技术低功耗产品,不得使用淘汰产品 1.2.4整体方案设计 通过对TMS320CF2812的控制以及对其引脚GPIO功能的设计,在实验板上实现1个数码管7段显示。首先对TMS320C2000系列DSP的I/O口作为通用I/O的原理进行了解,并熟悉通用I/O的编程方法,了解LED动态显示的基本原理和实现方法,最终通过CCS集成开发环境编程完成设计。 二、硬件介绍及系统配置 2.1、DSP特点 接口方便,编程方便,稳定性好,精度高,可重复性好,集成方便。 2.2、TMS320F281x芯片 2.2.1主要性能: 高性能静态CMOS技术,JTAG边界扫描支持,高性能的32位处理器,片内存储器,引导ROM 4K×16位,外部存储器接口,时钟与系统控制,3个外部中断,外部中断扩展(PIE)模块,128位的密钥,3个32位的CPU定时器,马达控制外围设备,串口外围设备,12位的ADC 16通道,最多有56个独立的可编程、可多途通用输入/输出(GPIO)引脚,高级的仿真特性,开发工具,低功耗模式和节能模式,封装方式,温度选择。 2.2.2芯片引脚有7大类: 19根地址总线,16根数据总线,10根XINTF控制总线,14根JTAG和其他信号,56跟GPIO或外围信号(16根GPIOA或EVA信号,16根GPIOB或EVB信号,2根GPIOD或EVA信号,2根GPIOD或EVB信号,3根GPIOE或中断信号,4根GPIOF或SPI信号,2根GPIOF或SCI-A信号,2根GPIOF或eCAN信号,6根GPIOF或McBSP信号,1根GPIOF或XF CPU信号,2根GPIOG或SCI-B信号)
图 1 TMS320F2812 芯片引脚图 2.2.3基本介绍 TMS320F2812是一款TI高性能TMS320C28x系列32位定点DSP处理器,TL2812-EVM是基于TI TMS320F2812而研发的一款高性能DSP开发板,采用核心板+底板方式,尺寸为185mm*135mm,底板采用沉金无铅工艺的两层板设计,它为用户提供了SOM-TL2812核心板的测试平台,用于快速评估核心板的整体性能。 TMS320F28x系列DSP片上都有非常丰富的外设,每个片上外设均可产生1个或多个中断请求。中断由两级组成,其中一级是PIE中断,另一级是CPU中断。CPU中断有32个中断源,包括RESET、NMI、EMUINT、ILLEGAL、12个用户定义的软件中断USER1~USER12和16个可屏蔽中断(INT1~INT14、RTOSINT和DLOGINT)。所有软件中断均属于非屏蔽中断。由于CPU没有足够的中断源来管理所有的片上外设中断请求,所以在TMS320F28x系列DSP中设置了一个外设中断扩展控制器(PIE)来管理片上外设和外部引脚引起的中断请求。 三、硬件电路设计 3.1、DSP最小系统 TMS320F2812是TI公司出品的数字信号处理芯片,功能强大,用于信号处理。通常情况下,DSP芯片不能独立运行,要想使其运行,必须对其供电,并提供时钟、复位等信号,同时还要设计程序下载调试的接口(JTAG),这些基本的外围电路就构成了DSP最小系统。
图 2 DSP最小系统原理框图 设计中使用F2812的GPIO口与数码显示管连接。通过数码管共阳极与GPIO相连,驱动使其数码管显示。 通过程序控制,设置GPIOC引脚为输出方式。使GPIOC引脚输出为低电时,电源与GPIOC引脚间有电压差,从而点亮数码管;使GPIO引脚输出为高电平时,电源与GPIO引脚间电压差为0,则数码管不显示。 硬件设计总框图 图 3 硬件总框图 外接+5V电源,晶体振荡器频率为30MHZ ,晶振的两个引脚分别连接在F2812的XTAL1和XTAL2端,晶振的两端再分别连接一个10pF电容后接地,复位电路经电源正极接10uF电容后接4.7K欧姆电阻再接地,复位端RST在电容和电阻之间。如图5所示: 图 4 时钟电路 图 5 复位电路 3.2、数码管显示模块 一个共阳数码管通过与电阻连接构成显示驱动模块,与TMTMS320F2812连接,进行数码管模块显示如下图所示。 图 6 数码管显示电路 四、设计实现程序
本设计的程序流程框图如下图所示图 7 流程图 五、程序调试 5.1、调试过程 (1)安装软件,考虑软件版本与电脑系统相匹配,经多次尝试选用8.3版本。 (2)添加头文件,在ccs8.3版本中打开TOOLS,打开compiler中include文件夹,添加头文件。 (3)编译,添加程序,点击bulid all,对其进行编译。 (4)运行,对程序进行单步运行 (5)进行Proteus布图仿真。
5.2、编译结果
数码管显示程序的编译结果如下图: 图 8 编译结果 5.3、遇到的问题以及解决办法 - 电脑系统与CCS软件不相匹配,不支持运行。多次尝试,找到其适合版本8.3。
- 头文件没有添加进工程,通过询问,查阅资料,添加所需头文件到工程。
六、课程设计总结 6.1、课题总结 本次课程设计,我们所选择的题目是利用GPIO口扩展数码管显示的设计和实现。基于ccs8.3软件进行程序编译以及调试,用proteus进行仿真,完成简单软件仿真工作。 6.2、个人心得 本次课程设计因中间放假,实际做设计的时间较短,故此过程较为艰难。先是安排课题以及分组,课题的选择和队员的选择都是自己决定,以保证课设的完成度。在收假之后,第一天便和组员去图书馆查阅资料,找到一些关于GPIO口以及数码管的应用资料,以作参考。 安装软件的过程很艰难,先是安装班长发的资料中有软件,便试着安装,虽不成功,却也得到了经验,可以在网站找到别的版本的CCS进行安装。安装软件之后进行编程实践,用老师发的编程案例进行测试软件,可程序的头文件老是出错,就必须进行很多改正,先是将头文件的添加做了很多改善,往工程中添加了许多需要用的头文件,以便调用,使程序可以正常运行。而这多次的过程完全证明了“冰冻三尺,非一日之寒”,我在这多次的使用过程中,深刻地体会到了这些道理,并懂得其中内涵。 在本次课设的过程中,当我在遇到程序及软件安装中的困难时,周围的同学都会积极的帮助我们,而队友之间也都竭诚合作,最后我们的课程设计也算是比较成功。通过本次课程设计,我学会了软件CCS的使用,并且对于CCS更加了解。这次课程设计,增强了我们的实践动手能力,让我们学会了怎样运用自己所学的各科专业知识来完成课程设计,使我们明白了组织知识的重要性。 这次课程设计的时间虽说是短暂的,但在这几天中我学会了不少的东西,在这一学期的学习课程中,我对于TMS320F2812芯片的了解仅仅局限于书面上的了解,对于CCS的具体使用也只是文字了解,而在这几天的课程设计之后,我懂得了将书本知识与实际操作相结合的重要性,也自然在以后的生活中将这些道理铭记与使用。 本次课程设计中间时间间隔跨度较大,总体来说只有短短一周,对于我们来说对于DSP的认知方面仍有巨大的不足之处,但是经过一周的学习我对DSP芯片有了更加深刻的了解。以前只是通过书籍或其他消息知道DSP芯片的重要性,但是只有真正做了之后才能意识到DSP芯片的功能强大。在为期一周的课设中,我过的很充实,遇到了很多的难题,自己也在老师的引导下尝试自己去解决困难,我觉着老师交给我们的知识很重要,老师交给我们的态度更重要。在一周课设中,老师始终贯彻的就是能力差不要紧,态度一定要端正,要学会独立自主的解答问题。在课设过程中,我们前两天在图书馆查阅了相关书籍,见参考文献,除此之外还查阅了类似的实例,得到了一定的启发。中间间隔了三天,我尝试着装了一下最新版本的CCS,由于系统的原因造成不能正确定义头文件而不能编译,老师提出了解决方法,但是由于自身能力有限,不会装XP系统,在这个难关上我队友就迎难而上,最终解决了这个难题,在周四上午终于完成了对程序的编译。于是,我从周三开始就对整体方案进行设计,进行流程图的绘制,我参考了别人的设计方案,并在队友的讨论中得出了我们自己的方案。周四的时候,上午软件弄好了,程序在编译的过程中有错误,队友在改错的过程中,我开始了对报告的书写。在本次课设之中,我的能力不足是个很严重的问题,软件方面真的很差,在今后的学习生活中我会大力锻炼自己,不断提升自己的能力。还有一个明显的短板是,我们没有连接实物,这是一个很大的遗憾。但是这次课设也有些许可取之处,我体会到了团队的重要性,明白了自身的不足,加深了对这门学科的理解。 这次实验不仅增强了我的实际动手能力,而且还让我对于DSP有了更大的兴趣,以后定将花更多的时间对其进行更深入的学习。 经过为期将近五天的课程设计,从课设选题到CCS软件安装,从程序调试到硬件元器件的布局,这一过程充满了曲折与艰辛,似乎也印证了“实践是检验真理的唯一标准”这句至理名言。在本次课程设计初期,我们同组队员都面临DSP的CCS软件版本和电脑所装系统不匹配问题,历经了8.3版本,6.1版本,7.3版本,5.5版本,虽然道路不是一帆风顺,但在老师,同学的帮助下效果还是可观的,我深深感受到了集体的力量以及师生的力量。
接下来,困难更是重重,程序头文件屡屡出错,这也给我们小组带来了不少打击,我们也没有放弃。基于程序,我们正本清源。第一次我们出错是在system.h的头文件,程序编译报错,我们清楚错误之后,我们在图书馆,网络上查询相关资料,积极研究,同时在同学的提醒下将老师发的头文件.c以及.h文件添加到工程下面,解决了一部分错误,但仍然没有将错误改完,过程从简单到复杂,从多到少,反反复复,层出不穷,可能这就是课程的意义吧,让你在不断的实践中不断出错,不断改正,在错误中汲取经验,在反复中吸收知识,而我也从DSP课程设计中获益良多。
这次课程设计,由于时间紧张,我们都是进行软件仿真,编程是对GPIO的相关功能进行虚拟操作,这不仅提高了我们的动手能力与学习能力,也让我们对DSP这一课程有了更深层次的理解,获取到相关专业知识。这次课设我认识到老师让我们用GPIO口进行实验的目的,GPIO模块不仅与时钟关系不大,没有直接时钟源驱动,也与中断关系不大,这为我们更好的运用GPIO提供了一个很好的开端。这次我们通过在程序使得数码管上的数字发生变化,来达到实验的结果。调试编译程序这一过程对于我们是复杂的,也是晦涩难懂的,这期间的汗水,收获,可能也只有本人才得其中感受,在控制理论与数字的这座桥梁,使所学到的控制理论在CCS软件中得以实现,使抽象的理论不再让人望而生畏,与实际工程现象成为基本映射,我相信这是值得我们纪念和以后践行的。
最后,感谢一周以来队员的相互团结,同学的帮助,老师的教导,谢谢大家。
附录1硬件电路图
附录2程序清单- #include "DSP28_Device.h"
- void WriteLED(unsigned char data); //送给数码管的数据函数
- unsigned int * SPI_CS = (unsigned int *) 0x4500; //0X4500是CPLD的SPICS地址
- unsigned long int a;
- Uint16 SpiCode[]={0x7E7E,0x2929,0x2c2c,0x6666,0xa4a4,0xa0a0,0x3e3e,0x2020,0x2424,0x2222,0xe0e0,0xb1b1,0x6868,0xa1a1,0xa3a3,0xffff,0xdfdf};
- void main(void)
- { int k;/*初始化系统*/
- InitSysCtrl();/* 关中断 */
- DINT;
- IER = 0x0000;
- IFR = 0x0000;/* 初始化PIE控制寄存器 */
- InitPieCtrl(); /* 初始化PIE参数表 */
- InitPieVectTable(); /* 初始化外设寄存器 */
- InitPeripherals();/*设置CPU*/
- EINT; // Enable Global interrupt INTM
- ERTM; // Enable Global realtime interrupt DBGM
- *SPI_CS=0x00; //写0,低电平选中
- for(;;)
- { for(k=0;k<17;k++) //循环发送16个数据
- {WriteLED(SpiCode[k]); //发送数据函数
- for(a=0;a<500000;a++);
- }
- }
- }
- void WriteLED(unsigned char data)
- { if(Spi_TxReady() == 1) //当检测到SPI发送准备信号致1时,开始发送数据
- SpiaRegs.SPITXBUF = data; //把数据写如SPI发送缓冲区
- while( Spi_TxReady()!=1); //没检测到发送准备信号
- *SPI_CS=0x01; //关片选
- *SPI_CS=0x00; //退出时开片选
- }
复制代码
完整的Word格式文档51黑下载地址:
基于dsp的数码管显示课程设计报告.doc
(408.67 KB, 下载次数: 65)
|