当前位置:文档之家› 基于AT89C51的跑马灯

基于AT89C51的跑马灯

综合电子课程设计报告设计题目:基于AT89C51的跑马灯专业:电子信息工程班级:学号:姓名:指导教师:日期: 2010年6月30日目录一、设计任务与要求1.设计任务2.设计要求3.设计目的二、设计方案三、程序设计四、电路原理图1.电路原理图2电路PCB板五、单片机机箱测试六、心得体会七、参考文献一设计任务与要求1.设计任务选择采样AT89C51、发光二极管、晶振等器件,使用C语言实现各种跑灯动态显示效果设计。

2.设计要求实现8个LED的全亮、全灭、交错显示等。

可结合灯的排布以及程序设计实现各种跑马灯动态显示效果。

3.设计目的通过本课程设计掌握单片机系统设计思路和基本步骤,熟练用protel99软件画原理图和PCB板二设计方案在日常生活中,我们总能看到花样百出的流水灯光,但随着电子技术的飞速发展,人们对灯的花样要求也越来越高,如交错、全亮、全灭显示等,因此跑马灯得到广泛的应用。

设计流程三、程序设计程序如下:#include <reg51.H>#defineuint unsigned int#define uchar unsigned charuchar code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};uchar code aa[]={0xE7,0xDB,0xBD,0x7E};uchar code bb[]={0xE7,0xC3,0x81,0x00};uchar code CC[]={0x0F,0xF0,0xAA,0x55};uchar code dd[]={0xFF,0x00,0xff,0x00,0xff,0x00};uchar code ee[]={0x7E,0x3C,0x18,0x00,0xff,0xE7,0xC3,0X81,0x00};uint t=200,s=200;/************************************************** 函数名称:delay(uint t)延时函数入口参数t返回参数:***************************************************/ void delay(uint t){uint i;while(t--){for(i=0;i<125;i++);}}/*************************************************** 函数名称:keyboard()键盘函数入口参数:返回参数:t***************************************************/ keyboard(uint a){int temp;if(P2^0==0){P2=0xaf;delay(20);if(P2^0==0){temp=a;temp-=40;a=temp;while(temp<00?1:0){return s;}return a;}/*else return s;*/}}/**************************************************** 函数名称:diaplay()显示函数入口参数:返回参数:****************************************************/ void display(void){int i;for(i=0;i<=7;i++){P1=0XFF;P0=table[i];t=keyboard(t);delay(t);}for(i=7;i>=0;i--){P1=0XFF;P0=table[i];t=keyboard(t);delay(t);}for(i=0;i<=7;i++){P1=0XFF;P0=aa[i];t=keyboard(t);delay(t);}for(i=0;i<=7;i++){P1=0XFF;P0=bb[i];t=keyboard(t);delay(t);}for(i=0;i<=7;i++){P1=0XFF;P0=CC[i];t=keyboard(t);delay(t);}for(i=0;i<=7;i++){P1=0XFF;P0=dd[i];t=keyboard(t);delay(t);}for(i=0;i<=7;i++){P1=0XFF;P0=ee[i];t=keyboard(t);delay(t);}}/************************************************** 函数名称:主函数入口参数:返回参数:***************************************************/ void main(void){while(1){display();}}从表中很清楚看到我们的跑马灯结构和它每一种工作方式的如何实现的,它是靠一个12MHZ的晶体振荡器来实现分频和延时,并通过数学矩阵来对每一种方式下的发光二极管进行控制。

由于我们用的是单片机且为十六进制数计数的,通过原理图我们可以知道,当向某个二极管通以低电平时,它就马上发光,以此我们通过上述表得到以下矩阵,即它们的发光的方式。

但是由于电子脉冲的速度是极快的,因此必须通过石英晶体来对它进行时间上的延迟以致出现我们设计所需的动态效果,实际上可以通过数学方式计算可以有2^8=256种的亮灯方式,我们只用了这其中的一小部分,它的六种矩阵如下:uchar code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};uchar code aa[]={0xE7,0xDB,0xBD,0x7E};uchar code bb[]={0xE7,0xC3,0x81,0x00};uchar code CC[]={0x0F,0xF0,0xAA,0x55};uchar code dd[]={0xFF,0x00,0xff,0x00,0xff,0x00};uchar code ee[]={0x7E,0x3C,0x18,0x00,0xff,0xE7,0xC3,0X81,0x00四、电路原理图用protel99画出电路原理图PCB版图PCB最终图五.单片机机箱测试在机箱测试中六种显示方式都得到了实现六.心得体会通过这次课程设计,加强了我们动手、思考和解决问题的能力.在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的做法可以行得通,但实际总是实现不了,因此耗费在这上面的时间用去很多.我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用,而且考试内容有限,所以在这次课程设计过程中,我们了解了更多的认识.平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了.而且还可以记住很多东西.认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准.所以这个期末测试之后的课程设计对我们的作用是非常大的.经过两个星期的实习,过程曲折可谓一语难尽.在此期间我们也失落过,也曾一度热情高涨.从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长.生活就是这样,汗水预示着结果也见证着收获.劳动是人类生存生活永恒不变的话题.通过实习,我才真正领略到"艰苦奋斗"这一词的真正含义,我想说,设计确实有些辛苦,但苦中也有乐,在如今单一的理论学习中,很少有机会能有实践的机会,但我们获得了这样的机会。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力.在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固.这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师的辛勤指导下,终于游逆而解.同时,在老师的身上我们学也到很多实用的知识,在次我们表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目.在此,感谢于老师的细心指导,也同样谢谢其他各组同学的无私帮助。

七、参考文献《综合电子设计电路与实践》清华大学出版社王振红张常年编著《单片机原理及接口技术》电子工业出版社许煜明韩雁主编。

相关主题