数字逻辑课程设计多路抢答器实用全面.docx
《数字逻辑课程设计多路抢答器实用全面.docx》由会员分享,可在线阅读,更多相关《数字逻辑课程设计多路抢答器实用全面.docx(53页珍藏版)》请在冰豆网上搜索。
数字逻辑课程设计多路抢答器实用全面
数
字
逻
辑
多路抢答器
目录:
1绪论3
1.1课题研究的相关背景3
1.2选题的目的和意义3
1.3课题研究的内容3
1.4国内外研究现状4
1.5抢答器目前存在的主要问题4
2Proteus简介4
2.1进入proteusisis5
2.2proteus工作界面5
2.3PROTEUS的主要功能8
2.3.1PROTEUS VSM功能8
2.3.2PROTEUS PCB设计功能8
3PIC单片机9
3.1PIC单片机简介9
3.2PIC16F87的RAM数据存储器9
3.2.1通用寄存器9
3.2.2特殊功能寄存器10
3.3输入/输出端口的基本功能10
3.4PIC单片机指令系统简介11
3.5MPLAB简介14
4抢答器系统的设计原理及方案15
4.1方案15
4.1.1方案一(采用数字电路)15
4.1.2方案二(采用单片机)16
4.1.3方案三(采用PLC)16
4.2方案比较及选择17
5基于Proteus的多路抢答器硬件电路设计17
5.1多路抢答器设计要求17
5.2PIC单片机控制的多路抢答器工作原理18
5.3基于PROTEUS的多路抢答器硬件电路设计19
5.3.1多路抢答器总体电路设计19
5.3.2多路抢答器编码电路设计22
5.3.3多路抢答器报警电路设计23
5.4多路抢答器系统软件设计23
5.4.1多路抢答器系统软件流程图23
5.4.2汇编程序清单24
5.4.3基于MPLAB的程序编译和调试30
6仿真与调试33
6.1仿真结果分析及说明33
6.1.1仿真分析35
6.1.2仿真说明36
总结与展望38
1绪论
1.1课题研究的相关背景
抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。
早期的抢答器只由几个三极管、可控硅、发光管等组成,能通过发光管的指示辩认出选手号码。
现在大多数抢答器均使用单片机和数字集成电路,并增加了许多新功能,如选手号码显示、抢按前或抢按后的计时、选手得分显示等功能。
1.2选题的目的和意义
通过这次设计,掌握PIC单片机的原理,了解简单多功能抢答器组成原理,初步掌握多功能抢答器的调整及测试方法,提高动手能力和排除故障的能力。
同时通过本课题设计与装配、调试,提高自己的动手能力,巩固已学的理论知识,建立单片机理论和实践的结合,了解多功能抢答器各单元电路之间的关系及相互影响,从而能正确设计、计算定时计数的各个单元电路。
初步掌握多功能抢答器的调整及测试方法。
提高动手能力和排除故障的能力。
1.3课题研究的内容
本系统采用模块化设计智能抢答器,在抢答比赛中广泛应用,各组分别有一个抢答按钮。
主持人有开始和结束、复位键。
在后台主持人可以修改,抢答时间和选手回答问题的时间设置,原始状态下抢答时间为20s,回答问题时间为30s。
通过加键和减键修改上述时间,改完后结束键确定。
新时间开始有效,主持人按键开始后,选手开始抢答为有效,数码显示屏显示抢答时间倒计时和选手号,在最后五秒扬声器发生提示。
如果主持人没有按下开始键而选手就抢答视为犯规,数码显示屏显示犯规者的代号,扬声器持续发生。
主持人可按键结束,新一轮抢答开始。
通过研究并在设计验证后发现,采用单片机技术设计的抢答器与目前常用的抢答器相比,首先,电路连接简单,因为大多数功能单元都通过程序设计在单片机内部,第二,工作性能可靠,抗干扰能力优于目前抢答器。
所以本研究是一个实用的工程设计,具有创新性。
本论文章节的结构和内容如下:
第一章:
绪论。
简要介绍了抢答器的发展现状,说明了本课题研究的内容。
第二章:
Proteus简介。
简要介绍Proteus。
第三章:
PIC单片机简介。
简要介绍PIC16f87的主要性能和主要输入输出端口以及其MPLAB。
第四章:
抢答器的设计原理及系统方案。
第五章:
基于Proteus的多路抢答器设计。
第六章:
仿真与调试。
第七章:
总结。
总结课题设计,指出设计中的一些问题,提出改善的意见,并展望抢答器的未来设计。
1.4国内外研究现状
抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器有的电路较复杂不便于制作,可靠性低,实现起来很困难;有的则用一些专用的集成块,而专用集成块的购买又很困难。
为适应高校等多代表队单位活动的需要而设计一个多功能抢答器,这种抢答器具有电路简单,元件普通,易于购买等优点,很好地解决了制作者制作困难和难于购买的问题。
在国内外已经开始了普遍的应用[2]。
1.5抢答器目前存在的主要问题
随着改革开放事业的不断深入,促使人们学科学、学技术、学知识的手段多种多样,抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率校低,且有的要么制作复杂,要么可靠性低,减少兴致。
作为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展。
而且目前多数抢答器存在3个不足之处:
第一,现场线路连接复杂。
因为每个选手位于抢答现场的不同位置,每个选手与控制台之间要有长长的连接线。
选手越多,连接线就越多、越乱,这些连接线不仅影响了现场的美观,而且降低了抢答器的可靠性,增加了安装的难度,甚至影响了现场人员的走动。
第二,电路复杂。
因为单片机只完成号码处理、计时、数据运算等功能,其它功能如选手号码的识别、译码、计分显示等仍只能通过数字集成电路完成。
采用单片机扫描技术识别选手抢按号码时,电路的延迟时间较大。
第三,选手抢按成功,但出现没有抢答被记录的问题。
2PROTEUS简介
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
2.1进入proteusisis
双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus6Professional”→“ISIS6Professional”,出现如图1-1所示屏幕,表明进入ProteusISIS集成环境。
图1-1启动时的屏幕
2.2proteus工作界面
ProteusISIS的工作界面是一种标准的Windows界面,如图1-2所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图1-2ProteusISIS的工作界面
为了方便介绍,我分别对窗口内各部分进行中文说明(见上图)。
下面简单
介绍各部分的功能:
1.图形编辑窗口(TheEditingWindow):
顾名思义,它是用来绘制原理图的。
蓝色方框内为可编辑区,元件要放到它里面。
注意,这个窗口是没有滚动条的,你可用预览窗口来改变原理图的可视范围。
2.预览窗口(TheOverviewWindow):
它可显示两个内容,一个是:
当你在元件表中选择一个元件时,它会显示该元件的预览图;另一个是,当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图,并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位置,从而改变原理图的可视范围。
3.绘图工具栏(ModeSelectorToolbar):
主要模型(MainModes):
1.选择元件(components)(默认选择的)
2.放置连接点
3.放置标签(用总线时会用到)
4.放置文本
5.用于绘制总线
6.用于放置子电路
7.用于即时编辑元件参数(先单击该图标再单击要修改的元件)
配件(Gadgets):
1.终端接口(terminals):
有VCC、地、输出、输入等接口
2.器件引脚:
用于绘制各种引脚
3.仿真图表(graph):
用于各种分析,如NoiseAnalysis
4.录音机
5.信号发生器(generators)
6.电压探针:
使用仿真图表时要用到
7.电流探针:
使用仿真图表时要用到
8.虚拟仪表:
有示波器等
2D图形(2DGraphics):
1.画各种直线
2.画各种方框
3.画各种圆
4.画各种圆弧
5.画各种多边形
6.画各种文本
7.画符号
8.画原点等
4.对象选择器窗口(TheObjectSelector):
用于挑选元件(components)、终端接口(terminals)、信号发生器(generators)仿真图表(graph)等。
举例,当你选择“元件(components)”,单击“P”按钮会打开挑选元件对话框,选择了一个元件后(单击了“OK”后),该元件会在元件列表中显示,以后要用到该元件时,只需在元件列表中选择即可。
5.预览对象方位控制按钮(OrientationToolbar):
旋转:
旋转角度只能是90的整数倍。
翻转:
完成水平翻转和垂直翻转。
使用方法:
先右键单击元件,再点击(左击)相应的旋转图标。
6.仿真进程控制按钮
仿真控制按钮
1.运行
2.单步运行
3.暂停
4.停止
2.3PROTEUS的主要功能
2.3.1 PROTEUS VSM功能
Proteus软件的ISIS原理图设计界面同时还支持电路的虚拟仿真VSM。
当电路元件在调用时,选用具有动画演示功能的器件或具有仿真模型的器件,当电路连接完成无误后,直接运行仿真按钮,即可实现声、光、动等逼真的效果,以检验电路硬件及软件设计的对错。
ProteusVSM有两种不同的仿真方式:
交互式仿真和基于图表的仿真。
交互式仿真——实时直观地反映电路设计仿真结果;
基于图表的仿真——用来精确分析电路的各种性能,如频率特性、噪声特性等。
ProteusVSM中的整个电路分析是在ISIS原理图设计模块下延续下来的,原理图中可以包含以下仿真工具:
探针——直接布置在线路上,用于采集和测量电压/电流信号;
电路激励——系统的多种激励信号源;
虚拟仪器——用于观测电路的运行状况;
曲线图表——用于分析电路的参数指标。
2.3.2 PROTEUS PCB设计功能
Proteus不仅可以实现高级原理图设计、混合模式SPICE仿真,还可以进行PCB系统特性设计以及手动、自动布线,以此来实现一个完整的电子系统设计。
基于高性能网表的ARESPCB设计软件完全补足了ISIS。
ARESPCB设计系统是一个具有32位数据库,能够进行元件布局、撤消和重试的,具有自动布线功能的超强性能的PCB设计系统,其自动布局和自动布线工具使PCB的设计尽可能地简便,复杂的工作尽量都由计算机来完成。
同时,ARES也支持手动布线,系统限制相较少。
ARESPCB设计系统的主要特性表现在以下几个方面:
1.有16个铜箔层,2个丝印层和4个机械层;
2.能够将元件进行任意角的布置;
3.在放置元件时能够自动生成飞线和力向量;
4.具有理想的基于网表的手工布线系统;
5.物理设计规则检测功能可以保证设计的完整性;
6.具有超过1000种标准封装的元件库;
7.具有完整的CADCAM输出以及嵌板工具;
8.当用户修改了原理图并重新加载网表,ARES将更新相关联的元件和连线。
同理,ARES中的变化也将自动地反馈到原理图中。
3PIC单片机
3.1PIC单片机简介
PIC单片机系列是美国微芯公司(MicroShip)的产品,是当前市场份额增长最快的单片机之一。
CPU采用RISC结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。
而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。
采用Halyard双总线结构,运行速度快(指令周期约160~200nS),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。
此外,它还具有低工作电压、低功耗、驱动能力强等特点。
PIC系列单片机的:
I/O口是双向的,其输出电路为CMOS互补推挽输出电路。
I/O脚增加了用于设置输入或输出状态的方向寄存器(TRISn,其中n对应各口,如A、B、C、D、E等),从而解决了51系列I/O脚为高电平时同为输入和输出的状态。
当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸人电流达25mA,高电平输出电流可达20mA。
相对于51系列而言,这是一个很大的优点,它可以直接驱动数码管显示且外电路简单。
它的A/D为10位,能满足精度要求。
具有在线调试及编程(ISP)功能。
该系列单片机的专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内,即存储体0(Bank0:
00-7FH)、存储体1(Bankl:
80-FFH)、存储体2(Bank2:
100-17FH)、存储体3(Bank3:
180-1FFH)。
只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现。
在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RPl)和第5位(RPO)置位或清零。
数据的传送和逻辑运算基本上都得通过工作寄存器w(相当于5l系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送(如:
MOV30H,20H;将寄存器20H的内容直接传送至寄存器30H中),因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中很有感受。
3.2PIC16F87的RAM数据存储器
3.2.1通用寄存器
通用寄存器(GPR,GeneralPurposeRegisters)用于通用目的,即由用户自由安排和存放随机数据(单片机上电复位后其内容是不确定的),因此称为“通用寄存器”。
对于870来说,共有128个单元,划分为2部分:
第1部分位于体0中,有96个单元,地址为20H-7FH;第2部分位于体1中,有32个单元,地址为A0H-BFH。
其中体0中高地址处的16个单元比较特殊(70H-7FH),在其它3个体内,分别利用地址F0H-FFH、170H-17FH和1FOH-1FFH,都能够访问到这16个单元。
3.2.2特殊功能寄存器
1.状态寄存器STATUS
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
IRP
RP1
RP0
TO
PD
Z
DC
CQ
其中Z是零标志位,若为1,则表示算术或逻辑运算的结果为0,为1则表示算术或逻辑运算的结果不为0。
RP0和RP1是RAM数据存储器体选位,仅用于直接寻址。
若为00则表示选中体0,为01表示选中体1,为10表示选中体2,为11表示选中体3。
在这里其他几位就不做详细介绍了。
2.实现间接寻址的寄存器INDF和FSR
其实位于RAM最顶端、地址码为00H的INDF寄存器,是一个空寄存器,它只有地址编码,并不存在一个真正(物理上)的寄存器单元。
用它来与FSR寄存器配合,实现间接寻址。
当寻址INDF时,实际上是访问以FSR内容为地址的RAM单元。
3.与程序计数器PC相关的寄存器PCL和PCLATH
程序计数器PC是一个13位宽的、专门为CPU提供程序存储器地址的寄存器,它的内容时刻指向CPU下一步要执行的那条指令所在的程序存储器单元。
为了与其他8位宽的寄存器进行交换,将它分成PCL和PCH两部分:
低8位PCL有自己的地址,可读可写;而高5位PCH却没有自己的地址,不能用软件访问,也就不能直接写入,只能用寄存器PCLATH装载的方式来进行直接写入。
除了上面介绍的5个寄存器外,还有其它一些寄存器,在这里就不再具体介绍了。
3.3输入/输出端口的基本功能
输入/输出端口(也称I/O口)是单片机内部电路与外部世界交换信息的通道。
输入端口负责从外界接收监测信号、键盘信号等各种开关信号。
输出端口负责向外界输送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。
1与输入/输出端口相关的2个寄存器
在PIC单片机中,各个I/O端口都具备两个基本的专用寄存器:
数据寄存器和方向寄存器即PORTX和TRISX。
2基本输入/输出端口的工作原理
对一个端口引脚进行4种基本操作分别说明如下:
1)写I/O方向寄存其TRISLatch
根据方向寄存器中写入内容的不同,又可以分为两种情况:
写入1则对应引脚被设置为“输入”;写入0则对应引脚被设置为“输出”。
2)经端口引脚输出数据
经端口引脚输出数据的前提是,该端口引脚必须预先被设定为“输出”态。
然后把欲输出的数据X(0或1)放到数据总线上,接着由控制线WRPort送来脉冲下降沿作为触发信号,X被锁入DataLatch中。
3)从端口引脚输入数据
对于这种操作,根据防线寄存器内容的不同,又可以分为两种情况:
(1)方向寄存器的内容为1,读取的是引脚的网逻辑电平。
(2)方向寄存器的内容为0,读取的是端口数据寄存器中锁存的数据。
4)读取I/O方向寄存器TRISLatch
由RDTRIS送来“读脉冲”,打开三态门将TRISLatch锁存的内容转移到内部数据总线上。
3.4PIC单片机指令系统简介
每个PIC指令都是14位字长,可以分为指明指令类型的操作码和进一步指明指令操作的一个或多个操作数。
仅有35条指令(RISC),都是单字节(14bit)指令,除了跳转指令以外所有指令都是单周期指令。
3.4.1指令说明
1、数据传送类指令
1)MOVFf,d 移动f
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
Z
根据d的状态,将寄存器f的内容移入目标寄存器。
如果d=0,目标寄存器是W寄存器。
如果d=1,目标寄存器是f寄存器本身。
由于该指令影响状态标志位Z,可用于在d=1时检测数据寄存器的内容是否为0。
2)MOVWF f 将W的内容移动至f
操作数:
0≤f≤127
受影响的状态位:
无
说明:
将数据从W寄存器送入寄存器f。
3)MOVLW k 将立即数移动到W寄存器
操作数:
0≤k≤255
受影响的状态位:
无
说明:
8位立即数k送入W寄存器。
4)SWAPF f,d f半字节交换
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
无
说明:
寄存器“f”的高半字节和低半字节交换。
如果“d”为0,结果存入W寄存器。
如果“d”为1,结果存回到寄存器“f”。
2、算术运算类指令
1)ADDWF f,dW加f
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
C,DC,Z
说明:
W寄存器与“f”寄存器的内容相加。
如果“d”为0,结果存入W寄存器。
果“d”为1,结果存回到寄存器“f”。
2)SUBWFf,df减去W
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
C,DC,Z
说明:
f寄存器内容减去W寄存器内容(使用2进制补码的方法)。
如果“d”为0,结果存入W寄存器。
如果“d”为1,结果存回到寄存器“f”。
3)ADDLW k立即数加W
操作数:
0≤k≤255
受影响的状态位:
C,DC,Z
说明:
8位立即数“k”与W寄存器的内容相加,结果存入W寄存器。
4)SUBLW k立即数减去W
操作数:
0≤k≤255
受影响的状态位:
C,DC,Z
说明:
8位立即数“k”减去W寄存器的内容(使用2进制补码的方法)。
结果存入W寄存器。
5)INCFf,df加1
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
Z
说明:
寄存器“f”的内容递增。
如果“d”为0,结果存入W寄存器。
如果“d”为1,结果存回到寄存器“f”。
6)DECFf,d f减1
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
Z
说明:
寄存器“f”减1。
如果“d”为0,结果存入W寄存器。
如果“d”为1,结果存回到寄存器“f”。
3、逻辑运算类指令
1)CLRFff清零
操作数:
0≤f≤127
受影响的状态位:
Z
说明:
寄存器f已清零,Z位置1。
2)CLRWW清零
操作数:
无
受影响的状态位:
Z
说明:
W寄存器被清零。
全零位(Z)置1。
3)CLRWDT看门狗定时器清零
操作数:
无
受影响的状态位:
TO,PD
说明:
CLRWDT指令复位看门狗定时器。
而且还复位WDT预分频器。
状态位TO和PD置位。
4)BCFf,bf位清零
操作数:
0≤f≤127
0≤b≤7
受影响的状态位:
无
说明:
寄存器“f”中的“b”位被清零。
5)BSFf,bf位置1
操作数:
0≤f≤1270≤b≤7
受影响的状态位:
无
说明:
寄存器“f”中的“b”位被置1。
6)RLFf,df带进位左循环
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
C
说明:
寄存器f的内容连同进位标志位循环左移1位。
如果“d”为0,结果存入W寄存器。
如果“d”为1,结果存回到寄存器“f”。
7)RRFf,df带进位右循环
操作数:
0≤f≤127
d∈[0,1]
受影响的状态位:
C
说明:
寄存器f的内容连同进位标志位循环右