multisim 80c51单片机仿真四
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四、定时/计数器实验
一、实验目的
掌握单片机定时/计数器的内部结构和工作方式。 掌握单片机定时/计数器的应用。
二、实验原理
1、定时 /计数器的工作方式与控制寄存器 MCS-51 系列单片机内部包含两个十六位的定时/计数器 T0 和 T1,当被设为定时方式时,实际上 对机器周期计数,每个机器周期计数器加 1 直至溢出。当被设为计数方式时,则对加在 T0(P3.4)或 T1(P3.5)引脚上的外部脉冲计数。 单片机中与定时/计数器相关的特殊功能寄存器(SFR)有定时/计数器控制寄存器(TCON)和定 时/计数器模式寄存器(TMOD) 。 模式寄存器 TMOD 的字节地址为 89H,其各位的定义如下:
4
图表 4-4
图表 4-5
ቤተ መጻሕፍቲ ባይዱ
五、思考题
①若要使 P1.0 输出 1KHz 方波,P1.1 输出 2KHz 方波,程序该如何修改? ②T0 设为方式 3,T1 有何作用? ③当脉冲宽度过宽时,该如何测量?
5
12 (2 L TC ) t f OSC
TC 2 L
t f OSC 12
其中 L 为计数器的位数,模式 0 时 L=13,模式 1 时 L=16,模式 2、模式 3 时 L=8。
三、实验环境
运行 Windows 系统微机一套。 NI Multis im 10 仿真软件。
四、实验内容
3
XSC1
Ext T rig + _ A + _ + B _
U1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1B0T2 P1B1T2EX P1B2 P1B3 P1B4 P1B5MOSI P1B6MISO P1B7SCK RST P3B0RXD P3B1TXD P3B2INT0 P3B3INT1 P3B4T0 P3B5T1 P3B6WR P3B7RD XTAL2 XTAL1 GND VCC P0B0AD0 P0B1AD1 P0B2AD2 P0B3AD3 P0B4AD4 P0B5AD5 P0B6AD6 P0B7AD7 EAVPP ALEPROG PSEN P2B7A15 P2B6A14 P2B5A13 P2B4A12 P2B3A11 P2B2A10 P2B1A9 P2B0A8 40 38 39 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
2
;T0 中断入口地址
MOV RETI
TL0,#06H
ORG 1000H MAIN: MOV MOV MOV MOV
TH0,#0FFH TL0,#06H IE,#82H ;定时初值为 FF06H ;允许 T0 中断 TMOD,#01H ;T0 方式 1 定时
SETB TR0 SJMP $ END 运行程序,双击设计窗口示波器图标,显示示波器面板如图 4-2 所示,改变面板上“Timebase” 为 500uS/Div,观察波形并测量周期。
;TL0 中断入口地址
CPL P1.0 RETI ORG 1000H MAIN: MOV MOV MOV MOV
TMOD,#27H
TL0,#0FFH IE,#8AH TCON,#55H
SJMP $ 双击设计窗口信号发生器图标,信号发生器面板如图 4-4 所示,面板上波形选择方波,频率选择 1KHz, 完成后关闭对话框。 运行程序,双击设计窗口示波器图标,显示示波器面板如图 4-5 所示,改变面板上“Timebase” 为 500uS/Div,观察波形并测量周期。
C/ T =0,设为定时器方式,C/ T =1,设为计数器方式。 GA TE=0,定时/计数器的启动和停止完全由 TRi 位控制。GA TE=1,只有当 TRi 位置位并且 INT i 引脚为高电平时才启动计数器。 控制寄存器 TCON 的字节地址为 88H,其各位的定义如下:
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
XSC1
Ext T rig + _ A + _ + B _
VCC U1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1B0T2 P1B1T2EX P1B2 P1B3 P1B4 P1B5MOSI P1B6MISO P1B7SCK RST P3B0RXD P3B1TXD P3B2INT0 P3B3INT1 P3B4T0 P3B5T1 P3B6WR P3B7RD XTAL2 XTAL1 GND VCC P0B0AD0 P0B1AD1 P0B2AD2 P0B3AD3 P0B4AD4 P0B5AD5 P0B6AD6 P0B7AD7 EAVPP ALEPROG PSEN P2B7A15 P2B6A14 P2B5A13 P2B4A12 P2B3A11 P2B2A10 P2B1A9 P2B0A8 40 38 39 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
5V
GND
8051
图 4-1
定时实验原理图
已知单片机的振荡频率为 6MHz。定时初值为:
TC 216
下:
f OSC t 6 10 6 0.5 10 3 65536 65286 FF06H 12 12
单击 Multimin 设计窗口的 main 标签,在源程序编辑窗口输入单片机实验程序。实验参考程序如 ORG 0000H LJMP MAIN ORG 000BH CPL P1.0 MOV TH0,#0FFH
VCC 5V
XFG1
LED1 J1 Key = A
8051 GND
图 4-3
6 10 6 0.5 10 3 TH0 定时初值为: TC 2 6 12
8
实验参考程序如下: ORG 0000H LJMP MAIN ORG 000BH MOV CPL RETI ORG MOV 001BH TH0,#06H ;TH0 中断入口地址 TL0,#0FFH P1.7
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,在弹 出的对话框中选择“ V alue” ,在“clock speed”中把“12”改成“6” 。 在“Select a Component”对话框的“Group”下拉列表框中选择 Sources ,在“Component”列表 框中选择 VCC 和 DGND ,将电源 VCC 和接地 GND 放入设计窗口。在 Instruments 工具栏单击 “Oscilloscope”图标,将虚拟示波器放入设计窗口,连接单片机和示波器,完成实验原理图如图 4-1 所示。
定时/计数器
外中断控制
TRi:定时/计数器启停控制,TRi=1 启动定时/计数器(当 GA TE=0 时) 。 TFi:定时/计数器溢出标志,当定时/计数器溢出时,由硬件置位,CPU 响应中断时,自动清零。 2、定时初值的计算 当单片机的振荡频率为 fOSC,则机器周期为
12 ,设定时初值为 T C,则定时周期为: f OSC
图 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 连接好。
GATE C/T M1 M0 GATE C/T T0 控制 M1 M0
T1 控制
M1 0 0 1 1
M0 0 1 0 1
工作模式 模式 0 模式 1 模式 2 模式 3
13 位定时/计数方式 16 位定时/计数方式 8 位自动重装载方式 对 T0:分为一个 8 位的定时/计数器 TL0 和一个 8 位的定时器 TH0 对 T1:停止计数
一、实验目的
掌握单片机定时/计数器的内部结构和工作方式。 掌握单片机定时/计数器的应用。
二、实验原理
1、定时 /计数器的工作方式与控制寄存器 MCS-51 系列单片机内部包含两个十六位的定时/计数器 T0 和 T1,当被设为定时方式时,实际上 对机器周期计数,每个机器周期计数器加 1 直至溢出。当被设为计数方式时,则对加在 T0(P3.4)或 T1(P3.5)引脚上的外部脉冲计数。 单片机中与定时/计数器相关的特殊功能寄存器(SFR)有定时/计数器控制寄存器(TCON)和定 时/计数器模式寄存器(TMOD) 。 模式寄存器 TMOD 的字节地址为 89H,其各位的定义如下:
4
图表 4-4
图表 4-5
ቤተ መጻሕፍቲ ባይዱ
五、思考题
①若要使 P1.0 输出 1KHz 方波,P1.1 输出 2KHz 方波,程序该如何修改? ②T0 设为方式 3,T1 有何作用? ③当脉冲宽度过宽时,该如何测量?
5
12 (2 L TC ) t f OSC
TC 2 L
t f OSC 12
其中 L 为计数器的位数,模式 0 时 L=13,模式 1 时 L=16,模式 2、模式 3 时 L=8。
三、实验环境
运行 Windows 系统微机一套。 NI Multis im 10 仿真软件。
四、实验内容
3
XSC1
Ext T rig + _ A + _ + B _
U1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1B0T2 P1B1T2EX P1B2 P1B3 P1B4 P1B5MOSI P1B6MISO P1B7SCK RST P3B0RXD P3B1TXD P3B2INT0 P3B3INT1 P3B4T0 P3B5T1 P3B6WR P3B7RD XTAL2 XTAL1 GND VCC P0B0AD0 P0B1AD1 P0B2AD2 P0B3AD3 P0B4AD4 P0B5AD5 P0B6AD6 P0B7AD7 EAVPP ALEPROG PSEN P2B7A15 P2B6A14 P2B5A13 P2B4A12 P2B3A11 P2B2A10 P2B1A9 P2B0A8 40 38 39 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
2
;T0 中断入口地址
MOV RETI
TL0,#06H
ORG 1000H MAIN: MOV MOV MOV MOV
TH0,#0FFH TL0,#06H IE,#82H ;定时初值为 FF06H ;允许 T0 中断 TMOD,#01H ;T0 方式 1 定时
SETB TR0 SJMP $ END 运行程序,双击设计窗口示波器图标,显示示波器面板如图 4-2 所示,改变面板上“Timebase” 为 500uS/Div,观察波形并测量周期。
;TL0 中断入口地址
CPL P1.0 RETI ORG 1000H MAIN: MOV MOV MOV MOV
TMOD,#27H
TL0,#0FFH IE,#8AH TCON,#55H
SJMP $ 双击设计窗口信号发生器图标,信号发生器面板如图 4-4 所示,面板上波形选择方波,频率选择 1KHz, 完成后关闭对话框。 运行程序,双击设计窗口示波器图标,显示示波器面板如图 4-5 所示,改变面板上“Timebase” 为 500uS/Div,观察波形并测量周期。
C/ T =0,设为定时器方式,C/ T =1,设为计数器方式。 GA TE=0,定时/计数器的启动和停止完全由 TRi 位控制。GA TE=1,只有当 TRi 位置位并且 INT i 引脚为高电平时才启动计数器。 控制寄存器 TCON 的字节地址为 88H,其各位的定义如下:
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
XSC1
Ext T rig + _ A + _ + B _
VCC U1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1B0T2 P1B1T2EX P1B2 P1B3 P1B4 P1B5MOSI P1B6MISO P1B7SCK RST P3B0RXD P3B1TXD P3B2INT0 P3B3INT1 P3B4T0 P3B5T1 P3B6WR P3B7RD XTAL2 XTAL1 GND VCC P0B0AD0 P0B1AD1 P0B2AD2 P0B3AD3 P0B4AD4 P0B5AD5 P0B6AD6 P0B7AD7 EAVPP ALEPROG PSEN P2B7A15 P2B6A14 P2B5A13 P2B4A12 P2B3A11 P2B2A10 P2B1A9 P2B0A8 40 38 39 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
5V
GND
8051
图 4-1
定时实验原理图
已知单片机的振荡频率为 6MHz。定时初值为:
TC 216
下:
f OSC t 6 10 6 0.5 10 3 65536 65286 FF06H 12 12
单击 Multimin 设计窗口的 main 标签,在源程序编辑窗口输入单片机实验程序。实验参考程序如 ORG 0000H LJMP MAIN ORG 000BH CPL P1.0 MOV TH0,#0FFH
VCC 5V
XFG1
LED1 J1 Key = A
8051 GND
图 4-3
6 10 6 0.5 10 3 TH0 定时初值为: TC 2 6 12
8
实验参考程序如下: ORG 0000H LJMP MAIN ORG 000BH MOV CPL RETI ORG MOV 001BH TH0,#06H ;TH0 中断入口地址 TL0,#0FFH P1.7
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,在弹 出的对话框中选择“ V alue” ,在“clock speed”中把“12”改成“6” 。 在“Select a Component”对话框的“Group”下拉列表框中选择 Sources ,在“Component”列表 框中选择 VCC 和 DGND ,将电源 VCC 和接地 GND 放入设计窗口。在 Instruments 工具栏单击 “Oscilloscope”图标,将虚拟示波器放入设计窗口,连接单片机和示波器,完成实验原理图如图 4-1 所示。
定时/计数器
外中断控制
TRi:定时/计数器启停控制,TRi=1 启动定时/计数器(当 GA TE=0 时) 。 TFi:定时/计数器溢出标志,当定时/计数器溢出时,由硬件置位,CPU 响应中断时,自动清零。 2、定时初值的计算 当单片机的振荡频率为 fOSC,则机器周期为
12 ,设定时初值为 T C,则定时周期为: f OSC
图 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 连接好。
GATE C/T M1 M0 GATE C/T T0 控制 M1 M0
T1 控制
M1 0 0 1 1
M0 0 1 0 1
工作模式 模式 0 模式 1 模式 2 模式 3
13 位定时/计数方式 16 位定时/计数方式 8 位自动重装载方式 对 T0:分为一个 8 位的定时/计数器 TL0 和一个 8 位的定时器 TH0 对 T1:停止计数