基于PROTEUS的多功能数字电子钟的设计单片机课程设计.docx
《基于PROTEUS的多功能数字电子钟的设计单片机课程设计.docx》由会员分享,可在线阅读,更多相关《基于PROTEUS的多功能数字电子钟的设计单片机课程设计.docx(59页珍藏版)》请在冰点文库上搜索。
基于PROTEUS的多功能数字电子钟的设计单片机课程设计
单片机课程设计5
基于PROTEUS的多功能数字电子钟的设计
数理与信息工程学院
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
前言
单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已经渗透到各种嵌入式系统中。
可以毫不夸张地说:
掌握单片机技术是电子信息类专业学生就业的一个重要条件。
同时单片机技术又是一门实践性很强的学科。
课程设计教学环节的设计和实施,在很大程度上决定了学生对单片机技术的掌握程度。
为了更好地完成课程设计这一重要教学环节,我们采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。
学生首先在PC上利用Proteus软件自己搭建硬件电路,并利用系统提供的功能完成电路分析、系统调试和输出显示的硬件设计部分;同时在Keil软件中编制程序,进行相应的编译和仿真,完成系统的软件设计部分。
当系统的设计工作完成后,学生可以在PC上看到最终的运行效果。
最后再通过proteus设计PCB,再完成真正硬件的调试。
采用以上方案具有以下优势:
有利于促进课程和教学改革,更有利于人才的培养;从经济性、可移植性、可推广性角度讲,建立这样的课程设计平台是非常有意义的;利用仿真系统,可以节约开发时间和开发成本;利用仿真系统,具有很大的灵活性和可扩展性。
第一章概述
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
本章介绍ProteusISIS软件的工作环境和一些基本操作。
一、进入ProteusISIS
双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,出现如图1-1所示屏幕,表明进入ProteusISIS集成环境。
图1-1启动时的屏幕
二、工作界面
ProteusISIS的工作界面是一种标准的Windows界面,如图1-2所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图1-2ProteusISIS的工作界面
第二章几个基本例子
例1--基本电路:
交流电供电
1.-点击PickDevices按钮,(该按钮位于工作区左边的面板中,就是那个P按钮),这是会打开标题为PickDevices的对话框。
2.-在Category列表框中(位于左边)找到SimulatorPrimitives,这是会在Results中列出该类的所有元件(如果该类有太多元件,你利用Sub-Category列表框过滤),ALTERNATOR就是我们要找的交流电电源。
3.-在Results中双击ALTERNATOR会在TheObjectSelector(元件列表框)列出ALTERNATOR。
4.-同样的方法添加LAMP,在Category->Optoelectronics->LAMP。
5.-单击PickDevices对话框的OK按钮结束添加元件。
6.-在TheObjectSelector(元件列表框)单击选择ALTERNATOR。
7.-接着在位于主窗口左下角的角度调整工具条中设置在原理图窗口中ALTERNATOR的方向(这一步也可以在放置元件后再设置)。
第一按钮是顺时针旋转90度,第二个按钮是逆时针旋转90度,第三个按钮是水平翻转,第四的按钮是垂直翻转,中间的那个可输入0,+/-90,+/-180,+/-270。
8.-放置ALTERNATOR到原理图窗口中,方法很简单:
完成步骤7后,在原理图窗口中单击左键即可。
9.-用同样的方法放置LAMP。
10.-配置元件参数。
a.-在原理图窗口中先右击再左击ALTERNATOR,出现EditComponent对话框,按下面参数进行设置(第一、二个参数与仿真无关,起到标识作用)。
b.-单击OK完成。
c.-同样方法设置LAMP的参数。
11.-连接元件:
a.-重新调整元件的角度。
在步骤7时我们已经调整过了,但如果仍然不太符合要求,你可以重新调整,方法:
在原理图窗口中右击该元件,再在角度调整工具条中设置。
b.-把鼠标移到ALTERNATOR的一个引脚末端,这时鼠标变成×字型,单击左键一下并移动鼠标,会出现一条线,你可以再在原理图的其他地方单击左键几下以确定连接线的形状,最后在LAMP的一个引脚末端单击左键一下就完成一条连接线。
其实,你只要在需要连接的两个元件的引脚处分别单击左键一下,Proteus会自动完成这条连接线。
c.-修改连接线。
如果连错了,你就在该连接线上双击右键就把它给删除掉了。
如果要修改走线的形状,你可以在连接线上单击右键再在某一个位置上按住左键拖动,满意后再在原理图的空的地方单击一下右键。
最终结果:
12.-开始仿真,找到主窗口底部的仿真工具条,单击左边第一个按钮。
13.-原理图的放缩操作,你可以用放缩工具条来完成。
说明一下:
a.以当前点击的位置为屏幕中心显示
b.以屏幕中心对应的位置为中心向四周放大
c.以屏幕中心对应的位置为中心向四周缩小
d.显示整个原理图
e.显示选择的区域
14.-配置SetAnimationOptions,这样使你的仿真结果更加形象。
方法:
到System菜单看一下,那里有一个SetAnimationOptions选项,单击它出现以下对话框
左边的我们一般不用修改,我们要改的是右边的AnimationOptions,
ShowWireVoltagebyColour?
元件间的连接线的颜色会随电压变化
ShowWireCurrentwithArrows?
元件间的连接线上显示电流方向
15.-这个例子最后的工作就保存文件了。
例2--基本电路:
电池、可调电阻、直流电流表、直流电压表
1.-新建一个文档
2.-使用PickDevices添加以下元件(方法见例1)
-BATTERY-LAMP-POT-LIN
这里介绍一个更快捷的方法,就是使用PickDevices的搜索功能(前提是你知道要找的元件的名字至少知道名字的前几个字母),该功能位于PickDevices对话框的左上角。
3.-搭好以下电路
POT-LIN的电阻值设为200
BATTERY的电压值设为12
3.-添加直流电流表和直流电压表
a.-找到这个工具条,红色圈的那个就是INSTRUMENTS(仪表元件)了。
b.-单击这个按钮,会在TheObjectSelector(元件列表框)列出所有仪表,其中的DCAMMETER和DCVOLTMETER是我们要用到的,选中DCAMMETER并在原理图的适当位置单击左键,这样DCAMMETER就被放置到原理图中了。
同理放置DCVOLTMETER。
最终电路:
c.-设置DCAMMETER和DCVOLTMETER,DCAMMETER和DCVOLTMETER不会根据电路的实际电流、电压值来自动改变量程(比如DCAMMETER默认的单位是A,它能测量的最小电流值是0.01A,如实际电路的电流值为9mA,那它就显示为0.00A),需要手动修改。
操作跟修改一般元件一样。
DisplayRange有三个值A、mA、uA
e.-仿真结果。
在仿真过程中,你可以点击可调电阻POT-LIN上方的两个红色箭头来调节电阻值,这时LAMP的亮度也随之改变,DCAMMETER和DCVOLTMETER的显示值也随之改变。
注意到了没有?
!
这个图好像有点特别,对了!
!
它就是例1后面介绍SetAnimationOptions中选择ShowWireVoltagebyColour?
和ShowWireCurrentwithArrows?
后的效果。
例子3--逻辑测试
添加以下元件:
A-INPUT=LOGICSTATE
B-INPUT=LOGICSTATE
Q-OUTPUT=LOGICPROBE(BIG)
AND=AND
例4.-使用ADC、示波器和仿真表格.
1.-添加以下元件:
ADC0808555POT-LINLED-BLUE电阻
添加GROUND、POWER
单击红色的那个按钮,在元件列表中会有GROUND、POWER
添加示波器
单击绿色的那个按钮,在元件列表中会有OSCILLOSCOPE
添加仿真图表
单击蓝色的那个按钮,在元件列表中会有ANALOGUE
放置仿真图表的方法:
选中ANALOGUE后,在原理图中单击左键,并按住左键拖动,这是你会看到一个虚线方框,释放左键后就可以看到ANALOGUE了。
2.-按照上图连接好元件
3.-设置参数,这里主要介绍一下示波器和仿真表格的设置
a.示波器设置,示波器需要运行仿真后才可以对其参数进行设计
它有两个输入通道,它的设置与真实数字示波器的差不多。
左边黑色的方框用于显示波形,其中绿色的线条就是代表某一通道的波形,默认它只显示通道1的波形,要切换为通道2需要使用右上角的方形按钮,这个按钮有两种状态,一个是CH1另一个是CH2,你可以通过单击它实现通道间互相切换。
这个按钮下方还有一个方形按钮,这个方形按钮有三种状态,一个是仅显示一个通道、一个是同时显示两个通道(Dual)、另一个是显示两个通道之差(X-Y)。
明显,要实现通道间互相切换必须使这个按钮处于第一种状态。
还要注意的是,如果同时显示两个通道的波形,还需要改变其中一个的Y-POS,因为默认它们的Y-POS是一样的,它们的波形会重叠在一起。
b.设置仿真图表,使用仿真图表前,我们要在需要观测的信号线上添加一个探针,有电压、电流两种探针
紫色的那两个就是探针了,本例使用电压探针,要观测的信号是555输出的波形,找到这条连接线,点击了电压探针符号后再在这条连接线的某一个位置上单击一下左键,这样就添加了一个电压探针,接着为这探针起个名字(A)(方法跟设置一般元件属性方法的类似)。
现在要将这个电压探针跟仿真图表关联起来,菜单Graph中有一个叫AddTrace的子菜单,单击它会出现
由图可见,仿真图表可以连接四个探针,也就可以看到四个波形。
本例我们只用一个探针,单击ProbeP1下拉列表,你会看到(A),选中它后,单击OK就完成连接工作了。
接着是配置仿真表格ANALOGUE,默认ANALOGUE的仿真时间是0S-1S,这个时间对本例来说实在太长了,我们需要0S-2mS就够了。
还是菜单Graph,它里面有EditGraph的子菜单,
在Stoptime中输入2m,单击OK完成。
开始仿真ANALOGUE了,到菜单Graph,单击SimulateGraph,等待仿真完成后就会看到下图了
第三章基于单片机的仿真例子
单片机电路设计
如图所示。
电路的核心是单片机AT89C51。
单片机的P1口八个引脚接LED显示器的段选码(a、b、c、d、e、f、g、dp)的引脚上,单片机的P2口六个引脚接LED显示器的位选码(1、2、3、4、5、6)的引脚上,电阻起限流作用,总线使电路图变得简洁。
程序设计
实现LED显示器的选通并显示字符。
电路图的绘制
1、将所需元器件加入到对象选择器窗口。
PickingComponentsintotheSchematic
单击对象选择器按钮
,如图所示
弹出“PickDevices”页面,在“Keywords”输入AT89C51,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如图所示。
在“Results”栏中的列表项中,双击“AT89C51”,则可将“AT89C51”添加至对象选择器窗口。
接着在“Keywords”栏中重新输入7SEG,如图所示。
双击“7SEG-MPX6-CA-BLUE”,则可将“7SEG-MPX6-CA-BLUE”(6位共阳7段LED显示器)添加至对象选择器窗口。
最后,在“Keywords”栏中重新输入RES,选中“MatchWholeWords”,如图所示。
在“Results”栏中获得与RES完全匹配的搜索结果。
双击“RES”,则可将“RES”(电阻)添加至对象选择器窗口。
单击“OK”按钮,结束对象选择。
经过以上操作,在对象选择器窗口中,已有了7SEG-MPX6-CA-BLUE、AT89C51、RES三个元器件对象,若单击AT89C51,在预览窗口中,见到AT89C51的实物图,如图所示;若单击RES或7SEG-MPX6-CA-BLUE,在预览窗口中,见到RES和7SEG-MPX6-CA-BLUE的实物图,如图所示。
此时,我们已注意到在绘图工具栏中的元器件按钮
处于选中状态。
2、放置元器件至图形编辑窗口PlacingComponentsontotheSchematic
在对象选择器窗口中,选中7SEG-MPX6-CA-BLUE,将鼠标置于图形编辑窗口该对象的欲放位置、单击鼠标左键,该对象被完成放置。
同理,将AT89C51和RES放置到图形编辑窗口中。
如图所示。
若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。
由于电阻R1~R8的型号和电阻值均相同,因此可利用复制功能作图。
将鼠标移到R1,单击鼠标右键,选中R1,在标准工具栏中,单击复制按钮
,拖动鼠标,按下鼠标左键,将对象复制到新位置,如此反复,直到按下鼠标右键,结束复制。
此时我们已经注意到,电阻名的标识,系统自动加以区分。
3、放置总线至图形编辑窗口
单击绘图工具栏中的总线按钮
,使之处于选中状态。
将鼠标置于图形编辑窗口,单击鼠标左键,确定总线的起始位置;移动鼠标,屏幕出现粉红色细直线,找到总线的终了位置,单击鼠标左键,再单击鼠标右键,以表示确认并结束画总线操作。
此后,粉红色细直线被蓝色的粗直线所替代,如图所示。
4、元器件之间的连线WiringUpComponentsontheSchematic
Proteus的智能化可以在你想要画线的时候进行自动检测。
下面,我们来操作将电阻R1的右端连接到LED显示器的A端。
当鼠标的指针靠近R1右端的连接点时,跟着鼠标的指针就会出现一个“×”号,表明找到了R1的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近LED显示器的A端的连接点时,跟着鼠标的指针就会出现一个“×”号,表明找到了LED显示器的连接点,同时屏幕上出现了粉红色的连接,单击鼠标左键,粉红色的连接线变成了深绿色,同时,线形由直线自动变成了90º的折线,这是因为我们选中了线路自动路径功能。
Proteus具有线路自动路径功能(简称WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。
WAR可通过使用标准工具栏里的“WAR”命令按钮
来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。
同理,我们可以完成其它连线。
在此过程的任何时刻,都可以按ESC键或者单击鼠标的右键来放弃画线。
5、元器件与总线的连线
画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。
此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可,如图所示。
6、给与总线连接的导线贴标签PARTLABELS
单击绘图工具栏中的导线标签按钮
,使之处于选中状态。
将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“×”号,如图所示。
表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图所示。
在“string”栏中,输入标签名称(如a),单击“OK”按钮,结束对该导线的标签标定。
同理,可以标注其它导线的标签,如图所示。
注意,在标定导线标签的过程中,相互接通的导线必须标注相同的标签名。
至此,完成了整个电路图的绘制。
KeilC与Proteus连接调试
1、假若KeilC与Proteus均已正确安装在C:
\ProgramFiles的目录里;
2、安装KeilC与Proteus的连接插件vdmagdi.exe;
3、进入KeilCμVision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:
Atmel公司的AT89C51)。
并为该项目加入KeilC源程序。
源程序如下:
#defineLEDS6
#include"reg51.h"
//led灯选通信号
unsignedcharcodeSelect[]={0x01,0x02,0x04,0x08,0x10,0x20};
unsignedcharcodeLED_CODES[]=
{0xc0,0xF9,0xA4,0xB0,0x99,//0-4
0x92,0x82,0xF8,0x80,0x90,//5-9
0x88,0x83,0xC6,0xA1,0x86,//A,b,C,d,E
0x8E,0xFF,0x0C,0x89,0x7F,0xBF//F,空格,P,H,.,-};
voidmain()
{
chari=0;
longintj;
while
(1)
{
P2=0;
P1=LED_CODES[i];
P2=Select[i];
for(j=3000;j>0;j--);//该LED模型靠脉冲点亮,第i位靠脉冲点亮后,会自动熄来头。
//修改循环次数,改变点亮下一位之前的延时,可得到不同的显示效果。
i++;
if(i>5)i=0;
}
}
4、单击“Project菜单/OptionsforTarget”选项或者点击工具栏的“optionfortarget”按钮
,弹出窗口,点击“Debug”按钮,出现如图所示页面。
在出现的对话框里在右栏上部的下拉菜单里选中“ProteusVSMDriver”。
并且还要点击一下“Use”前面表明选中的小圆点。
再点击“Setting”按钮,设置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址(另一台电脑也应安装Proteus)。
在“Port”后面添加“8000”。
设置好的情形如图所示,点击“OK”按钮即可。
最后将工程编译,进入调试状态,并运行。
5、Proteus的设置
进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“useromotedebugermonitor”,如图所示。
此后,便可实现KeilC与Proteus连接调试。
6、KeilC与Proteus连接仿真调试
单击仿真运行开始按钮
,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。
在LED显示器上,循环显示0、1、2、3、4、5。
第四章用ISIS和ARES设计PCB
1.在ISIS中完成原理图
元件:
1N4148
BC547
CAP-ELEC
3EZ8V2D5
3EZ5V1D5
RES
CONN-D9
PIC16F877
加入POWER和GROUND,PIC16F877有两个隐藏的引脚VDD和VSS,因此必须将POWER的string属性设为VDD,GROUND的string属性设为VSS。
2.修改封装,在ISIS中添加元件时,已经自动为该元件配置了一个封装(有部分元件要手动添加封装)。
但这个封装并不一定很适合你的设计,因此你需要重新添加合适的封装。
下面以CAP-ELEC为例说明。
打开CAP-ELEC的属性对话框
单击?
的按钮,打开封装选择对话框(前提是你已经安装了ARES)
选择一个合适的,单击OK完成。
调整好所有元件的封装后,到菜单Tools->NetlistCompiler,接着打开NetlistCompiler设置对话框,上面的设置保持默认就行了,单击OK生成网表文件。
紧接的工作就是将网表文件导入到ARES。
到菜单Tools->NetlisttoARES,这样就会打开ARES(你也可以利用工具栏的相应按钮来完成这一操作)。
下面是ARES工作界面
可以看到