花样流水灯 - 图文

更新时间:2024-02-03 21:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

梧 州 学 院 课 程 论 文

(2013 -2014学年第2学期)

花样流水灯

提交日期:2014年 6月 17 日 学生签名: 学 号 1101904030 课程编号 BS1901002 课程名称 Protel课程设计 原理图设计成绩 分(40分) PCB设计成绩 分(20分) 设计报告 分(30分) 答辩环节 分(10分) 班级 专业 11级电子科学与技术班 电子信息工程 任课教师 李琛 成绩评定: 分

1

目录

摘要 ??????????????????????????????? 3 一、Protel软件简介?????????????????????????4 二、设计任务和要求????????????????????????? 4 三、电路工作原理 ??????????????????????????5

3.1总体电路分析?????????????????????????5 3.2单元电路设计?????????????????????????5 3.2.1单片机最小系统设计?????????????????????5 3.2.2发光二极管LED显示部分???????????????????6 3.2.3共阴极数码显示管??????????????????????7 3.2.4按键控制模块设计??????????????????????9 3.2.5十口下载端口设计部分设计??????????????????10 3.2.6芯片复位设计????????????????????????11 四、Protel设计 ???????????????????????????11

4.1电路原理图设计????????????????????????11 4.2 PCB版图设计?????????????????????????20 五、打印输出及制作??????????????????????????24 六、总结及心得????????????????????????????26 七、附录???????????????????????????????27 1.主要程序 ????????????????????????????27 2.元器件明细表 ??????????????????????????30 3.附图 ??????????????????????????????31 八、参考文献 ????????????????????????????34

2

摘 要

LED灯在人们的生活中已被广泛应用于各种活动布置的装饰,娱乐场所,街灯以及利用其各种亮法制作各式各样个性的广告牌等。

51单片机是各单片机中最为典型和最有代表性的一种。首先,在我们学习过的课程中我们了解了单片机的一些技术,了解了单片机芯片AT89S52的一些功能,能够结合C语言编程,并在本学期学习了PROTEL这个软件的使用的基础上,最后能根据设计理念通过PROTEL这个软件去设计电路,实现使LED爱心流水灯实现多亮与灭的循环,用AT89S52芯片控制“LED爱心流水灯”,整个系统有8种“LED爱心流水灯”模式可以选择,K1是选择模式键,并将相应的模式在LED七段数码管中显示出来,K2可以对LED爱心流水灯的速度进行加速,K3可以对LED爱心流水灯的速度进行减速,K可以对电路进行复位。整个系统可以实现对心形LED流水灯模式的多层控制,还可以进行加减速。本论文基于单片机技术与单片机芯片AT89S52芯片功能和C语言程序,实现LED爱心流水灯的多种亮与灭的循环。本论文主要是基于PROTEL软件去实现花样流水灯功能的电路设计。

关键词:PROTEL软件、MCS51、AT89s52、LED、共阴极七段数码管

3

一、Protel软件简介

现在市场上常见的PCB板级设计的软件有Protel、PowerPCB、Cadence等。其中,Protel在国内应用最广泛,从最早的Protel 99SE到后续的Protel DXP,再到最新版的Altim Designer,Protel已变得越来越强大,功能越来越完善。

Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows XP操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。 由于Altium Designer 在继承先前Protel软件功能的基础上,综合了FPGA设计和嵌入式系统软件设计功能,Altium Designer 对计算机的系统需求比先前的版本要高一些。

Altium Designer并不是一个简单的电子设计电路设计工具,而是一个功能完善的电路设计、仿真与PCB制作系统,它由四大设计模块组成,即:原理图(SHC)设计模块、原理图(SHC)仿真模块、PCB设计模块、可编程逻辑元件(FPGA)设计模块。

二、设计任务和要求

要求对16个LED灯(多色)设计8种流水灯显示方式,用一个按键进行方式选择,并用一个数码管显示方式编号,用两个按键(+或—)控制流水灯流动的速度,用一个按键控制电路复位。

