单片机实验报告.docx
《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
单片机实验报告
一、实验一··········································1
二、实验二··········································7
三、实验三·········································11
四、实验四·········································15
实验一定时/计数器验证实验
一、实验目的
熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时。
二、实验设备及器件
IBMPC机一台PROTEUS硬件仿真软件KeilC51。
三、实验内容
用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始。
四、实验要求
要求采用Proteus软件实现上述实验。
五、实验步骤
1.打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件。
元件名称
所属类
所属子类
AT89C51
Microprocessor
8051Family
CAP
Capacitors
Generic
CAP-ELEC
Capacitors
Generic
CRYSTAL
Miscellaneous
——
RES
Resistors
Generic
7SEG-COM-CAT-GRN
Optoelectronics
7-SegmentDisplays
PULLUP
ModelingPrimitives
Digital[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并单击鼠标左键,打开“EditComponent”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“ProgramFile”栏中,选择先前用Keil生成的.HEX文件。
在ProteusISIS的菜单栏中选择“File”→“SaveDesign”选项,保存设计,在ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“UseRemoteDebugMonitor”选项,以支持与Keil的联合调试。
5.在Keil的菜单栏中选择“Debug”→“Start/StopDebugSession“选项,或者直接单击工具栏中的“Debug”→“Start/StopDebugSession”图标,进入程序调试环境。
按“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软件里查看各寄存器和存储器的状况,即硬件的内部情况。
3.Keil软件软件仿真与Proteus的仿真对比。
使用Proteus仿真可从硬件的角度观察仿真结果,使仿真结果更加形象直观,使我们可从硬件运行状态清楚的判断运行结果是否正确。
而在Keil环境中则是从程序的角度通过观察程序中数据的变化来观察仿真结果,需要对程序运行结果充分了解。
八、实验总结及相关问题
通过本次实验了解了Ptoteus软件的使用方法,以及在掌握了Keil的使用方法下,学会了Proteus与Keil软件联调的方法。
在用Proteus中由于忽略了要在总线处放置网络标号导致联调失败,最后通过观察发现数码管引脚电平无变化发现此问题,放置网络标号后运行仿真时数码管引脚电平发生变化可是数码管却没有变亮,经过多次检查接线,未发现接线错误后,觉得可能是软件本身错误,故将总线及数码管周围硬件线路重新绘制一遍后再次运行仿真及可得到图1-3的结果。
实验二单片机I/O口控制实验
一、实验目的
利用单片机的P1口作IO口,使同学学会利用P1口作为输入和输出口。
二、实验设备及器件
IBMPC机一台DP-51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台一台
三、实验内容
1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮。
2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时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接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连。
5.编写P1.7控制LED的程序,并调试运行。
(按下K1看是否全亮)。
P1.7控制LED的程序见程序2。
调试运行结果:
按下P1.7后D1区LED全灭。
6.A2区J61接口的P1.7与D1区的J54的SW1相连。
然后再使用TKStudyICE运行程序,查看结果。
P1.7控制LED的程序见程序2。
调试运行结果:
按下P1.7后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:
JBP1.7,SETLED
CLRLED:
CLRP1.0
CLRP1.1
CLRP1.2
CLRP1.3
CLRP1.4
CLRP1.5
CLRP1.6
SJMPMAIN
SETLED:
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
SETBP1.4
SETBP1.5
SETBP1.6
SJMPMAIN
END
七、实验思考题
1.请同学思考一下,想出几个实现以上功能的编程方法。
程序1可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位后输出至P1口。
程序2可在判断P1.7高低电平后根据判断结果直接将#80H或#7F直接送P1口而不必逐位进行位操作。
2.请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED的亮和灭时,程序应如何修改。
此时将KEY1接/INT0口,在主程序中开启外部中断设置外部中断触发方式,通过中断服务子程序控制LED亮灭。
程序如下所示:
ORG000H
LJMPMAIN
ORG0003H;中断服务程序
LJMPSETLED
MAIN:
MOVSP,#40H
SETBET0;开外部中断
CLRIT0;设置为电平触发
SETBEA
CLRLED:
CLRP1.0
CLRP1.1
CLRP1.2
CLRP1.3
CLRP1.4
CLRP1.5
CLRP1.6
SJMPCLRLED
SETLED:
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
SETBP1.4
SETBP1.5
SETBP1.6
RETI
END
八、实验总结及相关问题
通过本次实验掌握了使用TKStudyICE进行硬件仿真调试的方法,在设置仿真器驱动程序声明时对C:
\Keil目录下的Tools.ini文件添加描述时,由于添加的