成都理工大学 《单片微机原理及应用》实验报告.docx

上传人:b****1 文档编号:2644027 上传时间:2023-05-04 格式:DOCX 页数:19 大小:187.06KB
下载 相关 举报
成都理工大学 《单片微机原理及应用》实验报告.docx_第1页
第1页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第2页
第2页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第3页
第3页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第4页
第4页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第5页
第5页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第6页
第6页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第7页
第7页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第8页
第8页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第9页
第9页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第10页
第10页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第11页
第11页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第12页
第12页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第13页
第13页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第14页
第14页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第15页
第15页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第16页
第16页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第17页
第17页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第18页
第18页 / 共19页
成都理工大学 《单片微机原理及应用》实验报告.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

成都理工大学 《单片微机原理及应用》实验报告.docx

《成都理工大学 《单片微机原理及应用》实验报告.docx》由会员分享,可在线阅读,更多相关《成都理工大学 《单片微机原理及应用》实验报告.docx(19页珍藏版)》请在冰点文库上搜索。

成都理工大学 《单片微机原理及应用》实验报告.docx

成都理工大学《单片微机原理及应用》实验报告

成都理工大学

核技术与自动化工程学院

课程名称:

单片微机原理及应用实验

姓名:

何云鹏

学号:

201006020104

专业:

核工程与核技术

学期:

2012~2013

(2)

任课教师:

刘易

 

 

实验一数据传送及拆字

实验人员:

何云鹏指导老师:

刘易

实验地点:

6C701实验时间:

2013.03.04

实验内容:

片内外数据传送,以及拆字。

一、实验要求

(1)数据传输

1、掌握汇编语设计和调试方法,熟悉键盘操作。

2、熟悉使用keil软件。

3、将片外ROM空间数据传送到片内RAM。

4、再将片外RAM空间数据传送到片内RAM。

(2)拆字程序

将片外RAM空间2000H单元的数据拆开,并分别存放在片外2001H和2002H单元。

二、实验原理

(1)数据传输

片外ROM空间数据传送到片内RAM

1、先对外部ROM空间2000H到200FH单元置数,即对这个空间采用“DB”伪指令置数。

2、然后将ROM空间数据逐一传送到内部RAM空间的40H到4FH单元。

片外RAM空间数据传送到片内RAM

3、先对外部RAM空间2000H到200FH单元置数,即对这个空间采用“MOVX”指令置数。

4、然后将RAM空间数据逐一传送到内部RAM空间的40H到4FH单元。

(2)拆字程序

1、先对外部RAM空间2000H置数,即对这个空间采用“MOVX”指令置数;

2、然后将2000H单元数据高低4位分别放入片外RAM空间的2001H和2002H单元。

注意:

2000H高低4为需要置不同数

三、程序设计

(1)数据传输

片外ROM数据传送到片内RAM

org0000h

jmpmain

org0100h

main:

movr0,#00h;赋r0指向00

movr1,#40h

movdptr,#2000h;赋dptr指向2000

loop:

movca,@a+dptr

mov@r1,a

incdptr

incr0

incr1

mova,#00h

cjner0,#10h,loop;比较r0是否等于10,不等就跳向loop

sjmp$

org2000h

db12h,23h,34h,45h,56h,67h,78h,89h,9ah

db0abh,0bch,0cdh,0deh,0efh,0f1h,0e1h

end;自片外ROM2000h起置数

片外RAM数据传送到片内RAM

org0000H

jmpmain

org0100H

main:

movr0,#00H;赋r0指向00

movdptr,#2000H;赋dptr指向2000

loop:

movx@dptr,a

incdptr;dptr增一

incr0

inca

cjner0,#10H,loop;比较r0是否等于10,不等就跳向loop

movr0,#00H;赋r0指向00

movr1,#40H

movdptr,#2000H;赋dptr指向2000

lop:

movxa,@dptr

incdptr

incr0

mov@r1,a

incr1

cjner0,#10H,lop

sjmp$;停指针,短跳,这儿跳到这儿

end

(2)拆字程序

org0000h

ajmpmain

org0100h

main:

movdptr,#2000h

mova,#64h

movx@dptr,a

anla,#0f0h

swapa

incdptr

movx@dptr,a

movdptr,#2000h

movxa,@dptr

anla,#0fh

movdptr,#2002h

movx@dptr,a

sjmp$

end

四、现象及结果

(1)数据传输

片内RAM0h至4Fh依次置数:

12h,23h,34h,45h,56h,67h,78h,89h,9ah

0abh,0bch,0cdh,0deh,0efh,0f1h,0e1h

图1.1片外ROM数据传送到片内RAM实验结果

片内RAM0h至4Fh依次置数:

