单片机接口技术实验报告.docx
《单片机接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《单片机接口技术实验报告.docx(35页珍藏版)》请在冰豆网上搜索。
单片机接口技术实验报告
单片机原理与接口技术
实
验
报
告
姓名:
XXX
学院:
机电工程学院
班级:
机械XXX班
学号:
XXX
日期:
2013年11月9日
实验一定时器实验
班级:
机械XXX班学号:
XXX姓名:
XXX
一、实验目的
1.学习89C51内部计数器的使用和编程方法
2.进一步掌握中断处理程序的编写方法
二、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器,定时为一秒钟。
CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MHZ,本程序工作于方式2,即8位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=100uS
定时常数=156。
然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
三、实验内容及步骤
本实验需要用到单片机最小应用系统模块(F1区)和十六位逻辑电平显示模块(I4区)。
1.使用单片机最小应用系统模块,用导线将P1.0接到十六位逻辑电平显示的任意一只发光二极管上。
2.用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH10_定时器.ASM”源程序,编译无误后。
4.全速运行程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
5.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
四、实验流程图
五、电路原理图
六、源程序
Tickequ5000;10000x100us=1s
T100usequ20;100us时间常数(6M)
C100usequ5h;100us记数单元
LEDBufBIT00H
LEDBITP1.0
org0000H
ljmpStart
org000BH
LJMPT0Int
ORG0100H
T0Int:
pushPSW
mova,C100us+1
jnzGoon
decC100us
Goon:
decC100us+1
mova,C100us
orla,C100us+1
jnzExit;100us记数器不为0,返回
movC100us,#HIGH(TICK);#high(Tick)
movC100us+1,#LOW(TICK);#low(Tick)
cplLEDBuf;100us记数器为0,重置记数器
;取反LED
Exit:
popPSW
reti
Start:
movTMOD,#02h;方式2,定时器
movTH0,#t100us
movTL0,#t100us
movIE,#10000010b;EA=1,IT0=1
setbTR0;开始定时
clrLEDBuf
clrP1.0
movC100us,#high(Tick)
movC100us+1,#low(Tick)
Loop:
movc,LEDBuf
movP1.0,c
ljmpLoop
end
实验二串行静态显示实验
班级:
机械XXX班学号:
XXX姓名:
XXX
一、实验目的
1.掌握数字、字符转换成显示段码的软件译码方法
2.静态显示的原理和相关程序的编写
二、实验电路
显示器由8个共阴极LED数码管组成。
输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
8个串/并移位寄存器芯片74LS164首尾相连。
每片的并行输出作为LED数码管的段码。
74LS164的引脚图如图所示;
74LS164为8位串入并出移位寄存器,1、2为串行输入端,QA~QH为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;CLR为清零端,低电平时并行输出为零。
三、实验内容及步骤
单片机的P3.0作数据串行输出,P3.1作移位脉冲输出。
本实验需要用到单片机最小应用系统(F1区)和串行静态显示模块(I3区)。
1.使用单片机最小应用系统模块,用导线将连接P3.0(RXD)、P3.1(TXD)连接到串行静态显示模块的DIN、CLK端。
2.用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机锁紧插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH31_8位串行静态显示.ASM”源程序,编译无误后,全速运行程序。
8LED显示“89C52”。
程序停止运行时,显示不变,说明静态显示模块具有数据锁存功能。
4.可把源程序编译成可执行文件,烧录到89S51/89S52芯片中。
(ISP烧录见附录二)
四、电路原理图
五、源程序
;串行静态显示DISP1.ASM8 LED
;P3.0--DINP3.1--CLK
DBUF0EQU30H
TEMPEQU40H
DINBITP3.0
CLKBITP3.1
ORG0000H
LJMPSTART
ORG0100H
START:
MOV30H,#10h
MOV31H,#10H
MOV32H,#10h
MOV33H,#8
MOV34H,#9
MOV35H,#0cH
MOV36H,#5
MOV37H,#2
DISP:
MOVR0,#DBUF0
MOVR1,#TEMP
MOVR2,#8
DP10:
MOVDPTR,#SEGTAB
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR2,DP10
MOVR0,#TEMP
MOVR1,#8
DP12:
MOVR2,#8
MOVA,@R0
DP13:
RLCA
MOVDIN,C
CLRCLK
SETBCLK
DJNZR2,DP13
INCR0
DJNZR1,DP12
OK:
SJMPOK
SEGTAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH,77H,7CH
DB39H,5EH,7BH,71H,00H,40H
END
实验三串行A/D转换实验
班级:
机械XXX班学号:
XXX姓名:
XXX
一、实验目的
1.掌握单片机I/O模拟I2C总线的编程方法
2.掌握16位串行A/D转换芯片ADS1100使用方法
二、实验说明
ADS1100是美国TI(TexasInstrumentsIncorporated)公司生产的全差分输入、16位分辨率、SOT23-6封装、有自校准功能的精密A/D转换器,该芯片的内置自校准系统对于用户是透明的。
ADS1100使用I2C串行接口以电源电压作用参考电压,片内可编程增益放大器(PGA)可提供最大的为8的增益,因此,即使在高分辨情况下也能采样到小信号,在单次转换模式下,ADS1100在一次转换结束后可自动关闭自身电源,因而可减少系统在空闲周期的电流消耗,由于ADS1100的易用性,故可以大大降低精密测量设备工作的工作量,ADS1100主要应用在空间和功耗方面要求比较严格的高分辨率采样测量电路中,其典型应用包括便携设备、工业过程控制和智能发射机等。
ADS1100以其独特的精度特性可广泛应用便携设备、工业过程控制器、智能发射器、消费类产品、工厂自动化设备和温度测量等系统之中。
三、实验内容及步骤
本实验用到单片机最小系统(F1区)、串行静态数码显示(I3区)、电位器(A2区)和串行A/D转换(H6区)。
1.串行静态数码显示的DIN、CLK分别接单片机最小系统的P1.0、P1.1口;单片机最小系统的P2.0、P2.1分别接串行A/D转换的DATA、CLK,串行A/D转换的CS-549接地,AIN接电位器(A2区)0~5V可调输出端。
打开单片机最小系统的电源开关,串行A/D转换的JT1H电源短路帽打在VCC处。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,打开串行AD文件夹下本实验的项目文件“ADS1100.Uv2”。
4.编译无误后,全速运行程序,数码管显示电压转化的数字量,调节模拟信号输入端的电位器旋钮。
顺时针旋转值增大,AD转换值的范围是0~3FFH。
5.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。
(ISP烧录器的使用查看附录二)
四、电路图
五、源程序
#include
#include
#include
voidDelay(void);
voidStart(void);
voidStop(void);
voidWriteACK(unsignedcharack);
voidWaitACK(void);
voidwritebyte(unsignedcharwdata);
unsignedcharReadbyte(void);
ads1100(0x8C)
voidInit_ads1100(unsignedcharmdata)
{
Start();
writebyte(0x90);
writebyte(mdata);
Stop();
}
unsignedintRd_ads1100(void)
{
unsignedcharH_AD;
unsignedcharL_AD;
unsignedintT_AD;
Start();
writebyte(0x91);
H_AD=Readbyte();
WriteACK(0);
L_AD=Readbyte();
WriteACK
(1);
Stop();
T_AD=(0x00ff&H_AD)<<8|L_AD;
retur
voidDelay(void)
{
_nop_();
_nop_();
}
voidStart(void)
{
EA=0;
SDA=1;
SCL=1;
Delay();
SDA=0;
Delay();
SCL=0;
}
voidStop(void)
{
SDA=0;
SCL=0;
Delay();
SCL=1;
Delay();
SDA=1;
Delay();
EA=1;
}
voidWriteACK(unsignedcharack)
{
SDA=ack;
Delay();
SCL=1;
Delay();
SCL=0;
}
voidWaitACK(void)
{
unsignedcharerrtime=20;
SDA=1;
Delay();
SCL=1;
Delay();
while(SDA)
{
errtime--;
if(!
errtime)Stop();
}
SCL=0;
Delay();
}
voidwritebyte(unsignedcharwdata)
{
unsignedchari;
for(i=0;i<8;i++)
{
if(wdata&0x80)SDA=1;
elseSDA=0;
wdata<<=1;
SCL=1;
Delay();
SCL=0;
}
WaitACK();
}
unsignedcharReadbyte(void)
{
unsignedchari,bytedata;
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
bytedata<<=1;
bytedata|=SDA;
SCL=0;
Delay();
}
return(bytedata);
}
实验四DS18B20温度传感器实验
班级:
机械XXX班学号:
XXX姓名:
XXX
一、实验目的
1.了解温度传感器电路的工作原理
2.了解温度控制的基本原理
3.掌握一线总线接口的使用
二、实验说明
这是一个综合硬件实验,分两大功能:
温度的测量和温度的控制。
Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
三、实验内容及步骤
本实验需要用到单片机最小应用系统(F1区)、串行静态显示(I3区)和温度传感器模块(C3区)。
1.DS18B20的CONTROL接最小应用系统P1.4,OUT接最小应用系统P2.0,最小系统的P1.0,P1.1接串行静态显示的DIN,CLK端。
2.用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加TH44_DS18B20.ASM源程序,进行编译,直到编译无误。
4.编译无误后,全速运行程序。
程序正常运行后,按下自锁开关‘控制’SIC。
LED数显为“XX”为十进制温度测量值,“XX”为十进制温度设定值,按下自锁开关“控制”SIC则加热源开始加热,温度也随着变化,当加热到设定的控制温度时如40度时,停止加热。
5.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89S51芯片中。
(ISP烧录器的使用查看附录二)
四、电路图
五、源程序
TEMPER_LEQU29H;
TEMPER_HEQU28H;
FLAG1EQU38H;
A_BITEQU20H;
B_BITEQU21H;
LEDBufEQU30H
TEMPEQU55H
DINBITP1.0
CLKBITP1.1
ORG0000H
LJMPSTART
ORG0100H
start:
SETBP1.4
MAIN:
LCALLGET_TEMPER;
MOVA,29H
MOVC,40H;
RRCA
MOVC,41H
RRCA
MOVC,42H
RRCA
MOVC,43H
RRCA
MOV29H,A
LCALLDisplayResult
LCALLDISPLAYLED;LCALLDELAY1
AJMPMAIN;
INIT_1820:
SETBP2.0
NOP
CLRP2.0;
MOVR1,#3
TSR1:
MOVR0,#107
DJNZR0,$
DJNZR1,TSR1
SETBP2.0;NOP
NOP
NOP
MOVR0,#25H
TSR2:
JNBP2.0,TSR3;
DJNZR0,TSR2
LJMPTSR4;
TSR3:
SETBFLAG1;
LJMPTSR5
TSR4:
CLRFLAG1;
LJMPTSR7
TSR5:
MOVR0,#117
TSR6:
DJNZR0,TSR6;
TSR7:
SETBP2.0
RET
GET_TEMPER:
SETBP2.0
LCALLINIT_1820;
JBFLAG1,TSS2
RET;
MOVA,#0CCH;
LCALLWRITE_1820
MOVA,#44H;
LCALLWRITE_1820;
LCALLDELAY1
LCALLINIT_1820;
MOVA,#0CCH;
LCALLWRITE_1820
MOVA,#0BEH;
LCALLWRITE_1820
LCALLREAD_18200;
RET;
WRITE_1820:
MOVR2,#8;
CLRC
WR1:
CLRP2.0
MOVR3,#6
DJNZR3,$
RRCA
MOVP2.0,C
MOVR3,#23
DJNZR3,$
SETBP2.0
NOP
DJNZR2,WR1
SETBP2.0
RET;
READ_18200:
MOVR4,#2;
MOVR1,#29H;
RE00:
MOVR2,#8;
RE01:
CLRC
SETBP2.0
NOP
NOP
CLRP2.0
NOP
NOP
NOP
SETBP2.0
MOVR3,#9
RE10:
DJNZR3,RE10
MOVC,P2.0
MOVR3,#23
RE20:
DJNZR3,RE20
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
DisplayLED:
;
movLEDBUF+5,#10H
movLEDBUF+6,#10H
movLEDBUF+7,#10H
MOVR0,#LEDBUF
MOVR1,#TEMP
MOVR2,#8
DP10:
MOVDPTR,#LEDMAP
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR2,DP10
MOVR0,#TEMP
MOVR1,#8
DP12:
MOVR2,#8
MOVA,@R0
DP13:
RLCA
MOVDIN,C
CLRCLK
SETBCLK
DJNZR2,DP13
INCR0
DJNZR1,DP12
RET
LEDMAP:
DB3FH,6,5BH,4FH,66H,6DH;0,1,2,3,4,5
DB7DH,7,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB58h,63H,7BH,71H,00H,40H;C,o,E,F,,-
DB63H,39H,63h
DisplayResult:
;
MOVLEDBuf,#10H;''
MOVLEDBuf+3,#14H;
MOVLEDBuf+4,#13H;
Goon:
MOVA,29H;
MOVB,#10
DIVab
MOVLEDBuf+1,A;3
MOVA,B
MOVLEDBuf+2,A;4
MOVA,LEDBuf+1
CJNEA,#4,$+3
JNCWW
SETBP1.4
RET
WW:
CLRP1.4;
D1MS:
MOVR7,#80
DJNZR7,$
RET
Delay:
;
MOVr7,#0
DelayLoop:
DJNZr7,DelayLoop
DJNZr6,DelayLoop
RET
DELAY1:
MOVR4,#020H
AA1:
MOVR5,#080H
AA:
NOP
NOP
DJNZR5,AA
DJNZR4,AA1
RET
END
实验五步进电机控制实验
班级:
机械XXX班学号:
XXX姓名:
XXX
一、实验目的
1.了解步进电机控制的基本原理
2.掌握控制步进电机转动的编程方法
3.了解单片机控制外部设备的常用电路
二、实验说明
1.步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必须以脉冲电流来驱动。
若每旋转一圈以20个励磁信号来计算,则每个励磁信号前进18度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。
2.步进电动机的励磁方式可分为全步励磁及半步励磁,其中全步励磁又有1相励磁及2相励磁之分,而半步励磁又称1-2相励磁。
图为步进电动机的控制等效电路,适应控制A、B、/A、/B的励磁信号,即可控制步进电动机的转动。
每输出一个脉冲信号,步进电动机只走一步。
因此,依序不断送出脉冲信号,即可步进电动机连续转动。
3.电动机的负载转矩与速度成反比,速度愈快负载转矩愈小,当速度快至其极限时,步进电动机即不再运转。
所以在每走一步后,程序必须延时一段时间。
三、实验内容及步骤
本实验需要用到单片机最小应用系统(F1区)、步进电机模块(M2区)和查询式键盘(B2区)。
1.单片机最小应用系统的P1.0、P1.1、P1.2、P1.3口分别接步进电机模块的SA、SB、SC、SD。
最小系统的P2.0、P2.1、P2.2分别对应的接查询式键盘的K0、K1、K2键。
打开相关模块的电源开关。
2.用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH52_步进电机控制程序.asm”源程序,进行编译,直到编译无误。
4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。
按下K0键电机正转,K1反转,K2电机STOP。
6.也可以把源程序编译成可执行文件,用ISP烧录器烧录到89S52/89