找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4133|回复: 1
打印 上一主题 下一主题
收起左侧

基于单片机的心形灯制作

[复制链接]
跳转到指定楼层
楼主
1  设计方案
1.1 总体设计目标
1.1.1使心形LED灯实现一亮一灭功能
利用C语言编程,使LED灯实现一亮一灭功能,循环两次。
1.1.2使心形LED灯实现两亮两灭功能
使用C语言编程,实现LED灯两亮两灭,循环两次。
1.1.3是心形LED流水灯具有4亮4灭功能,全亮全灭
使用C语言,实现LED流水灯4亮4,全亮全灭等循环。
1.1.4具有复位功能
在按下开关后,实现灯从一亮到全亮复位。   
1.2总体设计组成框图
系统框图如下




                           1.1系统框图

运用单片机与芯片AT89S51功能,以及C语言程序编程,是LED灯实现多种亮灭方法,运用晶振给单片机芯片提供一个时钟信号,本次实验采用12MHz的晶振给单片机提供时钟信号。                  

2        相关运用及功能
2.1流水灯运用
LED灯可以装饰婚庆布置、宾馆、酒店、酒吧、聚会、商厦、家居、橱窗、俱乐部、音乐会、歌厅、时装表演、舞厅、舞台、等等各个场所, 也可以当做礼物送人。人们可以将各种亮法的灯去装饰自己需要装饰的地方,也可以安放在广告牌,这样更为吸引人们的关注。
2.2 单片机运用
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:  
1.在智能仪器仪表上的应用  
2.在工业控制中的应用  
3.在家用电器中的应用  
4.在计算机网络和通信领域中的应用  
5.单片机在医用设备领域中的应用  
6.在各种大型电器中的模块化应用   
7.单片机在汽车设备领域中的应用
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
2.3        AT89S51芯片功能
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
主要性能特点
1、4k Bytes Flash片内程序存储器;
2、128 bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断;
5、6个中断源;
6、2个16位可编程计数器;
7、2个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。
管脚说明
VCC:电源电压输入端。
GND:电源地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