01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh

图1.2片外RAM数据传送到片内RAM实验结果

(2)拆字程序

片外RAM2000h单元置数0064h,其高四位60h存于2001h单元,低四位04h存于2002h单元。

图1.3拆字实验结果

 

实验二I/O控制

实验人员:

何云鹏指导老师:

刘易

实验地点:

6C701实验时间:

2013.03.18

实验内容:

外部中断的使用,以及Timer定时器的使用

一、实验要求

(1)外部中断的使用

1、使用外部中断0(INT0)或者使用外部中断1(INT1);

2、控制P1口流水灯。

(2)Timer定时器的使用

1、采用Timer定时器定时1秒钟;

2、控制P1口流水灯

二、实验原理

(1)外部中断的使用

MCS-51单片机有五个中断源,分别是INT0(入口地址0003H)、INT1(入口地址0013H)、TF0(入口地址000BH)、TF1(入口地址001BH)、串口中断(入口地址0023H),这5个中断源由TCON和SCON两个特殊功能寄存器进行控制

IE0和IE1:

外部中断的中断请求标志

IT0和IT1:

外部中断触发方式控制,为1时属边沿触发,为0时属电平触发

TI:

串行口的发送中断标志

RI:

串行口接受中断标志

MCS-51单片机对中断的开放和屏蔽是由IE控制实现的

EA:

中断总控制位,=1,CPU开放中断;=0,CPU禁止所有中断

ES:

串行口中断控制位,=1:

允许串行口中断,=0:

屏蔽串行

口中断

ET0和ET1:

定时器中断控制位,=1:

允许T0、T1中断,=0:

禁止T0、T1中断

EX0和EX1:

外部中断控制位,=1:

允许外部中断,=0:

不允许外部中断

CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。

在CPU已经开放了外部中断允许的前提下:

在INT0/INT1引脚输入一个负脉冲或低电平,

TCON寄存器中的IE0/IE1标志位自动变“1”,

检测到IE0/IE1变“1”后,将产生指令:

LCALL0003H(/0013H)执行中断服务程序,并将IE0/IE1标志位自动清“0”,以备下次申请。

(2)Timer定时器的使用

1、定时/计数器1只能工作于工作方式2,但不能使用中断方式,此时定时/计数器1通常作为串行口的波特率发生器使用

2、初始化包括

确定工作方式,即对TMOD寄存器进行赋值

计算计数初值,并写入寄存器TH0、TL0或TH1、TL1中

根据要求,置位ET0或ET1

置位EA开总中断

置位TR0或TR1启动定时器工作

3、定时器T0由特殊功能寄存器TL0(低八位)和TH0(高八位)构成,定时器T1由特殊功能寄存器TL1(低八位)和TH1(高八位)构成.特殊功能寄存器TMOD控制定时/计数器的工作方式。

TCON则用于控制定时/计数器的启动和停止计数,同时管理T0和T1的溢出标志位.

4、定时/计数器的方式控制寄存器TMOD:

字节地址为89H,定时器控制寄存器TCON。

字节地址为88H

5、工作方式2具有自动重装载功能,在这种工作方式中,16位寄存器分作两部分,以TL为计数器,TH为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再像方式0和1那样需要人工干预,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL重新装载

程序运行时(等在亮和灭的过程中),由于程序运行比较快,我们按键时,键不平稳,一直在抖动,故可能导致每按一次键,有多个灯亮或者灭。

同时,如果灯亮的时间过短,我们人眼感觉不到,故程序中必须调用延时程序,即采用Timer定时器

三、程序设计

(1)外部中断的使用

#include

#include

voidmain()

{

//unsignedinti=0;

unsignedchartemp=0xfe;

P2=0x00;

TMOD=0x01;/*T0工作在定时器方式1*/

TH0=(15536/256);/*预置计数初值*/

TL0=(15536%256);

EA=1;/*CPU开中断*/

ET0=1;/*T0开中断*/

TR0=1;/*启动T0*/

do

{

if(P2==0x14)

{

P2=0x00;

P1=temp;

temp=_crol_(temp,1);

}

}while

(1);

}

voidtimer0(void)interrupt1using0

{

P2+=1;

TH0=(15536/256);

TL0=(15536%256);

}

(2)Timer定时器的使用

#include

inttemp=0x01;

unsignedcharscount;

voidtimer0_isr(void)interrupt1using0

{

TR0=0;

TH0=0x4c;

TL0=0x19;

TF0=0;

scount--;

if(!

scount)

{P1=temp;

temp<<=1;}

if(!

P1)

temp=0x01;

if(scount>0)

TR0=1;

//else

//TR0=0;

}

main(void)

