基于51单片机的光立方设计毕业设计论文(编辑修改稿)内容摘要:
16个 I/O接口,通过扩展得到了 64+8个接口,这样就可以把 512个 LED灯给控制好了 ,原理图如图 39所示。 x轴 ULN2803 的八个口 x轴 y 轴 第一个 74HC595 八个口 第八个 74HC595 八个口 8到………1从 图 39 LED结构设计图 将 LED从点到线的搭建 准备材料首先要找一块万用板如图 311,这样就可以保持灯与灯之间的距离保持相等,在这里我们用的是白发蓝的 LED 灯如图 312所示,长正短负,我们采用的是共阴的连接方法,所以要把灯的形状折成如图 313的样子,必须要折成 90度,把灯插在原来选好的孔内,两个灯之间的距离是 23mm,然后把八个这样的灯焊接好如图 314所示 ,注意:弯折阴极脚时弯曲处尽量靠近灯体不要留太长,这样焊接阳极时不容易造成短路。 图 311 万能板 图 312 LED 灯的正负极 图 313 LED 灯的形状 图 314 已搭好的 8 个 LED 灯 这样做出一条有八个 LED 灯组成的共阴极的灯链如图 315所示,这里要注意焊接的时间和焊锡的用量,要是焊接时间太长就会把 LED 灯烫坏,用焊锡要均匀,不能太多也不能太少,太少连接不牢固,太多不美观。 图 315焊接好的 8个 LED 灯链 将 LED从线到面的搭建 接下把焊好的 64个共阴的 LED 灯的阳极相连如图 316所示,相连后就得到一个 8*8的灯面如图 317所示 ,注意:在焊接过程中会产生静电,所以要求电焊铁要接地,焊接完后要用万用表测量每个灯是否正常,是否存在虚焊和击穿。 图 316 阳极相连 图 317 64 个 LED焊接图 将 LED从面到体的搭建 最后把焊好的八个面分别接在做好的电路板上,阳极对应接在八个 74HC573的八个引脚上,阴极每一层给连接起来接在 ULN2803的输出端口上,这样硬件模块的显示部分就算做好了,如图 318所示。 图 318 已搭好的 8 层 LED 灯 PCB 板的焊接 PCB 板的制作 PCB 板制作分 为 制作印制电路板、清洗与打孔和检修三个环节 , 对于 PCB 板 印刷 的制作 环节大致分为 印制底图图样描绘、底图掩膜层制作和蚀刻加工 等。 对于主板的大小选择上,主板是整个光立方的底座,大小要合适,不宜过大也不宜太小,太大不好看,太小放不下,一般设计的和焊的 LED 灯的尺寸差不多,刚好放的下还有点剩余最好,这样既美观又节省资源。 首先要用 到 DXP 进行电路板的图纸设计和仿真测试,当仿真没有错误后,就可以自动布线,手动布局,生成 3D的 PCB版图 ,把生成的 PCB 版图文件拿去制作 PCB板。 主板的焊接 在焊接主板之前必须保证主板清洁干净,检查是否有破损有裂缝,各个元器件的符号是否清晰,所要焊接的元器件是否齐全, 焊各种元器件的准备工作是否都做好了,元器件是否都是完好的功能是否正常都要先检测好,这些都确定没有问题后,就开始按原理图上的位置焊接元器件,焊接时用锡不要太多,那样会很不好看,而且有可能会和附近的元器件发生短路,焊接时间不能太久,很多元器件受不了电烙铁的高温,还要避免静电干扰,焊点要小要均匀,刚好焊住而且焊点光滑明亮。 主芯片的 焊接 单片机的焊接是个难点,因为 用的是贴片的单片机焊脚很小,焊锡一多就容易混成一团,对于贴片单片机的焊接和其它元器件的焊接不同,它的焊接首先是要固定四个脚,把四个角用焊锡固定好了,就一条边一条边的焊,先是在一条边上用很多的焊锡,再用焊锡膏弄在焊锡上,然后烙铁从一条边上划过,这时焊锡在焊锡膏的作用下就会彼此分离就刚好把单片机的引脚焊住了,以此类推其它边也焊完了,这样焊接的单片机既美观又简单,如果你按传统办法焊接,很容易两个引脚短接还不美观。 图 31 单片机焊接 开关及 按键的焊接 按键的焊接是最简单 的,四个引脚分别插在四个孔中,要注意的是按键的四个脚是两两一对的,不要认为他们都是一样的,要是焊错了就没有按键的功能了,就成了一根导线了, 自锁 开关的焊接比较复杂,特别是六根引脚的开关,它的按下和 弹回来接通的引脚是不同的引脚,自锁开关的原理图如下图 42所示。 图 32 自锁开关 图 排 插及 晶振 的焊接 排插 的焊接需要把针和板子贴紧,不能留下空隙,而且 排插 短的那头接板子, 在焊接的 时候排插会比较热,不能用手直接接触,先焊排插的两端,焊完两端排插就固定了,再焊剩下的就简单了,对于晶振的焊接要迅速,晶振比较脆弱,尽量快点焊接。 图 33 PCB 板的正反面 第 四 章 软件设计 系统的组成有两各个部分一个是硬件一个则是软件,软件的伸缩性很大,编写的好的程序实现起来简单不易出错, 编的不好的数据会出现很多问题,本系统采用的是模块化的设计方案,减少软件出错的概率,在软件的设计过程中需要用到了软件编辑器,软件可以使单片机上电初始化,也可以是单片机实现特定的功能效果。 本系 统程序主要由三大块组成,分别是主程序、按键程序和显示程序,软件的执行过程 如 下图 31所示。 首先程序执行主程序,在主程序中判断按键程序,当接收到按键程序 时,主程序调用显示程序,把显示程序发给硬件,硬件显示出来。 图 41 软件执行图 主程序的设计 一般编写程序都是从功能出发,要求怎么的功能就写怎么的代码,本系统都是采用 C语言的编码格式编写的代码,设计了三个外接按键 、 、 , 分别是主菜单、确定和退出,主菜单里有自动模式、频谱模式、测试模式,系统还设置了呼吸待机灯,流程 图 如 32所 示 : 图 42 主程序流程图 程序的开始之前必须要写好各个模块的初始化定义,初始化的内容有中断初始化,定时器的初始化,串口的 通信方式和波特率的选定 ,I/O 口的设定等等。 显示程序的设计 显示程序一般由字库代码和执行程序构成,字库代码可以借助取模软件,由静态的画面通过像素点的移动,利用人眼的视觉 延时 效果,产生动的效果,这就要求对扫描时间的控制 和频率的的快慢决定的很好。 显示模块的原理 要使静态的画面动起来就需要对静态图像不断的刷新,图像与图形之间切换的速度很快,这样人眼看出来的效果才是 流畅的动画, 扫描是把光立方分成很多的部分,一个部分一个部分的扫描显示,当扫描到最后一部分时又开始从第一部分循环扫描,其实每一个 LED 灯的亮度都是由刷新的速度决定的,刷新速度快灯的亮度就亮,这是因为人的视觉的延时,刷新速度太快亮灭的效果就看不出来,在人眼里看到的就是一直亮着,而且 亮度还会叠加,实际的灯的亮度比看到的灯的亮度暗很多。 显示程序的设计 本设计的程序采用的是动态的扫描显示, 通过选通一列的方式 , 这时程序里的一行数组就按照由低位到高位的方式依次从单片机的 I/O口输出到驱动 74HC595移位寄 存器中从寄存器中输出到 LED 的阳极控制灯的亮暗, 这样一次一次的循环就可以产生一个动态的画面,整个流程图如下 33所示。 单片机高速的输出数据,数据通过 74HC595,通过综合选通端口选通一个74HC595输出,紧接着单片机又通过 ,通过改变选通端口输入到另一 个 寄存器中再显示,其实这些数据都有一个字模,通过调用这些字模,再配合数据的左移右移,或者加一减一,这样一个字库就可以动起来,再加上延时程序这样程序就可以完美的显示。 图 33 显示程序流程图 软件 调试 单片机 是这个设计的 核心,在硬件正常工作的情况下检测软件才是正确的 , 要是硬件都存在问题去检测软件完全没有意义,对于硬件的检测,可以对单片机的时钟引脚 18和 19检测,引脚 18对地的电压在 ,而引脚 19是 ,对于复位电路的检测则是用5v 的电源短接下引脚 9,模拟复位电路,如果单片机复位正常则不存在问题。 在程序的编写中用 keil 编写, keil 软件可以生成 .HEX 文件,因为我们用到的下载软件时专业的STC— 软件,这个软件只能识别 .HEX 文件,只有 .HEX 文件才能写入单片机。 在程序的编 写中全部都是采用 C语言编写, C 语言简洁灵活,兼容性高,编译简单,执行效率高,对于循环的使用方便。 第五章 成品测试和问题分析 成品测试 . 硬件调试 本设计因为用到的 LED 灯比较多,必须确保每个灯都正常工作,如果 512个 LED灯有一个出现击穿或者不亮就必须把八层 LED 都拆开,取下坏掉的灯换上好的再焊上,而且要保持结构的整齐度行列对齐,这样显示的效果就会比较好。 在测试过程中发现一些问题,以下是问题及问题的解决方法: 这个系统功能比较强大,所以需要的驱动程序和程序量比较多 8k的 89C51完全不够代码的存储会出现程序的溢出和无法编译的情况。 解决方法:这里我们采用 STC12C5A60S2 单片机,它比 89C51有更大的存储,STC12C5A60S2单片机有 60K FLASH ROM,而且还自带 AD功能,适应高速扫描的光立方。 本系统发现部分 LED 灯的亮灭没有规律,有些灯甚至都不亮,还有些灯闪烁不定。 解决方法:这里我把八层 LED 灯从电路板上分别取下,单个灯用万用表的测灯功能测量,发现不亮的 LED 灯时,我就给 单个替换。 在单个灯的替换过程中居然发现我测量的单个灯亮了,可是我没测量的 LED灯也同时亮了 解决方法:这里我们知道可能是 LED 灯在焊接过程中被击穿了,我采用的是反接正负横竖排的方法,当我们反接时坏掉的 LED 灯就会点亮,还有一种方法就是万用表的正负两极都接在横排或者竖排,这时被点亮的 LED 灯就是被损坏的,取下替换了就可以了。 在光立方的显示中有某一层始终是亮的,不该点亮时是亮的,当应该点亮时又特别亮,而且把负极的引线去掉依然点亮。 解决方法:这种情况就是整层中有一盏灯坏了,当我们把负极的引线去掉后整 层依然点亮,仔细观察发现这一层会有一盏灯不亮,坏的灯就是它了,把他取下替换就可以了。 系统焊接完成上电后发现没有反应,灯不亮,系统不工作。 解决方法:这里我们用万用表对电路板个部分检查,发现系统没有供电,检查电源模块发现电源焊接口虚焊,电路板的焊点脱落,这里我们采用外部备用口送电。 本系统由于焊接点比较多,而且焊接的点离灯头很近,所以很容易把灯烧坏,焊烙铁在焊接过程中会产生静电,静电可以把 LED 灯给损坏。 解决问题:在这里我们考虑把焊烙铁接地,如果焊烙铁没有接地线我们可以在焊烙铁中部加一根引线接在暖 气片上或者直接接地,焊完一行检查一次,焊完一个面再检查一次,最后全部焊完再检查,确保 LED 灯全部正常工作。 . 软件系统 光立方程序比较多,需要的存储空间要比常规的 51系列单片机的大,而且刷新率非常的高,要求的性能很高,软件编写难度大,要有很强的空间思维意识,想像力要很丰富,程序变化大,编译中存在很多问题,所以需要精心的调试很改进,优化出最简单效果最好的 程序。 烧入程序后, LED 灯的亮度很不均匀,明亮闪烁。 解决方法: 检查元器件是否有虚焊和漏焊,调整延时的时间长短,调试出效果最佳的延时 时间, 用 kei。基于51单片机的光立方设计毕业设计论文(编辑修改稿)
相关推荐
G R E E N+ 5 VR96 8 0R 1 06 8 0R 1 16 8 0R 1 26 8 0R66 8 0D6L E D G R E E N 图 27 指示灯电路 量程选择电路 在图 24 中可以看到,在 RC 充电回路中, R 值是固定的,不可变的,那么量程也显然是不可变的,因此,需要在此加入可调节充电回路电阻的电路部分,这里,利用继电器可以简单实现。 具体电路如图 28所示
CJNE R1,4,EXIT MOV R1,0 MOV 24H,00H。 调时闪烁基准清零 RET /*****增加键处理子程序 *****/ ADD_KEY: CJNE R5,02H,EXIT。 增加键键值 CJNE R1,01H,NEXT1。 选择键功能标志为 1,调时,否则跳出 MOV A,23H ADD A,01H DA A MOV 23H,A CJNE A,24H,EXIT MOV
再调校时均不向上一单位进位(例如分加到 59 后变为 00;但小时不发生改变)。 按键的开关状态通过一定的电路转换为高、低电平状态。 按键闭合过程在相应的 I/O 端口形成一个负脉冲。 闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。 抖动持续时间的常长短与开关的机械特性有关,一般在 510ms 之间。 为了避免 CPU
换为数码管的显示数字,从而简化了程序,节约了单片机的 IO开销。 译码为编码的逆过程。 它将编码时赋予代码的含义“翻译”过 来。 实现译码的逻辑电路成为译码器。 译码器输出与输入代码有唯一的对应关系。 74LS47 是输出低电平有效的七段字形译码器。 与数码管配合使用。 价格贵 单片机方案 电子温度计台历论文 11 单片机 (常用英文字母的缩写 MCU表示)是微型机的一个主要分支
a)。 LcdWriteData(39。 039。 +datas1[0])。 LcdWriteCom(0x8b)。 LcdWriteData(39。 039。 +datas1[1])。 LcdWriteCom(0x8c)。 LcdWriteData(39。 039。 +datas1[2])。 if(tl 0) { 14 LcdWriteCom(0x90)。 LcdWriteData(39。 39
MOVX @DPTR,A CALL DEL500 RL A MOV R1,A DJNZ R2,LOOP1 AJMP KEY1 GO2: START2:MOV R1,00000001B MOV R2,08 LOOP2:MOV A,R1 MOV P0,A MOV DPTR,7FFFH MOVX @DPTR,A CALL DEL200 RL A MOV R1,A DJNZ R2,LOOP2 AJMP