方式0:16个LED灯按顺序从编号1到编号16逐个点亮LED灯,再由编号16到编号1逐个点亮LED灯。

方式1:16个LED灯按顺序从编号1到编号16一个接一个亮LED灯,然后全亮,然后全灭,再由编号16到编号1一个接一个点亮LED灯,然后全亮,然后全灭。

方式2:奇数亮,依次从左向右循环,最后全亮;偶数亮,依次由右到左循环,最后全亮。两个循环。

方式3:全亮,左单边八个全灭后依次亮;右单边八个全灭后依次亮,依次灭,如此循环。

方式4:整体闪烁。

方式5:由1,3亮依次由左向右循环,最后全亮。循环。

方式6:从左到右本来全亮,2个灭流水,后从右到左2个灭流水,依次循环。

4

方式7:从左到右本来全亮,4个灭流水,后从右到左4个灭流水,依次循环。 (注:对原题目已进行拓展)

三、电路工作原理

3.1总体电路分析

本设计主要运用Altium Designer软件对花样流水灯进行电路设计,此次电路原理图设计主要采用的层次式电路图结构。层次式原理图结构清晰,可读性更强因为层次式原理图设计可以看做是逻辑方块图之间的层次设计,大致可以将层次式原理图分为层次式母图和层次式子图。层次式母图中电路由若干个图纸符号电气连接构成,而个个图纸符号都连接到不同的层次式子图。层次式子图就是各功能的原理图,由具体的元件电气连接构成,然后封装成图纸符号并加上图纸入口在层次式在层次式母图中显示。层次式母图主要包括六个模块:单片机最小系统模块、发光二极管LED显示模块、89S52芯片(AT89c51)复位模块、共阴极LED七段数码管显示模块、十口下载端口模块及按键控制模块组成。该电路设计实现的功能是:对16个LED灯(多色)设计8种流水灯显示方式,用一个按键进行方式选择,并用一个数码管显示方式编号,用两个按键(+或—)控制流水灯流动的速度,用一个按键控制电路复位,单片机作为主控芯片通过烧写程序可以展开程序功能。所以为实现电路功能我们可以通过keil软件编程并生成hex文件烧录到芯片中并结合硬件部分从而实现电路功能。 框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方便系统开发中器件的选取。通过框图设计,让设计者从整体上把握系统的开发。本系统设计的总体电路原理框图如下图1所示。

发光二极管LED 显示模块 共阴极七段数码管显示模块 单片机最小系统模块 按键控制模 块 十口下载端口模块 89S52(AT89c51) 芯片复位模块

图1 总体电路原理框图

5

3.2单元电路设计

3.2.1单片机最小系统设计

采用AT89C51芯片作为主控芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器( FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。要使单片机工作起来,则电路的基本构成有:时钟电路即振荡电流向单片机提供一个正弦波信号作为基准,决定单片机的执行速度;复位电路用以确定单片机工作的起始状态,完成单片机的启动过程,本次设计使用的是手动复位,通常在单片机出现混乱或“死机”时,使用手动复位可实现单片机的重启;其最小系统单元图如图2最小系统单元图。

图2 最小系统单元图

3.2.2发光二极管LED显示部分

由于本次课程设计要实现流水灯的流水功能,所以显示部分我们采用的是发光二极管LED。发光二极管LED显示部分由16个发光二极管构成,发光二极管是半导体二极管的一种,可以把电能转化成光能,常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,所以具有单向导电性。常用的发光二极管是发红光、绿光或黄光的二极管。它广泛应用于各种电子电路、家电、仪表等设备中、作电源指示或电平指示。实物如图3发光二极管所示。由于课程设计设想的是制作一个心形流水灯所

6

3.2.3共阴极数码显示管

以其单元LED显示部分如图4单元LED显示部分。

图3 发光二极管

统使用非常普遍。一位共阴数码管结构如图5所示;

图4单元LED显示部分

构简单、价格低廉、使用方便、耗电少、与单片机接口容易等特点,在单片机应用系

共阴极数码显示管是由发光二极管组成的,发光二极管显示管简称LED,具有结

7

图5 一位共阴数码管

共阴数码管是指将所有发光二极管的阴极接到一起形成共阴极(COM)的数码管。在应用共阴数码管时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段发光二极管的阳极为低电平时,相应字段就不亮,其0~f编码为:

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}