{

TMOD=0x01;

TH0=0x4c;

TL0=0x19;//50ms

scount=20;//50ms*20=1s

EA=1;

ET0=1;

TR0=1;

while

(1)

{

if(!

scount)//T=1s

{

TH0=0x4c;

TL0=0x19;//reload

scount=20;//re-1s

TR0=1;

}

}

}

四、现象及结果

(1)外部中断的使用

注:

下图为程序运行过程中的一个状态,由仿真软件模拟得到。

LED灯从上至下依次点亮后熄灭,然后重复。

图2.1外部中断实验结果

(2)Timer定时器的使用

LED灯从上至下依次熄灭后点亮,然后重复。

图2.2Timer定时器实验结果

 

实验三串口通讯

实验人员:

何云鹏指导老师:

刘易

实验地点:

6C701实验时间:

2013.03.25

实验内容:

单片机与PC机通讯方法

一、实验要求

1、深刻理解芯片作用,学会使用单片机的串行口,了解单片机之间的串行通讯。

2、PC机发送任意个字符,由单片机接收后马上上传(单片机发送)至PC机。

二、实验原理

1、单片机可以通过内部串行口寄存器实现与PC机间的数据传输(包括接受和发送)。

数据的接受控制为是REN,其为1时才允许接收数据,使用串行口通信时需要对其进行初始化,设置产生波特率的TI定时器,例如,T1的工作方式为2,波特率为2400bps,晶振频率为11.0592MHZ,通过查串行口常用波特率得TMOD为20H,TH1为0F4H,TL1为0F4H。

并对TR1置1。

SCON为50H,对EA,ES,置1,以便于串行口中断。

2、SBUF为串行口的收发缓冲器,为一个专用寄存器,其中包含了接受寄存器和发送寄存器,可以实现全双工通信,这两个寄存器具有同一个地址(99H)。

MCS-51单片机的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据,而从接受缓冲期读出数据即可接受数据。

3、串行口通信控制寄存器:

SCON控制寄存器是一个可位寻址的专用寄存器,用于串行数据的通信控制,单元地址98H。

其结构中

SM0SM1串行口工作方式选择位SM2:

多机通信控制位

REN:

允许接收位,=1:

允许接收=0:

禁止接收

TB8:

发送数据位=0为数据,=1为地址

RB8:

发送数据位。

在方式2和3中,RB8存放接收到的第九位数据,用以识别接收到的数据特征。

TI:

发送中断标志位,=1表示帧发送结束TI由软件清零

RI:

接收中断标志位。

在接收到停止位时,该位由硬件置位。

=1表示帧接收完成

4、PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址87H。

在CHMOS型单片机中,除SMOD位外,其它位均为虚设的,SMOD是串行口波特率倍增位。

当SMOD=1,串行口波特率加倍。

系统复位默认为SMOD=0。

5、串行口的工作方式由SCON中的SM0和SM1来定义的,其中SM0SM1=01,即工作方式1最常用。

工作方式1为波特率可变的8位异步通信接口方式,发送或接收一帧信息共10位,包括一个起始位0,8个数据位和1个停止位。

a、数据发送:

当CPU执行一条指令将数据写入发送缓冲SBUF时就启动发送,串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI;b、数据接收:

在REN=1时,允许接收。

只有当RI=0且停止位为1或者SM2=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI,否则信息丢失。

所以在方式1下接收时,应先用软件清零RI和SM2标志。

三、程序设计

ORG0000H

AJMPMAIN

ORG0023H

AJMPINT

ORG0030H

MAIN:

MOVTMOD,#20H/*定时/计数器1只能工作于工作方式2,但不能使用中断方式,此时定时/计数器1通常作为串行口的波特率发生器使用*/

MOVTH1,#0F4H

MOVTL1,#0F4H

MOVSCON,#50H

SETBEA/*中断总控制位*/

SETBES/*串行口中断控制位*/

SETBTR1

AJMP$

OUT:

RETI

INT:

CLRRI

MOVA,SBUF

MOVSBUF,A

JNBTI,$

CLRTI

AJMPOUT

END

四、现象及结果

在串行口窗口里输入一串字符,按回车,此串字符被原样发送到显示串口里。

将程序通过monitor传输到DPFLASH中,打开DPFLASH串口调试器,把波特率改为2400bps,在处理字符串对话框中输入“asdb”,点击发送,则在接受窗口中出现所发送的字符串,如图:

图3.1串口通讯实验结果

实验四电机驱动

实验人员:

何云鹏指导老师:

刘易

实验地点:

6C701实验时间:

2013.04.01

一、实验要求

1、了解步进电机工作原理。

2、C语言或者汇编程序,要求用开关K1,K2控制四项步进电机的正转、反转。

