单片机接口技术实验报告.docx

上传人:b****6 文档编号:6621578 上传时间:2023-01-08 格式:DOCX 页数:35 大小:279.27KB
下载 相关 举报
单片机接口技术实验报告.docx_第1页
第1页 / 共35页
单片机接口技术实验报告.docx_第2页
第2页 / 共35页
单片机接口技术实验报告.docx_第3页
第3页 / 共35页
单片机接口技术实验报告.docx_第4页
第4页 / 共35页
单片机接口技术实验报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

单片机接口技术实验报告.docx

《单片机接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《单片机接口技术实验报告.docx(35页珍藏版)》请在冰豆网上搜索。

单片机接口技术实验报告.docx

单片机接口技术实验报告

单片机原理与接口技术

姓名:

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1