微控制器实验报告(xp)
微控制器实验报告
学 院: 信息科学与工程学院 专业班级: 自动化0801 姓 名: 学 号:
指导老师: 李志民老师
目录
第一章 实验概述........................................................................................................ 1 第二章 软件实验.......................................................................................................... 2
2.1 清零程序设计................................................................................................. 2
2.1.1 程序流程图........................................... 2
2.1.2 汇编程序............................................. 2 2.1.3 实验结果............................................. 2 2.2 拆字程序设计 .............................................................................................. 3 2.2.1 程序流程图........................................... 3
2.2.2 汇编程序............................................. 3 2.2.3 实验结果............................................. 4 2.3 拼字程序设计 .............................................................................................. 4 2.3.1 程序流程图........................................... 5
2.3.2 汇编程序............................................. 5 2.3.3 实验结果............................................. 6 2.4 数据传输程序设计 ...................................................................................... 6 2.4.1 程序流程图........................................... 6
2.4.2 汇编程序............................................. 6 2.4.3 实验结果............................................. 7 2.5 散转程序设计 .............................................................................................. 8 2.5.1 程序流程图........................................... 8
2.5.2 汇编程序............................................. 8 2.5.3 实验结果............................................. 9 2.6 排序子程序设计 ........................................................................................ 10 2.6.1 程序流程图.......................................... 10
2.6.2 汇编程序............................................ 10
第三章 硬件实验....................................................................................................... 11
3.1 数字量输入输出实验 ................................................................................ 12 3.1.1 实验要求........................................... 12
3.1.2 程序流程图.......................................... 12
3.1.3 源程序.............................................. 12 3.1.4 接线图及仿真结果.................................... 12 3.2 定时器/计数器实验 ................................................................................... 13 3.3.1 实验要求............................................ 13
3.2.2 程序流程图.......................................... 13 3.2.3 源程序.............................................. 14 3.2.4 接线图及仿真结果.................................... 15 3.3 A/D、D/A转换实验.................................................................................. 17 3.3.1 实验要求........................................... 17
3.3.2 程序流程图.......................................... 18 3.3.3 源程序.............................................. 18 3.3.4 接线图及仿真结果.................................... 19 3.4 串口通讯实验 ............................................................................................ 20 3.4.1 实验要求........................................... 20
3.4.2 程序流程图.......................................... 20 3.4.3 源程序.............................................. 21 3.4.4 接线图及仿真结果.................................... 22
第四章 心得体会........................................................................................................ 24
第一章 实验概述
单片机原理及应用课程为一门理论与实践相结合的课程,本课程安排的实验旨在培养学生软硬件开发能力,用编程语言、C语言及硬件设备实现串、并行通讯、计数/定时、A/D、D/A等硬件接口的功能,进一步加深对常用硬件芯片的了解和应用,以及学习用单片机解决实际问题。实验要求学生利用编程语言或C语言及硬件设备实现单片机的方案设计、程序编写、硬件连接、调试,从中体会具体硬件接口的应用技巧,进一步理解硬件接口芯片,逐步掌握单片机系统的开发和应用方法。
实验平台是TD-51系统板。TD-51系统板为开放的最小单片机系统,采用具有在系统可编程(ISP)技术和在应用可编程(IAP)技术的增强型51单片机,单片机内置仿真程序,可以实验调试、仿真功能,配合TD系列微机接口教学平台课开展单片机原理及应用的实验教学。TD-51系统板上提供了一片SST89E554RC,该器件是SST公司推出的8位微控制器FlashFlex51家族中的一员,与8051兼容。
1
第二章 软件实验
2.1 清零程序设计
2.1.1 程序流程图
图2-1-1 清零程序流程图
2.1.2 汇编程序
ORG 0000H LJMP MAIN ORG 0100H
MAIN: MOV A, #01H ; 因清零的结果看不出来,所以改成将内容改为1。
MOV R0, #00H ;循环1000H次 MOV R1, #10H
MOV DPTR, #7000H ;DPTR作为外部存储器的地址指针 AGAIN: MOVX @DPTR, A INC DPTR DJNZ R0, AGAIN DJNZ R1, AGAIN
SJMP $ ;设置断点 END
2.1.3 实验结果
图2-1-2 单步运行第一步
图2-1-3 运行最后一步
2.2 拆字程序设计
2.2.1 程序流程图
图2-2-1 拆字程序流程图
2.2.2 汇编程序
ORG 0000H LJMP MAIN ORG 0100H
MAIN: MOV DPTR, #7000H
;DPTR做外部存储器地址指针 ;给存储单元赋值
MOV A, #28H MOVX @DPTR, A
MOVX A, @DPTR MOV B, A SWAP A ANL A, #0FH INC DPTR MOVX @DPTR, A MOV A, B ANL A, #0FH INC DPTR MOVX @DPTR, A SJMP $ END
;取出存储单元值
;取高四位
;取低四位
;设置断点
2.2.3 实验结果
图2-2-2 给存储器赋值
图2-2-3 拆分结果
2.3 拼字程序设计
2.3.1 程序流程图
2.3.2 汇编程序
ORG 0000H LJMP MAIN ORG 0100H
MAIN: MOV DPTR, #7000H
MOV A, #15H MOVX @DPTR, A INC DPTR MOV A, #37H MOVX @DPTR, A MOV DPTR, #7000H MOVX A,@DPTR ANL A, #0FH SWAP A
MOV B, A INC DPTR MOVX A,@DPTR ANL A, #0FH ORL A, B
INC DPTR MOVX @DPTR, A
2-3-1 拼字程序流程图
;DPTR做外部存储器的地址指针
;给存储空间赋值
;读取7000H的值 ;取低四位
;移至高四位存到B中
;读取7001H的值 ;取低四位
;合并
;存至7002H中
图
SJMP $ END
;设置断点
2.3.3 实验结果
图2-3-2 存储空间赋值
图2-3-3 拼字结果
2.4 数据传输程序设计
2.4.1 程序流程图
图2-4-1 数据传输程序流程图
2.4.2 汇编程序
ORG 0000H LJMP MAIN ORG 0100H
MAIN: MOV R2,#70H
MOV R3,#00H ;源地址
MOV R4,#71H
MOV R5,#00H ;目的地址
MOV R6,#00H
MOV R7,#07H ; MOV R1,#10H MOV R0,#07H MOV DPH,R2 MOV DPL,R3 MOV A,R1 L0: MOVX @DPTR,A
INC DPTR
DJNZ R0,L0 ;L2: MOV R7,#0FFH L1: MOV DPH,R2 MOV DPL,R3 MOVX A,@DPTR
INC DPTR MO R2,DPH
MOV R3,DPL MOV DPH,R4 MOV DPL,R5 MOVX @DPTR,A INC DPTR MOV R4, DPH MOV R5, DPL DJNZ R7, L1 DJNZ R6, L2 SJMP $ END
2.4.3 实验结果
传送个数 赋值
图2-4-2 原存储空间中的数据
图2-4-3 数据传送结果
2.5 散转程序设计
2.5.1 程序流程图
图2-5-1 散转程序流程图
2.5.2 汇编程序
ORG 0000H LJMP MAIN ORG 0100H
MAIN: MOV R0,#02 MOV A,R0
RL A
ADD A,R0
;散装首地址 ;散转指令
;表中存放转移指令
MOV DPTR,#TA
JMP @A+DPTR
TA: LJMP PM0 LJMP PM1
LJMP PM2 LJMP PM3 LJMP MAIN LJMP MAIN LJMP MAIN LJMP MAIN
PM0: MOV R1,#01H PM1: MOV R2,#02H PM2: MOV R3,#03H PM3: MOV R4,#04H OVER: SJMP $ END
2.5.3 实验结果
1、当修改A=02H时跳转到pwm2 即使
R1=03
图2-5-2 A=02H
2、当修改A=00H时,使R1=01,结果如下:
图2-5-3 A=00H
2.6 排序子程序设计
2.6.1 程序流程图
图2-6-1 排序流程图
2.6.2 汇编程序
ESELSORT :MOV R7,N DEC R7 ESST1 :MOV A,R7 MOV R6,A MOV DPL,ADDPL MOV R1,DPL MOV DPH,ADDPH MOV R0,DPH MOVX A,@DPTR MOV B,A ESST2 :INC DPTR MOVX A,@DPTR CLR C SUBB A,B JC ESST3
MOV R0,DPL
MOV R1,DPH MOVX A,@DPTR MOV B,A
ESST3 :DJNZ R6,ESST2 MOVX A,@DPTR
XCH A,B MOVX @DPTR,A MOV DPL,R0 MOV DPH,R1 MOV A,B MOVX @DPTR,A DJNZ R7,ESST1 RET
第三章
;R7装入要要排序的无符号数个数
;DPTR做外部存储器地址指针
;后数小于前数,不变
;后数大于前数,两数交换位置
;一轮未比较完继续比较 ;一轮比较完,开始第二轮
;所以数比较完毕,排序完成
硬件实验
3.1 数字量输入输出实验
3.1.1 实验要求
P1口是8位准双向口,没以为均可独立定义为输入输出。编写实验程序,将P1口得低四位定义为输出,高四位定义为输入,数字量从P1口得高四位输入,从P1口得低四位输出控制发光二极管的亮灭。 3.1.2 程序流程图
图3-1-1 数字量输入输出程序流程图
3.1.3 源程序
ORG 0000H
MAIN: ORL P1,#0FH
MOV A, P1 SWAP A MOV P1,A SJMP MAIN END
;将P1口的低四位作为输出 ;取P1口的高字节,定义为输入
3.1.4 接线图及仿真结果
图3-1-2 仿真结果
3.2 定时器/计数器实验
3.3.1 实验要求
1、使用定时器0与定时器1进行定时,在P1.0和P1.1引脚上输出方波,通过示波器观察波形输出,计量并记录方波周期。
2、将定时/计数器1设定为计数方式,每次在P1.0引脚上取反一次,观察发光二极管的状态变化。 3.2.2 程序流程图
图3-2-1 要求1的主程序流程图及中断流程图
图3-2-2 要求2的主程序流程图及中断流程图
3.2.3 源程序
1、要求1:
ORG 0000H LJMP MAIN ORG 000BH LJMP ZH0 ORG 0001BH LJMP ZH1
MAIN: MOV TMOD,#11H
MOV TH0,#0F8H MOV TL0,#00H MOV TH1,#0F8H MOV TL1,#00H SETB EA SETB ET0 SETB ET1 SETB TR0 SETB TR1 SJMP $
;定时器0中断入口
;定时器1中断入口
;设置定时器工作方式 ;装入计数初值
;开总中断 ;开定时器中断
;启动定时器
ZH0: MOV TH0,0F8H
MOV TL0,00H CPL P1.0 RETI
ZH1: MOV TH1,0F8H
MOV TL1,#00H CPL P1.1 RETI END
2、要求2:
ORG 0000H SJMP MAIN ORG 001BH
SJMP DSHI1
MAIN: MOV TMOD,#60H
MOV TH1,#0F6H MOV TL1,#0F6H SETB EA SETB TR1 SJMP $
DSHI1: CPL P1.0
RETI END
3.2.4 接线图及仿真结果 1、要求1实验结果如下。;定时器0中断服务程序
;定时器1中断服务程序
;定时器1中断程序入口
;设定工作方式,装入计数初值
;中断服务程序,实现P1.0取反
图3-2-3 Protues仿真接线图
图3-2-4 示波器观察到的波形
2、要求2 的实验结果:发光二极管在闪烁,每隔10s亮灭,仿真结果如下所示:
图3-2-5 某一时刻发光二极管亮
图3-2-6 上图过10S后发光二极管灭
3.3 A/D、D/A转换实验
3.3.1 实验要求
1、编写实验程序,将ADC单元中提供的0V~5V信号源作为ADC809的模拟输入量,进行A/D转换,转换结果通过变量进行显示。
2、设计实验电路图实验下怒并编写程序,实现D/A转换,要求产生锯齿波、脉冲波,并用示波器观察输出电压波形。
3.3.2 程序流程图
3.3.3 源程序 1、A/D转换程序
ORG 0000H SJMP MAIN ORG 0013H SJMP AD
MAIN: SETB EA
SETB EX1
MOV DPTR, #7F00H MOVX A,@DPTR SJMP $
AD:
MOV DPTR, #7F08H MOVX A,@DPTR MOV R2, A RETI END
18
2、D/A转换程序
ORG 0000H AJMP MAIN ORG 0100H
MAIN: MOV DPTR,#7FFFH
MOV A,#0
LP1: MOVX @DPTR,A
INC A
CJNE A,#255,LP1 END
3.3.4 接线图及仿真结果
图3-3-3 A/D转换Protues仿真接线图
19
图3-3-3 D/A转换Protues仿真接线图
3.4 串口通讯实验
3.4.1 实验要求
编写实验程序,每隔一定的时间单片机向串口发送一次数据“Xi’an Tangdu Corp” 3.4.2 程序流程图
20
图3-4-1 串口通讯实验流程图
3.4.3 源程序
ORG 0000H SJMP MAIN ORG 001BH SJMP CK
MAIN: MOV SP,#60H
MOV SCON,#50H MOV PCON,#80H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB EA SETB ET1 SETB TR1 SJMP $
;等待中断
;开中断
;设置堆栈起始位置 ;初始化
;串口中断服务程序入口
21
CK:
MOV DPTR,#TAB MOV R7,#00H LOOP: MOV A,R7 MOVC A,@A+DPTR MOV C,P MOV ACC.7,C MOV SBUF,A WAIT:JNB TI,WAIT CLR TI INC R7
CJNE R7,#12,LOOP RETI
TAB: DB 'XIANTANGDU'
DB 0DH,0AH END
;表格
;中断服务程序
3.4.4 接线图及仿真结果
以下是从不同监视窗口输出的结果。
图3-4-2 Protues仿真及虚拟终端输出结果
22
图3-4-3 串口监视界面
图3-4-4 串口监视输出窗口
23
第四章 心得体会
早在上个学期期末的时候就用单片机做了微机原理的课程设计,那时候用的是C语言编程。但是那时候接触单片机对它的理解并不是很深。记得当时做的是时钟设计,硬件电路相对比较简单,主要是软件编程。而且但是应为就用到了定时器和中断这两部分,所以关于单片机并没有一个整体的认识。这个学期选修了微控制器这门课,真正接触到了早有耳闻的单片机。系统学习了单片机的原理,然后跟着老师或者是实验室的学长学姐们做实验。
从最开始的软件实验,到后来做的硬件实验;从Keil再到后来的Protues仿真,由简单到复杂,层层深入,让我掌握了很多单片机的重要内容和部分应用。
当然,学习的过程总是会有不少的困难。一开始做实验对芯片、实验平台等资源还不太熟悉。通过阅读实验指导书,请教老师同学,后来也就慢慢熟悉起来,操作也变得顺手了。后来用到Protues仿真,这下我就有点懵了。从来没有用过这个软件做仿真。但是它对我们来说是一个很必要的设计工具,所以必须要学会。不会,硬着头皮也要上。学长有时候会给我们演示仿真过程,但是速度比较快,而且这个软件界面又是英文的,要立刻掌握也不容易,但是我发现实验室的电脑上有学习的视频,所以每次不会的时候我就看看视频,这样就慢慢会用 ,虽然用得还不太好。
单片机的实验,不仅让我更加了解单片的应用价值,掌握单片机的原理,而且也学到了学习的方法和解决问题的方法,让我受益匪浅。
24