其原理图如图6示,共阴极的管脚示意图如图7示。

图6共阴极数码管原理图

图7阳极管脚示意图

8

只要点亮相应字段的发光二极管,则LED数码管显示相应数字。如要显示“1”,点亮b、c段;要显示“0”,点亮a、b、c、d、e、f段。从图8不难看出,对于共阴极数码管,点亮字段则用高电平“1”来表示,所以高电平有效。这样我们就可以把要显示的数字与一串二进制代码对应起来,即对LED数码显示器实现编码。

图8用字符的八段显示码

3.2.4按键控制模块设计

轻触开关是一种电子开关,使用时轻轻点按开关按钮就可使开关接通,当松开手时开关即断开,其内部结构是靠金属弹片受力弹动来实现通断的。

轻触开关由于接触电阻小、按动有清脆的手感手感明显、高度规格齐全等方面的原因,在家用电器方面得到广泛的应用如:影音产品、.数码产品、遥控器、通讯产品、家用电器、安防产品、玩具、电脑产品、健身器材、医疗器材、验钞笔、雷射笔按键等等。但轻触开关也有它不足的地方,频繁的按动会使金属弹片疲劳失去弹性而失效。因此现在大部分电器的按钮都使用导电橡胶或锅仔开关五金弹片直接来代替,比如电脑键盘,遥控器等。

轻触开关实物如图9;轻触开关的功能说明图如图10,按键原理图如图11示。

9

图9 轻触开关

图10按钮说明图

图11 按键原理图

3.2.5十口下载端口设计部分设计

十口下载端口通过数据线连接电脑将写好的程序烧写到最小系统单片机的芯片

10

上,使其能实现电路的功能,其原理图如图12下载端口。

图12下载端口

3.2.6芯片复位设计

复位电路是用来确定单片机工作的起始状态,完成单片机的启动过程,组成该复位电路主要由电容、晶振、轻触开关、电解电容组成。本次设计使用的是手动复位,通常在单片机出现混乱或“死机”时,使用手动复位可实现单片机的重启。按键后:电容器被短路放电,RES直接和VCC相连,就是高电平,此时进入“复位状态。松手后:电源开始对电容器充电,此时,充电电流在电阻上,形成高电平送到RES,仍然是“复位状态”;稍后,充电结束,电流降为0,电阻上的电压也将为0,RES降为低电平,开始正常工作。如图13复位电路。

图13复位电路

四、Protel设计

4.1电路原理图设计

本次课程设计主要运用Altium Designer6.9软件对“花样流水灯”进行电路设计,此次电路原理图设计主要采用的层次式电路图结构。层次式原理图结构清晰,可读性更强因为层次式原理图设计可以看做是逻辑方块图之间的层次设计,大致可以将层次式原理图分为层次式母图和层次式子图。层次式母图中电路由若干个图纸符号电气连接构成,而个个图纸符号都连接到不同的层次式子图。层次式子图就是各功能的原理图,由具体的元件电气连接构成,然后封装成图纸符号并加上图纸入口在层次式在层次式母图中显示。层次式母图主要包括六个模块:单片机最小系统模块、发光二

11

极管LED显示模块、89S52芯片(AT89c51)复位模块、共阴极LED七段数码管显示模块、十口下载端口模块及按键控制模块组成。

绘制原理图的详细步骤如下: 1.新建工程项目文件