PDIP封装的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口输出地址的高八位。在给出地址“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 T0(T0定时器的外部计数输入)
P3.5 T1(T1定时器的外部计数输入)
P3.6 /WR(外部数据存储器的写选通)
P3.7 /RD(外部数据存储器的读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。89C51的P0、P1、P2、P3口作为输入时都是准双向口。除了P1口外P0、P2、P3口都还有其他的功能。
RST:复位输入端,高电平有效。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:地址锁存允许/编程脉冲信号端。当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号,低电平有效。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:外部程序存储器访问允许。当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:片内振荡器反相放大器和时钟发生器的输入端。
XTAL2:片内振荡器反相放大器的输出端。
3  软件部分设计方案及仿真
3.1  multisim软件功能简介
Multisim是Interactive Image Technologies (Electronics Workbench)公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。为适应不同的应用场合,Multisim推出了许多版本,用户可以根据自己的需要加以选择。在本书中将以教育版为演示软件,结合教学的实际需要,简要地介绍该软件的概况和使用方法,并给出几个应用实例。
Multisim是加拿大图像交互技术公司(Interactive Image Technoligics简称IIT公司)推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。
    工程师们可以使用Multisim交互式地搭建电路原理图,并对电路行为进行仿真。Multisim提炼了SPICE仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,这也使其更适合电子学教育。通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程.
3.2  Altium Designer软件功能简介
Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案-一个既满足当前,也满足未来开发需求的解决方案。
最新发布的 Altium Designer10 为您带来了一个全新的管理元器件的方法。其中包括新的用途系统、修改管理、新的生命周期和审批制度、实时供应链管理等更多的新功能!
Release 10 将继续保持不断插入新的功能和技术的过程,使得您可以更方便轻松地创建您的下一代电子产品设计。 Altium 的统一的设计架构以将硬件,软件和可编程硬件等等集成到一个单一的应用程序中而闻名。它可让您在一个项目内,甚或是整个团队里自由地探索和开发新的设计创意和设计思想,团队中的每个人都拥有对于整个设计过程的统一的设计视图。
Altium Designer 10 提供了一个强大的高集成度的板级设计发布过程,它可以验证并将您的设计和制造数据进行打包,这些操作只需一键完成,从而避免了人为交互中可能出现的错误。发布管理系统简化规范了发布您的设计项目的流程,或者更具体地说,是那些项目中定义的配置, 直观,简洁而且稳定。更重要的是,该系统可以被直接链接到您的后台版本控制系统。 新增的强大的预发布版验证手段的组合 - 用以确保所有包含在发布中的设计文件都是当前的,与存储在您的版本控制系统中的相应的文件“主人”保持同步的文件,并且通过了所有特定的规则检查ERC, DRC, 等等, 从而,您可以在更高层面上控制发布管理,并可保证卓越的发布质量。
3.3  keil软件功能简介
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
  Keil C51开发系统基本知识Keil C51开发系统基本知识
  Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
  Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。
C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
3.4   设计步骤及方法
首先,确定好原理图后,在multisim软件上画好,并仿真;仿真成功后再在Altium Designer软件上面画好PCB图;然后在keil软件软件上面,用C语言进行编程,把程序录入芯片AT89S51上面,再做板。
4  电路板的制作及调试
4.1 PCB的印制和电路板的制作
运行Altium Designer软件,首先新建工程,新建一个原理图文件,在Altium Designer中再选择相应的元件,进行布局、连线,修改它所对应的封装,再导入原理图中,检查原理图无误后,生成网络表。新建一个PCB文件,导入前一步中生成的网络表,排查其中的错误直到能够成功导入。对于导入的元件进行布局,尽量使电路板看起来紧凑一些,同时减少线与线之间的交叉,减少不必要的跳线,使用手动布线之后再对照原理图检查多遍是否正确,然后去打印店打印PCB。
科协有印版的机器,在印制电路板前首先用砂纸将铜板打磨光滑方便印制和腐蚀,在印版时将电路板和打印的PCB纸紧密相贴,双手送入机器当中,反印两次之后就基本成功了,之后检查是否存在有断线,用油性笔将有断线的地方即使连接起来。之后将浓盐酸、双氧水和水按照一定的比例配置成腐蚀液,将印制好的电路板放入其中,用手晃动盛有腐蚀液的容器可以加快反应速度。在反应完后取出电路板,用清水清洗之后就可以开始打孔了,打孔的时候要对准,不然在之后插元件尤其是多管脚的芯片时会很困难,也不要磨针,不然很容易就会断。在打完孔之后,用砂纸打磨一遍,再涂上松香防止腐蚀,就可以开始对电路板进行元件的焊接了,焊接时应注意要焊稳,防止虚焊的产生。
如果腐蚀液以及反应完,可以向科协的同学说明,并在同学指导下把腐蚀液配置好,不要自己配置腐蚀液,并且注意安全。
4.2 电路板的调试过程及所遇问题的解决方案
电路所设计的功能能否实现,电路板制作的好坏也起了很大的作用。
在接通电源前,我先对电路中的主要线路进行了测量,包括电源线,排线,芯片之间的连线,然后就接上5V电源,开始对电路中的功能进行检测。
接通5V电源后,首先观察所以等是否都亮,如果不亮,一一看电路板是否虚焊了。还有灯如果亮,但是不按自己编的程序亮,还要看程序是否已经成功录入芯片,或者程序错误,还有,程序对了,电路也没有虚焊,灯并没有按照程序亮法亮,这样检查焊锡是否多了,焊锡多了也容易出现问题,因为焊接时,焊锡会空隙焊接,实际上并没有焊接好电路。
在这次的调试过程中,从最开始的制作PCB到后来的电路板进行实物检测,我都遇到了很多的问题,以下是我对这些问题的解决过程以及从中获得的心得体会
4.2.1元件的封装
由于Altium Designer软件配备的元件库已经很旧了,因此在电路板的制作之前最好先买好元器件用游标卡尺对各个管脚的宽度进行测量,确定各个管脚的功能和封装是否能够对应,不然在焊好元件之后发现封装错误只好重做,这也需要平时多动手,多熟悉各种元件的管脚功能,毕竟元器件店卖的芯片型号很多,实现的功能也可能和课本上的不一样。也可以去上网百度,下载最新的元件库,记得要多上网,接触最新的信息。
4.2.2断线和虚焊
由于科协做板的人很多,因此大家都是放在一起腐蚀,难免会有许多的剐蹭,因此腐蚀好的电路板出现断线也就在所难免,因此在做完电路板,焊接好元件之后就要对线路进行全面的检查,用万用表对着原理图来测量,不能光凭肉眼判断。在这次的课设中,在焊好元件后我已经对线路进行了检查,然后在后来的调试过程中发现原来检查好的线路上又出现了断线,应该是在调试的过程中剐蹭造成的,因此在电路不能实现功能时要及时进行线路的检查。
在焊接的技术不是很熟练的时候,虚焊很容易出现,而且与断线相比,它不容易被发现,特别是对于多管脚的芯片,由于前面打孔的时候没打好,芯片插进去的时候就会很困难,很容易出现一些管脚没有完全穿过去的情况,这个时候就最容易出现虚焊,在这次课设的过程中,就是有一个芯片的管脚没有插好导致电路没有实现功能。
还有,管脚特别多的时候,不能把管脚焊接在一起,这样会造成电路短路,元器件会容易烧坏,所以,在接电源之前要注意检查虚焊和焊接是否会造成短路。
还有注意芯片的保护,由于芯片管脚很多,而且芯片管脚比较小,所以在芯片的安放和拿出过程中必须要小心,不能把芯片管脚弄坏,建议使用工具把管脚取出。
4.2.3万用表的使用
使用万用表,可以检查电路是否虚焊了,这样有助于保证电路板成功实它的功能。
4.3 C语言程序运用
在本次课程设计中,c语言程序的编程对电路板最终功能实现占大部分的作用,以下是部分c语言程序代码:
#include<reg51.h>
#define uint unsigned int
void delay1ms(unsigned int i)
{

unsigned char j;
while(i--)
{
for(j=0;j<125;j++)          //1ms基准延时程序
{
  ;
}

}

}
void main()

{ uint k;


  while(1)
  {
          for(k=0;k<2;k++)
          {
         P1=0XFF;                //16个led一个一个亮起
         P0=0xfe;
delay1ms(200);
  P0=0xfd;
delay1ms(200);
  P0=0xfb;
delay1ms(200);
    P0=0xf7;
delay1ms(200);
    P0=0xef;
delay1ms(200);
  P0=0xdf;
delay1ms(200);
  P0=0xbf;
delay1ms(200);
    P0=0x7f;
delay1ms(200);
                 P0=0XFF;
                 P1=0xfe;
delay1ms(200);
  P1=0xfd;
delay1ms(200);
  P1=0xfb;
delay1ms(200);
    P1=0xf7;
delay1ms(100);
    P1=0xef;
delay1ms(200);
  P1=0xdf;
delay1ms(200);
  P1=0xbf;
delay1ms(200);
    P1=0x7f;
delay1ms(200);
                                }
     由此可见,c语言编程是那么重要。


5 结论
本次课程设计,是第一次课程设计。感触很深,本来很多软件都还没有学,像Altium Designer软件和keil软件,多亏同学的帮助,还有网上的很多视频教程。在同学帮助下,还有老师指导和自己努力下,自己慢慢学会了很多东西。学会怎么样绘制原理图,绘制PCB板,还有怎样更好去焊接板。
实验中,由于是第一次由自己设计做的板,刚开始的时候,由于自己的理论不足,经验不足,导致好多错误。不过,通过老师的指导,同学的帮助,还有自己去图书馆翻阅资料,在网上看很多软件教学视频,使自己学会了很多理论知识。在做电路板的过程中,自己去腐蚀,大孔,焊接还有校检电路。在此过程中,知道注意设置PCB焊盘的大小,电路的铜线大小,还有打孔的大小。这些都会对后面焊接电路的成功与否有比较大的左右,还有也知道自己应该多动手,多多练习做电路板。
在本次课程设计过程中,我深刻了解到自己的各方面知识是多么匮乏,还有自己的动手能力是那么的弱。这告诉我多去学习相关资料,多去上网看一下关于专业所用的相关软件教程,有什么不懂的地方,应该多去向老师请教,多去和同学交流。当然,最主要的还是多锻炼自己的动手能。

完整的Word格式文档51黑下载地址:
心形流水灯.rar (250.1 KB, 下载次数: 9)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:380488 发表于 2019-12-4 11:39 | 只看该作者
谢谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表