您的当前位置:首页单片机实验报告

单片机实验报告

2023-07-30 来源:小侦探旅游网
目录

一、 实验一··········································1 二、 实验二··········································7 三、 实验三·········································11 四、 实验四·········································15

实验一 定时/计数器验证实验

一、 实验目的

熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时。

二、 实验设备及器件

IBMPC机一台PROTEUS硬件仿真软件KeilC51。

三、 实验内容

用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始。

四、 实验要求

要求采用Proteus软件实现上述实验。

五、 实验步骤

1. 打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件。

元件名称 AT89C51 CAP CAP-ELEC CRYSTAL RES 7SEG-COM-CAT-GRN PULLUP 所属类 Microprocessor Capacitors Capacitors Miscellaneous Resistors Optoelectronics ModelingPrimitives 表1-1元件清单 所属子类 8051Family Generic Generic —— Generic 7-SegmentDisplays Digital[Miscellaneous] 元件全部添加后,在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程序运行结果

六、 实验程序

SECOND EQU 30H COUNT EQU 31H ORG 00H

LJMP START ORG 0BH LJMP INT_T0

START: MOV SECOND,#00H MOV COUNT,#00H MOV DPTR,#TABLE CLR A MOV P0,A MOV P2,A

MOV TMOD,#00H

MOV TH0,#(65536-50000)/256 MOV TL0,#(65536-50000)MOD256 SETB TR0 SETB ET0 SETB EA MOVIE,#82H LJMP $

INT_T0:MOV TH0,#(65536-50000)/256 MOV TL0,#(65536-50000)MOD256 INC COUNT MOV A,COUNT CJNE A,#20,I2 MOV COUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,I1 MOV SECOND,#00H I1: MOV A,SECOND MOV B,#10H DIV AB

MOVC A,@A+DPTR MOV P0,A MOV A,B

MOVC A,@A+DPTR

I2: TABLE: MOV P2,A RETI

DB 3FH,06H,5BH,4FH,66H DB 6DH,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:

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV A,#0FFH CLR C

MAINLOOP:CALL DELAY RLC A MOV P1,A SJMP MAINLOOP DELAY: MOV R7,#0 LOOP: MOV R6,#0 DJNZ R6,$ DJNZ R6,$ DJNZ R6,$ DJNZ R7,LOOP RET END

程序2:

ORG 000H LJMP MAIN ORG 0100H

MAIN: JB P1.7,SETLED CLRLED:CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP MAIN SETLED:SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 SETB P1.4 SETB P1.5 SETB P1.6 SJMP MAIN END

七、 实验思考题

1. 请同学思考一下,想出几个实现以上功能的编程方法。

程序1可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定

延时时间,通过定时计数器产生的中断在中断程序中对A进行移位后输出至P1口。 程序2可在判断P1.7高低电平后根据判断结果直接将#80H或#7F直接送P1口而不必逐位进行位操作。

2. 请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED的亮和灭时,

程序应如何修改。

此时将KEY1接/INT0口,在主程序中开启外部中断设置外部中断触发方式,通过中断服务子程序控制LED亮灭。程序如下所示:

ORG 000H LJMP LJMP SETB SETB

MAIN SETLED

ET0 ;开外部中断 EA

ORG 0003H ;中断服务程序

MAIN: MOV SP,#40H

CLR IT0 ;设置为电平触发

CLRLED:CLR P1.0

CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP SETB SETB SETB SETB SETB SETB RETI END

CLRLED P1.1 P1.2 P1.3 P1.4 P1.5 P1.6

SETLED:SETB P1.0

八、 实验总结及相关问题

通过本次实验掌握了使用TKStudyICE进行硬件仿真调试的方法,在设置仿真器驱动程序声明时对C:\\Keil目录下的Tools.ini文件添加描述时,由于添加的路径错误导致无法进行硬件仿真调试,修改为正确路径后方可在DEBUG窗口中的Use选项中找到对应的选项。使用TKStudyICE进行硬件仿真调试相比本学期的电子系统设计中用到的调试方法更快捷,使用更方便。

与此同时,通过本次实验对单片机的I/O控制有了更深入的了接,同时加深入对单片机I/O编程的理解。

实验三 串转并I/O口实验

一、 实验目的

熟悉并掌握串转并的I/O口扩展方法。

二、 实验设备及器件

IBMPC机一台DP-51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台一台

三、 实验内容

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的亮灭情况可判断完成一次串并转换,且转换结果正确无误。

六、 实验参考程序

CLK EQU P1.0 DINA EQUP1.1 DINB EQU P1.2 CLR164 EQUP1.3 ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV SP,#60H NOP CLR CLK SETB DINB CLR CLR164 SETB CLR164 MOV A,#0FFH MOV R4,#08H SLCHG: RLC A MOV DINA,C SETB CLK NOP CLR CLK NOP DJNZ R4,SLCHG SJMP$ END

七、 实验思考题

参考图3-2电路图,尝试编写软件程序,实现8位LED流水灯的控制。

图3.2实验原理图

可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位。程序如下所示:

CLK EQU P1.0 DINA EQUP1.1 DINB EQU P1.2 CLR164 EQUP1.3 ORG 0000H LJMP MAIN ORG 000BH ;定时器0中断服务程序 LJMP SLCHG MAIN: MOV SP,#60H NOP CLR CLK SETB DINB CLR CLR164 SETB CLR164 MOV A,#0FFH MOV TMOD,#01H ;定时器0工作方式1 MOV TH0,#18H ;送2ms时间常数 MOV TL0,#0FCH SETB TR0 ;开中断 SETB ET0 SETB EA SJMP $ SLCHG: MOV TH0,#18H MOV TL0,#0FCH RLC A MOV DINA,C SETB CLK NOP CLR CLK RETI END

八、 实验总结及相关问题

由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验对串并转化程序的编写有了一定了解,通过编写流水灯程序加深了对单片机串并口的了解。

实验四 继电器控制实验

一、 实验目的

加深理解继电器的工作原理和特点,掌握利用单片机的IO口控制继电器的一般方法。

二、 实验设备及器件

IBMPC机一台DP-51PRO.NET单片机仿真器、编程器、实验仪三合一综合开发平台一台

三、 实验内容

1. 利用D1区的拨动开关和LED,学习继电器的工作原理和特点。

2. 编写一段程序,用P1.0口控制继电器,继电器控制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。再编写一个程序程

序(参考实验二),使P1.0口延时一段时间后改变电平值,来控制继电器的开关。

实验程序见实验参考程序。

调试运行结果:两个LED交替变亮,继电器状态不断改变。

六、 实验参考程序

ORG LJMP ORG MOV MOV DJNZ DJNZ DJNZ DJNZ CPL SJMP END

0000H MAIN 0100H R7,#0 R6,#0 R6,$ R6,$ R6,$ R7,LOOP P1.0 MAIN

MAIN: LOOP:

七、 实验思考题

1. 请同学思考一下,改由OPEN2、COM2、CLOSE2时本实验如何进行。

同使用OPEN1、COM1和CLOSE1时连接方法类似,把D1区J52接口的LED1、LED2与C7区J103接口的OPEN2,CLOSE2分别相连,另外C7区J103接口的COM2接地(GND)即可。

2. 请同学再思考一下,继电器的用途,并举例说明。

继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 按照其工作原理可有以下应用:电磁继电器固体继电器温度继电器舌簧继电器时间继电器高频继电器极化继电器其他类型的继电器

八、 实验总结及相关问题

由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验了解了继电器的控制方法。对继电器这一器件有了一定了解。

因篇幅问题不能全部显示,请点此查看更多更全内容