1、基于单片机流水灯论文西北民族大学2012级专业课程设计论文基于单片机流水灯设计年 级:学 号:姓 名:专 业: 自动化 二零一五年六摘要本论文基于单片机技术与单片机芯片AT89S51芯片功能和C语言程序,实现心形流水灯的多种亮与灭的循环。首先,我们了解单片机的一些技术,了解了单片机芯片AT89S51的一些功能;然后结合C语言编程;最后将它们运用到实际的电路,使心形LED灯实现多种亮灭方法。本论文介绍关于流水灯的运用和单片机技术;然后介绍芯片AT89S51;最后介绍运用到的相关软件.关键词:单片机;流水灯;C语言;AbstractThis paper Based on the single ch
2、ip microputer and single chip microputer chip AT89S51 chip function and C language program,Realization of flowing water light heart a variety of light and the cycle of destruction。primarily,We know some of the single chip microputer technology,Understanding of the single chip microputer chip AT89S51
3、 of some functions, Then based on the C language programming; Finally they are applied to the practical circuit, Make heart LED lamp achieve a variety of light out method. This paper introduces about the use of flowing water light and single chip microputer; and then introduced chip AT89S51; At the
4、end of this paper applied to software.Key words:micro-puter;light water ;C programming language3.4 设计步骤及方法.84.3 C语言程序运用.10引 言LED流水灯是运用单片机原理和一些芯片功能,结合C语言或者汇编语言,实现灯的亮灭方式。流水灯主要用于装饰婚庆布置、宾馆、酒店、酒吧、聚会、商厦、家居、橱窗、俱乐部、音乐会、歌厅、时装表演、舞厅、舞台、等等各个场所,也可以作为礼物送人。本文主要讲述我完成这次课设所经历的五个阶段:总体方案设计、硬件电路设计方案及原理、软件调试及仿真,电路板的制作、对于
5、本次课程设计的改良预想。在介绍我本次课程设计的设计原理的同时,也侧重同时记录了我是如何对于设计过程中遇到的问题进展分析和解决的。同时,我也着重介绍了我所用到的相关软件和芯片功能。1 设计方案1.1 总体设计目标使心形LED灯实现42种不同形式的闪烁功能利用C语言编程,使LED灯实现42种不同形式的闪烁功能,一直循环。1.2总体设计组成框图系统框图如下1.1系统框图运用单片机与芯片STC89C52功能,以及C语言程序编程,是LED灯实现多种亮灭方法,运用晶振给单片机芯片提供一个时钟信号,本次实验采用12MHz的晶振给单片机提供时钟信号。 2相关运用及功能2.1流水灯运用LED灯可以装饰婚庆布置、
6、宾馆、酒店、酒吧、聚会、商厦、家居、橱窗、俱乐部、音乐会、歌厅、时装表演、舞厅、舞台、等等各个场所, 也可以当做礼物送人。人们可以将各种亮法的灯去装饰自己需要装饰的地方,也可以安放在广告牌,这样更为吸引人们的关注。2.2 单片机运用目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的平安保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因
7、此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪表上的应用 2.在工业控制中的应用 3.在家用电器中的应用 4.在计算机网络和通信领域中的应用 5.单片机在医用设备领域中的应用 6.在各种大型电器中的模块化应用 7.单片机在汽车设备领域中的应用此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。2.3STC89S52芯片功能STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指
8、令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V3.3V5V单片机/3.8V2.0V3V单片机3.工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口32个,复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP在系
9、统可编程/IAP在应用可编程,无需专用编程器,无需专用仿真器,可通过串口RxD/P3.0,TxD/P3.1直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.具有看门狗功能10.共3个16位定时器/计数器。即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12.通用异步串行口UART,还可用定时器软件实现多个UART13.工作温度范围:-40+85工业级/075商业级14.PDIP封装STC89C52RC单片机的工作模式 掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序PDIP封装的
10、AT89S51管脚图P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。在
11、给出地址“1时,它利用内部上拉优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故。P3口除了作为普通I/O口,还有第二功能: P3.0 RXD串行输入口 P3.1 TXD串行输出口 P3.2 /INT0外部中断0 P3.3 /INT1外部中断1 P3.4 T0T0定时器的外部计数输入 P3.5 T1
12、T1定时器的外部计数输入 P3.6 /WR外部数据存储器的写选通 P3.7 /RD外部数据存储器的读选通 P3口同时为闪烁编程和编程校验接收一些控制信号。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。89C51的P0、P1、P2、P3口作为输入时都是准双向口。除了P1口外P0、P2、P3口都还有其他的功能。 RST:复位输入端,高电平有效。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:地
13、址锁存允许/编程脉冲信号端。当外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想制止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE制止,置位无效。 PSEN:外部程序存储器的选通信号,低电平有效。在由外部程序存储器取指期间,每个机器周期两次/
14、PSEN有效。但在外部数据存储器时,这两次有效的/PSEN信号将不出现。 EA/VPP:外部程序存储器允许。当/EA保持低电平时,那么在此期间外部程序存储器0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源VPP。 XTAL1:片内振荡器反相放大器和时钟发生器的输入端。 XTAL2:片内振荡器反相放大器的输出端。3 软件局部设计方案及仿真3.1 multisim软件功能简介Multisim是Interactive Image Technologies
15、(Electronics Workbench)公司推出的以Windows为根底的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。为适应不同的应用场合,Multisim推出了许多版本,用户可以根据自己的需要加以选择。在本书中将以教育版为演示软件,结合教学的实际需要,简要地介绍该软件的概况和使用方法,并给出几个应用实例。Multisim是加拿大图像交互技术公司Interactive Image Technoligics简称IIT公司)推出的以Windows为根底的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包
16、含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。 工程师们可以使用Multisim交互式地搭建电路原理图,并对电路行为进展仿真。Multisim提炼了SPICE仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进展捕获、仿真和分析新的设计,这也使其更适合电子学教育。通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程.3.2 Altium Designer软件功能简介Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的
17、所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式以及PCB幅员设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案一个既满足当前,也满足未来开发需求的解决方案。最新发布的 Altium Designer10 为您带来了一个全新的管理元器件的方法。其中包括新的用途系统、修改管理、新的生命周期和审批制度、实时供给链管理等更多的新功能!Release 10 将继续保持不断插入新的功能和技术的过程,使得您可以更方便轻松地创立您的下一代电子产品设计。 Altium
18、的统一的设计架构以将硬件,软件和可编程硬件等等集成到一个单一的应用程序中而闻名。它可让您在一个工程内,甚或是整个团队里自由地探索和开发新的设计创意和设计思想,团队中的每个人都拥有对于整个设计过程的统一的设计视图。Altium Designer 10 提供了一个强大的高集成度的板级设计发布过程,它可以验证并将您的设计和制造数据进展打包,这些操作只需一键完成,从而防止了人为交互中可能出现的错误。发布管理系统简化标准了发布您的设计工程的流程,或者更具体地说,是那些工程中定义的配置, 直观,简洁而且稳定。更重要的是,该系统可以被直接到您的后台版本控制系统。 新增的强大的预发布版验证手段的组合 - 用以
19、确保所有包含在发布中的设计文件都是当前的,与存储在您的版本控制系统中的相应的文件“主人保持同步的文件,并且通过了所有特定的规那么检查ERC, DRC, 等等, 从而,您可以在更高层面上控制发布管理,并可保证卓越的发布质量。3.3 keil软件功能简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断开展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件
20、也在不断开展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选目前在国内你只能买到该软件、而你买的仿真机也
21、很可能只支持该软件,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil C51开发系统根本知识Keil C51开发系统根本知识 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、构造性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,
22、多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能表达高级语言的优势。下面详细介绍Keil C51开发系统各局部功能和使用。C51工具包的整体构造,如图(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创立生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供
23、调试器dScope51或tScope51使用进展源代码级调试,也可由仿真器使用直接对目标板进展调试,也可以直接写入程序存贮器如EPROM中。3.4 设计步骤及方法首先,确定好原理图后,在multisim软件上画好,并仿真;然后在keil软件软件上面,用C语言进展编程,把程序录入芯片STC89S52上面,再做板。4 电路板的制作及调试4.2 电路板的调试过程及所遇问题的解决方案电路所设计的功能能否实现,电路板制作的好坏也起了很大的作用。在接通电源前,我先对电路中的主要线路进展了测量,包括电源线,排线,芯片之间的连线,然后就接上5V电源,开场对电路中的功能进展检测。接通5V电源后,首先观察所以等是
24、否都亮,如果不亮,一一看电路板是否虚焊了。还有灯如果亮,但是不按自己编的程序亮,还要看程序是否已经成功录入芯片,或者程序错误,还有,程序对了,电路也没有虚焊,灯并没有按照程序亮法亮,这样检查焊锡是否多了,焊锡多了也容易出现问题,因为焊接时,焊锡会空隙焊接,实际上并没有焊接好电路。在这次的调试过程中,从最开场的制作到后来的电路板进展实物检测,我都遇到了很多的问题,以下是我对这些问题的解决过程以及从中获得的心得体会。4.2.2断线和虚焊在做完电路板,焊接好元件之后就要对线路进展全面的检查,用万用表对着原理图来测量,不能光凭肉眼判断。在这次的课设中,在焊好元件后我已经对线路进展了检查,然后在后来的调
25、试过程中发现原来检查好的线路上又出现了断线,应该是在调试的过程中剐蹭造成的,因此在电路不能实现功能时要及时进展线路的检查。在焊接的技术不是很熟练的时候,虚焊很容易出现,而且与断线相比,它不容易被发现,特别是对于多管脚的芯片,芯片插进去的时候就会很困难,很容易出现一些管脚没有完全穿过去的情况,这个时候就最容易出现虚焊,在这次课设的过程中,就是有一个芯片的管脚没有插好导致电路没有实现功能。还有,管脚特别多的时候,不能把管脚焊接在一起,这样会造成电路短路,元器件会容易烧坏,所以,在接电源之前要注意检查虚焊和焊接是否会造成短路。还有注意芯片的保护,由于芯片管脚很多,而且芯片管脚比拟小,所以在芯片的安放
26、和拿出过程中必须要小心,不能把芯片管脚弄坏,建议使用工具把管脚取出。4.2.3万用表的使用使用万用表,可以检查电路是否虚焊了,这样有助于保证电路板成功实它的功能。4.3 C语言程序运用在本次课程设计中,c语言程序的编程对电路板最终功能实现占大局部的作用,以下是局部c语言程序代码:#include #define uint unsigned int#define uchar unsigned charuchar code table0=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/LED从低位往高位移uchar code table1=0x7f,0xbf,0x
27、df,0xef,0xf7,0xfb,0xfd,0xfe;/LED从高位往低位移uchar code table2=0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00;/LED从1个亮到8个都点亮(从低位往高位)uchar code table3=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;/LED从1个亮到8个都点亮(从高位往低位)uchar code table4=0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;/LED从8个全亮到一个都不亮(从低位往高位)uchar code tabl
28、e5=0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;/LED从8个全亮到一个都不亮(从高位往低位)uchar code table6=0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e;/LED从低位往高位移(最低位始终为0)uchar code table7=0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e;/LED从高位往低位移(最高位始终为0)uchar i,j; /定义循环变量uint tt=70; /定义时间指数void delay(uint time) /延时函数 disp31()
29、; /状态31 逐步逆时针点亮P2、P1的LED,再逆时熄灭后,再逆时针点亮P0、P3的LED,再逆时熄灭 disp32(); /状态32 LED自上而下逐步点亮,然后从下往上逐步熄灭 disp33(); /状态33 LED从左往右开场点亮(直到全亮),然后从左右两边开场熄灭(直到全部熄灭) disp37(); /状态37 2个LED自上而下移动,并点亮最下2个LED,然后2个LED再自下而上回去,同时4个LED上下各2个LED再来回移动一次 disp36(); /状态36 从P0.7、P3.0开场同时逆时针旋转,直到LED全亮 disp40(); /状态40 LED从P3.0、P0.7开场逆
30、时针同时熄灭,直到LED全部熄灭 disp35(); /状态35 从P2.7、P1.7开场同时顺时针旋转,直到LED全亮 disp41(); /状态41 LED从P2.7、P1.7开场顺时针同时熄灭,直到全部熄灭 disp34(); /状态34 LED从左往右开场点亮(直到全亮),然后从中间往左右边熄灭 disp28(); /状态28 P1、P2和P0、P3交替闪烁 5 结论本次课程设计,是第一次课程设计。感触很深,本来很多软件都还没有学,像Altium Designer软件和keil软件,多亏同学的帮助,还有网上的很多视频教程。在同学帮助下,还有教师指导和自己努力下,自己慢慢学会了很多东西。学会怎么样绘制原理图,怎样更好去焊接板。实验中,由于是第一次由自己设计做的板,刚开场的时候,由于自己的理论缺乏,经历缺乏,导致好多错误。不过,通过教师的指导,同学的帮助,还有自己去图书馆翻阅资料,在网上看很多软件教学视频,使自己学会了很多理论知识。在做电路板的过程中,自己焊接还有校检电路。在此过程中,知道注意设置焊盘的大小,电路的合理走线。这些都会对后面焊接电路的成功与否有比拟大的左右,还有也知道自己应该多动手,多多练习做电路板。在本次课程设计
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1