(1)单击菜单File/New/PCB Project ,新建工程项目文件。

(2)单击菜单File/Save Project保存工程文件,并命名为“流水灯课程设计.PrjPCB”。 2.绘制母图

(1)在流水灯课程设计.PrjPCB工程文件中,单击菜单File/New/Schematic,新建原理图文件。

(2)单击菜单File/Save As,将新建的原理图文件保存为“流水灯课程设计.SchDoc”

(3)单击菜单Place/Sheet Symbol,或单击Wring工具栏中的

按钮,如图

14所示,修改其属性,依次放置单片机最小系统模块、发光二极管LED显示模块、89S52芯片(AT89c51)复位模块、共阴极LED七段数码管显示模块、十口下载端口模块及按键控制模块,放置如图15所示

图14方块电路属性

12

(4)单击菜单Wring工具栏的

图15 放置六个方块电路

如图16设置RSTET端口依次设置,完成后效果如图17所示。

图16 RESET端口

按钮,放置方块电路端口,并修改其属性,

13

18所示。

图 18 连线

(5)连线。根据各方块电路电气连接关系,用导线或总线将端口连接起来,如图

18所示,并添加网络标号,网络标号属性修改如图19所示。完成后的母图效果如图

图19 网络标号属性修改

图17 放置方块电路端口

14

3 创建及绘制子图

(1)在母图中,单击菜单Design/Create Sheet From Symbol,此时鼠标变为十字形。

(2)将十字光标移到十口下载端口模块内。

(3)单击鼠标左键,系统将弹出如图20所示对话框,单击“No”按钮,生成子图,且自动布置与该方块电路相对应的I/0端口,如图21所示。

图20 转换端口方向对话框 图21 自动生成的I/0端口

(4)绘制十口下载端口模块电路子图。其用到的元件如下表1所示。绘制完成后

的效果如图22所示。

表1 十口下载端口模块电路元件列表

元件在图中标号 元件图形样本名 RES2 LED0 Miscellaneous Devices.IntLib 1K Miscellaneous Devices.IntLib 所在元件库 元件类型或标示值 AXIAL0.4 LED0 十针下载口 HDR1X2 元件封装 R28 DS0 JP1 JP Header 2X5 元件库2.Schlib.SchLib Header 2 Miscellaneous Connectors.IntLib VCC Sw GND SW DIP-3 电源工具栏 Miscellaneous Devices.IntLib 电源工具栏

15

计.PrjPCB),装入网络表和元件封装,如图28所示,装入后的PCB板效果如图29所示。

图28 载入网络表

图29装入网络表和元件封装后的PCB板

3 .手动布局

手动调整元件位置,调整后的PCB板如图30所示。

21

图30 手动布局结果

4 设置布线规则

(1)单击菜单Design/Rules,弹出布线规则设置对话框。

选中Width,单击鼠标右键,选择New Rule选项,添加布线宽度,分别添加地网络(GND)布线宽度为35mil如图31,电源网络(VCC)布线宽度为30mil如图32,信号线宽为20mil如图33。设置完成后效果如图34所示。 点击“Apply”应用。

图31 设置地网络线宽

22

图32 设置VCC网络线宽

图33设置信号线宽

图 34 设置线宽完成后

5 .自动布线

单击菜单Auto Route/All,开始自动布线。布线完成后效果如图35所示。

23

图35自动布线完成后的PCB板

5 .手动布线调整

在自动布线完成PCB板的基础上进行手动调整,使其布线更加完美简洁化。手动布线调整完成后效果如图36所示。

图36手动布线调整完成后的PCB板

24

五.打印输出及制作

1.原理图打印输出

执行菜单命令【file】-【setup】,弹出图37,设置原理图打印属性。执行菜单命令【file】-【Print Preview】,弹出图38打印预览窗口。

图37设置原理图打印属性

图38打印预览窗口

2.PCB图打印输出

执行菜单命令【file】-【setup】,弹出图37,设置原理图打印属性。单击

