基于STC12C5A32S2单片机的光立方设计黄舒静终稿修改后Word格式文档下载.docx
- 文档编号:7601406
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:35
- 大小:3.47MB
基于STC12C5A32S2单片机的光立方设计黄舒静终稿修改后Word格式文档下载.docx
《基于STC12C5A32S2单片机的光立方设计黄舒静终稿修改后Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于STC12C5A32S2单片机的光立方设计黄舒静终稿修改后Word格式文档下载.docx(35页珍藏版)》请在冰点文库上搜索。
本次设计的主要容是建立一个4x4x4的发光二极管三维立方显示体,为了控制每一个发光二极管的亮灭,必须编写程序来实现,从而也能显示更加多样的图样组合。
为了使效果显示更加多样,此次毕业设计设有多种显示模式。
其中最简单的显示模式是静态显示。
不同的是,它还存在多种的动态显示模式。
顾名思义,它们所呈现的图形是可以变化的。
按照显示模式的不同,分为平移,旋转,缩放,闪烁。
硬件方案设计:
由于其基本原理是通过单片机来控制LED点阵显示,所有在设计过程中,必须要先确定系统所要达到的功能。
具体体现在系统应该具备哪些模块,各个模块间应该怎样连接,以及电路系统的最优化连接。
系统检测:
在焊接完电路系统后,应先检测整个系统模块的功能,根据调试结果纠正程序中的错误,直至各个模块的功能都能正常运行,最后检测结果应满足此次毕业设计的要求。
1.3本文预期达到的效果
2.总体设计
2.1系统的工作原理
本系统的核心是STC12C5A32S2单片机,由主控模块、驱动模块、显示模块构成,其中显示模块为64个LED灯组成的光立方。
系统模块框图见图2-1:
图2-1整个系统结构框图
2.2各模块方案选择
2.2.1单片机主控制模块
单片机开发板采用的是STC12C5A32S2,这款是宏晶科技新推出的1T增强型51单片机。
该芯片的强大功能体现在它集成了各种高性能工业标准接口并且有着高兼容性,在资源布局上与传统51单片机都能兼容。
在速度方面,STC12C5A32S2是1T核,速度大约可达到传统单片机的十多倍。
在延时时间上是传统51单片机的十几分之一,因此在对延时有较高要求的地方,STC12C5A32S2的应用更为广泛。
STC12C5A32S2/AD/PWM系列单片机具有低功耗,高速,超强抗干扰的显著特点,是宏晶科技生产的新一代8051单片机,该系列单片机的指令代码与传统8051完全兼容,并且速度快了8-12倍。
[2]
下图2-2为单片机管脚图:
图2-2为单片机管脚图
2.2.2显示模块
方案一:
采用传统LED灯,但是由于传统的LED灯聚光性差,在点亮时相互之间将产生干扰从而影响视觉效果,使呈现的图像不清晰,因此方案一不可行。
方案二:
为了提高聚光性,可以尝试采用白发蓝的LED雾灯。
该类型的LED灯有较高的聚光性,在发亮时工作的灯的光亮不会影响周围灯的亮度显示。
白发蓝LED雾灯的工作电压为2.7-4.2V,电流围为2MA-10MA,其实物图见图2-3:
图2-3雾面乳型LED灯
3系统硬件电路设计与实现
3.1硬件电路设计
系统的控制核心采用的是STC12C5A32S2单片机,所以它自身能与8051指令和管脚兼容。
为了满足程序代码的存储要求单片机还应该有较大的存储空间,采用STC12C5A32S2单片机则可以满足该要求。
STC12C5A32S2单片机有多种时钟发生源,由于电路需要较高的稳定性因此采用普通晶体时钟源作为时钟发生器,晶体为12MHZ,显示模块则用64个雾灯全彩LED来实现。
[3]
3.2单片机最小系统
概念:
是指能使单片机正常工作并且发挥其功能的必要组成部分。
以STC12C5A32S2单片机为例,最小系统由单片机、时钟电路、I/O设备、复位电路等组成。
[4]
单片机最小系统如图3-1所示:
图3-1单片机最小系统框图
3.2.1时钟电路
了解单片机时钟端口的使用和特点是设计时钟电路的前提,因此我们要先理解时钟端口:
XTAL1:
单片机部振荡电路输入端口。
XTAL2:
单片机部振荡电路输出端口。
XTAL1与XTAL2的本质是一个反向放大器,作为时钟振荡电路时与石英晶振相连接。
具体操作:
在XTAL1、XTAL2上接一个石英晶体,在两端应该再接两个电容,由此可以产生一个部激荡电路。
值得注意的是该设计中采用的晶振为22MHZ,和晶振相连的两个电容通常采用瓷电容,规格为33PF。
外部振荡信号采用方波,它的频率是低于12MHZ。
[5]
时钟晶振电路见图3-2。
图3-2时钟晶振电路
检测晶振的方法:
方法1:
通过观察示波器的波形来检测,在XTAL2的输出端外接示波器并观察波形,如果为正弦波则晶振正常工作,反之不是正弦波则不能正常工作。
方法2:
通过电压表的测量,外接电压表来测XTAL2输出端与地之间的电压,若为2V则正常工作。
3.2.2P0口外接上拉电阻
STC12C5A32S2单片机需要在PO口外接上拉电阻,这是由于STC12C5A32S2单片机是开漏的,其P0口部没有上拉电阻,因此不管它的驱动能力多大,都相当于是没有电源的,需要通过外部的电路提供。
当作为一般的I/O口时,即NPN管示通过P0口用来驱动的时候,则需要外接上拉电阻,通过外接电阻将P0设置为1,后端才能够导通。
[6]
图3-3P0端口的1位结构
3.3驱动模块的设计
此次设计中系统的驱动采用的是ULN2803达林顿管,ULN2803封装方式采用AP=DIP18,AFW=SOL18。
8个NPN达林顿晶体管,1-8引脚:
输入端;
11-18引脚:
输出端;
9引脚:
地端;
10引脚:
电源+。
为了符合标准TTL,选用ULN2803达林顿管,另一原因是可以制造ULN2804较为适合6-15V的高级别CMOS或PMOS上。
当输入低电平电压,那么该电路为反向输出型,输出端才可正常工作。
[7]
ULN2803的部电路图见下图3-7。
图3-4ULN2803部电路图(1/8单元)
3.4光立方整体设计思路
3.4.1LED灯排序方式设计
光立方的主视图为光立方的四个竖面,见图3-5。
1面与2面,3面与4面的R、G、B引脚由单片机I/O口扩展出来的三个74HC595控制,1面与3面,2面与4面阴极相连,由ULN2803口控制。
如图3-6每一面同一竖的四颗灯相同引脚相连。
如图3-7每一面同一行的四颗LED灯阴极的引脚相连。
如图3-8每一面每一行的阴极引脚连接到ULN2803的端口。
图3-5光立方的主视图
图3-6每一面同一竖行连接图图3-7每一面同一横行连接图
图3-8每一面每一行的阴极引脚连接图
3.4.2LED灯接法方式设计
为了使光立方的64个LED灯的各自颜色都是能独立控制的,在设计中采用结构相对简单的74hC593,每个LED灯的R,G,B,引脚分别由74hC593控制。
1面与2面的R、G、B引脚相连,2面与4面的R、G、B引脚相连。
每层LED的阴极都连在一起(通过共连阴极的方法控制),每面每层都分布有一个接口,其中一共需要8个I/O口控制,1面与3面的阴极接口相连,2面与4面的阴极接口相连。
其原理图如下图3-9所示。
[8]
图3-9LED结构设计图
3.5光立方搭建方法
3.5.1LED的搭建从初始处理到点再到面
按照图3-10先将1剪成2的完整样式。
再将R、G、B三引脚分别掰成90度,见图3-11。
(注意三个引脚方向应该不同)。
1为R脚,2为阴极,3为G脚,4为B脚。
如图3-12红圈的位置是一个缺口,是为了我们辨别G脚的位置。
R脚,阴极,G脚,B脚从左到右分布。
图3-10LED灯的形状图3-11已掰好的LED灯
图3-12LED灯的引脚图
3.5.2将LED从线到面的搭建
将64颗LED灯掰好后用镀锌20号铁丝连接成一个面。
如图3-13所示。
图3-13焊好的一个面
焊接时为了避免把LED灯焊坏,若是焊接时间太长容易把LED灯焊坏,应注意焊接的时间。
影响焊接的另一个因素就是焊锡的用量,焊锡要使用均匀,保持适中,太少将使连接不牢固,太多则影响美观。
焊接完事后要测量每个灯是否能正常工作,采用函数信号发生器,可检测灯在焊接过程中是否存在虚焊、损坏和击穿。
3.5.3将LED从面到体的搭建
在电路板上分别接上焊好的四个面,74HC573的八个引脚分别对应每个面的R、G、B三个引脚,ULN2803的输出端口与每一面的阴极相接。
安装LED灯面是需要主要引脚对应。
如图3-14所示从左到右三个红圈依次是音频接口、USB接口、HS0038红外接收头。
如图3-15是16组焊盘中的一组对应的引脚分别是G、R、B、阴极四个接口。
按照对应原则安装好四个LED灯面并在PCB板的背面焊接好每个接口。
这部分即为硬件模块显示部分。
[9]
图3-14图3-15
3.6PCB板的焊接
3.6.1PCB板的制作
PCB板的制作主要有三个步骤:
⒈制作印制电路板,首先在选择主板的大小上要适中,主板是整个光立方的支座,若选得太大,既浪费资源也影响美观,太小的话则LED灯将无法装下,根据经验一般选择大小与将要焊接的所有LED灯总体尺寸相差不多即可,这样会使焊接完事的成品更加美观实用。
[9]其中制作PCB板又包括印制底图的图样描绘,底图膜层的制作以及蚀刻加工。
⒉电路板的打孔与清洗,这个步骤应该仔细谨慎,防止电路板损坏。
⒊电路板的检修,在这里可以使用DXP来完成电路板的图纸设计以及仿真测试,仿真通过后再进行手动布局和自动布线,生成3DPCB版图,制作PCB板时就根据生成的图纸文件进行制作。
[10]
3.6.2主板的焊接
主板的焊接是很重要的一步,在开始前要将准备工作做好,首先必须保证主板的干净整洁,主板上不能允许有任何破损,其次检查每个元器件的对应符号是否清晰。
还要注意在焊接前就应该将所要焊接的元器件准备齐全,以及每个元件是否完好,是否能够满足系统需要,在准备工作确认无误后对照原理图上的元件位置进行元器件的焊接。
焊接过程中要注意焊锡的用量,不宜太多也不宜太少,焊接用多了不仅影响美观还可能造成与附近元器件相连从而出现短路现象,焊锡太少则可能是元器件与主板连接不牢,形成断路。
另一方面,焊接时间也不能太长,焊接时电烙铁会产生高温,焊接时间太长会损坏元器件。
3.6.3主芯片的焊接
由于使用的贴片单片机的焊脚较小并且它的焊接不同于其他元器件的焊接,因此在主芯片的焊接中要格外注意焊接的方法。
在焊接时应该先固定单片机的四个脚,用焊接将其固定,之后在四条边上依次进行焊接,在焊锡上涂上焊锡膏,将较多量的焊锡用在其中一条边上,再将电烙铁从这条边上轻轻滑过,在焊锡膏的作用下焊接将会彼此分开,从而将单片机的引脚焊住,按照同样的方法焊接剩余的边,用此种方法焊接的单片机相比传统方法效率较高,焊接的单片机也更加美观。
图3-16单片机焊接
3.6.4元器件的焊接
因为晶振比较脆,因此在焊接过程中要尽量做到焊接迅速。
对于贴片USB的焊接要仔细,要避免让引脚短路,焊好后还要对USB进行检测,判断是否虚焊、短路。
对于直插音频接口焊好的检测期间是否正常运作就好。
图3-17贴片晶振图3-18贴片USB接口图3-19直插音频接口
图3-20贴片ULN2803图3-21贴片74hc573
4软件设计
系统由两个部分组成,硬件和软件。
软件的功能可以使单片机上电初始化,同时单片机的特定功能的实现也有赖于软件运行。
软件的编写伸缩性较大,一个较好的程序既简单运行起来也不易出错,为了降低程序出错的几率,本次设计采用模块化的设计方案,在设计过程中运用软件编辑器。
[11]
系统程序的主要组成部分有三个,分别为主程序,红外按键程序以及显示程序。
在执行程序时,先运行主程序,而红外按键程序在主程序中进行判断,在接收到红外按键程序时,显示程序将被调用,通过将显示程序发给硬件来显示。
图4-1所示为程序的执行过程
图4-1软件执行图
4.1主程序的设计
程序的编写要从功能出发,编写的代码要能实现预期的功能,为了提高程序兼容性,本次的编码格式采用c语言的编码格式。
在程序开始的时候,要先确定每个模块的初始化定义。
模块的初始化定义是包括了定时器的初始化,中断初始化,选定波特率和串口的通信方式以及输入/输出端口的设置等。
[12]
4.2红外按键程序的设计
表4-1红外按键功能表
短按
功能
开机键
待机/激活
3
夜灯模式(7档)
1
动画模式
-
亮度减
2
频谱模式
+
亮度加
—
左面减少一面
快退
颜色切换(减)
左面增加一面
快进
颜色切换(加)
右面减少一面
4
爆闪模式
右面增加一面
返回键
闪烁种类(减)
7
后面减少一面
MODE
闪烁种类(加)
9
后面增加一面
7.9
快慢切换(10档)
前面减少一面
5
自定义模式(上位机)
前面增加一面
底面4个脚灯开关
4.3显示程序的设计
通常来说显示程序由字库代码(借助取模软件)与执行程序组成,通过像素点的移动和人眼的视觉延时,可以使静态的画面产生出动态的效果,为了达到显著的效果,必须对扫描时间和频率快慢加以控制。
4.3.1显示模块的原理
通过图像图形之间的快速切换以及对静态图像的不断刷新,使静态的画面动起来。
要使肉眼看到的效果是流畅的动画必须让图像间的切换速度保持在一个较高的速度。
扫描之前把光立方分成很多部分,再逐个部分进行扫描显示,扫描到最后再重新开始,以此循环往复。
由于人的视觉延时,在肉眼看来,刷新速度快的LED灯看起来就会比较亮,如果刷新的速度达到一定程度,由于亮度叠加,那么将看到灯一直亮,而且比实际亮度要高很多。
[13]
4.3.2显示程序的设计
显示程序采用的是动态扫描,通过选通一列的方式,程序的一行数组按照从低位到高位的方式按顺序从单片机的输入/输出端口输出到驱动74HC595移位寄存器中。
LED灯的亮暗由寄存器输出到LED的阳极来控制,以此循环便能使画面呈现动态效果。
[14]
LED灯每种颜色的变换时通过控制74HC595的输出来实现的,单片机高速得将输出数据送达74HC595。
为了更加完美的显示,可配上延时程序再依据自己的定义设置多个字模库,通过调用字模库,再配合数据的左移右移,使一个字模库能够动起来。
流程图如图4-2。
[15]
图4-2显示程序流程图
4.4软件调试
本次设计以单片机为核心器件,调试必须在硬件正常工作的前提下进行。
正如前面提到的,我们可以通过示波器,万用表和函数发生器来检测单片机。
如若检测出问题则应该对照原理图分别对每个模块进行检测。
编写程序主要采用keil软件,软件本身自带调试功能,在编写过程中可以用自带调试功能进行实时检测。
由于只有.HEX文件才能写入单片机,而keil软件是能够生成.HEX文件,这将给我们程序的编写带来便利。
由于C语言具备了较高的兼容性和高效灵活的特点,因而在编写过程中采用c语言。
5外壳定制
5.1亚力克板的定制
根据设计的PCB板以及LED灯面的高度定制了四面11.5*15.5以及一面11.5*11.5的透明亚力克板。
在亚力克板上留下对应于音频接口、USB接口以及灯接口的通孔用以连接外设。
[16]
5.2底板的定制
根据亚力克板的大小定制了11.7*11.7的底板,并在底板四角上留下了四个通孔用以固定PCB板。
6测试及问题分析
6.1硬件调试
本次设计共用到了64个LED灯,共256根引脚,为了达到设计效果必须保证每个灯都能正常工作。
如果有一个出现击穿或者不亮就必须判断灯是什么原因不亮的,如果是软件问题就调试软件,如果是硬件问题就检测是引脚虚焊还是灯坏了还是该引脚所连接芯片的问题。
判断问题所在后就可以解决问题了。
测试中出现问题及解决方法:
1、由于系统的功能比较复杂,所需要的驱动程序以及程序量多,89C51不够代码的存储则会出现程序的溢出和无法编译。
解决方法:
这里我们采用的是有更大存储容量的STC12C5A32S2单片机,STC12C5A32S2单片机有60KFLASHROM,并且自带能适应高速扫描的光立方的AD功能。
2、通过检测发现部分LED灯的工作状况失去规律,一些灯不能正常工作,还有一些灯亮度不均,忽闪忽灭。
先检测灯引脚是否虚焊,如果没有那就检测灯与芯片引脚是否连接,检测这方面没有问题的话将这些灯亮灯卸下,用万用表重新测试,如若为LED灯损坏,就换一颗新灯;
如果灯、软件都没问题就检测芯片是否虚焊是否损坏,如果芯片损坏就换一个新的芯片。
3、在替换单个LED灯的过程中出现测量的灯与未进行测量的灯同时亮的现象。
通过反接正负横排发现不亮的LED灯在反接时会被点亮,初步推测可能是由于LED灯在焊接过程中被击穿,为了验证得出的结论将万用表的正负两极接在横排或者竖排,此时LED灯被点亮,证明此LED灯是被损坏的,将其取下替换。
4、在光立方运行中有一层始终在点亮状态,与工作要求相反,在显示时亮度异常,在将其负极的阴线去掉后状态不发生变化。
经调查发现这种情况的出现是因为在这一层中有一盏LED灯损坏,为了找出这盏灯采取将负极的引线去掉,此时这一整层依旧点亮,然后仔细观察找出这一层中不亮的那盏LED灯,即为损坏的LED灯,将其取下替换。
5、在焊接完成后系统上电,出现了灯不能正常点亮,系统无法工作的状况。
先检查系统是否已供电,再检测电源模块发现电路板的焊点脱落,造成电源焊接口虚焊,出现这种情况选用外部备用口进行供电。
6、在焊接过程中由于焊点较多,焊点与灯头的距离很小,因此在焊接时容易将灯烫坏,另外焊烙铁在焊接时中会产生静电损坏LED灯。
解决问题:
对于电烙铁产生的静电问题可以通过把电焊烙铁接地来解决。
在焊接时将电烙铁的焊头适当倾斜与灯头保持一定的距离,经过多次检测,确保所有的LED灯都焊接无误。
6.2软件系统
由于光立方所需的程序较多,要求的性能很高,相较于常规的51系列单片机所需要的存储空间也要大得多,因此光立方的软件编写难度大,这就要求我们要具备较强的空间思维能力以及丰富的创造力。
程序的自由度高,在程序的编译中可能会暴露出很多问题,需要高度的耐心进行调试和改进,不断的优化升级,才能编写出最简单有效的程序。
在测试过程中的问题以及对应的解决方法:
1、在写入程序之后,会发现LED灯亮度不均,一直在闪烁。
解决方法:
首先检测LED灯是否存在虚焊和漏焊,而后对延时时间进行调试,以保证达到最佳。
2、再keil编写完程序检测运行时出现程序部分变量无定义的错误。
出现这类问题通常是由于头文件选择错误,在选择头文件时应该自制一个<
STC12C5A32S2>
头文件而不能只是简单地选择常规单片机的头文件。
3、在程序编译完成并通过后,却没有产生.HEX文件。
检查产生.HEX文件的参数是否进行了设置。
7结论
本次毕业设计核心是运用STC12C5A32S2单片机控制,再加上辅助模块和LED显示模块,组成能实现立体显示的4*4*4的光立方。
此光立方不仅结构紧凑不复杂,而且它的观赏性和研究性都很高,将美学和科学研究完美地紧密结合。
在光立方的设计制造过程中对于显示模块的LED灯的焊接过程中有着较高的要求,经过大量的焊接不仅锻炼了自己的动手实践能力,还培养了自己精益求精的探索精神,是个很有意义的课题。
从接触毕业设计开始我就开始了毕业设计题目的确定,这个过程大概持续了一个多星期,在此期间我也在不断地积极搜索资料,每天的空闲时间都是在网上查询资料,图书馆也留下了我的身影,前期的资料搜索主要集中在单片机类别和选择资料上,在弄清了不同芯片的使用要求以及它们自个的优点和不足后,最后我决定使用最适合我的此次毕业设计课题的一款STC12C5A32S2芯片,此款芯片是最新生产的单片机,它有着众多芯片的优点,功能特强大,但是事物都有它的两面性,正是因为它的最新性,因此它的资料和原理图资料相对匮乏,在找寻这方面资料上花费了不少的时间和精力,所幸付出总会有回报,虽然困难但还是找到了我所需要的资料,这也培养了自己搜集信息的能力。
到了焊接阶段,对于我的挑战就更大了,不仅要自己动手操作电烙铁,焊接的巨大工作量也是一道考验。
比较让我困扰的是焊接过程中的LED灯击穿问题,经常在焊完一个面后就出现问题,理论到实际的距离远超过自己的想象,在没有实际操作前是认为焊接应该是相对简单的,结果焊接过程中面临了各种问题,这也启示我们要平时要注重对自己实践能力的培养。
从开始的搜集资料到后面的程序设计与调试,遇到的所有问题都只能自己去探索,去请教,去网上搜索这方面的视频自己学,有时一个问题的解决就需要好几天,比如为了找到到STC12C5A32S2的原理图和封装图我更是翻遍了各种电子科技论坛。
在设计软件模块,从程序的编写和字库的创立,每一步都要经过细细的调试和计算,程序中运用的延时程序,从扫描频率到灯的亮度,再到每一帧的时间,这些都要认真确定,只有这样才能最终编写出一个优秀的程序。
虽然前期的工作很累,但是当看到自己设计的光立方在上电时呈现出华丽的动画效
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC12C5A32S2 单片机 立方 设计 黄舒静终稿 修改