基于multisim的定时器课程设计报告书.docx
《基于multisim的定时器课程设计报告书.docx》由会员分享,可在线阅读,更多相关《基于multisim的定时器课程设计报告书.docx(10页珍藏版)》请在冰点文库上搜索。
基于multisim的定时器课程设计报告书
1背景及意义
随着社会文明的进步和科学技术的发展,先进的电子技术在各个近代跨学科门类和技术领域占有不可或缺的核心地位。
在我国现代化得建设的发展进程中,数字电子技术在国民经济和科学研究各个领域的应用也越来越广泛。
而计时器恰恰是数字电子技术的一个重要组成部分,在许多的领域中计时器均得到普遍应用,诸如在体育比赛中,定时报警器,游戏中的倒计时器,交通信号灯,红绿灯,行人灯,还可以做时间提醒设备等,由此可见计时器在现代社会是何其重要。
本设计为倒计时计时器,其作用范围在1~99s,具有直接清零,启动,暂停和连续以及具有光电报警功能,同时应用了气短数码管来显示时间。
此计时器有了启动,暂停和连续功能,可以方便地实现断点计时功能,当计时器递减到零时,会发出光电报警信号。
本设计完成中途计时功能,实现了在许多的特定场合进行实践追踪的功能,在社会生活也具有广泛的价值。
2设计原理及设计方案
2.1设计原理
我们可以用优先编码器74ls147来完成1~99秒的置数功能,用555时基电路构成的多谐振荡器来产生频率为1HZ的脉冲输出周期为1秒的方波脉冲,将该方波脉冲信号送到计数器74ls192的cp减计数脉冲端,在通过译码器74ls48把输入的8421BCD码经过内部作和电路"翻译"成七段〔a,b,c,d,e,f,g输出,显示十进制数,然后在适当的位置设置开关或控制电路即可实现计数器的清零,启动和暂停\连续,译码显示电路与亮灯及光电报警灯功能。
2.2设计方案
通过初步设计,可以确定该系统应该包括置数电路,秒脉冲发生器,计数器,译码显示电路,时序控制电路,警报电路等6部分构成。
其中置数电路,计时器和时序控制电路是该系统的主要部分。
置数电路完成置数,计数器的主要功能是完成倒计时功能,而控制电路具有计数器的启动计数,暂停,连续计数等功能。
为了满足系统的设计要求,在设计控制电路时,应正确处理各个信号的时序关系。
在操作直接清零开关时,计时器清零,显示器显示零。
当启动开关置1时,控制电路应封锁时钟信号cp,通过置数器置数,计数器完成置数功能,显示器显示所置的数。
当启动开关置0时,计数器开始计数。
当暂停,连续计数开关拨在暂停位置上,计数器停止计数,处于保持状态;当暂停,连续计数开关拨在连续计数的位置上,计数器继续递减计数。
当计数器递减计数到0的时,封锁时钟信号cp,使计数器处于保持状态。
系统设计框图如图2.1所示。
图2.1
3设计过程
3.1基于multisim的设计
脉冲发生电路
用555集成电路组成多谐振荡电路为系统提供时钟秒脉冲,555定时器应用为多谐振荡电路时,当电源接头vcc通过电阻R1,R2向电容C充电,其上电压按指数规律上升,当u上升到2/3Vcc,会使比较器C1输出翻转,输出电压为零,同时放电管T导通,电容C通过R2放电;当电容电压下降到1/3Vcc,比较器C2工作输出高电平,C放电终止,Vcc通过R1,R2又开始充电;周而复始,形成振荡。
则其周期与放电时间有关,也就是与外接元件有关,不受电压电源变化影响。
公式计算:
T1=〔R1+R2Cln2;
T2=R2Cln2;
振荡周期:
T=T1+T2=0.7〔R1+2R2C=1〔s
若取C=10uF,结合实际选取电阻为600Ω,200Ω。
图3.1内部管脚图图3.2N555多谐振荡电路图
3.1.2置数电路
置数电路利用74LS147优先编码器中优先级别高的信号排斥级别低的信号这一特点来置数,并将输出的编码输入到计数电路中,即完成置数功能。
(a)〔b
图3.374LS147管脚图
本次实验的置数电路可以按图3.4接:
图3.4
计数电路
本次课程设计中选用74LS192来实现减法的计数功能。
图3.5是74LS192的管脚图。
〔a
图3.5
74LS192具有下述功能:
异步清零:
CLR=1,Q3Q2Q1Q0=0000.
异步置数:
CLR=0,PL=0,Q0Q1Q2Q3=D0D1D2D3.
保持:
CLR=0,~PL=1,UP=DOWN=1,Q0Q1Q2Q3保持原状态
加计数:
CLR=0,~PL=1,UP-=CP,DOWN=1,Q0Q1Q2Q3按加法规律计数
减计数:
CLR=0,~PL=1,DOWN=CP,UP=1,Q1Q2Q3Q4按减法规律计数
按照课程设计任务书要求,需要计时在1~99秒内,所以设计中需要两个十进制的计数器。
我们可以用两片74LS192来实现。
计数电路中的两片加计数脉冲输入端都要接高电平,且要将低片位的借位信号加到高位片的减计数脉冲输入端。
高位片的借位信号控制警报电路。
具体接法如图3.6。
接入脉冲信号
图3.6
3.1.4译码显示电路
译码电路的功能是将计数器的输出代码进行翻译,编程相应的数字。
用于驱动LED七段数码管的译码器常用的又有74LS48。
图3.6是74LS48的管脚图。
图3.6
图3.7是74LS8的真值表。
图3.7
本次实验译码显示电路按图3.8接。
图3.8
3.1.5警报电路
警报电路由二极管和蜂鸣器组成,利用二极管的单向导通性,当高位片变为0时,其借位端为低电平,则二极管导通,蜂鸣器发出响声,完成警报功能。
本实验的警报电路按图3.9接。
图3.9
3.1.6控制电路
控制电路主要实现异步清零,异步置数,暂停\连续计数等功能。
具体电路图如下。
图3.10
总电路如图3.11所示:
图3.11
3.2基于VHDL的设计
3.2.1建立工程
点击File选中NewProjectWizard,填入相应的工程名字,工程名字与实体名相同。
如下图所示。
图3.12
连击两次Next,填入相应的参数,点击Finish即完成工程的建立,如图所示。
图3.13
3.2.2调试程序
〔1点击File,New,VHDLFile,OK一个编辑窗口如图所示
图3.14
〔2在编辑框里填写如下程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycount_30is
portinstd_logic;
pld,enb:
instd_logic;
warn:
outstd_logic;
s1,s0:
outstd_logic_vector<6downto0>;
d:
instd_logic_vector<9downto0>;
s:
instd_logic_vector<9downto0>>;
endcount_30;
architectureaofcount_30is
signaldd:
std_logic_vector<3downto0>;
signalss:
std_logic_vector<3downto0>;
begin
pro1:
process
variabletmpa:
std_logic_vector<3downto0>;
variabletmpb:
std_logic_vector<3downto0>;
variabletmpwarn:
std_logic;
begin
ifclr='1'thentmpa:
="0000";tmpb:
="0000";tmpwarn:
='0';
elsifclk'eventandclk='1'then
ifpld='1'then
ifd<9>='1'thentmpb:
="1001";
elsifd<8>='1'thentmpb:
="1000";
elsifd<7>='1'thentmpb:
="0111";
elsifd<6>='1'thentmpb:
="0110";
elsifd<5>='1'thentmpb:
="0101";
elsifd<4>='1'thentmpb:
="0100";
elsifd<3>='1'thentmpb:
="0011";
elsifd<2>='1'thentmpb:
="0010";
elsifd<1>='1'thentmpb:
="0001";
elsifd<0>='1'thentmpb:
="0000";
endif;
ifs<9>='1'thentmpa:
="1001";
elsifs<8>='1'thentmpa:
="1000";
elsifs<7>='1'thentmpa:
="0111";
elsifs<6>='1'thentmpa:
="0110";
elsifs<5>='1'thentmpa:
="0101";
elsifs<4>='1'thentmpa:
="0100";
elsifs<3>='1'thentmpa:
="0011";
elsifs<2>='1'thentmpa:
="0010";
elsifs<1>='1'thentmpa:
="0001";
elsifs<0>='1'thentmpa:
="0000";
endif;
tmpwarn:
='0';
elsifenb='1'then
iftmpa="0000"then
iftmpb/="0000"then
tmpa:
="1001";
tmpb:
=tmpb-1;
else
tmpwarn:
='1';
endif;
elsetmpa:
=tmpa-1;
endif;
endif;
endif;
ss<=tmpa;dd<=tmpb;warn<=tmpwarn;
endprocess;
peo2:
process
begin
caseddis
when"0000"=>s1<="0111111";
when"0001"=>s1<="0000110";
when"0010"=>s1<="1011011";
when"0011"=>s1<="1001111";
when"0100"=>s1<="1100110";
when"0101"=>s1<="1101101";
when"0110"=>s1<="1111101";
when"0111"=>s1<="0000111";
when"1000"=>s1<="1111111";
when"1001"=>s1<="1101111";
whenothers=>s1<="0000000";
endcase;
endprocess;
process
begin
casessis
when"0000"=>s0<="0111111";
when"0001"=>s0<="0000110";
when"0010"=>s0<="1011011";
when"0011"=>s0<="1001111";
when"0100"=>s0<="1100110";
when"0101"=>s0<="1101101";
when"0110"=>s0<="1111101";
when"0111"=>s0<="0000111";
when"1000"=>s0<="1111111";
when"1001"=>s0<="1101111";
whenothers=>s0<="0000000";
endcase;
endprocess;
enda;
〔3存盘并进行编译,如图所示。
图3.14
4运行结果及分析
4.1基于multisim的结果及分析
将555的输出端接到示波器上观察到的波形为一脉冲,其频率近似为一秒。
基本符合课程设计中所需秒信号的要求。
在电路完成后,将置数开关拨到有效,并置数为30s,显示器显示30字数。
图4.1
将置数开关拨到无效,则开始计数电路进行减计数,并在显示电路中显示相应的剩余时间,在此过程中电路的暂停、连续、清零等功能均得以实现。
在倒计时为零时,二极管亮,蜂鸣器发出响声。
4.2基于VHDL的结果分析
对编译成功的程序进行仿真
图4.2
由仿真的波形图可知当enb为高电平时,clr清零端为高电平时,显示器显示零。
当置数pld为高电平时,置数为30,则显示器显示30.当置数pld为低电平时,开始减计数。
减为零时,warn为高电平有效。
总结
课程设计需要的是活学活用所涉及的知识。
经过这次课程设计,才明白生产一电子产品是多么的不容易。
里面的过程要求我要非常细心,要想设计并制作一个非常完美实用的数字电路,确实是一个不轻松的工作,不仅要有动手的能力,还要有灵活应用芯片理论的功能,为此需要阅读大量关于这方面的书籍。
在本次的课程设计中通过自己选题,找材料,分析,设计等,掌握了一些软件的应用,为以后的学习垫下了铺垫。
整个设计实现了从单一的理论知识到解决实际问题的转变。
通过本次实验我最大的收获就是提高了自身的动手能力和培养了我寻求解决问题的能力。
在设计中,我充分的应用我们所学的理论知识,例如:
集成电路74LS系列、二极管、整时电路555等元件的应用。
这次课程设计使我受益匪浅,在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,同时也积极的请教了同学及老师,在他们的帮助下我也学到了很多。
在让我体会到设计电路艰辛的同时,更让我体会到成功的喜悦和快乐。
本次的实验也鞭策我要更加努力学习,并且有坚持不懈的精神!
参考文献
[1]余孟尝.数字电子技术基础简明教程.北京:
高等教育出版社,2006:
142-421
[2]刘明.电子线路综合设计实验教程.天津:
天津大学出版社,2007:
100-201
[3]门宏.555时基实用电路解读.北京:
北京工业出版社,2009:
49-102