单片机实验报告 - 图文

更新时间:2023-12-16 14:48:01 阅读量: 教育文库 文档下载

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

单片机实验报告

单片机实验报告

专业班级: 11网络

学 号: 201127020104

姓 名: 宋赫

指导老师: 单国全

目 录

一、实验目的及要求 ?????????????????????1 二、实验基本内容 ??????????????????????1 三、实验设备 ????????????????????????3 四、实验设计思想和结果分析 ??????????????????6 4.1清零程序与拆字程序设计 ?????????????????6 4.2拼字程序与数据传送程序 ?????????????????7 4.3 排序程序与散转程序 ???????????????????10 4.4 数字量输入输出实验 ???????????????????15

1

单片机实验报告

4.5定时器/计数器实验 ???????????????????17 4.6 A/D、D/A转换实验 ????????????????????20 4.7 串行通讯实验 ??????????????????????25 五、结束语 ????????????????????????? 29

一、 实验目的及要求:

1、学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试

与脱机运行间的切换方法;

2、熟悉TD-51单片机系统板及实验系统的结构及使用;

3、进行MCS51单片机指令系统软件编程设计与硬件接口功能设计;

4、学习并掌握Keil C51与Proteus仿真软件联机进行单片机接口电路的设

计与编程调试;

5、完成指定MCS51单片机综合设计题

二、实验基本内容(TD-51单片机实验系统实现)

2

单片机实验报告

实验一 清零程序与拆字程序设计

根据实验指导书之“第二章 单片机原理实验”(P17~P23页)内容,熟悉实验环境及方法,完成思考题1、2(P23)基础实验项目。

实验二 拼字程序与数据传送程序设计

汇编语言完成实验指导书P24思考题3、4题的基础实验项目。

实验三 排序程序与散转程序设计

汇编语言完成实验指导书P24思考题5、6题的基础实验项目。

实验四 数字量输入输出实验

基本部分:阅读、验证C语言程序功能。使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目(P36),。

提高部分:(任选一题)

题目一:LED交通灯控制(使用8255接口芯片)

要求:使用汇编语言编程,功能为:通过开关实现LED灯工作方式即时

控制,完成LED交通灯的开关控制显示功能和LED交通灯自动循环显示功能。

题目二:LED灯控制(使用8255接口芯片)

要求:使用汇编语言编程,功能为:通过KK1实现LED灯工作方式即时

控制,完成LED开关控制显示和LED灯左循环、右循环、间隔闪烁功能。

题目三:键盘扫描与数码管显示设计

要求:阅读、验证P69上的C语言参考程序功能。用汇编语言完成编程与功能调试。

实验五 定时器/计数器实验

基本部分:阅读、验证C语言程序功能。使用汇编语言编程,完成实验指

导书之“3.3 定时/计数器实验”基本实验项目(P40)。 提高部分:(任选一题完成)

题目一:定时器控制LED灯

要求:由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。编写程序模拟时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮??一直循环下去。

题目二:计数器实验

要求:单片机内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。使用T1作定时器,50ms中断一次,看T0内每0.50来了多少脉冲,将其数值按二进制在LED灯上显示出来,5秒后再次测试。

题目三:急救车与交通灯(外部中断实验)

要求:完成交通灯基本功能基础上,当有急救车到达时,两向

3

单片机实验报告

交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。本实验题以按键为中断申请,表示有急救车通过。

实验六 A/D、D/A转换实验

基本部分:阅读、验证C语言程序功能。使用汇编语言编程,完成实验指

导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目(P67)。

提高部分:(要求:Proteus环境下完成)

小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

实验七 串行通讯实验

基本部分:阅读、调试C语言程序功能。使用汇编语言编程,完成实验

指导书之“3.7 串口通讯实验”项目。(要求:实验仪器上完成)

提高部分:(要求:Proteus环境下完成)

题目一:利用单片机实验系统,实现与PC机通讯。功能要求:将从

实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

题目二:进行实验六、实验七实验内容综合。

三、 实验设备

软件设备:KEIL uv2, PROTEUS7.4

硬件设备:PC机,TD-51系统板(包括SST89E554RC单片机一片、串行通信线、接口等)

1、TD-51系统板 1 系统构成 ○

