
单片机仿真器
-
2023年3月19日发(作者:长大尾巴的兔子)目录
一、实验一··········································1
二、实验二··········································7
三、实验三·········································11
四、实验四·········································15
实验一定时/计数器验证实验
一、实验目的
熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况
结合软件的方式定时。
二、实验设备及器件
IBMPC机一台PROTEUS硬件仿真软件KeilC51。
三、实验内容
用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时
间,当1s产生时秒计数加1;秒计数到60时,自动从0开始。
四、实验要求
要求采用Proteus软件实现上述实验。
五、实验步骤
1.打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件。
元件名称所属类所属子类
AT89C51Microprocessor8051Family
CAPCapacitorsGeneric
CAP-ELECCapacitorsGeneric
CRYSTALMiscellaneous——
RESResistorsGeneric
7SEG-COM-CAT-GRNOptoelectronics7-SegmentDisplays
PULLUPModelingPrimitivesDigital[Miscellaneous]
表1-1元件清单
元件全部添加后,在ProteusISIS的编辑区域中按图1-1所示的原理图
连接硬件电路。
图1-1电路原理图
2.根据参考程序绘出流程图,并辅以适当的说明。
流程图如图1-2所示:
图1-2程序流程图
3.打开KeilμVision4,新建Keil项目,选择AT89C51单片机作为CPU,将
参考程序导入到“SourceGroup1”中。在“OptionsforTarget”
对话窗口中,选中“Output”选项卡中的“CreateHEXFile”选项和
“Debug”选项卡中的“Use:ProteusVSMSimulator”选项。编译汇
编源程序,改正程序中的错误。
4.在ProteusISIS中,选中AT89C51并单击鼠标左键,打开“Edit
Component”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的
“ProgramFile”栏中,选择先前用Keil生成的.HEX文件。在Proteus
ISIS的菜单栏中选择“File”→“SaveDesign”选项,保存设计,在
ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中
“UseRemoteDebugMonitor”选项,以支持与Keil的联合
调试。
5.在Keil的菜单栏中选择“Debug”→“Start/StopDebugSession“选
项,或者直接单击工具栏中的“Debug”→“Start/StopDebug
Session”图标,进入程序调试环境。按“F5”键,顺序运行程序。调
出“ProteusISIS”界面可以看到7段数码管显示从0~59s的计数值,
每个数值显示1s,如图1-3所示。
图1-3程序运行结果
六、实验程序
SECONDEQU30H
COUNTEQU31H
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:MOVSECOND,#00H
MOVCOUNT,#00H
MOVDPTR,#TABLE
CLRA
MOVP0,A
MOVP2,A
MOVTMOD,#00H
MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)MOD256
SETBTR0
SETBET0
SETBEA
MOVIE,#82H
LJMP$
INT_T0:MOVTH0,#(65536-50000)/256
MOVTL0,#(65536-50000)MOD256
INCCOUNT
MOVA,COUNT
CJNEA,#20,I2
MOVCOUNT,#00H
INCSECOND
MOVA,SECOND
CJNEA,#60,I1
MOVSECOND,#00H
I1:MOVA,SECOND
MOVB,#10H
DIVAB
MOVCA,@A+DPTR
MOVP0,A
MOVA,B
MOVCA,@A+DPTR
MOVP2,A
I2:RETI
TABLE:DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
END
七、思考题
1.罗列一下Proteus软件的能带给我们的好处,指出一点最能帮助你的地
方。
使用Proteus软件能使我们方便的搭建电路,同时在没有元器件的
情况下进行便于仿真,方便我们在将程序写入单片机前确认运行是否
正确,同时可在采购器件之前即可开始开发产品,而不必等到器件采
购完后搭建电路才进行程序调试。
2.用Proteus界面中的播放键运行仿真与KeilμVision4的环境中联调运
行它们两者的区别在什么地方
用Proteus界面中的播放键运行仿真仅可以观察运行结果,即程序
运行在硬件表面上的表现。而联调的时候可以再Keil软件里查看各寄
存器和存储器的状况,即硬件的内部情况。
软件软件仿真与Proteus的仿真对比。
使用Proteus仿真可从硬件的角度观察仿真结果,使仿真结果更加
形象直观,使我们可从硬件运行状态清楚的判断运行结果是否正确。
而在Keil环境中则是从程序的角度通过观察程序中数据的变化来观察
仿真结果,需要对程序运行结果充分了解。
八、实验总结及相关问题
通过本次实验了解了Ptoteus软件的使用方法,以及在掌握了Keil
的使用方法下,学会了Proteus与Keil软件联调的方法。
在用Proteus中由于忽略了要在总线处放置网络标号导致联调失败,
最后通过观察发现数码管引脚电平无变化发现此问题,放置网络标号
后运行仿真时数码管引脚电平发生变化可是数码管却没有变亮,经过
多次检查接线,未发现接线错误后,觉得可能是软件本身错误,故将
总线及数码管周围硬件线路重新绘制一遍后再次运行仿真及可得到图
1-3的结果。
实验二单片机I/O口控制实验
一、实验目的
利用单片机的P1口作IO口,使同学学会利用P1口作为输入和输出口。
二、实验设备及器件
IBMPC机一台单片机仿真器、编程器、实验仪三合一综合开发
平台一台
三、实验内容
1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。
2.编写一段程序,用~口控制LED,控制LED的亮和灭接按键,按下时
LED亮,不按时LED灭)。
四、实验要求
学会使用单片机的P1口作IO口,如果有时间同学也可以利用P3
口作IO口来做该实验。
五、实验步骤
1.用导线把A2区的J61接口与D1区的J52接口相连。原理如图2-1所
示。
图2-1实验二原理图
2.先编写一个延时程序。
延时程序见程序1子程序DELAY。
3.将LED轮流亮的程序编写完整并使用TKStudyICE调试运行。
LED轮流亮程序见程序1。
调试运行结果:D1区LED轮流亮。
4.使用导线把A2区的J61接口的~与D1区的J52接口的LED1~LED7
相连,另外A2区J61接口的与D1区的J53的KEY1相连。
5.编写控制LED的程序,并调试运行。(按下K1看是否全亮)。
控制LED的程序见程序2。
调试运行结果:按下后D1区LED全灭。
6.A2区J61接口的与D1区的J54的SW1相连。然后再使用TKStudyICE
运行程序,查看结果。
控制LED的程序见程序2。
调试运行结果:按下后D1区LED全亮。
六、实验参考程序
程序1:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:MOVA,#0FFH
CLRC
MAINLOOP:CALLDELAY
RLCA
MOVP1,A
SJMPMAINLOOP
DELAY:MOVR7,#0
LOOP:MOVR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR7,LOOP
RET
END
程序2:
ORG000H
LJMPMAIN
ORG0100H
MAIN:JB,SETLED
CLRLED:CLR
CLR
CLR
CLR
CLR
CLR
CLR
SJMPMAIN
SETLED:SETB
SETB
SETB
SETB
SETB
SETB
SETB
SJMPMAIN
END
七、实验思考题
1.请同学思考一下,想出几个实现以上功能的编程方法。
程序1可利用单片机的定时计数器通过选择定时计数器工作方式和
预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A
进行移位后输出至P1口。
程序2可在判断高低电平后根据判断结果直接将#80H或#7F直接送
P1口而不必逐位进行位操作。
2.请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED
的亮和灭时,程序应如何修改。
此时将KEY1接/INT0口,在主程序中开启外部中断设置外部中断触
发方式,通过中断服务子程序控制LED亮灭。程序如下所示:
ORG000H
LJMPMAIN
ORG0003H;中断服务程序
LJMPSETLED
MAIN:MOVSP,#40H
SETBET0;开外部中断
CLRIT0;设置为电平触发
SETBEA
CLRLED:CLR
CLR
CLR
CLR
CLR
CLR
CLR
SJMPCLRLED
SETLED:SETB
SETB
SETB
SETB
SETB
SETB
SETB
RETI
END
八、实验总结及相关问题
通过本次实验掌握了使用TKStudyICE进行硬件仿真调试的方法,
在设置仿真器驱动程序声明时对C:Keil目录下的文件添加描述时,
由于添加的路径错误导致无法进行硬件仿真调试,修改为正确路径后
方可在DEBUG窗口中的Use选项中找到对应的选项。使用TKStudyICE
进行硬件仿真调试相比本学期的电子系统设计中用到的调试方法更快
捷,使用更方便。
与此同时,通过本次实验对单片机的I/O控制有了更深入的了接,
同时加深入对单片机I/O编程的理解。
实验三串转并I/O口实验
一、实验目的
熟悉并掌握串转并的I/O口扩展方法。
二、实验设备及器件
IBMPC机一台单片机仿真器、编程器、实验仪三合一综合开发平
台一台
三、实验内容
1.写程序,通过单片机的P1口控制74HC164的串行输入端口,实现串并转
换。
2.验证串并转换数据的正确性。
四、实验要求
熟悉串并转换芯片的工作原理,学会使用串并转换芯片扩展单片机
的I/O口资源。
表3-174HC164真值表
五、实验步骤
1.短接C5区JP10接口,将C5区J43接口与A2区J61接口的P10~P13对应相
连(CLK对P10等等)。如图3-1所示。
图3-1实验三原理图
2.运行编写好的软件程序,完成一次串并转换。
实验程序见实验参考程序。
2.使用C2区的逻辑笔或D1区的J52接口(LED指示灯)测试并行输出数据
Q0~Q7数据的正确性。
调试运行结果:通过观察LED的亮灭情况可判断完成一次串并转换,
且转换结果正确无误。
六、实验参考程序
CLKEQU
DINAEQU
DINBEQU
CLR164EQU
ORG0000H
LJMPMAIN
ORG0100H
MAIN:MOVSP,#60H
NOP
CLRCLK
SETBDINB
CLRCLR164
SETBCLR164
MOVA,#0FFH
MOVR4,#08H
SLCHG:RLCA
MOVDINA,C
SETBCLK
NOP
CLRCLK
NOP
DJNZR4,SLCHG
SJMP$
END
七、实验思考题
参考图3-2电路图,尝试编写软件程序,实现8位LED流水灯的控制。
图实验原理图
可利用单片机的定时计数器通过选择定时计数器工作方式和预置
初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行
移位。程序如下所示:
CLKEQU
DINAEQU
DINBEQU
CLR164EQU
ORG0000H
LJMPMAIN
ORG000BH;定时器0中断服务程序
LJMPSLCHG
MAIN:MOVSP,#60H
NOP
CLRCLK
SETBDINB
CLRCLR164
SETBCLR164
MOVA,#0FFH
MOVTMOD,#01H;定时器0工作方式1
MOVTH0,#18H;送2ms时间常数
MOVTL0,#0FCH
SETBTR0;开中断
SETBET0
SETBEA
SJMP$
SLCHG:MOVTH0,#18H
MOVTL0,#0FCH
RLCA
MOVDINA,C
SETBCLK
NOP
CLRCLK
RETI
END
八、实验总结及相关问题
由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运
行都符合实验要求,通过本次实验对串并转化程序的编写有了一定了
解,通过编写流水灯程序加深了对单片机串并口的了解。
实验四继电器控制实验
一、实验目的
加深理解继电器的工作原理和特点,掌握利用单片机的IO口控制继
电器的一般方法。
二、实验设备及器件
IBMPC机一台单片机仿真器、编程器、实验仪三合一综合开发平
台一台
三、实验内容
1.利用D1区的拨动开关和LED,学习继电器的工作原理和特点。
2.编写一段程序,用口控制继电器,继电器控制LED的亮和灭,(COM与
CLOSE连通时,一盏LED亮;不连通时该LED灭。COM与OPEN连通时,另
一盏LED亮,不通时该LED灭)。
四、实验要求
学会继电器的使用和利用单片机的IO口控制继电器的方法。
五、实验步骤
图4-1继电器驱动控制电路图
1.用短路帽短接JP7,使用导线把D1区J54接口的SW1与C7区J9接口的KJ
(任意一根针)相连接。
2.使用导线把D1区J52接口的LED1、LED2与C7区J103接口的OPEN1,CLOSE1
分别相连,另外C7区J103接口的COM1接地(GND)。
3.接好线后,同学可以拨动D1区的SW1拨动开关,观察现象(拨到1时LED2
亮,拨到0时LED1亮),并得出结论。
运行结果:拨到1时LED2亮,拨到0时LED1亮,说明每拨动一次开关改
变一次继电器的状态。
4.然后把C7区J9接口的KJ改接到A2区的J61接口的P10。再编写一个
程序程序(参考实验二),使口延时一段时间后改变电平值,来控
制继电器的开关。
实验程序见实验参考程序。
调试运行结果:两个LED交替变亮,继电器状态不断改变。
六、实验参考程序
ORG0000H
LJMPMAIN
ORG0100H
MAIN:MOVR7,#0
LOOP:MOVR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR7,LOOP
CPL
SJMPMAIN
END
七、实验思考题
1.请同学思考一下,改由OPEN2、COM2、CLOSE2时本实验如何进行。
同使用OPEN1、COM1和CLOSE1时连接方法类似,把D1区J52接口的
LED1、LED2与C7区J103接口的OPEN2,CLOSE2分别相连,另外C7区J103
接口的COM2接地(GND)即可。
2.请同学再思考一下,继电器的用途,并举例说明。
继电器是一种电控制,是当输入量(激励量)的变化达到规定要求
时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它
具有(又称输入回路)和被控制系统(又称输出回路)之间的互动关
系。通常应用于自动化的控制中,它实际上是用小电流去控制大电流
运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转
换电路等作用。
按照其工作原理可有以下应用:电磁继电器固体继电器温度继电器
舌簧继电器时间继电器高频继电器极化继电器其他类型的继电器
八、实验总结及相关问题
由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运
行都符合实验要求,通过本次实验了解了继电器的控制方法。对继电
器这一器件有了一定了解。