中南大学信息科学与工程学院微控制器技术实验报告Word文件下载.docx
《中南大学信息科学与工程学院微控制器技术实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《中南大学信息科学与工程学院微控制器技术实验报告Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
要求:
阅读、验证P69上的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秒后再次测试。
题目三:
急救车与交通灯(外部中断实验)
完成交通灯基本功能基础上,当有急救车到达时,两向交通信号为全红,以便让急救车通过。
假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。
本实验题以按键为中断申请,表示有急救车通过。
实验六 A/D、D/A转换实验
使用汇编语言编程,完成实验指导书之“4.3A/D转换实验”项目(P64)和“4.4D/A转换实验”项目(P67)。
(要求:
Proteus环境下完成)
小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。
实验七 串行通讯实验
阅读、调试C语言程序功能。
使用汇编语言编程,完成实验指导书之“3.7串口通讯实验”项目。
实验仪器上完成)
利用单片机实验系统,实现与PC机通讯。
功能要求:
将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。
进行实验六、实验七实验内容综合。
三、实验设备
软件设备:
KEILuv2,PROTEUS7.4
硬件设备:
PC机,TD-51系统板(包括SST89E554RC单片机一片、串行通信线、接口等)
1、TD-51系统板
系统构成
TD-51系统板为开放的最小单片机系统,采用具有在系统可编程和在应用可编程技术的增强型51单片机,单片机内置仿真程序,可以实现调试、仿真功能,配合TD系列微机接口教学实验平台可开展单片机原理及应用的实验教学。
系统功能特点
1.取代硬件仿真器的增强型单型
系统采用具有在系统可编程(ISP)和在应用可编程(IAP)技术的增强型51单片机,单片机内置仿真程序,完全取代传统的硬件仿真器和编程器。
这种先进的单片机将仿真系统和应用系统合二为一,大大降低了应用开发成本,极大地提高了研发效率。
把单片机的仿真开发和应用设计提高到一个崭新的技术领域。
2.先进的集成开发调试调
使用业界著名的KeilC51集成开发环境作为实验设计、调试的工具。
KeilC51提供了强大的调试功能,可单步、断点、全速运行程序,可观察寄存器区、ROM变量区、RAM变量区等的内容。
支持汇编语言和C语言的源语言调试。
3.灵活的组合组
采用开放的系统板结构,可以灵活地配合各型号接口实验平台开展单片机的应用教学。
4.丰富的实验内容
提供了丰富的原理及接口应用实验。
配合接口实验平台可完成数字量输入/输出、中断、定时器/计数器、看门狗、低功耗、PCA、串口通讯、静态存储器、FLASH、A/D、D/A、键盘及数码显示、电子音响、点阵LED、LCD、步进电机、直流电机、温度控制等实验内容。
2、SST89E554RC简介
TD-51系统板上提供了一片SST89E554RC,该器件是SST公司推出的8位微控制器FlashFlex51家族中的一员,具有如下特征:
·
\u19982X8051兼容,嵌入SuperFlash存储器
-软件完全兼容
-开发工具兼容
-引脚全兼容
\u24037X作电压5V,工作时钟0~40MHz
1Kbyte内部RAM
\u20004X块SuperFlashEEPROM,主块32Kbyte,从块8Kbyte,扇区为128Byte
\u26377X三个高电流驱动端口(每个16mA)
\u19977X个16位的定时器/计数器
\u20840X双工、增强型UART
-帧错误检测
-自动地址识别
\u20843X个中断源,四级优先级
\u21487X编程看门狗定时器(WDT)
\u21487X编程计数阵列(PCA)
\u21452XDPTR寄存器
\u20302XEMI模式(可禁止ALE)
SPI串行接口
\u26631X准每周期12个时钟,器件提供选项可使速度倍增,达到每周期6个时钟
\u20302X功耗模式
-掉电模式,可由外部中断唤醒
-空闲模式
SST89E554RC的功能框图如图1-2-1所示,外部引脚如图1-2-2所示。
SST89E554RC的特殊功能寄存器如表1-2-1所列。
四、实验设计思想与结果分析
实验一到实验四为软件编程实验,需要熟练掌握KEILuv2编程工具的使用,通过编写程序实现实验要求。
实验四到实验八为硬件接口实验,需要利用TD-51系统板,通过KEILuv2编写好程序,下载到所给的SST89E554RC单片机中,按原理接好硬件接线图,完成实验要求。
实验一 清零程序与拆字程序设计
实验调试步骤及结果分析:
(1)编写好实验程序后,采用ISP模式调试。
(2)运行程序,使用Keil51模拟器中的虚拟存储器监视内容变化。
(访问片外存储器,用“X:
+地址”的格式)。
(3)在清零实验中。
用单步跳过的调试方式。
7000H-7FFFH中内容先被写入0FFH;
然后全部清零。
(4)在拆子程序实验中,单步进入调试,先在7000H中,写入1FH,首先送低位0FH至7001H,然后送高位1H至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$
END
结果如下:
单步运行下,第一步为:
最后一步为:
8000h为0
拆字程序:
LJMPMAIN
ORG0100H
MOVDPTR,#7000H;
MOVA,#12H;
MOVX@DPTR,A;
RRA;
ANLA,#0FH;
高位送7001H低位
MOVDPTR,#7001H;
MOVX@DPTR,A;
MOVDPTR,#7000H;
MOVXA,@DPTR;
低位送7002H低位
MOVDPTR,#7002H;
SJMP$;
设置断点,观察实验结果中的内容
实验步骤及结果分析:
(2)拼字程序里,将两个字节内容分别存为12H,34H。
低位相拼,结果是24H。
(3)运行程序,使用Keil51模拟器中的虚拟存储器监视内容变化。
拼字程序流程图数据传输程序流程图
ORG0000H
MOVA,#01H;
ANLA,#0FH;
屏蔽高位
SWAPA;
MOVB,A;
MOVDPTR,#7001H;
送7001H
MOVA,#0AH;
ORLA,B;
拼送后送7002H
SJMP$;
END
数据传输程序
ORG0000H
MOVR2,#70H;
MOVR3,#00H;
源地址
MOVR4,#71H;
MOVR5,#00H;
目的地址
MOVR6,#00H;
MOVR7,#07H;
传送个数
MOVR1,#10H;
MOVR0,#07H;
MOVDPH,R2;
MOVDPL,R3;
MOVA,R1;
L0:
INCDPTR;
DJNZR0,L0;
赋值
L2:
MOVR7,#0FFH;
L1:
MOVXA,@DPTR;
MOVR2,DPH;
MOVR3,DPL;
MOVDPH,R4;
MOVDPL,R5;
MOVR4,DPH;
MOVR5,DPL;
DJNZR7,L1;
DJNZR6,L2;
SJMP$
把7000h中的8个数据发给7100h中:
实验三 排序程序与散转程序设计
排序实验:
(1)编写实验程序,编译、链接无误后联机调试;
(2)为30H~39H赋初值,如:
在命令行中键入ECHARD:
30H=9,11H,5,31H,20H,16H,1,1AH,3FH,8后回车,可将这10个数写入30H~39H中;
(3)将光标移到语句行命令,将程序运行到该行;
(4)查看存储器窗口中30H~39H中的内容,验证程序功能;
(5)重新为30H~39H单元赋值,反复运行实验程序,验证程序的正确性。
实验流程图
散转程序:
MAIN:
MOVA,#01H
MOVR2,A
RLA
ADDA,R2
MOVDPTR,#PTAB
JMP@A+DPTR
PTAB:
LJMPPM0
LJMPPM1
LJMPPM2
LJMPPM3
PM0:
[程序体0]
PM1:
[程序体1]
PM2:
[程序体2]
PM3:
[程序体3]
冒泡排序子程序:
MAIN:
MOVR0,#10H;
初始地址
MOVR7,#04H;
外循环次数(参与比较的数的个数-1)
ACALLMAOP
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
内循环是否完成
INCR0
外循环是否完成
RET;
返回主程序
实验四数字量输入输出实验
实验步骤:
(1)按图11接好试验线路图,图中圆圈表示不要通过排线连接
(2)编写实验程序,编译链接无误后进入调试状态
(3)运行实验程序,观察实验现象,验证程序正确性
(4)按复位键,结束程序运行,退出调试状态
实验硬件接线图:
基础部分:
MAIN:
MOVP1,#0FFH;
初始化
MOVA,P1;
将输入写进累加器A
SWAPA
ANLA,#0FH
MOVP1,A;
输出显示
LJMPMAIN;
循环不断检测P1口输入端的新状态
LED灯控制:
LJMPMAIN
ORG0100H
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:
LCALLDELAY
DJNZR0,A1
JBCTF1,RIGHT;
查询T1溢出标志,TF1=1时转移
JMPLEFT
RIGHT:
右循环
A2:
RRA
DJNZR0,A2
JBCTF1,SHANSHUO;
JMPRIGHT
SS:
闪烁
LP1:
MOVA,#55H
MOVA,#0AAH
DJNZR0,LP1
JBCTF1,LEFT;
JMPSHANSHUO
DELAY:
MOVR1,#0FFH
DEL1:
MOVR2,0FFH
DEL2:
DJNZR2,DEL2
DJNZR1,DEL1
RET
END
结果分析:
利用计数器T1外部技术方式,当外部输入脉冲引脚上出现电平负跳变时,T1计数器加一,溢出标志TF1置一,然后改变LED灯亮的方式,同时,将标志位TF1复位,进入下一轮的计数溢出等待。
因此,而形成三种亮灯方式的自动循环。
若是用开关实现三种方式的亮灯,则需要在最开始和每种亮灯之后通过8255对开关状态进行采集并进行判断。
因此事先还要先设置好哪个开关的闭合表示哪种亮灯方式。
实验五定时器/计数器实验
(1)编写实验程序,编译、链接后联机调试;
(2)运行实验程序,使用示波器观察P1.0引脚上的波形并记录周期;
(3)改变计数初值,观察实验现象,验证程序功能。
定时器LED控制PROTEUS仿真接线图
#include<
reg51.h>
unsignedcharcount;
voidmain()
{
unsignedcharvalue,i;
TMOD=0x01;
TH0=0x4C;
TL0=0x00;
ET0=1;
PT0=1;
EA=1;
TR0=1;
while
(1)
{if(count==20)
P1=05H;
if(count==40)
P1=0AH;
if(count==60)
P1=50H;
if(count==80)
P1=0A0H;
if(count==100)
P1=55H;
if(count==120)
P1=0AAH;
if(count==140)
P1=0FFH;
if(count==160)
P1=00H;
count=0;
}
}
voidTimer0()interrupt1
TR0=0;
count++;
实验六A/D、D/A转换实验
实验接线图:
LED灯PROTEUS仿真接线图
PRO_DAEQU7FFFH
PRO_ADEQU0BFFFH
ORG0000H
SJMPMAIN
ORG001BH
LJMPKEYSCAN
ORG0030H
SETBEA
SETBEX1
SETBIT1
MOVP1,#0FH
MOVR5,#0FFH
TEST:
MOVR5,#03H
CJNER5,#01H,L1
LCALLSQUARE
AJMPTEST
CJNER5,#02H,L2
LCALLTRIANGLE
CJNER5,#03H,L3
LCALLSAWTOOTH
L3:
;
键盘扫描中断
KEYSCAN:
ACALLT12MS
;
MOVR6,A
ACALLSCAN
JNZKEY1
SJMPEXIT
KEY1:
MOVR2,A
MOVR3,#07FH
MOVR4,#03H
MOVP1,R3
MOVA,P1
CPLA
ANLA,#0FH
JNZKEY2
MOVA,R3
RRA
MOVR3,A
DJNZR4,LOOP1
SJMPEXIT
KEY2:
DECR4
CJNER2,#01H,LOOP3
MOVA,#01H
SJMPLOOP6
LOOP3:
CJNER2,#02H,LOOP4
MOVA,#04H
SJMPLOOP6
LOOP4:
CJNER2,#04H,LOOP5
MOVA,#07H
SJMPLOOP6
LOOP5:
CJNER2,#08H,LOOP6
MOVA,#0AH
LOOP6:
ADDA,R4
MOVR5,A
MOVP1,#0FH
MOVA,R6
EXIT:
RETI
;
延时后再次扫描有无按键按下
SCAN:
MOVP1,#0FH
MOVA,P1
CPLA
RET
T12MS:
MOVR7,#15H;
12MS
TM:
MOVR6,#0FFH
DJNZR6,$
DJNZR7,TM
D/A产生方波
SQUARE:
MOVDPTR,#PRO_DA
MOVA,#0FFH
MOVDPTR,#0BFFFH
MOVX@DPTR,A
ACALLDELAY
MOVA,#00H