路灯控制器模拟装置设计与实现.docx
- 文档编号:2870184
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:53
- 大小:980.73KB
路灯控制器模拟装置设计与实现.docx
《路灯控制器模拟装置设计与实现.docx》由会员分享,可在线阅读,更多相关《路灯控制器模拟装置设计与实现.docx(53页珍藏版)》请在冰点文库上搜索。
路灯控制器模拟装置设计与实现
1软件介绍
1.1、Protel99SE软件介绍
Protel99SE是Protel公司近10年来致力于Windows平台开发的最新结晶,能实现从电学概念设计到输出物理生产数据,以及这之间的所有分析、验证和设计数据管理。
因而今天的Protel最新产品已不是单纯的PCB(印制电路板)设计工具,而是一个系统工具,覆盖了以PCB为核心的整个物理设计。
最新版本的Protel软件可以毫无障碍地读Orcad、Pads、Accel(PCAD)等知名EDA公司设计文件,以便用户顺利过渡到新的EDA平台。
对于以前没有接触过protel的人来说,首先,大家对protel要有一个整体的认识:
通常所说的pcb板,就是指的是印制电路板。
印制电路板的制作,总体上要分为三个阶段:
原理图的绘制,生成网络表,由网络表生成pcd图并进行布线。
原理图的绘制,主要就是体现各个器件之间的逻辑关系,也就是怎么连线。
原理图对于我们来说是比较直观,由原理图生成的网络表就是一种protel能够识别和认识的表。
对pcd板进行布线就是把相关的焊盘按照软件提供的链接关系连接起来。
1.1.1原理图设计
(1)、文件操作
双击桌面快捷图标,启动Protel99SE,进入Protel99SE的初始界面如图1.1
图1.1Protel99SE的初始界
新建数据库文件,单击菜单File-New,弹出“新建设计数据库”如图1.2所示,在DatabaseFileName.ddb更改自己所用的数据库,单击Browes…按钮,可选择文档放置路径。
单击OK按钮确认,关闭对话框,并弹出窗口如图1.3所示。
图1.2
图1.3
单击File-New…,在弹出的“新建文件类型选择”对话框中,选择SchematicDocument图标,以建立一个原理图文件(.Sch)。
单击OK按钮。
在该文件上单击右键选择rename可以修改文件名称。
(2)新建原理图文件。
双击SchematicDocument图标打开该文件。
在BrowseSch标签中,Add/Remove…
按钮用来添加/删除元器件库,找到自己添加的文件选定后单击Add按钮,将该
库文件添加到列表中,单击OK按钮,添加完毕。
如1.4图所示。
图1.4
(3)选取、放置元器件
选取放置AT89C51
步骤1:
在BrowseSeh标签中选择对象。
单击加载库列表框中的毕业设计库.Sch.在元器件列表中单击选定AT89C51。
步骤2:
放置对象。
在选定对象后,单击Phce按钮移动鼠标至工作区此时么发现鼠标上跟随着该对象的符号(电气图形)。
如图1.5所示。
合适的位置单击,则该元件被放置在图纸上,右键退出放置状态。
图1.5
(4)绘制原理图
根据自己所设计的电路图画出原理图如图1.6所示,
图1.6
(5)电气规则检查及网络表输出
单击菜单Tools-ERC…“打开ERC设置”对话框,单击OK生成网络表如图1.7,1.8所示。
图1.7图1.8
1.1.2PCB设计
(1)PCB环境设置
要进行PCB设计,必须有原理图,根据原理图才能画出PCB图。
选择PCB设计
窗口下的“Design”中的“Add/RemoveLibrary”,在对话框上选择“Library.ddb”,在“\DesignExplorer99SE\Examples”文件夹中选取,点取“Add”,
然后“OK”关闭对话框。
如图1.9所示。
图1.9
(2)布线及其规则设置检查
打开所有要用到的PCB库文件后,调入网络表文件和修改零件封装
这一步是非常重要的一个环节,网络表是PCB自动布线的灵魂,也是原理图设计与印象电路版设计的接口,只有将网络表装入后,才能进行电路版的布线。
在原理图设计的过程中,ERC检查不会涉及到零件的封装问题。
因此,原理图设计时,零件的封装可能被遗忘,在引进网络表时可以根据设计情况来修改或补充零件的封装。
当然,可以直接在PCB内人工生成网络表,并且指定零件封装。
如图1.10
图1.10
1.1.3PCB元器件封装设计
手工创建元器件封装
(1)在“Tools”下选择“MakeLibray”,建立一个新库文件“5x5-SB.lib”,所有PCB中的器件封装被自动抽取出来,保存在库文件中。
在这个新库文件中建立器件封装,点击左侧导航树上的“BrowsePCBlib”,可以浏览这个库里现有的元件,创建一个新的元件选择“Tools”下的“NewComponent”,弹出一个器件封装模板,按照提示,可以迅速生成一个我们需要的器件封装。
(2)对加载的元器件进行布局。
往往按照先大后小的原则。
比如在单片机控制的系统在,单片机是核心部件,体积也比较大,应当放在中心位置,其他比较小的元件按照接线最短的原则,依次分布在它的周围。
在连线的时候,地线之间可以不必连接,在最后正反面铺铜的时候会自动连接。
1.2Protues软件介绍
Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。
通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。
由于我们主要使用Proteus软件在单片机方面的仿真功能,所以我们重点研究ISIS模块的用法,在下面的内容中,如不特别说明,我们所说的Proteus软件特指其ISIS模块。
下面我们首先来熟悉一下Proteus的界面。
Proteus是一个标准的Windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如图1.11示:
图1.11
如图中所示,区域①为菜单及工具栏,区域②为预览区,区域③为元器件浏览区,区域④为编辑窗口,区域⑤为对象拾取区,区域⑥为元器件调整工具栏,区域⑦为运行工具条。
下面我们就以建立一个和我们在Keil简介中所讲的工程项目相配套的Proteus工程为例来详细讲述Proteus的操作方法以及注意事项。
首先点击启动界面区域③中的“P”按钮(PickDevices,拾取元器件)来打开“PickDevices”(拾取元器件)对话框从元件库中拾取所需的元器件。
对话框如图1.12所示
图1.12
在对话框中的“Keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C51,就可以直接输入。
输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。
在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及PCB参数。
搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。
当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。
添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。
首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。
接着按相同的操作即可完成所有元器件的布置,接下来是连线。
事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。
布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。
下面我们就来添加电源,首先点击
,选择终端模式,然后在元器件浏览区中点击POWER(电源)来选中电源,通过区域⑥中的元器件调整工具进行适当的调整,然后就可以在文档区中单击放置电源了。
放置并连接好线路的电路图一部分如图1.13:
图1.13
连接好电路图以后我们还需要做一些修改。
由上图我们可以看出,图中的R1电阻值为10k,这个电阻作为限流电阻显然太大,将使发光二极管D1亮度很低或者根本就不亮,影响我们的仿真结果。
所以我们要进行修改。
修改方法如下:
首先我们双击电阻图标,这时软件将弹出“EditComponent”对话框(见下图所示的对话框),对话框中的“ComponentReferer”是组件标签之意,可以随便填写,也可以取默认,但要注意在同一文档中不能有两个组件标签相同;“Resistance”就是电阻值了,我们可以在其后的框中根据需要填入相应的电阻值。
填写时需注意其格式,如果直接填写数字,则单位默认为Ω;如果在数字后面加上K或者k,则表示kΩ之意。
这里我们填入270,表示270Ω。
修改好各组件属性以后就要将程序(HEX文件)载入单片机了。
首先双击单片机图标,系统同样会弹出“EditComponent”对话框,如下图。
在这个对话框中我们点击“Programfiles”框右侧的
,来打开选择程序代码窗口,选中相应的HEX文件后返回,这时,按钮左侧的框中就填入了相应的HEX文件,我们点击对话框的“OK”按钮,回到文档,程序文件就添加完毕了。
图1.14
装载好程序,我们就可以进行仿真了。
工具条从左到右依次是“Play”、“Step”、“Pause”、“Stop”按钮,即运行、步进、暂停、停止。
下面我们点击“Play”按钮来仿真运行,效果如下图所示,可以看到系统按照我们的程序在运行着,而且我们还能看到其高低电平的实时变化。
如果我们已经观察到了结果就可以点击“Stop”来停止运行。
图1.15
1.3KeilC51软件的使用
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程。
他能能嵌入汇编语言保留了汇编代码高效,快速的特点。
KEILC51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。
C51已被完全集成到uVision3的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision3IDE可为它们提供单一而灵活的开发环境。
KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面友好,易学易用。
下面介绍KeilC51软件的使用方法,这应该算一个入门教程,奉献给大家进入KeilC51后,屏幕如图所示。
几秒钟后出现编辑界
图1.16
启动KeilC51时的屏幕
图1.17
进入KeilC51后的编辑界面
简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。
下面通过简单的编程、调试,引导大家学习KeilC51软件的基本使用方法和基本的调试技巧。
(1)建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中NewProject选项
图1.18
(2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如图1.19,然后点击保存.
图1.19
(3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keilc51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定
图1.20
(4)完成上一步骤后,屏幕如图1.21所示
图1.21
(5)在图1.22中,单击“File”菜单,再在下拉菜单中单击“New”选项
图1.22
新建文件后屏幕如图1.23所示
图1.23
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“SaveAs”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。
注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。
然后,单击“保存”按钮
图图1.24图1.25
(6)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,弹出如下菜单然后单击“AddFiletoGroup‘SourceGroup
1’”屏幕如图所示
图1.26
选中Test.c,然后单击“Add ”屏幕好1.27图所示
图1.27
注意到“SourceGroup1”文件夹中多了一个子项“Text1.c”了吗?
子项多少与所增加的源程序的多少相同。
(7)现在,输入如下的C语言源程序:
在输入上述程序时,我们已经看到了事先保存待编辑的文件的好处了吧,即Keilc51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。
程序输入完毕后,如图1.28所示
图1.28
至此,我们在KeilC51上做了一个完整工程的全过程。
但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?
(8)单击“Project”菜单,再在下拉菜单中“
”在下图中,单击“Output”中单击“CreateHEXFile”选项,使程序编译后产生HEX代码,供下载器软件使用。
把程序下载到AT89S51单片机中。
图1.29
2AT89C51的介绍
2.1AT89C51的基本组成
89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
在一小块芯片上,集成了一个微型计算机的各个组成部分。
每一个单片机包括:
(1)一个8位的微处理器(CPU)。
(2)片内数据存储器RAM(128B/256B)
(3)片内程序存储器ROM/EPROM(4KB/8KB)。
(4)四个8位并行I/O接口P0-P3。
(5)两个定时器/计数器。
(6)五个中断源的中断控制系统。
(7)一个全双工UART(通用异步接收发送器)的串行I/O口
(8)片内振荡器和时钟产生电路。
2.2AT89C51主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
寿命:
1000写/擦循环
数据保留时间:
10年
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2.3.管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
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口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
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:
来自反向振荡器的输出。
2.4振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.5.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3.课程设计
3.1.系统总体设计
3.1.1设计要求
①当开机后,经过上电复位,时钟显示为12:
00:
00,这时可以调整时、分、秒按钮进行精确调整到当前时间,进行正常走时;
②开机后系统内部自定义开路灯时间为18:
00:
00,关路灯时间为6:
00:
00,如果不做调整的话,时间就是下午6点钟开灯,早晨6点钟关灯;
③春、夏、秋、冬四季的昼夜并不相等,为了更好的节省电力资源,本设计中可以进行手动调整,根据四季的变化来调整开路灯和关路灯的时间,更有效的节省资源;
④本设计中另外的一大特点就是在23:
00:
00的时候,路灯会熄灭一半,这种设计也是为了节省资源,因为夜深人静的时候,并不需要太多的路灯照明整个路面,只需要点点灯光就行;
⑤到早晨六点钟或自己重新设定的时间的时候再关闭其它的路灯。
本设计的最大优点在于不影响路灯照明的情况下,达到了节能的效果,在同样设备的路灯中,可以节约一半的电能,起到环保的作用。
3.1.2系统组成方框图
图3.1系统方框图
3.2方案论证
3.2.1复位模块
方案一:
基本RC复位电路,该复位方式为手动复位,可分为高电平复位和低电平复位,电容可避免高频谐波对电路的干扰。
该复位电路简单易行,但缺点是在遇到较强干扰或瞬间断电时,复位端电容充放电特性变化,往往电源低至RAM区数据不能保持时,复位端上仍储有相当的电荷,致使电源电压恢复时复位端不能产生复位信号而出现“死机”或“程序跑飞”。
该复位电路用在复位精度不是很高的设计中。
方案二:
看门狗复位电路,在“死机”或“程序跑飞”时,对系统进行重新置位或者复位,以使系统恢复正常运行的一种专门电路。
进一步提高了单片机系统的稳定性和抗干扰性的能力。
用于复位精度要求较高的设计中。
本设计中对复位电路的要求精度不需要很高,所以选择的是方案一的RC高电平复位电路。
3.2.2主控模块
方案一:
采用AT89C2051芯片,它体积小,管脚少,没有提供外部扩展存储器与I/O设备所需的地址、数据、控制信号,因此利用AT89C2051构成的单片机应用系统不能在AT89C2051之外扩展存储器或I/O设备。
无法满足设计所需。
方案二:
采用AT89C51芯片,具有AT89C2051的所有功能,管脚充足,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
结合设计要求,我选择方案二
3.2.3按键输入模块
对按键处理的重要环节是去抖动,即去除按下和抬起瞬间的抖动。
而消除抖动后面临的更大问题就是解决按键的响应问题,包括按键的一次响应,一键多功能等。
可以采用硬件消抖和软件消抖两种方式,在本设计中采用的是软件的延迟法来对按键消抖。
[2]
3.2.4显示模块
方案一:
采用LCD液晶显示器显示。
它可视面积大,画面好,抗干扰能力强,可以节省软件中断资源,其缺点是显示内容需要存储字模信息,需要一定存储空间。
方案二:
采用LED数码管显示。
用发光二极管(简称LED)组成的字形来显示数字,七个条形发光二极管排列成七段组合字型,便构成了半导体数码管。
半导体数码光分共阳极数码管和共阴极数码管,此次设计采用了共阴极数码管显示,即七个发光二极管的阴极连在一起接地。
当共阴极数码管的某一阳极接高电平时,相应的二极管发光,根据字形使某几段二极管发光,所以共阴极数码管需要输出高电平有效的译码器来驱动。
图3.2共阴极数码管内部结构图
基于以上所述,本设计采用方案二。
LED数码显示器有两种控制方式,即静态数据锁存方式和动态扫描显示。
静态数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 路灯 控制器 模拟 装置 设计 实现