TD-51 系统板为开放的最小单片机系统,采用具有在系统可编程和在应用可编程技术的增强型51 单片机,单片机内置仿真程序,可以实现调试、仿真功能,配合TD 系列微机接口教学 实验平台可开展单片机原理及应用的实验教学。

4

单片机实验报告

2 系统功能特点 ○

1. 取代硬件仿真器的增强型单型

系统采用具有在系统可编程(ISP)和在应用可编程(IAP)技术的增强型51 单片机,单片机内置仿真程序,完全取代传统的硬件仿真器和编程器。这种先进的单片机将仿真系统和应用系统合二为一,大大降低了应用开发成本,极大地提高了研发效率。把单片机的仿真开发和应用设计提高到一个崭新的技术领域。

2. 先进的集成开发调试调

使用业界著名的Keil C51 集成开发环境作为实验设计、调试的工具。Keil C51 提供了强大的调试功能,可单步、断点、全速运行程序,可观察寄存器区、ROM 变量区、RAM 变量区等的内容。支持汇编语言和C 语言的源语言调试。

3. 灵活的组合组

采用开放的系统板结构,可以灵活地配合各型号接口实验平台开展单片机的应用教学。

4. 丰富的实验内容

提供了丰富的原理及接口应用实验。配合接口实验平台可完成数字量输入/输出、中断、定时器/计数器、看门狗、低功耗、PCA、串口通讯、静态存储器、FLASH、A/D、D/A、键盘及数码显示、电子音响、点阵LED、LCD、步进电机、直流电机、温度控制等实验内容。

2、SST89E554RC简介

TD-51 系统板上提供了一片SST89E554RC,该器件是SST 公司推出的8 位微控制器FlashFlex51 家族中的一员,具有如下特征: ·\?2X8051 兼容,嵌入SuperFlash 存储器 - 软件完全兼容 - 开发工具兼容 - 引脚全兼容

·\?7X作电压5V,工作时钟0~40MHz ·1Kbyte 内部RAM

·\?4X块SuperFlash EEPROM,主块32Kbyte,从块8Kbyte,扇区为128Byte ·\?7X三个高电流驱动端口(每个16mA) ·\?7X个16 位的定时器/计数器

5

单片机实验报告

INC DPTR

MOVX @DPTR,A ;获得结果 SJMP $ END

数据传输程序

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV R2,#10H ;源RAM区的第一个地址 MOV R3,#19H ;源RAM区的第二个地址 MOV R4,#22H ;目的RAM区的第一个地址 MOV R5,#2BH ;目的RAM区的第二个地址 MOV R6,#02H ;第一次传输的字节数据个数 MOV R7,#03H ;第二次传输的字节数据个数 L1: MOV B,R2 MOV R0,B MOV A,@R0

MOV B,R4 MOV R1,B MOV @R1,A INC R2 INC R4

DJNZ R6,L1 ;完成第一路的数据传输 L2: MOV B,R3 MOV R0,B MOV A,@R0 MOV B,R5 MOV R1,B MOV @R1,A INC R3 INC R5

DJNZ R7,L2 ;完成整个的数据传输 SJMP $ END

结果分析:在拼字程序中,用了SWAP A,方便实现了数据高四位与低四位的交换。数据传送实验中,其重点是对地址变化的把握。将初始地址与及传送地址都用加1指令实现地址变化。

实验三 排序程序与散转程序设计

实验步骤及结果分析:

11

单片机实验报告

排序实验:

(1)编写实验程序,编译、链接无误后联机调试;

(2)为 30H~39H 赋初值,如:在命令行中键入 E CHAR D:30H=9, 11H, 5, 31H, 20H, 16H,1, 1AH, 3FH, 8 后回车,可将这 10 个数写入 30H~39H 中;

(3)将光标移到语句行命令,将程序运行到该行;

(4)查看存储器窗口中 30H~39H 中的内容,验证程序功能;

(5)重新为 30H~39H 单元赋值,反复运行实验程序,验证程序的正确性。

实验流程图

程序清单: 散转程序:

ORG 0000H LJMP MAIN ORG 0100H

MAIN : MOV A,#01H MOV R2,A RL A

ADD A,R2

MOV DPTR,#PTAB JMP @A+DPTR PTAB: LJMP PM0 LJMP PM1 LJMP PM2 LJMP PM3

PM0: [程序体0]

12

单片机实验报告

