中南大学微控制器技术实验研究报告.docx
《中南大学微控制器技术实验研究报告.docx》由会员分享,可在线阅读,更多相关《中南大学微控制器技术实验研究报告.docx(30页珍藏版)》请在冰点文库上搜索。
![中南大学微控制器技术实验研究报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/7abb192e-8239-4737-8a46-f4026ee0ab6d/7abb192e-8239-4737-8a46-f4026ee0ab6d1.gif)
中南大学微控制器技术实验研究报告
实验目的和要求
1熟练掌握KeilC51集成开发工具的操作及调试程序的方法,包括:
仿真调试与脱机运行间的切换方法;
2熟练使用SST89C554RC单片机核心板及I/O扩展实验系统;
3熟练掌握在KeilC51与Proteus仿真软件虚拟联机环境下,基于51单片机控制器数字接口电路的硬件、软件设计与功能调试;
4完成MCS51单片机指令系统软件编程设计和硬件接口功能设计题;
硬件、软件环境要求
软件环境描述
该实验使用KeilC51集成开发环境作为实验设计、调度工具。
KeilC51提供了强大的调度功能,可单步、断点、全速运行程序,可观察寄存器区、ROM变量区、RAM变量区等的内容。
支持汇编语言和C语言的源程序语言调试。
硬件环境
本实验采用开放的系统板结构,可以灵活地配合各型号接口实验平台开展单片机的应用教案。
其提供了丰富的原理及接口应用实验。
配合接口实验平台可完成数字量输入/输出、中断、定时器/计数器、看门狗、低功耗、PCA、串口通讯、静态存储器、FLASH、A/D、D/A、键盘及数码显示、电子音响、点阵LED、LCD、步进电机、直流电机、温度控制等实验内容。
TD-51系统板上提供了一片SST89E554RC,该器件是SST公司推出的8位微控制器FlashFlex51家族中的一员,具有如下特征:
与8051兼容,嵌入SuperFlash存储器;工作电压5V,工作时钟0~40MHz;1Kbyte内部RAM;两块SuperFlashEEPROM,主块32Kbyte,从块8Kbyte,扇区为128Byte;有三个高电流驱动端口(每个16mA);三个16位的定时器/计数器;全双工、增强型UART。
八个中断源,四级优先级;可编程看门狗定时器(WDT);可编程计数阵列(PCA);双DPTR寄存器;低EMI模式(可禁止ALE);SPI串行口;标准每周期12个时钟,器件提供选项可使速度倍增,达到每周期6个时钟;低功耗模式。
实验一、清零程序与拆字程序设计
一、实验目的
1、加深对单片机存储结构的认识;
2、学会单片机基本指令的使用;
二、实验要求
1、把7000H-7FFFH的内容清零;
2、把7000H的内容拆开,高位送7001H的低位,低位送7002H的低位,7001H,7002H的高位清零,一般本程序用于将数据送显示缓冲区时用。
三、程序设计框图及程序清单
清零程序流程图
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#7000H。
片内RAM首地址
MOVA,#01H。
写入数据初值
MOVR6,#20H。
循环变量
LOOP2:
MOVR7,#80H
LOOP1:
MOVX@DPTR,A。
写数据到RAM
INCDPTR。
地址加1
DJNZR7,LOOP1
DJNZR6,LOOP2
SJMP$
拆字程序流程图
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#7000H。
MOVA,#12H。
MOVX@DPTR,A。
RRA。
RRA。
RRA。
RRA。
ANLA,#0FH。
高位送7001H低位
MOVDPTR,#7001H。
MOVX@DPTR,A。
MOVDPTR,#7000H。
MOVXA,@DPTR。
ANLA,#0FH。
低位送7002H低位
MOVDPTR,#7002H。
MOVX@DPTR,A。
SJMP$。
设置断点,观察实验结果中的内容
END
四、实验结果
清零程序
拆字程序
实验二、拼字程序与数据传送程序设计
一、实验目的
1、加深对单片机存储结构的认识;
2、学会单片机基本指令的使用;
二、实验要求
1、把7000H,7001H的低位相拼后送到7002H,一般本程序用于将显示缓冲区的数据取出组成单个字节。
2、把(R2,R3)源RAM区首址内的(R6,R7)个字节数据传送到(R4,R5)目的RAM区。
三、程序设计框图及程序清单
拼字程序框图及程序清单
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#7000H。
MOVA,#01H。
MOVX@DPTR,A。
ANLA,#0FH。
屏蔽高位
SWAPA。
MOVB,A。
MOVDPTR,#7001H。
送7001H
MOVA,#0AH。
MOVX@DPTR,A。
ANLA,#0FH。
ORLA,B。
拼送后送7002H
MOVDPTR,#7002H。
MOVX@DPTR,A。
SJMP$。
设置断点,观察实验结果中的内容
END
数据传送程序框图及程序清单
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR2,#70H。
MOVR3,#00H。
源地址
MOVR4,#71H。
MOVR5,#00H。
目的地址
MOVR6,#00H。
MOVR7,#07H。
传送个数
MOVR1,#10H。
MOVR0,#07H。
MOVDPH,R2。
MOVDPL,R3。
MOVA,R1。
L0:
MOVX@DPTR,A。
INCDPTR。
DJNZR0,L0。
赋值
L2:
MOVR7,#0FFH。
L1:
MOVDPH,R2。
MOVDPL,R3。
MOVXA,@DPTR。
INCDPTR。
MOVR2,DPH。
MOVR3,DPL。
MOVDPH,R4。
MOVDPL,R5。
MOVX@DPTR,A。
INCDPTR。
MOVR4,DPH。
MOVR5,DPL。
DJNZR7,L1。
DJNZR6,L2。
SJMP$
END
四、实验结果
拼字程序
数据传送程序
实验三、散转与排序程序设计
一、实验目的
1、掌握分支程序设计,学习散转指令的使用以及散转表的概念
2、掌握循环结构程序的设计。
二、实验要求
1、根据8032片内20H中的内容(00或01或02或03)进行散转。
2、编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。
三、程序方框图及程序清单
散转程序框图及程序清单
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#02
MOVA,R0
RLA
ADDA,R0
MOVDPTR,#TA
JMP@A+DPTR
TA:
LJMPPM0
LJMPPM1
LJMPPM2
LJMPPM3
PM0:
MOVR1,#01H
LJMPMAIN
PM1:
MOVR2,#02H
LJMPMAIN
PM2:
MOVR3,#03H
LJMPMAIN
PM3:
MOVR4,#04H
LJMPMAIN
OVER:
SJMP$
END
排序程序
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#10H。
初始地址
MOVR7,#04H。
外循环次数(参与比较的数的个数-1)
ACALLMAOP
SJMP$
MAOP:
L1:
MOVA,R0。
赋给初始地址
MOVR1,A
INCR1。
取第二个数的地址
MOVA,R7
MOVR6,A
L2:
MOVA,@R0
CLRC
SUBBA,@R1。
两数进行比较
JCL3。
前数小于后数则保持位置不变
MOVA,@R0。
否则,交换位置
XCHA,@R1
MOV@R0,A
L3:
INCR1
DJNZR6,L2。
内循环是否完成
INCR0
DJNZR7,L1。
外循环是否完成
RET。
返回主程序
END
实验四、数字量的输入输出实验
基础部分
一、实验目的
了解PI口做输入输出方式使用时,CPU对PI口的操作方式。
二、实验要求
P1口是8位准双向口,没以为均可独立定义为输入输出。
编写实验程序,将P1口得低四位定义为输出,高四位定义为输入,数字量从P1口得高四位输入,从P1口得低四位输出控制发光二极管的亮灭。
三、硬件电路原理图
四、程序设计框图及程序清单
ORG0000H
MAIN:
ORLP1,#0FH。
取P1口的高字节,定义为输入
MOVA,P1
SWAPA
MOVP1,A。
将P1口的低四位作为输出
SJMPMAIN
END
五、实验步骤
1按图接好实验线路图,图中圆圈表示不要通过排线连接
2编写实验程序,编译链接无误后进入调试状态
3运行实验程序,观察实验现象,验证程序正确性
4按复位键,结束程序运行,退出调试状态
六、接线图及仿真结果
提高部分
题目二:
LED灯控制(使用8255接口芯片)
一、实验要求
使用汇编语言编程,功能为:
通过KK1实现LED灯工作方式即时控制,完成LED开关控制显示和LED灯左循环、右循环、间隔闪烁功能。
二、硬件电路原理图
三、程序清单
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVP1,#0FFH。
初始化
MOVA,P1。
将输入写进累加器A
SWAPA
ANLA,#0FH
MOVP1,A。
输出显示
LJMPMAIN。
循环不断检测P1口输入端的新状态
SJMP$
END
LED灯控制:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVTMOD,#60H。
设置T1为模式2,外部计数方式
MOVTH1,#0FFH。
T1计数器赋初值
MOVTL1,#0FFH
MOVDPTR,#7300H
MOVA,#80H
MOVX@DPTR,A
MOVDPTR,#7100H
SETBTR1。
开启计数器
LEFT:
MOVR0,#08H。
左循环
MOVA,#01H
A1:
MOVX@DPTR,A
LCALLDELAY
RLA
DJNZR0,A1
JBCTF1,RIGHT。
查询T1溢出标志,TF1=1时转移
JMPLEFT
RIGHT:
MOVR0,#08H。
右循环
MOVA,#80H
A2:
MOVX@DPTR,A
LCALLDELAY
RRA
DJNZR0,A2
JBCTF1,SHANSHUO。
查询T1溢出标志,TF1=1时转移
JMPRIGHT
SS:
MOVR0,#08H。
闪烁
LP1:
MOVA,#55H
MOVX@DPTR,A
LCALLDELAY
MOVA,#0AAH
MOVX@DPTR,A
LCALLDELAY
DJNZR0,LP1
JBCTF1,LEFT。
查询T1溢出标志,TF1=1时转移
JMPSHANSHUO
DELAY:
MOVR1,#0FFH
DEL1:
MOVR2,0FFH
DEL2:
DJNZR2,DEL2
DJNZR1,DEL1
RET
SJMP$
END
四、接线图及仿真结果
五、结果分析
利用计数器T1外部技术方式,当外部输入脉冲引脚上出现电平负跳变时,T1计数器加一,溢出标志TF1置一,然后改变LED灯亮的方式,同时,将标志位TF1复位,进入下一轮的计数溢出等待。
因此,而形成三种亮灯方式的自动循环。
若是用开关实现三种方式的亮灯,则需要在最开始和每种亮灯之后通过8255对开关状态进行采集并进行判断。
因此事先还要先设置好哪个开关的闭合表示哪种亮灯方式。
实验五、定时器\计数器实验
一、实验目的
1、了解MCI-51单片机定/计数器工作原理。
2、了解定/计数器T0,T1在定时器和计数器两种方式的编程。
3、了解定/计数器T2可编程时钟功能。
二、实验要求
1、使用定时器0与定时器1进行定时,在P1.0和P1.1引脚上输出方波,通过示波器观察波形输出,计量并记录方波周期。
2、将定时/计数器1设定为计数方式,每次在P1.0引脚上取反一次,观察发光二极管的状态变化。
3、定时器2可作为时钟发生器使用。
三、硬件原理图
四、程序设计框图及程序清单
1、要求1实验
ORG0000H
LJMPMAIN
ORG000BH。
定时器0中断入口
LJMPZH0
ORG0001BH。
定时器1中断入口
LJMPZH1
MAIN:
MOVTMOD,#11H。
设置定时器工作方式
MOVTH0,#0F8H。
装入计数初值
MOVTL0,#00H
MOVTH1,#0F8H
MOVTL1,#00H
SETBEA。
开总中断
SETBET0。
开定时器中断
SETBET1
SETBTR0。
启动定时器
SETBTR1
SJMP$
ZH0:
MOVTH0,0F8H。
定时器0中断服务程序
MOVTL0,00H
CPLP1.0
RETI
ZH1:
MOVTH1,0F8H。
定时器1中断服务程序
MOVTL1,#00H
CPLP1.1
RETI
END
2、要求2实验
ORG0000H
SJMPMAIN
ORG001BH。
定时器1中断程序入口
SJMPDSHI1
MAIN:
MOVTMOD,#60H。
设定工作方式,装入计数初值
MOVTH1,#0F6H
MOVTL1,#0F6H
SETBEA
SETBTR1
SJMP$
DSHI1:
CPLP1.0。
中断服务程序,实现P1.0取反
RETI
END
五、实验步骤
1编写实验程序,编译、链接后联机调试;
2运行实验程序,使用示波器观察P1.0引脚上的波形并记录周期;
3变计数初值,观察实验现象,验证程序功能。
六、接线图及仿真结果
1要求1实验
2要求2实验
七、结果分析
通过实验我们可以看到使用定时器0与定时器1进行定时,在P1.0和P1.1引脚上输出方波,通过示波器观察到了波形输出,我们同时计量并记录方波周期。
实验2中我们将定时/计数器1设定为计数方式,每次在P1.0引脚上取反一次,观察发光二极管的状态变化。
实验六A/D、D/A转换实验
一、实验目的
1、学习数模,模数转换的基本原理。
2、学习模数转换芯片ADC0809的使用和数模转换芯片DAC0832。
二、实验要求
1、编写实验程序,将ADC单元中提供的0V~5V信号源作为ADC809的模拟输入量,进行A/D转换,转换结果通过变量进行显示。
2、设计实验电路图实验下怒并编写程序,实现D/A转换,要求产生锯齿波、脉冲波,并用示波器观察输出电压波形。
三、硬件原理图
ADC模数转换
AD转换接线图
AD转换单元
DAC数模转换
DA转换单元
四、程序设计框图及程序清单
ADC模数转换
ORG0000H
SJMPMAIN
ORG0013H
SJMPAD
MAIN:
SETBEA
SETBEX1
MOVDPTR,#7F00H
MOVXA,@DPTR
SJMP$
AD:
MOVDPTR,#7F08H
MOVXA,@DPTR
MOVR2,A
RETI
END
DAC数模转换
ORG0000H
AJMPMAIN
ORG0100H
MAIN:
MOVDPTR,#7FFFH
MOVA,#0
LP1:
MOVX@DPTR,A
INCA
CJNEA,#255,LP1
END
五、实验步骤
ADC模数转换
1、A/D的时钟线需要与实验平台中的系统总线单元的CLK相连;
2、编写实验程序,编译链接无误后进入调试状态;
3、将变量ADV添加到变量监视窗口中;
4、在Delay()语句行设置断点,使用万用表测量ADJ端电压值,计算对应的采样值,然后运行程序;
5、程序运行到断点处停止运行,查看变量窗口中ADV的值,与计算的理论值进行比较,看是否一致;
6、调节电位器,改变输入电压,比较ADV与计算值,反复验证程序功能。
DAC数模转换
1按实验图接好线路
2.编写实验程序,经编译、链接无误后装入系统,启动调试。
3.运行程序,用示波器测量DA的输出,观察实验现象。
4.自编写实验程序,产生三角波的形输出使,用观示察波实器验观现察象输出,验证程序功能。
六、结果分析
通过实验,观察到了ADC单元的运作过程,将ADC单元中提供的0V~5V信号源作为ADC809的模拟输入量,进行A/D转换,观察到了转换结果。
在DAC实验中从示波器中看到了要求产生锯齿波、脉冲波,并观察输出电压波形。
实验七、串行通信实验
一、实验目的
1、学习MCS-51单片机串口的工作原理及程序设计;
2、了解使用SSTEasyIAP11F.EXE软件实现程序脱机运行的方法;
3、熟悉启动加载代码与SORTICE相互切换的方法。
二、实验要求
编写实验程序,每隔一定的时间单片机向串口发送一次数据“Xi’anTangduCorp”
三、硬件原理图
四、程序设计框图及程序清单
ORG0000H
SJMPMAIN
ORG001BH。
串口中断服务程序入口
SJMPCK
MAIN:
MOVSP,#60H。
设置堆栈起始位置
MOVSCON,#50H。
初始化
MOVPCON,#80H
MOVTMOD,#20H
MOVTH1,#0FDH
MOVTL1,#0FDH
SETBEA。
开中断
SETBET1
SETBTR1
SJMP$。
等待中断
CK:
MOVDPTR,#TAB。
中断服务程序
MOVR7,#00H
LOOP:
MOVA,R7
MOVCA,@A+DPTR
MOVC,P
MOVACC.7,C
MOVSBUF,A
WAIT:
JNBTI,WAIT
CLRTI
INCR7
CJNER7,#12,LOOP
RETI
TAB:
DB'XIANTANGDU'。
表格
DB0DH,0AH
END
五、实验步骤
1接好串口通讯实验线路;
2编写实验程序,经编译、链接无误后启动调试;
3进入调试界面,点击命令,打开串口1监视窗口;
4运行实验程序,观察输出;
5将系统程序由SoftICE切换到启动加载程序;
6将编译生成的HEX文件通过SSTEasyIAP11F.EXE软件下载到单片机内部Flash中;
7复位单片机,打开超级终端或串口调试窗口软件,将端口号及波特率等设置好,观察PC显示;
8实验显示
六、接线图及仿真结果
七、结果分析
通过学习MCS-51单片机串口的工作原理及程序设计,了解使用SSTEasyIAP11F.EXE软件实现程序脱机运行的方法,同时从网上查找资料,成功地从监视窗口中每隔一定的时间单片机向串口发送一次数据“Xi’anTangduCorp”
总结
通过这四次的实验以及课后的自己的练习,我发现自己对单片机这门课程有了更深的认识,同时欣喜地发现自己的单片机实验以及学习能力有了较大幅度的提升,可谓是这一阶段的单片机学习实验受益匪浅。
在实验中我初步了掌握了单片机系统集成开发环境uVision2的使用,着手此平台的源程序编辑、调试、运行整个过程以及KeilC51集成开发工具的操作及调试程序的方法,包括:
仿真调试与脱机运行间的切换方法,AT89C51单片机核心板及I/O扩展实验系T同时做了KeilC51与Proteus仿真软件虚拟联机环境下,基于51单片机控制器数字接口电路的硬件、软件设计与功能调试。
在了解硬件的一些使用,在实验中我加深了对C语言特别是汇编语言的认识,并成功地应用编程语言进行硬件程序的编写,提高了编程能力。
在实验中,也遇到了很多的问题,我通常先自己翻出书本,尽量通过自己的巩固和学习解决问题。
如果碰到自己能力不能解决的问题,便求助于身边的同学,老师或者上网查找资料进行参考与研究,收到了不错的效果。
这次实验不仅仅提升了自己的实验和学习能力,更增强了我的细致与认真,我想这对今我的学习乃至将来的工作都有着重要的作用。