25

【Advence】按钮进入PCB打印属性设置页面如图39所示。设置完成后的属性界面如图40所示。执行菜单命令【file】-【Print Preview】,弹出图41 PCB打印预览窗口。

图39 PCB打印属性设置页面

图40设置完成后的属性界面

26

图41 PCB打印预览窗口

六.总结及心得

在此对给予我帮助的老师表示深深地感谢!同时对给予我帮助的同学表示深深地感谢。我想说的是,在指导老师和同学们的帮助下我学到了很多东西,也发现了自己的很多不足之处,促使我在以后的学习中更加努力的学习。我们回顾这过去的两周时,我们会发现自己收获了很多,也成长了很多,懂得了如何去学习以前未曾学过的新思维新方法,懂得了如何去多方位地查找资料,完善和创新一些旧的思维方式,懂得了如何同老师和同学交流和协作,尤其要感谢李琛老师在此过程中对我们悉心的辅导,认真的讲解,帮助我们解决问题,循循善诱,使我门受益匪浅。还有同学们的帮助,互相推荐好的资料。相信这次课程设计的体验将成为今后我们更多更广学习中的奠基石。课程设计的过程,是学习的过程,也是锻炼的过程,更是教会我们同学之间相互帮助,共同克服困难的过程,这将是人生中一笔宝贵的财富,使我受用不尽的同时,我一定将之好好珍惜。

本次课程设计主要是对PROTEL软件的熟练应用,由于平时对PROTEL软件能较好的运用,所以设计过程没有遇到多大问题,人家说学以致用,只有将学习到的东西应用到实际,自己才会得到提高,这次花样流水灯的设计,我由以往单纯的理论知识学习状态转变为与实际相结合,原理图的设计主要运用的是层次式原理图设计,因为其结

27

构清晰,可读性更强因为层次式原理图设计可以看做是逻辑方块图之间的层次设计。在此我运用51单片机的编程知识去完成一个最小单片机系统,无论是从硬件还是软件方面,不懂就要上网查阅文献资料、设计手册、设计规范以及DXP电脑制图的教学视频,程序烧写,keil编程软件的运用也要熟悉。

七.附录

1.主要程序

#include

#define uchar unsigned char #define uint unsigned int uchar Mode; uint Speed;

uchar Count=0;//计数 uchar sudu;

uchar Yiweishu=0;//移动位数

bit YiDong=1;//滚动方向,1表示从左到右 uchar code shumaguan[]={0x3F,0X06, 0x5B,

0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //数码管显示0~9 ,共阴型数码管 uint code suduleixing[]={0,1,3,5,7,9,15,100,200,230,300,350};//调整速度

