单片机实验指导

更新时间:2024-03-09 19:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 跑马灯实验 一、实验目的与要求 熟悉星研集成环境软件或熟悉Keil C51集成环境软件的使用方法。 熟悉MCS51汇编指令,能自己编写简单的程序,控制硬件。 二、实验设备 STAR系列实验仪一套、PC机一台 三、实验内容 1、熟悉星研集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。 2、照接线图编写程序:使用P1口控制F5区的8个指示灯,循环点亮,瞬间只有一个灯亮。 2、观察实验结果,验证程序是否正确。 四、实验原理图 U421234567891011121314151617181920P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST(RXD)P3.0(TXD)P3.1(INT0)P3.2(INT1)P3.3(T0)P3.4(T1)P3.5(WR)P3.6(RD)P3.7XTAL2XTAL1GND89C52VccP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VppALE/PROGPSENP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2.1(A9)P2.0(A8)4039383736353433323130292827262524232221510510510510510510510510DS42DS41DS40DS39DS38DS37DS36DS3587654321VCC五、实验步骤 1、连线说明: A3区:JP51 —— F5区:JP65 2、编写程序或运行参考程序。 3、实验结果:通过F5区的LED指示灯(8个指示灯轮流点亮),观察实验的输出结果是否正确。 六、演示程序 ORG 0000H LJMP START ORG 0100H START: MOV SP,#60H MOV A,#0FFH CLR C R118R117R116R115R114R113R112R111

START1: RLC A MOV P1,A

ACALL Delay

SJMP START1 Delay: MOV R5,#2 ;延时 Delay1: MOV R6,#0 Delay2: MOV R7,#0 DJNZ R7,$ DJNZ R6,Delay2 DJNZ R5,Delay1 RET END

如果读者使用星研集成环境软件,请考虑以下问题? 1、运行程序前,打开变量窗;

2、使用单步进入命令,运行到第六行后,运行过程中变量窗有何变化?将鼠标停留在A、SP上一秒后,出现什么?,它与变量窗使用场合的区别?

3、第九行是调用延时子程序,如何进入延时子程序(使用单步进入命令)?如何将延时子程序一下子运行完毕(使用单步命令;也可以将光标移到下一行,使用运行到光标处命令;)?单步进入命令与单步命令有何区别?

4、运行几次后,在第十行设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?

5、Delay是一个延时子程序,改变延时常数,使用全速运行命令,显示发生了什么变化?

6、观察寄存器,有哪几种方法?

1)在工作区窗的通用寄存器标签视中; 2)变量窗

3)鼠标停留在寄存器上 4)观察窗 5)寄存器窗

实验二 数据传送(RAM–>XRAM)

一、实验目的

熟悉星研集成环境软件或熟悉Keil C51集成环境软件的使用方法。 熟悉MCS51汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验内容

1、熟悉星研集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。 2、编写程序,实现内外部数据段的传送、校验。 三、程序框图

开始 堆栈指针初始化计数器、地址初始化内部RAM数据传送外部RAM一次地址指针+1 计数器-1=0?Y计数器、地址指针复位传送错误结束数据传送程序框图N取内部RAM和对应的外部RAMN比较是否相等Y地址指针+1 计数器-1=0?Y传送正确N

四、实验步骤

在内部RAM 30H ~3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM的1000H ~100FH中的内容。熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

五、程序清单 ;将内部RAM Address1 开始的16个字节送到外部RAM从Address2开始的单元里,再作比较。 Address1 DATA 30H Address2 XDATA 1000H ORG 0000H LJMP STAR ORG 0100H STAR: MOV SP,#60H MOV R0,#Address1

MOV DPTR,#Address2 MOV R7,#10H STAR1: MOV A,@R0 ;传送 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,STAR1 MOV R0,#Address1 MOV DPTR,#Address2 MOV R7,#10H STAR2: MOV B,@R0 ;比较 MOVX A,@DPTR CJNE A,B,STAR3 INC R0 INC DPTR DJNZ R7,STAR2 SJMP $ ;传送正确 STAR3: SJMP $ ;传送错误 END