PM1: [程序体1] PM2: [程序体2] PM3: [程序体3]

SJMP $ END 冒泡排序子程序:

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV R0,#10H ;初始地址

MOV R7,#04H ;外循环次数(参与比较的数的个数-1) ACALL MAOP SJMP $ MAOP:

L1: MOV A,R0 ;赋给初始地址 MOV R1,A

INC R1 ;取第二个数的地址 MOV A,R7

MOV R6,A

L2: MOV A,@R0 CLR C

SUBB A,@R1 ;两数进行比较

JC L3 ;前数小于后数则保持位置不变 MOV A,@R0 ;否则,交换位置 XCH A,@R1

MOV @R0,A L3: INC R1

DJNZ R6,L2 ;内循环是否完成 INC R0

DJNZ R7,L1 ;外循环是否完成 RET ;返回主程序 END

实验四 数字量输入输出实验

实验步骤:(1)按图11接好试验线路图,图中圆圈表示不要通过排线连接 (2)编写实验程序,编译链接无误后进入调试状态 (3)运行实验程序,观察实验现象,验证程序正确性

13

单片机实验报告

(4)按复位键,结束程序运行,退出调试状态

实验硬件接线图:

程序清单: 基础部分:

ORG 0000H LJMP MAIN ORG 0100H

MAIN : MOV P1,#0FFH ;初始化

MOV A,P1 ;将输入写进累加器A SWAP A ANL A,#0FH

MOV P1,A ;输出显示

LJMP MAIN ;循环不断检测P1口输入端的新状态 SJMP $ END LED灯控制:

ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV TMOD, #60H ;设置T1为模式2,外部计数方式 MOV TH1,#0FFH ;T1计数器赋初值 MOV TL1,#0FFH MOV DPTR,#7300H MOV A,#80H MOVX @DPTR,A MOV DPTR,#7100H

SETB TR1 ;开启计数器

LEFT: MOV R0,#08H ;左循环 MOV A,#01H

14

单片机实验报告

A1: MOVX @DPTR,A LCALL DELAY RL A

DJNZ R0,A1

JBC TF1,RIGHT ;查询T1溢出标志,TF1=1时转移 JMP LEFT

RIGHT: MOV R0,#08H ;右循环 MOV A,#80H A2: MOVX @DPTR,A LCALL DELAY RR A

DJNZ R0,A2

JBC TF1,SHANSHUO ;查询T1溢出标志,TF1=1时转移 JMP RIGHT

SS: MOV R0,#08H ;闪烁 LP1: MOV A,#55H MOVX @DPTR,A LCALL DELAY MOV A,#0AAH MOVX @DPTR,A LCALL DELAY DJNZ R0,LP1

JBC TF1, LEFT ;查询T1溢出标志,TF1=1时转移 JMP SHANSHUO DELAY: MOV R1,#0FFH DEL1: MOV R2,0FFH DEL2: DJNZ R2, DEL2 DJNZ R1,DEL1 RET SJMP $

END

结果分析:

基本数字量输入输出实验其重点在于对单片机的准双向口的理解。即在用作输入时,口锁存器必须先写入“1”。而作为输出时则可直接使用。

利用计数器T1外部技术方式,当外部输入脉冲引脚上出现电平负跳变时,

15

单片机实验报告

程序流程图:

开始 对输入端采样 启动A/D转换 等待转换结束 读取转换结果 为下次采样做准备 N 结Y 结束 ○

4A/D转换实验流程图

程序清单: A/D转换程序

#include \ #include \#define STARTAD XBYTE[0x7F00] #define ADRESULT XBYTE[0x7F08] sbit ADBUSY = P3^3; void Delay()