二、实验原理

步进电机是一种将电脉冲转化为角位移的执行机构。

通俗一点讲:

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。

可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

三、程序设计

MOV20H,#00H;20H单元置初值,电机正转位置指针

  MOV21H,#00H;21H单元置初值,电机反转位置指针

  MOVP1,#0C0H;P1口置初值,防止电机上电短路

  MOVTMOD,#60H;T1计数器置初值,开中断

  MOVTL1,#0FFH

  MOVTH1,#0FFH

  SETBET1

  SETBEA

  SETBTR1

  SJMP$

  ;***********计数器1中断程序************

  IT1P:

JBP3.7,FAN;电机正、反转指针

  ;*************电机正转*****************

  JB00H,LOOP0

  JB01H,LOOP1

  JB02H,LOOP2

  JB03H,LOOP3

  JB04H,LOOP4

  JB05H,LOOP5

  JB06H,LOOP6

  JB07H,LOOP7

  LOOP0:

MOVP1,#0D0H

  MOV20H,#02H

  MOV21H,#40H

  AJMPQUIT

  LOOP1:

MOVP1,#090H

  MOV20H,#04H

  MOV21H,#20H

  AJMPQUIT

  LOOP2:

MOVP1,#0B0H

  MOV20H,#08H

  MOV21H,#10H

  AJMPQUIT

  LOOP3:

MOVP1,#030H

  MOV20H,#10H

  MOV21H,#08H

  AJMPQUIT

  LOOP4:

MOVP1,#070H

  MOV20H,#20H

  MOV21H,#04H

  AJMPQUIT

  LOOP5:

MOVP1,#060H

  MOV20H,#40H

  MOV21H,#02H

  AJMPQUIT

  LOOP6:

MOVP1,#0E0H

  MOV20H,#80H

  MOV21H,#01H

  AJMPQUIT

  LOOP7:

MOVP1,#0C0H

  MOV;20H,#01H

  MOV21H,#80H

  AJMPQUIT

  ;***************电机反转*****************

  FAN:

JB08H,LOOQ0

  JB09H,LOOQ1

  JB0AH,LOOQ2

  JB0BH,LOOQ3

  JB0CH,LOOQ4

  JB0DH,LOOQ5

  JB0EH,LOOQ6

  JB0FH,LOOQ7

  LOOQ0:

MOVP1,#0A0H

  MOV21H,#02H

  MOV20H,#40H

  AJMPQUIT

  LOOQ1:

MOVP1,#0E0H

  MOV21H,#04H

  MOV20H,#20H

  AJMPQUIT

  LOOQ2:

MOVP1,#0C0H

  MOV21H,#08H

  MOV20H,#10H

  AJMPQUIT

  LOOQ3:

MOVP1,#0D0H

  MOV21H,#10H

  MOV20H,#08H

  AJMPQUIT

  LOOQ4:

MOVP1,#050H

  MOV21H,#20H

  MOV20H,#04H

  AJMPQUIT

  LOOQ5:

MOVP1,#070H

  MOV21H,#40H

  MOV20H,#02H

  AJMPQUIT

  LOOQ6:

MOVP1,#030H

  MOV21H,#80H

  MOV20H,#01H

  AJMPQUIT

  LOOQ7:

MOVP1,#0B0H

  MOV21H,#01H

  MOV20H,#80H

  QUIT:

RETI  END

四、现象与结果

按下k1键,步进电机正转。

按下k2键,步进电机反转。

五、问题讨论

1、步进电机中的转动惯量是什么意思?

转动惯量定义为:

J=∑mi*ri^2

(1)式中mi表示刚体的某个质点的质量,ri表示该质点到转轴的垂直距离。

转动惯量是表征刚体转动惯性大小的物理量,它与刚体的质量、质量相对于转轴的分布有关。

刚体的转动惯量是由质量、质量分布、转轴位置三个因素决定的。

(2)同一刚体对不同转轴的转动不同,凡是提到转动惯量,必须指明它是对哪个轴的才有意义。

2、步进电机转角度数,转角如何换算成脉冲数,有小数怎么办?

要用浮点运算?

三凌fx的plc程序如何编写?

答:

先设置步进控制器的分辨率,例如设为发送10000个脉冲步进电机转1周(360°),即每个脉冲步进电机旋转0.036°,再用设定的旋转角度除以0.036就得出旋转设定的角度需要的脉冲数,至于小数点的话用三菱PLC可以先将K10000和K360还有设定的旋转角度用浮点转换指令转换为浮点数,再相除即可!

西门子PLC可以直接输入浮点数做浮点运算!

如果PLC不支持浮点运算指令,可以讲以上数值放大N倍,再做计算亦可!

 

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

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2