如果读者使用星研集成环境软件,请考虑以下问题:

1、运行程序前,打开变量窗、二个存贮器窗(一个选择片内数据;一个选择片外数据,起始地址选择1000H),每个存贮器窗有四个标签,有何好处?;

2、使用单步进入命令,运行到第十四行后,运行过程中变量窗有何变化?将鼠标停留在A、SP、@R0、@DPTR上一秒后,出现什么?,它与变量窗使用场合的区别?

3、将光标移到第十四行上,使用运行到光标处命令,观察运行结果,体会它与单步进入命令的不同处。

4、在二十行上,设置一个断点,使用全速断点命令运行几次,观察运行结果,它与运行到光标处命令有何区别?

5、使用全速运行命令,稍后,点击工具条上停止运行命令按钮,当前执行箭头停在哪一行?运行结果是否正确?它与全速断点运行命令有何区别? 6、观察寄存器,有哪几种方法?

1)在工作区窗的通用寄存器标签视中; 2)变量窗

3)鼠标停留在寄存器上

4)观察窗 5)寄存器窗

7、查看CPU内部数据RAM、CPU片外数据RAM: 1)存贮器窗 2)变量窗

3)鼠标停留在CPU内部数据RAM、CPU片外数据RAM的地址、@R0、@DPTR上 六、思考题

编写一个程序,将外部数据RAM中的数据传送到内部数据RAM中。

实验三 双字节BCD码(十进制数)加法

一、实验目的

熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。

二、实验内容

从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

三、实验框图

开始初始化堆栈设定\键输入\通过键盘获得4位被加数(压缩BCD码)置位\后才清除LED\通过键盘获得4位加数(压缩BCD码)被加数与加数的低位字节不带进位加法十进制调整被加数与加数的高位字节带进位加法十进制调整压缩BCD码(结果)转换为非压缩BCD码高位0消隐显示结果双字节BCD加法程序框图

四、实验步骤

1、连线说明:

D3区 :CLK D3区 :CS D3区 :A0 —— B2区:2M —— A3区:CS5 —— A3区:A0 2、在F4区的键盘上输入4位被加数、加数

3、结果显示在F4区的数码管上

五、程序清单 EXTRN

Buffer F1

CODE(Display8, GetBCDKey) DATA 30H BIT 0D1H

;8字节显示缓冲区 ;PSW.1

ORG 0000H LJMP START ORG 0100H START: MOV SP,#60H CLR F1 ;先清除显示,再接收键输入 START1: MOV R0,#buffer MOV A,#4 ;按键次数 LCALL GetBCDKey ;得到双字节十进制数(被加数) SETB F1 ;接收到第一个键,才清除显示 MOV R0,#buffer+4 MOV A,#4 ;按键次数 LCALL GetBCDKey ;得到双字节十进制数(加数) MOV A,buffer+1 ADD A,buffer+5 DA A MOV buffer+5,A MOV A,buffer ADDC A,buffer+4 DA A MOV buffer+4,A CLR A RLC A Display: PUSH ACC ;显示结果 MOV R0,#buffer MOV A,buffer+5 ;低位 ACALL B1toB2 ;压缩BCD码转换成非压缩BCD码 MOV A,buffer+4 ;高位 ACALL B1toB2 POP ACC ;进位 ACALL B1toB2 MOV @R0,#10H ;最高二位消隐 INC R0 MOV @R0,#10H MOV R0,#buffer+5 MOV R7,#5 ACALL BlackDisplay ;将高位0消隐 MOV R0,#buffer LCALL Display8 SJMP START1 ;将一个字节压缩BCD码转换成二个字节非压缩BCD码 B1toB2: PUSH ACC ANL A,#0FH MOV @R0,A

INC POP ANL SWAP MOV INC

RET BlackDisplay: MOV JNZ MOV MOV DEC

