《光立方课程设计说明书--本科毕业设计论文.doc》由会员分享,可在线阅读,更多相关《光立方课程设计说明书--本科毕业设计论文.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 单片机技术课程设计说明书 光立方 学 院: 电气与信息工程学院 学生姓名: 周剑波 指导教师: 贾雅琼 职称 副教授 专 业: 电气工程及其自动化 班 级: 1202 学 号: 1230140245 完成时间: 2015年7月 湖南工学院单片机技术课程设计课题任务书 学院:电气与信息工程学院 专业:电气工程及其自动化指导教师贾雅琼学生姓名周剑波课题名称光立方内设计内容及任务一、设计任务设计一个具有特定功能的光立方。二、设计内容1、光立方的硬件系统 (1)单片机最小系统模块 (2)供电模块 (3)光立方显示模块 (4)键盘模块 (5)驱动模块2、光立方的软件系统 (1)系统监控程序模块 (2)
2、光立方显示程序模块 (3)键盘程序模块三、设计要求该光立方上电或按键复位后能自动显示P.,进入准备工作状态。该光立方可以通过键盘选择显示花样,切换花样,停止显示。要求44的光立方硬件,并且显示四种及以上花样。主主要参考资料1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,2003.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3马忠梅.单片机的C语言应用程序设计M.第4版.北京:北京航空航天大学出版社,2003.6. 4李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社,2003.01.5李光飞.单片机课程设计实例指导M.北京:北京
3、航空航天大学出版社,2004.9.教研室意见 教研室主任:(签字) 年 月 日摘 要 当今社会,随着电子行业的不断发展,单片机的应用从根本上改变了传统的控制系统设计思想和设计方法,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。成为现代生产和生活中不可缺少的一部分。 设计采用4*4*4的光立方模式,硬件主要分为七个模块:主控模块、驱动模块、显示模块、键盘模块、电源模块、复位模块、下载模块。采用的主控芯片为AT89S52 芯片,驱动电路是采用了常用74HC573数字芯片,设计采用C语言编程,通过单片机I/O口控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整
4、个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。 关键词:光立方;AT89S52;74LS573锁存器目 录1 绪论1 1.1 光立方的背景1 1.2 研究的意义12 设计要求和方案介绍2 2.1 设计要求2 2.2 方案介绍2 2.2.1 系统整体框图2 2.2.2 光立方发光原理33 系统硬件电路设计4 3.1 主要元器件的介绍4 3.1.1 AT89S52芯片介绍4 3.1.2 74HC573芯片介绍5 3.1.3 四位一体数码管介绍5 3.2 硬件电路模块介绍7 3.2.1 最小系统模块介绍7 3.2.2 驱动模块介绍9 3.2.3 键盘模块介绍10 3.2.4 显示模块介绍1
5、04 软件系统说明12 4.1 软件系统模块12 4.2 软件系统模块的程序流程框图125 光立方系统测试15 5.1 操作说明15 5.2 测试结果15 5.3 结果分析17 5.4 设计结论17 5.5 设计体会17结束语18参考文献19致谢20附录21 附录A 原理图21 附录B 实物图23 附录C 元件清单24 附录D 程序清单251 绪论1.1 光立方的背景 光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世,这是新中国成立六十周年国庆晚会最具创意的三大法宝之首,自从国庆60周年联欢晚会开始演练后,一个全新的名词“光立方”,吸引了全
6、国人民的关注,并得到了全球的高度肯定。所谓“光立方”:就是在平面LED基础上发展起来的新的显示技术,通过复杂的程序控制,在三维空间能够显示具有立体感的图形、动画等。由此,也掀起了光立方的设计与学习热潮,在原有的基础上不断增加难度,增加变换花样,吸引电子爱好者对其研究、创新。1.2 研究的意义光立方作为一种特殊的显示资源,已用于一些广告行业、家庭、娱乐厅、会议室、大型演唱会、城市地标广场等场所的布置和装饰,还可以用于更广泛方面,具有广阔的应用前景。随着社会经济的不断进步,人们对LED显示器的认识不断加深,其应用领域越来越广。目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠
7、性、全色化方向发展。而且,光立方的研究对未来的3D技术有很大的借鉴和启发作用。172 设计要求和方案介绍2.1 设计要求 光立方上电或按键复位后能自动显示P.,进入准备工作状态。光立方可以通过键盘选择显示花样,切换花样,停止显示。要求44的光立方硬件,并且显示四种及以上花样。2.2 方案介绍2.2.1 系统整体框图 系统主要由主控电路、时钟电路、复位电路、驱动电路、电源电路、独立键盘电路、数码管显示电路、LED光立方电路组成;时钟电路、复位电路和独立键盘电路作为单片机输入,LED光立方电路和数码管显示电路作为单片机输出,系统框图如图1所示。 图1 系统框图2.2.2 光立方发光原理光立方设计采
8、用的是4*4*4的模块,采取层共阴,竖共阳的接法,即每一层的LED灯引出一个阴极。共阴极直接接到AT89S52单片机的P3口线的P3.7-P3.4,竖共阳引出16根导线通过74HC573锁存器接到单片的P0口和P2口。独立式键盘接到P1口线。数码管显示电路接到P0口和P2口。通过编写C 语言程序使光立方按不同的花式变化。3 系统硬件电路设计3.1 主要元器件的介绍3.1.1 AT89S52芯片介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程
9、序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵活的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。AT89S52单片机引脚图如图2所示。图2 AT89S52引脚图VCC和GND:分别为外接电源和接地。P0-P3:为输入/输出口线。其中P3口每一位有第二功能RST/VPD:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地址字节。在Flash编程期间,此引脚用于输入编程脉冲。:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期两次有效。:
10、当保持低电平时,在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.1.2 74HC573芯片介绍74HC573是八进制 3 态非反转透明锁存器。器件的输入是和标准 CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出,当输入的数据消失时,在芯片的输
11、出端,数据仍然保持。74HC573引脚图如图3所示图3 74HC573引脚图3.1.3 四位一体数码管介绍 设计采用的是四位一体共阳极的数码管,其内部电路已经连接好,引出的管脚如图4所示。上面八根引脚是段控引脚,下面的是位控引脚。通过输入位控和段控信号使数码管按自己想要的方式点亮。图4 四位一体数码管引脚图 3.2 硬件电路模块介绍3.2.1 最小系统模块介绍单片机最小系统由单片机、电源电路、复位电路、时钟电路以及下载电路等部分组成。最小系统的原理图如图5所示图5 最小系统电路图 (1)电源电路。单片机的输入电压为直流+5V,必须接通+5V 的直流电源才能正常工作。为了获得+5V电源电压,采用
12、12V变压器将220V电压降压成所需要的12V交流电压,通过整流、滤波、稳压、给系统提供稳定的直流电压+5V。整流桥选择2W10型号,承受电流的能力为2A,最大耐压能力为1000V。通过计算,滤波电容C5、C6取标称值470F,减少纹波系数电容C2取0.1F,稳压芯片选取LM7805,为了保护发光二极管不被烧坏,加上1K的保护电阻R12,才能输出稳定的+5V电压。电源电路如图6所示。图6 电源电路 (2)复位电路。复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,
13、为摆脱困境,也需要按复位键以重新启动。硬件系统中采用的是AT89S52单片机,需要在复位管脚RST上产生两个周期的高电平才能使单片机复位。因此,在复位键没有按下时,由计算可得,电容C1选取22F,电阻R9取1K;当复位键按下,复位端经电阻R10与VCC接通,由于电阻R9与R10分压,为保证复位信号有效,电阻R10取200。复位电路如图7所示。图7 复位电路图 (3)时钟电路。对于AT89S52来说,片内设有一个由反向放大器所构成的振荡电路,XTAL1和 XTAL2分别为振荡电路的输入和输出端,电容器C3、C4起稳定振荡频率、快速起振的作用,电容值一般为533pF。但在时钟电路的实际应用中一定要
14、注意正确选择其大小,并保证电路的对称性,尽可能匹配。设计中采用大小为33pF的电容和12MHz的晶振,其时钟电路如图8所示。图8 时钟电路图 (4)下载电路。下载电路用于连接下载线,将程序下载到单片机内部。主体部分就是一个下载口,接到电路中。下载电路如图9所示 图9 下载电路图3.2.2 驱动模块介绍 设计采用的是两块74HC573芯片并联驱动。驱动模块电路如图10所示,光立方是竖共阳、层共阴的,共阳引出的十六根导线用74HC573芯片驱动,通过芯片接到P0口和P2口。共阴引出的四根导线直接接到P3.7-P3.4口线。图10 驱动模块电路图3.2.3 键盘模块介绍设计采用的是独立式键盘,一共用
15、到四个按键。各个按键之间互不干扰,每个按键控制光立方的一种显示状态。按键部分电路如图11所示,按键S1-S4分别接到单片机P10-P13口线上。单片机芯片额四个口线都加了上拉排阻,按键按下时,对应口线的电平将被拉低。图11 键盘模块电路图3.2.4 显示模块介绍数码管显示模块主要由一个四位一体数码管、74HC573驱动芯片和8个470的电阻构成。数码管显示模块电路如图12所示。数码管实际上是由二极管构成,发光二极管正常工作时,其两端正向压降约为1.6V,正向电流约为10mA。为了使数码管达到一定的亮度,就使用芯片74HC573放大电流,来作为数码管的驱动控制数码管的段控。同时又不使电流过大而损
16、坏数码管,因此在P0串上470的电阻,来达到限流的作用。图12 显示模块电路图光立方显示模块是由64个LED组成的,采取层共阴、竖共阳的方法焊接成一个立方体。层共阴引出四根导线,竖共阳引出十六根导线。如图13所示。图13 光立方显示模块电路图4 软件系统说明4.1 软件系统模块 软件系统包括监控模块,键盘模块和显示模块,各模块行驶各自的功能,然而又紧密联系,共同组成了光立方的软件系统。软件系统系统总的C语言程序见附录D。 监控模块是软件系统的主体,反映到C语言程序中就是主程序,是编程时的整体思路。程序的成功与否和它的关系密不可分。可以说监控模块出现错误的话,整个软件系统将进行不下去,不能实现应
17、有的功能。设计中先初始化光立方,然后调用键扫描,有键按下则执行按键对应的显示花样程序,在显示过程中一直进行扫描,若有其他功能键按下,待到花样显示的最后一个周期执行另一个按键对应的显示花样程序。键盘模块的软件系统设计属于函数,只需在主程序中调用,判断有无按键按下,有则执行相应的键功能程序,没有的话就顺序执行主程序。显示模块分为两部分,第一部分是数码管上电复位显示P.,另一部分是光立方显示花样模块。数码管显示模块先通过位控选中数码管,再由段控选中哪几段数码管亮。光立方显示模块是通过键扫描控制,事先编好显示花样的函数,有按键按下后直接调用。4.2 软件系统模块的程序流程框图 监控模块程序流程图如图1
18、4所示图14 监控模块程序流程图 键盘模块程序流程图如图15所示图15 键盘模块程序框图 显示模块程序流程图如图16所示图16 显示模块程序框图5 光立方系统测试5.1 操作说明 电路连接完毕无误后,接通电源。上电显示P.,按下复位键也显示P.。按下键1,光立方显示模块全亮并闪烁。按下键2,光立方显示模块从第一层全亮闪烁向下移动循环。按下键3,一竖LED灯左对角循环点亮。按下键4,单片的第一竖和第四竖点亮左右循环。5.2 测试结果上电复位显示P.如图17所示图17 上电复位显示P. 按下键1显示花样1如图18所示图18 花样1 按下键2显示花样2如图19所示图19 花样2 按下键3显示花样3如
19、图20所示图20 花样3按下键4显示花样4如图21所示图21 花样45.3 结果分析 光立方显示模块电路焊接时没怎么对齐,而且在弯LED灯引脚时存在一些差距。导致整体看上去不太整齐。分别按下各功能按键能实现相应的显示花样,满足课程设计的要求。不足之处在于花样比较单一,有点简单。还有灯的亮度太强,导致拍摄的图片不清楚。5.4 设计结论 在焊接过程引脚一定要弯的整齐,焊接需做好焊接模板这样焊接出来的光立方硬件才更加完美。光立方显示的花样由程序控制,要想显示更为复杂的花样,程序也对应更为困难。还有LED灯的选择不应该用高亮的,应选取雾灯,这样LED灯的亮度就不会很刺眼,视觉效果会更好。5.5 设计体
20、会 经过两个多星期的努力,光立方课程设计终于完成了。在光立方显示花样的那刻,心里既兴奋又激动。感觉这些天的努力没有白费,付出还是有回报的。一分耕耘一分收获,在制作光立方课程设计的过程遇到了很多困难,通过查找资料和老师、同学们的帮助都一一克服了。在焊接硬件时LED灯不好固定,很难焊接。然后用插针制作了一个固定LED灯模板,焊接速度马上提升上去,而且焊接出来的实物更加美观。在编写程序的时候同样遇到很多困难,在按键扫描程序这块顿了很长一段时间,最后是参照老师的键扫描程序才弄出来的。遇到困难并不可怕,可怕的是没有面对困难的勇气及战胜困得决心。没有什么是不可能的,只要你用心,并且付出努力,一切困难都会迎
21、刃而解,从而达成你想要的。 结束语 经过两个多星期的努力光立方课程设计现在总算顺利完成,硬件和软件的运行都没什么问题,能满足课程设计的要求。光立方设计利用硬件的立体性,利用软件的变化多样性,这两者结合起来就可以产生非常绚丽的画面效果,光立方设计功能强大,可以通过改变程序产生很多意料不到的画面效果。课程设计的圆满结束。最终看到了绚丽多姿,变化多端的LED光立方的图案。在很大程度上培养了独立思考及其动手能力。学会了独立的发现问题、分析问题、解决问题。设计途中,遇到的很多困难都一一解决了。同时,通过课程设计发现了很多不足之处,还有很大的学习空间。感受到了单片机学科的魅力,坚定了学好单片机的决心。参考
22、文献1 李广第.朱月秀.冷祖祁.单片机基础M.北京航空航天大学出社,2007.34 372 李全利.单片机原理及应用(C51编程)M.北京高等教育出版社,2012. 56773 阎石.数字电子技术基础(第五版)M.北京高等教育出版社,2006.43454 邱光源.电路(第五版)M.北京高等教育出版社,2006.56635 郭天祥.51单片机C语言教程M.北京:电子工业出版社,2009.12.2032106 李元生.LED光柱专用驱动器M.北方工业大学出版社,2008.23307 荣贵.电子制作M.科学技术文献出版社,2003.15188 马忠梅.单片机的C语言应用程序设计M.第4版.北京航空航
23、天大学出版 社,2003.6.8109 李光飞.单片机C程序设计指导M.北京航空航天大学出版社,2003.1.51010李光飞.单片机课程设计实例指导M.北京航空航天大学出版社,2004.84 9211张洪润,兰清华.单片机应用技术教程M.北京:清华大学出版,1997.104 10612胡汉才.单片机原理及其接口技术M.第二版.北京:清华大学出版社,2004. 7881致 谢 通过这段时间的努力,我的光立方课程设计终于顺利完成。 在本次课程设计过程中,首先,感谢父母多年来的养育之恩。感谢我的学校湖南工学院,给了我学习的环境,让我有机会接触单片机这门课程。其次,感谢贾雅琼老师对我的的精心指导和大
24、力支持下。贾老师的严格要求和谆谆教导深深的影响了我。本次课程设计的成功跟贾老师是密不可分的。在此,我对贾老师致以崇高的敬意。然后是此次课程设计中帮助过我的同学们。谢谢你们一直默默的给予我帮助和支持。附 录附录A 原理图29附录B 实物图附录C 元件清单表1 元件清单元器件名称规 格数 目AT89S52单片机40P1单片机底座40P1四位一体共阳数码管12P1四位一体共阳数码管插座12P174HC57320P374HC573芯片插座20P3晶振12MHz1单排插针40P3小按键5下载口座子1LED灯66电阻2001电阻4708电阻1K4瓷片电容0.1F1电解电容470F2电解电容22F1瓷片电容
25、33pF2排阻10K4整流桥堆2W101变压器200V:12V1稳压芯片LM78051六脚开关2附录D 程序清单/*名称:光立方课程设计作者:周剑波指导老师:贾雅琼完成时间:2015年7月功能介绍:按键S1、S2、S3、S4分别控制光立方的一种花样*/#include# include #define uint unsigned int #define uchar unsigned char sbit S1=P10; sbit S2=P11; sbit S3=P12; sbit S4=P13; sbit gong_yin1=P37; /P37 ; /第一层sbit gong_yin2=P36;
26、 /P36 ; /第二层 sbit gong_yin3=P35; /P35 ; /第三层 sbit gong_yin4=P34; /P34 ; /第四层uchar di00=1,0,1,0,1,0,1,0,1; uchar di01=0,1,1,1,0,1,1,1; uchar gong_yang11=0x08,0x40,0x00,0x00; uchar gong_yang31=0x00,0x00,0x08,0x40;uchar gong_yang12=0x48,0x44,0x22,0x21,0x30,0xc0; uchar gong_yang13=0x09,0x90,0x00,0x00; u
27、char gong_yang33=0x00,0x00,0x90,0x09; /*延时*/void delay(uint time) uint i,j; for(i=0;itime;i+) for(j=0;j100;j+); /*全亮并闪烁*/ void display1() uchar a; for(a=0;a2;a+) gong_yin1=di00a; gong_yin2=di00a+2; gong_yin3=di00a+4;gong_yin4=di00a+6; P0=0xff; P2=0xff; delay(250); /*单层全亮上下闪动*/ void display2() uchar
28、b; for(b=0;b4;b+) gong_yin1=di01b;gong_yin2=di01b+3; gong_yin3=di01b+2; gong_yin4=di01b+1; P0=0xff; P2=0xff; delay(250); /*一竖点亮对角循环移动*/ void display3() uchar g; for(g=0;g4;g+) gong_yin1=0; gong_yin2=0; gong_yin3=0; gong_yin4=0; P0=gong_yang11g; P2=gong_yang31g; delay(250); /*单面的第一、四竖点亮左右闪动*/ void di
29、splay4() uchar i; for(i=0;i4;i+) gong_yin1=0; gong_yin2=0; gong_yin3=0; gong_yin4=0; P0=gong_yang13i; P2=gong_yang33i; delay(250); /*延时*/ void delay1(uint m) while(-m); /*键扫描程序*/uchar keyscan() uchar tmp; P1=0xff; /发全行0的扫描码 if(P1&0xff)!=0xff) /若有键按下 delay1(1000); / 延时去抖 if(P1&0xff)!=0xff) /有键按下 tmp=
30、(P1&0xff); dowhile(P1&0xff)!=0xff);tmp=tmp; return (tmp); /返回键值 return (0); /无键按下,返回0 /*主程序*/void main(void) uchar v; P3=0XFF; P2=0X80; P0=0X0C; v=keyscan(); if(v=1|v=2|v=4|v=8) while(1) switch(v) case 1: while(v=1|v=0) display1(); v=keyscan(); /调键扫 break; case 2: while(v=2|v=0) display2(); v=keyscan(); /调键扫 break; case 4: while(v=4|v=0) display3(); v=keyscan(); /调键扫 break; case 8:while(v=8|v=0) display4(); v=keyscan(); /调键扫 break;