multisim单片机仿真的例子
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四、定时/计数器实验
一、实验目的
掌握单片机定时/计数器的内部结构和工作方式。 掌握单片机定时/计数器的应用。
二、实验原理
1、定时/计数器的工作方式与控制寄存器
MCS-51系列单片机内部包含两个十六位的定时/计数器T0和T1,当被设为定时方式时,实际上对机器周期计数,每个机器周期计数器加1直至溢出。当被设为计数方式时,则对加在T0(P3.4)或T1(P3.5)引脚上的外部脉冲计数。
单片机中与定时/计数器相关的特殊功能寄存器(SFR )有定时/计数器控制寄存器(TCON )和定时/计数器模式寄存器(TMOD )。
模式寄存器TMOD 的字节地址为89H ,其各位的定义如下:
M1 M0 工作模式 0 0 模式0 13位定时/计数方式 0 1 模式1 16位定时/计数方式 1 0 模式2 8位自动重装载方式
1
1
模式3
对T0:分为一个8位的定时/计数器TL0和一个8位的定时器TH0 对T1:停止计数
C/T =0,设为定时器方式,C/T =1,设为计数器方式。
GATE=0,定时/计数器的启动和停止完全由TRi 位控制。GATE=1,只有当TRi 位置位并且INT i 引脚为高电平时才启动计数器。
控制寄存器TCON 的字节地址为88H ,其各位的定义如下:
TRi :定时/计数器启停控制,TRi=1启动定时/计数器(当GATE=0时)。
TFi :定时/计数器溢出标志,当定时/计数器溢出时,由硬件置位,CPU 响应中断时,自动清零。 2、定时初值的计算
当单片机的振荡频率为f OSC ,则机器周期为
OSC
f 12,设定时初值为T C ,则定时周期为:
OSC
C L
f )
T 2
(12t -⨯=
12
f t 2
T OSC
L
C ⨯-
=
其中L 为计数器的位数,模式0时L=13,模式1时L=16,模式2、模式3时L=8。
三、实验环境
运行Windows 系统微机一套。 NI Multisim 10仿真软件。
四、实验内容
1、定时器的应用
利用单片机定时/计数器T0的定时功能(工作方式1),使P1.0输出1Kz 的方波,并用示波器观测输出波形。
启动Multimim 10仿真软件,在设计窗口单击鼠标右键,在弹出的快捷菜单中选择“Place Component ”命令,在“Select a Component ”对话框中单击“Group ”下拉列表框,选择MCU Module ,在“Component ”列表框中选择8051,单击“OK ”按钮,在随后出现的MCU 向导中,设置电路设计的存放路径、项目名称、单片机的编程语言(本实验选择汇编语言)以及程序文件名,最后将8051 CPU 放入设计窗口,设计窗口出现“Circuit1”和“main.asm ”两个标签。在设计窗口中双击8051,在弹出的对话框中选择“Value ”,在“clock speed ”中把“12”改成“6”。
在“Select a Component ”对话框的“Group ”下拉列表框中选择Sources ,在“Component ”列表框中选择VCC 和DGND ,将电源VCC 和接地GND 放入设计窗口。在Instruments 工具栏单击“Oscilloscope ”图标,将虚拟示波器放入设计窗口,连接单片机和示波器,完成实验原理图如图4-1所示。
图 4-1 定时实验原理图
已知单片机的振荡频率为6MHz 。定时初值为:
H 06FF 6528612
105.010
66553612
t f 2
T 3
6
OSC 16
C ==⨯⨯⨯-
=⨯-
=-
单击Multimin 设计窗口的main 标签,在源程序编辑窗口输入单片机实验程序。实验参考程序如下:
ORG 0000H LJMP MAIN ORG 000BH ;T0中断入口地址
CPL P1.0
MOV TH0,#0FFH
MOV TL0,#06H
RETI
ORG 1000H
MAIN: MOV TH0,#0FFH
MOV TL0,#06H ;定时初值为FF06H
MOV TMOD,#01H ;T0方式1定时
MOV IE,#82H ;允许T0中断
SETB TR0
SJMP $
END
运行程序,双击设计窗口示波器图标,显示示波器面板如图4-2所示,改变面板上“Timebase”为500uS/Div,观察波形并测量周期。
图 4-2 虚拟示波器面板
2、计数器的应用
将定时/计数器T0设为工作方式3,其中TH0设为定时方式,使P1.0输出1Kz的方波,并用虚拟示波器观察,TL0设为计数方式,使T0引脚作为外中断输入脚,每输入一个脉冲,引发一次中断,使P1.7电平翻转一次,观察LED的闪烁情况。
在设计窗口单击鼠标右键,在弹出的快捷菜单中选择“Place Component”命令,在“Select a Component”对话框中单击“Group”下拉列表框,选择“Diodes”中的“LED”,双击列表中的发光二极管“LED-red”,将其放到设计窗口,在对话框“Group”中选择“Basic”,并将“SWITCH”中的开关“DIPSW1”放到设计窗口。在Multisim10的最右边虚拟仪器栏中选择信号发生器“Function Generator”放置到设计窗口中,将其按下图4-3连接好。