《智能彩灯的设计.doc》由会员分享,可在线阅读,更多相关《智能彩灯的设计.doc(21页珍藏版)》请在三一办公上搜索。
1、实 习 报 告(理工类)题 目: 智能彩灯的设计 学 院: 电气信息学院 班级: 03级6班 学生姓名: 学号: 20033826 指导教师: 开始时间: 2006 年 6 月 19 日完成时间: 2006 年 7 月 1日实习地点: 成都市华迪公司 摘 要中文摘要:本次设计是以大规模可编程逻辑器件AT89C52为控制器,使其输出端送出的数据在74HC165的RD端为低电平有效的情况下把数据锁存到74HC165,再由74HC165完成数据从并行到串行的转换,再送到74HC595从而来控制80只LED灯的亮灭来实现各种图案转换的全过程。单片机的数据输出端所送出的数据通过74HC245后在接到74
2、LS165,这样单片机传出的并行经165后变为串行输出到595,从原理图上可以看出每个595的串行输出口是接到下一个595的串行输入口。了解了这一点后,我们可以在单片机产生读写AD总线时序时候连续给595芯片8个脉冲后,这样就将一个8位的数据送到第一个595中,这样连续让单片机产生10次总线时序就可以将10个8位数据依次送到10片595中锁存并输出,这样就可以控制彩灯的点亮与否,当我们需要不同的点亮效果时只需改变程序中传送的不同数据就可以看到不同的点亮图案。这样看到的效果只有亮与灭两种情形。为了实现灯被不同程度的点亮,我们还引入灰度的概念,在本次项目设计中我们用到的灰度等级是16。为实现16级
3、的灰度我们采用4位2进制数来控制。AT89C52可以非常好的实现彩灯控制器的功能的方案,而且具有集成度高、速度快、稳定、可靠等优点。中文关键词:定时器,时序,三态输出,关键词:AT89C52;74HC165;74HC595;Abstract:This design is to take AT89C52 of large-scale and programmable logic as the controller, the data that make its exportation carry send out locks the data and save to 74HC165s under
4、 the condition of the RD of the 74 HC165s carry to is even and valid for low electricity, then from the 74 HC165s completes the data from proceed together the string go of conversion, then sent to the 74 HC595s to control 80 light of LEDs bright to put out to carry out various whole process of patte
5、rn conversion.AT89C52 can well carry out the function of the colourful light controller, and have high degree gather, the quick speed, stability, credibility advantages and so on.Key Words:AT89C52;74HC165;74HC595 目 录 一、 前言:. 3二、 总体方案设计:. 6三、 单元模块设计:. 8四、 软件设计:. 13五、 系统调试:. 19六、 系统功能、指标参数. 19七、 设计总结:
6、. 20八、 参考文献:. 20前 言:随着社会和科技的进步,作为高新技术,尤其是电子信息行业的发展更是走在时代的前沿,我们的周围处处存在着电子产品,我们生活在一个被电子产品充斥的世界里,小到手表.收音机,大到彩电.冰箱电脑 ,我们时刻都在感受它们在我们生活中的作用。作为电子信息工程专业的学生,我们由学校的组织来到华迪实训基地实习,我们有幸作为西华大学电气信息学院的第一批学生来华迪实习,在华迪我们既充实了专业知识,又第一次与电子公司接触,感受了企业的管理模式。 通过老师对LED的讲解我们对LED有了更为深入的了解,也极大地增强了我们对LED的极大兴趣。实习过程中老师给我们讲解了大量的关于一些芯
7、片的知识,丰富了我们对当今市场芯片的了解。这次实习使我们的观念和认识有了许多改进,例如对当今电子市场动态的了解,电子产品发展的趋势,还有一些最基本的电子原件的发展现状。在这次实习中不仅使我们丰富了相关的专业知识,而且,开阔了我们的思维,弥补了我们一些基本常识的不足,使我们受益匪浅。 实训模式华迪实训的宗旨是帮助大学生实现“一个转变(择业/就业观念的转变)、两个转化(即专业知识向专业技能转化、学生角色向员工角色转化)”,做到“四个满意(即送训单位满意、学生/学员满意、家长满意、社会用人单位满意);实现大学生就业“零适应期”的人才培养目标。实训实施部按照教学、案例、实践(1:3:6)相结合的模式来
8、培训每一位前来实训的学员,在学员实践的过程中又按照企业项目运作的方式对项目进行管理,让学员理解项目的运作流程、管理方法、监控措施,让他们在走出校门前就接受到正规的、标准的企业工作流程思想的培训,已利于他们今后在用人单位中的工作。实训目的n 学习体会电子产品企业规范化、专业化、标准化、规模化的电子产品设计、开发流程、典型开发团队中人员角色设置;n 学习体会典型电子产品项目开发团队的角色构成及团队角色协同工作技巧;n 学习当前主流的电子产品开发技术;n 学习体验课堂理论知识在实际工程项目中的应用,积累项目实战经验;n 感受电子产品企业对员工知识结构、技术技能、综合素质的要求,体验企业的文化氛围;n
9、 加速由学生向员工的身份转变,增强同学的就业能力和信心。实训方式n 本次实习结合具体专业知识在电子产品系统集成项目和企业信息化建设中的实际运用,归纳出各种类型的“关键知识点”和技能要求,安排成系统的实习内容穿插在具体项目中供学生实践和练习。n 实习内容由针对各项“关键知识点”的讲座、案例分析和练习/操作三部分内容构成。在时间安排上主要以练习/操作为主。n 将学生分成若干个项目组,以不同的角色参与项目实践。实训内容:智能彩灯及霓虹灯控制器项目实施计划(10天)时间课程涵盖的知识点/技能点考核点安排具体训练方法第一周第一天上午9:00-12:00项目开发过程商业级电子产品的开发流程讲座与讨论第一天
10、下午2:00-5:00电子产品生产制造工艺基础及开发工具使用1、 电子元器件分类、标识、应用常识及电路板典型的焊接生产工艺过程2、 利用protel阅读原理图和印制线路板图3、 单片机程序设计语言及开发平台讲座与讨论第二天上午9:00-12:00电子产品生产制造工艺基础及开发工具使用1、单片机程序设计语言及开发平台熟悉2、单片机程序总体架构及C语言汇编混合程序设计3、利用protel工具阅读原理图和PCB图实践第二天下午2:00-5:00智能彩灯及霓虹灯控制器焊接与硬件调试焊接工艺及方法讲解及演示,材料发放,电路板焊接 实践第三天上午9:00-12:00智能彩灯及霓虹灯控制器焊接与硬件调试电路
11、板焊接检查、硬件上电及扫描测试1、 焊接质量检查2、 上电测试3、扫描测试实践第三天下午2:00-5:00智能彩灯及霓虹灯控制器原理1、 智能彩灯及霓虹灯控制器总体控制原理2、 控制器显示原理及驱动时序3、 控制软件总体框架讲座与讨论第四天上午9:00-12:00智能彩灯及霓虹灯控制器原理1、 项目采用主要芯片资料阅读与消化2、 显示控制时序理解实践第四天下午2:00-5:00智能彩灯及霓虹灯控制器原理1、 控制程序总体框图完成2、 控制程序总体架构完成1、 控制程序框图是否完成2、 控制程度架构是否正确搭建第五天上午9:00-12:00智能彩灯及霓虹灯控制器编程1、 显示效果及显示数据组织2
12、、 整体控制(渐亮渐暗)及运行指示程序设计讲座与讨论第五天下午2:00-5:00智能彩灯及霓虹灯控制器编程1、 控制整体亮暗程序设计2、 运行指示程序设计3、 多级(大于100级)亮度控制程序设计实践第二周第一天上午9:00-12:00智能彩灯及霓虹灯控制器编程1、 制整体亮暗程序设计2、 运行指示程序设计3、多级(大于100级)亮度控制程序设计实践第一天下午2:00-5:00智能彩灯及霓虹灯控制器编程1、 制整体亮暗程序设计2、 行指示程序设计3、多级(大于100级)亮度控制程序设计1、 整休亮和黑是否实现2、 多级亮度控制是否完成实践第二天上午9:00-12:00智能彩灯及霓虹灯控制器编程
13、1、 霓虹灯效果与显示帧原理2、 追逐、填充、字符、动画效果设计讲座与讨论第二天下午2:00-5:00智能彩灯及霓虹灯控制器编程霓虹灯显示效果(可以自己发辉)程序设计实践第三天上午9:00-12:00智能彩灯及霓虹灯控制器编程霓虹灯显示效果(可以自己发辉)程序设计1、实践第三天下午2:00-5:00智能彩灯及霓虹灯控制器编程1、 串口通信原理及串口通信协议2、 串口通信程序设计讲座与讨论第四天上午9:00-12:00智能彩灯及霓虹灯控制器编程1、 串口通信协议处理程序设计2、 串口接收数据的处理及服务的实现实践第四天下午2:00-5:00智能彩灯及霓虹灯控制器编程1、 串口通信协议处理程序设计
14、2、 串口接收数据的处理和服务的实现1、 霓虹灯效果是否完成2、 串口控制是否完成实践第五天9:00-12:00电子应用工程技术工程师必备与就业指导1、 学校教育与企业岗位需求差异2、 职业选择及应聘技巧3、 电子产品行业现状及当前就业形式讲座与讨论第五天下午2:00-5:00智能彩灯及霓虹灯控制器项目总结及评审项目总结和成果评审1、 成果展示及说明2、 显示过程的完整性及流畅性3、 程序代码的优化程度总体方案设计:智能彩灯原理图:单片机的数据输出端所送出的数据通过74HC245后在接到74LS165,这样单片机传出的并行经165后变为串行输出到595,从原理图上可以看出每个595的串行输出口
15、是接到下一个595的串行输入口。了解了这一点后,我们可以在单片机产生读写AD总线时序时候连续给595芯片8个脉冲后,这样就将一个8位的数据送到第一个595中,这样连续让单片机产生10次总线时序就可以将10个8位数据依次送到10片595中锁存并输出,这样就可以控制彩灯的点亮与否单元模块设计: 芯片资料: 1AT89C52 AT89C52采用40只引脚的双列直插封装方式,如上图所示。40只引脚按功能来分,可分为3类:(1)电源及时钟引脚:Vcc,Vss,XTAL1,XTAL2 Vcc:接+5V电源Vss:接地XTAL1;接外部晶体的一个引脚。该引脚是内部反相放大器的输入端。XTAL2:接外部晶体的
16、另一个引脚,在该引脚内部接至反相放大器的输入端。(2)控制引脚:PSEN,ALE,EA,RESET(RST) RST:是复位信号的输入端,高电平有效。ALE/PROG:ALE为地址锁存允许信号,当上电正常工作后,ALE引脚不断输出正脉冲信号。PROG为本引脚的第二功能,在对片内编程写入时,此引脚作为编程脉冲输入端。PSEN:程序存储器允许输出控制器,此引脚接外部程序存储器的OE端。EA/Vpp:EA功能为内外程序存储器选择控制器,当为高电平时,访问内部程序存储器,;为低电平时,只访问外部程序存储器,不论是否有内部程序存储器。(3)I/O口引脚:P0,P1,P2,P3,为4个8位I/O口的外部引
17、脚。P0:8位准双向I/O口,此口为地址总线及数据总线分时复用,可驱动8个LS型TTL负载。P1:8位准双向I/O口,可驱动4个LS型TTL负载。P2:8位准双向I/O口,与地址总线复用,可驱动4个LS型TTL负载。P3:8位准双向I/O口,双功能复用口,可驱动4个LS型TTL负载。 此芯片作为一块CPU,是整个电路的核心部件,它控制整个电路的工作。274HC595 引脚 名称 功能595芯片在此电路中也起到重要的作用,它把从74LS165发过来的信号控制发光二极管的亮灭,整个彩灯序列是由十个595芯片连接起来的。3. 74LS165 74LS165是把从CPU AT89C52传过来的并行数据
18、转化为串行数据,再发给595芯片。4 HY62256 62256在这作为存储器。574HC573 573为地址锁存器,对地址起锁存作用。 软件设计: 主函数:#include define.h/包文件区域unsigned char mod;/全局参数区域extern delay();extern init();extern check();extern delay1();/外部函数定义区unsigned char code disp=0x00,0x00,0x00,0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0;unsigned char code disp1= 0x0
19、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /全亮 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /全灭 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, /绿灯亮 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa, /红灯亮 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /全灭 0xff,0xfe,0xff,0xfe,0xff,0
20、xfe,0xff,0xfe,0xff,0xfe, /第1列亮 0xff,0xfd,0xff,0xfd,0xff,0xfd,0xff,0xfd,0xff,0xfd, /第2列亮 0xff,0xfb,0xff,0xfb,0xff,0xfb,0xff,0xfb,0xff,0xfb, /3 0xff,0xf7,0xff,0xf7,0xff,0xf7,0xff,0xf7,0xff,0xf7, /4 0xff,0xef,0xff,0xef,0xff,0xef,0xff,0xef,0xff,0xef, /5 0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff,0xdf,
21、 /6 0xff,0xbf,0xff,0xbf,0xff,0xbf,0xff,0xbf,0xff,0xbf, /7 0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f, /8 0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff, /9 0xfd,0xff,0xfd,0xff,0xfd,0xff,0xfd,0xff,0xfd,0xff, /10 0xfb,0xff,0xfb,0xff,0xfb,0xff,0xfb,0xff,0xfb,0xff, /11 0xf7,0xff,0xf7,0xff,0xf7
22、,0xff,0xf7,0xff,0xf7,0xff, /12 0xef,0xff,0xef,0xff,0xef,0xff,0xef,0xff,0xef,0xff, /13 0xdf,0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff, /14 0xbf,0xff,0xbf,0xff,0xbf,0xff,0xbf,0xff,0xbf,0xff, /15 0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff, /16 0x00,0x00,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x00,0x00
23、, /外方框亮 0x01,0xde,0xef,0xd5,0xef,0xd5,0xef,0xd5,0x83,0xdd, /川工 0x01,0xde,0xef,0xd5,0xef,0xd5,0xef,0xd5,0x83,0xdd, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, /全灭 0xff,0xfd,0xff,0xfd,0xff,0xfd,0xff,0xfd,0xff,0xfd, /2 0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff,0xdf, /6 0xfe,0xff,0xfe,0xff,0xf
24、e,0xff,0xfe,0xff,0xfe,0xff, 0xef,0xff,0xef,0xff,0xef,0xff,0xef,0xff,0xef,0xff, 0xff,0xf7,0xff,0xf7,0xff,0xf7,0xff,0xf7,0xff,0xf7,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x00,0x00, ;/显示数据区/extern uns
25、igned char rec; /外部数据区main() init();EA=1;TR0=1; check(); while(1) ; 调用函数:#include extern unsigned char code disp;extern unsigned char code disp1delay() using 2 /函数定义时最好指定所用寄存器组,特别在有参数传递时必须指定 unsigned char i,j,m; for(m=0;m1;m+) for(i=0;i100;i+)/for(i=0;i150;i+) for(j=0;j160;j+) /for(j=0;j255;j+) ; de
26、lay1() using 2unsigned char i,j; for(i=0;i20;i+) for(j=0;j255;j+) ; init() using 2include define.h extern display(unsigned char gray);unsigned char ct;unsigned char ctl;unsigned char gray;void zd() interrupt 1 using 2TMOD=0x01; TR0=0;TL0=0x06;TH0=0xff; TR0=1;ct+; if(ct=8) gray=ctl; display(gray ); e
27、r=0; ct=0; ctl+; if(ctl=4) ctl=0; switch(ctl) case 1:if(ct=1) er=1;break; case 2:if(ct=2)er=1;break; case 3:if(ct=4)er=1;break case 4:if(ct=8)er=1;break; /灰度程序unsigned int i;er=eg=eb=1;runled=runled;st=0;clk=0;for(i=0;i4096;i+) XBYTEi=dispi; XBYTE0xFFFF=0x0;check() using 2unsigned int j,k,mod,i;unsi
28、gned char cBak;for(i=0;i48;i+)for(j=0;j10;j+)/cBak=XBYTE0xFFFF;cBak=XBYTEi*10+j;for(k=0;k8;k+)clk=1;clk=0;st=1;st=0;er=0;runled=runled;delay();eg=0;runled=runled;delay();eb=0;runled=runled;delay();runled=runled;delay();for(mod=0;mod1;mod+)for(j=0;j255;j+)for(k=0;k255;k+) if(kj) er=eg=eb=0; else er=e
29、g=eb=1; for(j=0;j255;j+)for(k=0;k255;k+) if(kj) er=eg=eb=1; else er=eg=eb=0; er=eg=eb=1;delay();er=eg=eb=0;display(unsigned char ctl) using 2unsigned int j,k;unsigned char cBak; for (j=0;j10;j+)cBak=XBYTEctl*10+j;for(k=0;k8;k+)clk=1;clk=0;st=1;st=0; delay();delay();/DEFINE程序:#include #include #inclu
30、de #include sbit clk=P35;sbit st=P11;sbit er=P12;sbit eg=P13;sbit eb=P14;sbit rd=P37;sbit wr=P36;sbit txd=P31;sbit rxd=P30;sbit runled=P16;Main.c是程序的主程序,运行时调用Function.C,在程序中引用了外部函数init() display() delay() delay1().因此要在程序中申明外部函数如extern init(); 接着定义了一个数组DISP,数组里面存的数就是控制字,但是DISP只是初始化,里面的控制字都是0,为的是对彩灯起清
31、屏作用.我们在程序中又定义了一个新的数组DISP1,里面存了19组控制字,是我们组设计的图形控制字.EA是中断开关,当为1时开中断.TH0 TH1是对定时中断方式的设置,此处调用中断.在程序中要用到中断来显示灰度.系统调试:我们用的是WAVE6000软件,仿真工具也是伟副的S51仿真器,我们先在电脑上用WAVE调试,通过调试后的提示来修该程序,在运行通过后再用仿真器进行仿真,从现象来判断编写的程序是否与当初的想法一样,只有通过这些调试后才能完成设计工作。系统功能、指标参数:我们通过在主函数的disp1 里面编写代码来使彩灯改变各种亮的方式,我们组实现的功能是先让彩灯全亮,再红 绿灯各亮一次,接
32、着灯框亮.从左到右每列依次点亮,然后是用灯组成的“川工”二字,我们的设计基本达到了老师的要求。设计总结:难忘的十天实习终于结束了,在这十天我们没有虚度光阴,每一天都是按照老师的安排去做的。我属于电子信息二班,做的是智能彩灯,在这次实习中,每一环节我都参与了,大大加强了我的动手能力,尤其是焊接电路板,在去年的暑期实习中,我们焊过电视机,认为已经有经验,不会太难,但当我们拿到器件后才知道没那么容易,这些器件都非常小,尤其是我们从未见过的贴片电阻,当我们拿到它都不知道从何下手,但在实习老师的指导下我们终于找到了方法,此外,我们还学到的“拖焊”技术,这对于小且管脚很密的芯片来说是非常有用的。 在华迪实
33、习期间,我除了加强动手能力和专业知识外,还初次接触了企业的管理制度,我们像正式工人一样上午9:00上班,中午休息两小时,下午5:00下班,这种规范的上班制度让我们提前接触很有好处,为以后走上工作岗位有一定的帮助。 这次实习在编程上花的时间最多,我们光读懂老师给的框架程序就花了不少时间,在这基础上再进行改进和添加,在老师说的第一个层次我们很容易就做到了,但当做第二个层次调出灰度时,着实花了不少功夫,开始时我们连灰度是什么都不清楚,分不清灰度与亮度的区别。实习结束时我们还进行了答辩,在我们组答辩时,我们组组长整体介绍后,程序由我答辩,当时还真有点害怕,尤其是在老师的不停提问下,我的脑袋开始有点乱,但正是在他的提问和引导下我胜地完成了答辩,当时我们真的很激动。十天的实习虽然很短暂,但学到了不少东西,留下了一段美好的记忆。 参考文献:新编MCS-51单片机应用设计 张毅刚 彭喜元 姜守达 乔立岩 编 哈尔滨工业大学出版社Hwadee 华迪实训西华大学实训讲义 四川华迪信息技术有限公司