{

unsigned char i ;

for(i=0; i<100; i++); } unsigned char AD0809(void) { unsigned char result; STARTAD = 0; //启

21

单片机实验报告

动AD while(ADBUSY == 1);/等待转换结束 Delay();

result = ADRESULT;

return result; //返回转换结果 }

void main(void) {

unsigned char ADV; while(1) {

ADV = AD0809(); Delay(); } } D/A转换程序:

#include #define DA XBYTE[0x7FFF] void main(void) {

unsigned int i; while(1) {

for(i=0; i<255; i++) DA = i; //写DA } }

灯程序:

ORG 0000H

LJMP MAIN ORG 0100H

MAIN:

A0: MOV P1,#0FH MOV C,90H JNC FANG MOV C,91H

MOV DPTR,#7FFFH MOV A,#00H MOVX @DPTR,A JNC JU MOV C,92H JNC SAN JMP A0

//变量 //设置断点 LED 22

单片机实验报告

FANG: MOV P1,#1FH ;方波

LCALL FANGBO

JMP A0

JU: MOV P1,#2FH ;锯齿波 LCALL JUCHI JMP A0

SAN: MOV P1,#3FH ;三角波 LCALL SANJIAO

JMP A0

FANGBO: MOV DPTR,#7FFFH MOV A,#0FFH MOVX @DPTR,A LCALL DELAY MOV A,#00H MOVX @DPTR,A LCALL DELAY RET

JUCHI: MOV DPTR,#7FFFH MOV A,#00H A1: MOVX @DPTR,A LCALL DELAY INC A

CJNE A,#00H,A1 RET

SANJIAO: MOV DPTR,#7FFFH MOV A,#00H A2: MOVX @DPTR,A LCALL DELAY INC A

CJNE A,#0FFH,A2

A3: DEC A

LCALL DELAY MOVX @DPTR,A CJNE A,#00H,A3 RET

DELAY: MOV R6,#0FH DEL1: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL1 RET SJMP $ END

23

单片机实验报告

结果分析:A/D实验重点在于采样的时间以及转换精度。首先要考虑采样定理,并且还要保证A/D转换所需的最短时间。另外无论A/D、D/A实验中,参考电压Vref的精度对实验有着巨大的影响。

D/A实验主要是对输出波形的变化监视。三角波的产生原理与锯齿波相同,只需在锯齿波计数达到最大值0FFH时,再逐渐减1减小到00H(锯齿波产生则直接从0重新开始),如此反复。另外对波形影响较大的是保持时间,即实验中的delay()函数决定的延迟时间。

实验七 串行通讯实验

实验步骤:

(1)串口通讯实验电路如图3-7-1 所示;

(2)编写实验程序,经编译、链接无误后启动调试; (3)进入调试界面,点击命令,打开串口1 监视窗口; (4)运行实验程序,观察此时有如图3-7-2 所示输出;

(5)阅读1.7 节的内容,首先将系统程序由SoftICE 切换到启动加载程序; (6)将编译生成的Hex 文件通过SSTEasyIAP11F.EXE 软件下载到单片机内部Flash 中;

(7)复位单片机,打开超级终端或串口调试软件,将端口号及波特率等设置好,观察PC显示,如图3-7-3 和图3-7-4 所示;

(8)实验结束,重新将SoftICE 下载到单片机系统区替换启动加载程序。

实验原理及原理图:

MCS-51 单片机内部的全双工串行接口部分,包含有串行接收器和串行发送器。有两个物理上独立的接收缓冲器和发送缓冲器。接收缓冲器只能读出接收的数据,但不能写入。发送缓冲器只能写入发送的数据,但不能读出。因此可以同时收、发数据,实现全双工通讯。两个缓冲器是特殊功能寄存器SBUF,它们公用地址为99H,SBUF 是不可位寻址的。此外,还有两个寄存器SCON 和PCON 分别用于控制串行口的工作方式以及波特率,定时器T1 可以用作波特率发生器 SST89E554RC 提供了增强型全双工串行接口,具有帧错误检测和自动地址识别的功能。

由于SST89E554RC 的串口用作调试目的,所以Keil C51 软件提供了串口模拟窗口,可以借助此窗口调试串口通讯程序。也可以将程序编译生成目标代码(.HEX),脱机运行。

24

单片机实验报告

实验接线图:

○1串行通讯仿真接线图

程序清单:

AJMP MAIN ORG 0023H AJMP URT

ORG 0030H MAIN: MOV P1,#00H

LCALL URTINIT

START: MOV P0,#0FH

MOV A,P0 CPL A

ANL A,#0FH JZ START LCALL DELAY MOV P0,#0FH MOV A,P0 ANL A,#0FH MOV R7,A

25

单片机实验报告

MOV P0,#0F0H MOV A,P0 ANL A,#0F0H ORL A,R7

CJNE A,#0EEH,K1 MOV A,#30H MOV SBUF,A JNB TI,$ CLR TI

K1: CJNE A,#0DEH,K2

MOV A,#31H MOV SBUF,A JNB TI,$ CLR TI

K2: CJNE A,#0BEH,K3

MOV A,#39H MOV SBUF,A JNB TI,$ CLR TI

KA: CJNE A,#0BBH,KB MOV A,#32H

MOV SBUF,A JNB TI,$ CLR TI

K3: CJNE A,#7EH,K4

MOV A,#33H MOV SBUF,A JNB TI,$ CLR TI

K4: CJNE A,#0EDH,K5

MOV A,#34H MOV SBUF,A JNB TI,$ CLR TI

K5: CJNE A,#0DDH,K6

MOV A,#35H MOV SBUF,A JNB TI,$ CLR TI

K6: CJNE A,#0BDH,K7

MOV A,#36H MOV SBUF,A JNB TI,$ CLR TI

K7: CJNE A,#7DH,K8

26

单片机实验报告

MOV A,#37H MOV SBUF,A JNB TI,$ CLR TI

K8: CJNE A,#0EBH,K9

MOV A,#38H MOV SBUF,A JNB TI,$ CLR TI

K9: CJNE A,#0DBH,KA

MOV A,#41H MOV SBUF,A JNB TI,$ CLR TI

KB: CJNE A,#7BH,KC

MOV A,#42H MOV SBUF,A JNB TI,$ CLR TI

KC: CJNE A,#0E7H,KD

MOV A,#43H MOV SBUF,A JNB TI,$ CLR TI

KD: CJNE A,#0D7H,KE

MOV A,#44H MOV SBUF,A JNB TI,$ CLR TI

KE: CJNE A,#0B7H,KF

MOV A,#45H MOV SBUF,A JNB TI,$ CLR TI

KF: CJNE A,#77H,K0

MOV A,#46H MOV SBUF,A JNB TI,$ CLR TI K0: LJMP START URTINIT:

MOV SCON,#50H ;设置成串口工作方式在8位URT MOV TMOD,#20H ;设置T1为可重装8位定时器 MOV TL1,#0FDH ;256-FOSC/BTL/32/12

27

单片机实验报告

MOV TH1,#0FDH

SETB TR1 ;开启定时器 SETB ES ;开启串口中断 SETB EA ;开总中断 RET URT: CLR C

MOV A,SBUF ;接收到数据后将数据返回 MOV P1,A

NEXT1:CLR RI ;清接收中断标志 RETI

DELAY: MOV R6,#0ffh DEL1: MOV R5,#0ffh DJNZ R5,$ DJNZ R6,DEL1 RET END

结果分析:串行总线是单片机的特色。本实验通过两种方式验证的串口的通信。ISP模式下,采用计算机软件实现串口监视。另一种是指IAP模式下,对输入计算机串口的数据进行跟踪。串行通信的重点在于异步通信时波特率的选择,以及传送位数的规定。通过串口的通讯,计算机可以实现与D/A、A/D、PC机以及其他单片机的通信,还可以由不同的协议构成各种网络结构,方便了单片机系统的嵌入式应用。

28

单片机实验报告

实验总结

我很喜欢单片机的实验,我还自己买了开发板STC—90C51,不过越是新出的板子,集成度越高,也就越省事,可是这样一来,它内部的具体的数据总线,地址总线的连接关系也就越不清楚,到了实验室,发现对具体接口的理解很局限,甚至不会对接口编程,这都是我在实验中得到的教训和经验,关于这一点我还和李老师做过交流,老师告诉我说要想学好单片机就得从最原始的入手,经过这样的训练之后,再难的都很容易学会,所以在今后的学习中,我会按照老师的建议从底层学起,学好单片机。

此次实验中利用到的编程软件为Keil C51 μVision2,但是编程语言老师要求用汇编,这对我们的要求很高,C语言虽然好用方便,可是老师告诉我们说,在实时控制和代码效率方面汇编语言具有很大的优势,而且学好了汇编语言,再学高级语言就很简单了。这些很实用的建议让我们大家都非常的受益。

在实验过程中,我还学到了一些简单的调试方法,设置断点调试,单步调试,全速调试等,而且还接触了一点PROTEUS软件仿真,这都对我们的提高有非常大的促进作用。最后感谢老师和实验室学长学姐的帮助!

29

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

Top