DJNZ Exit: RET END

R0 ACC A,#0F0H A @R0,A R0

A,@R0 ;将高位0消隐 Exit A,#10H @R0,A R0

R7,BlackDisplay

实验四 8255控制交通灯实验 一、实验目的与要求 1、 了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。 2、 熟悉8255内部结构和与单片机的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。 3、 认真预习本节实验内容,尝试自行编写程序,填写实验报告。 二、实验设备 STAR系列实验仪一套、PC机一台 三、实验内容 1、编写程序:使用8255的PA0..2、PA5..7控制LED指示灯,实现交通灯功能。 2、连接线路验证8255的功能,熟悉它的使用方法。 四、实验原理图 VCC510U36D0D1D2D3D4D5D6D7RDWR343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7825543214039383718192021222324251415161713121110PC0PC1PC2PC3PC4PC5PC6PC7510R111R11212345678DS35DS36DS37DS38DS39DS40DS41DS42510R113510R114510R115510R116510R117510R118A0A0A1A1CS1(0F000H)CSRST 五、实验步骤 1、连线说明: B4区:CS、A0、A1 —— A3区:CS1、A0、A1 F5区:JP65 B4区:JP56(PA口) —— 2、观察实验结果,是否能看到模拟的交通灯控制过程。

六、演示程序

COM_ADD PA_ADD PB_ADD PC_ADD

STAR:

START1:

START2:

START3:

XDATA 0F003H XDATA 0F000H XDATA 0F001H XDATA 0F002H ORG 0000H LJMP STAR ORG 0100H MOV SP,#60H

MOV DPTR,#COM_ADD MOV A,#80H MOVX @DPTR,A

MOV DPTR,#PA_ADD MOV A,#0FFH MOVX @DPTR,A MOV A,#37H MOVC A,@A+PC MOVX @DPTR,A ACALL DL5S MOV R4,#6 MOV A,#30H MOVC A,@A+PC MOVX @DPTR,A ACALL DL500ms MOV A,#29H MOVC A,@A+PC MOVX @DPTR,A ACALL DL500ms DJNZ R4,START2 MOV A,#23H MOVC A,@A+PC MOVX @DPTR,A ACALL DL3S MOV A,#1EH MOVC A,@A+PC MOVX @DPTR,A ACALL DL5S MOV R4,#6 MOV A,#17H MOVC A,@A+PC MOVX @DPTR,A ACALL DL500ms MOV A,#10H

;PA、PB、PC为基本输出模式

;灯全熄灭

;东西绿灯,南北红灯

;东西绿灯闪烁,南北红灯

;东西黄灯亮,南北红灯

;东西红灯,南北绿灯

;东西红灯,南北绿灯闪烁

MOVC A,@A+PC MOVX @DPTR,A ACALL DL500ms DJNZ

R4,START3 MOV A,#0AH MOVC A,@A+PC MOVX @DPTR,A ACALL DL3S SJMP START1 DB 01111110B DB 11111110B DB 10111110B DB 11011011B DB 11011111B

DB 11011101B DL500ms: MOV R5,#25 DL500ms1: MOV R6,#100 DL500ms2: MOV R7,#100 DJNZ R7,$

DJNZ R6,DL500ms2 DJNZ R5,DL500ms1

RET

DL3S: MOV R4,#6 DL3S1: LCALL DL500ms DJNZ

R4,DL5S1

RET

DL5S: MOV R4,#10 DL5S1: LCALL DL500ms DJNZ

R4,DL5S1 RET

END

七、实验扩展及思考

1、如何对8255的PC口进行位操作?

;东西红灯,南北黄灯亮

;东西绿灯,南北红灯 ;东西绿灯闪烁,南北红灯 ;东西黄灯亮,南北红灯 ;东西红灯,南北绿灯 ;东西红灯,南北绿灯闪烁 ;东西红灯,南北黄灯亮

本文来源:https://www.bwwdw.com/article/i8ua.html

Top