{ uchar i;

while(x--) for(i=0;i<120;i++); } { uchar K;

if(P2==0xFF) return 0;//按键没有按下时 ,该IO口值为高电平。 Delay(10);

switch(P2) //根据按键硬件连接定义按键值,读取P2口的状态判断发生外部中断的位置。

{case 0xFE: K=1;break;//按钮按下时,端口电平变化1111 1110 case 0xFD: K=2;break;//检测有没有键被按下1111 1101 case 0xFB: K=3;break;//1111 1011

28

void Delay(uint x)//延时函数

uchar button() //检测按键,控制三个按键

default: K=0; }

while (P2!=0xFF);//等待按键放弃 return K; //返回K键值。 }

void Led(uint Led16) //16只led显示 {

P1=(uchar)(Led16&0x00FF);//低电平P1口8个Led亮 ,显示低八位 P0=(uchar)(Led16>>8);//右移8位P0口led亮 ,显示高八位 }

void T0_INT() interrupt 1// 1表示定时器0 {

if(++Count

return; Count=0;

switch(Mode)//0亮,1灭 {

case 0:if(YiDong)Led(~(0x0001<

else break;

case 1:if(YiDong)Led(0xFFFE<

else break;

case 2:if(YiDong)Led((0xAAAA<

else Led(0x5555>>Yiweishu); if(Yiweishu==15) YiDong=!YiDong; break;

case 3:if(YiDong)Led((0xFF00<

else

Led(~(0x8000>>Yiweishu));

if(Yiweishu==15) YiDong=!YiDong;

Led(0x7FFF>>Yiweishu);

if(Yiweishu==15) YiDong=!YiDong;

Led((0x00FF>>Yiweishu));

29

if(Yiweishu==15) YiDong=!YiDong; break;

case 4:if(YiDong)Led((0x0000<

case 5:if(YiDong)Led(~(0x0005<

else break;

case 6:if(YiDong)Led(0x0003<

else break;

case 7:if(YiDong)Led(0x000F<

else break;

default:break; }

Yiweishu=(Yiweishu+1);//16位移动位数 }

void KeyProcess(uchar Key) //键盘按键处理 {

switch(Key)

{case 1:YiDong=1;//重设模式 ,移动方向从左到右 Yiweishu=0; //移位数为0

Mode=(Mode+1)%8; //取余数,共有0到7种模式,当模式计到7时,Mode清0 P3=shumaguan[Mode];//段选数码管在P3口显示模式数值 break; break;

case 2:if(sudu>1) Speed=suduleixing[--sudu]; //减速 case 3:if(sudu<15) Speed=suduleixing[++sudu];//加速

30

Led(~0x0000>>Yiweishu);

if(Yiweishu==15) YiDong=!YiDong;

Led((0x0000>>Yiweishu));

if(Yiweishu==15) YiDong=!YiDong;

Led((0xc000>>Yiweishu));

if(Yiweishu==15) YiDong=!YiDong;

Led(0xF000>>Yiweishu);

if(Yiweishu==15) YiDong=!YiDong;

} }

void main() {

uchar Key;

P0=P1=P2=P3=0xFF;//端口初始化 Mode=0;//给模式赋初值 sudu=4;//给速度赋初值

P3=shumaguan[Mode];//数码管显示

IE=0x82;//表示允许定时器T0溢出中断,IE是中断允许寄存器,其值为82时,二进制为1000 0010,IE.7位为1表示中断总控制位EA=1,CPU开放所有中断,ET0=1,允许T0中断。

TMOD=0x00;//工作方式0 ,13位定时计数器,最大计数8192次, TR0=1; //启动定时器0 while(1) {

Key=button();

if(Key!=0) KeyProcess(Key); //按键检测 }}

2.元器件明细表

表7元器件明细表

30pf电容 10uf电解电容 LED发光二极管 一位共阴极数码管 1K电阻 10K电阻 12MHZ晶振 at89c51芯片的插座 at89s52芯片 四脚按键 排针 插座 十口下载线 2个 1个 红、黄、绿共17个 1个 17个 4个 1个 1个 1片 4个 1排 1个 1条 31

焊锡 3.附图

晶振座子 六角开关 4.7k排阻 1位数码管插座 (2)PCB板图如图43所示。

(3)作品照片如图44所示。

(1)系统电路层次式原理图如图42所示。

32

1个 1排 1排 1个 一个

33

图42系统电路层次式原理图

图43 PCB板图

34

图44 作品照片

八、参考文献

1、《51单片机原理及应用(第2版)——基于keil C与Proteus》北京航空航天大学出版社

2、郭天祥编著:《51单片机C语言教程》电子工业出版社,2008

3、侯玉宝等编著:《基于Proteus的51系列单片机设计与仿真 》电子工业出版社2008

4、《C语言程序设计》 谭浩强 清华大学出版社 (2010-06出版) 5、《轻松玩转AVR单片机C语言》北京航空航天大学出版社

6、《Altium Designer原理图与PCB设计及仿真》谢龙汉 电子工业出版社

35

本文来源:https://www.bwwdw.com/article/8r5w.html

Top