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

上传人:b****4 文档编号:3965731 上传时间:2023-05-06 格式:DOCX 页数:36 大小:584.96KB
下载 相关 举报
单片机及其接口技术实验报告.docx_第1页
第1页 / 共36页
单片机及其接口技术实验报告.docx_第2页
第2页 / 共36页
单片机及其接口技术实验报告.docx_第3页
第3页 / 共36页
单片机及其接口技术实验报告.docx_第4页
第4页 / 共36页
单片机及其接口技术实验报告.docx_第5页
第5页 / 共36页
单片机及其接口技术实验报告.docx_第6页
第6页 / 共36页
单片机及其接口技术实验报告.docx_第7页
第7页 / 共36页
单片机及其接口技术实验报告.docx_第8页
第8页 / 共36页
单片机及其接口技术实验报告.docx_第9页
第9页 / 共36页
单片机及其接口技术实验报告.docx_第10页
第10页 / 共36页
单片机及其接口技术实验报告.docx_第11页
第11页 / 共36页
单片机及其接口技术实验报告.docx_第12页
第12页 / 共36页
单片机及其接口技术实验报告.docx_第13页
第13页 / 共36页
单片机及其接口技术实验报告.docx_第14页
第14页 / 共36页
单片机及其接口技术实验报告.docx_第15页
第15页 / 共36页
单片机及其接口技术实验报告.docx_第16页
第16页 / 共36页
单片机及其接口技术实验报告.docx_第17页
第17页 / 共36页
单片机及其接口技术实验报告.docx_第18页
第18页 / 共36页
单片机及其接口技术实验报告.docx_第19页
第19页 / 共36页
单片机及其接口技术实验报告.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

单片机及其接口技术实验报告

单片机及接口技术实验报告

 

实验一数据传送程序

一、实验目的

1、掌握汇编语言设计和调试方法。

2、掌握DVCC实验系统的操作步骤。

二、实验内容

1、编程实现,把7000H~70FFH单元的内容清零。

2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。

三、DVCC实验系统操作说明

1、接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。

2、

运行DVCC软件。

(程序  DVCC598H实验系统  DVCC实验系统)

3、单击工具栏上“新建”或“打开”按钮,编写源程序。

 单击“编译”按钮,使其形成可执行文件。

4、单击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。

联机成功,屏幕上出现:

.反汇编窗口、寄存器标示位窗口。

5、在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。

6、单击工具栏上“运行”或“单步”按钮,运行实验程序。

7、单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。

鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。

8、运行完毕,先按实验箱上的复位按钮Reset键,再按PCDBG键,并且点击屏幕上OK,即可退出运行状态。

四、实验程序代码

1、把7000H~70FFH单元的内容清零。

程序代码:

ORG0000H

AJMPSTART

ORG70H

START:

MOVP2,#70H;送地址高8位到P2端口

MOVR0,#00H;R0=00H,表地址低8位

CLRA;将累加器A清0

LOOP:

MOVX@R0,A;将A送入以R0内容为地址的外部RAM.

INCR0;R0+1-->R0

CJNER0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOP

 AJMP$;暂停

END

2、编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。

程序代码:

ORG0000H

AJMPSTART

ORG50H

START:

MOVDPTR,#6000H

MOVP2,#70H

MOVR0,#00H

LOOP:

MOVXA,@DPTR

MOVX@R0,A

INCDPTR

INCR0

CJNER0,#00H,LOOP;比较条件转移,若R0不等于0,则程序循环,执行loop.

INCP2

MOVR1,P2

CJNER1,#80H,LOOP;若R1不等与80h,则程序循环执行loop.

AJMP$

END

五、实验结果

1、把7000H~70FFH单元的内容清零。

2、编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传送个数为0FFFH个。

上图是左下角的窗口显示的是存储器源地址为6000H开始的单元里的内容。

上图是程序运行后,存储器源地址为7000H开始的单元里的内容。

经比较可以看出传送成功。

六、问题与讨论

在做实验内容1时编译现在第10行出错,后来将第9和第10行后的注释都删除就编译通过了。

实验二并行口实验

一、实验目的

1、掌握P3口、P1口简单使用。

2、学习延时程序的编写和使用。

二、实验内容

1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。

要求1kHz信号响100ms,500Hz信号响200ms,交替进行。

P1.7接一开关,进行控制。

当开关合上,报警信号响;当开关断开,报警信号停止。

(教材《单片机原理、接口及应用——嵌入式系统技术基础》P75例4-3)

2、P3口做输入口,P1口做输出口。

P3.3外接一脉冲,P1.0~P1.7接的8个发光二极管L1—L8。

编写程序,使P3.3每输入一个脉冲,P1口按16进制加一方式逐次点亮发光二极管。

三、实验接线图(实验内容二接线图)

四、实验步骤

1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。

要求1kHz信号响100ms,500Hz信号响200ms,交替进行。

P1.7接一开关,进行控制。

当开关合上,报警信号响;当开关断开,报警信号停止。

由于实验箱单片机P1.0是坏的,编程P1.1为输出,其他不变。

程序代码:

ORG00h

START:

SETBP1.7;P1.7置1

JBP1.7,$;若P1.7为高电平,则循环检测,否则向下执行

MOVR1,#200;

LOOP:

ACALLD500;

CPLP1.1;产生1KHz的频率,P1.1取反输出

DJNZR1,LOOP;R1减1,不为0时转移到LOOP,响100ms

MOVR2,#200

LOOP1:

ACALLD500;

ACALLD500;

CPLP1.1;产生500Hz的频率,P1.1取反输出

DJNZR2,LOOP1;R2减1,不为0时转移到LOOP,响200ms

SJMPSTART;跳转至START

D500:

MOVR6,#125;延迟500us

DJNZR6,$

RET

END

2、P3口做输入口,P1口做输出口。

P3.3外接一脉冲,P1.0~P1.7接的8个发光二极管L1—L8。

编写程序,使P3.3每输入一个脉冲,P1口按16进制加一方式逐次点亮发光二极管。

实验2接了4个口,从P1.1到P1.4,两次脉冲,灯变化

程序代码:

ORG00H

CLRA

SETBP3.3;将P3.3置1

BEG:

JBP3.3,$

ACALLD500;

JNBP3.3,$

ACALLD500

INCA

MOVP1,A;P1口输出

SJMPBEG

D500:

MOVR7,#125;延时500us(6Mhz)

DJNZR7,$

RET

END

五.问题与讨论

1、做实验内容1时,刚开始用P1.0口输出,铃总是不响,接示波器也不输出波形。

经测试铃是好的,怀疑程序有问题,就将程序改成一直只输出1KHz的频率,还是不出波形。

最后换成P1.1口输出,调试程序运行铃就响了。

2、实验内容2要求P1口输出接8个LED管,为节省时间,接4个输出观察实验结果就行了。

我们实验箱接的是P1.1—P1.4,实验结果有所不同,P3.3每输入两个脉冲,P1口按4进制加一方式逐次点亮发光二极管。

 

实验三中断实验

一、实验目的

1)掌握中断程序的编程方法。

2)进一步掌握P1、P3口的双功能使用方法。

二、实验内容

正常情况下,仅绿灯亮。

有故障发生时,绿灯灭,同时红灯闪烁;故障排除后,拨上总开关,恢复正常,绿灯亮,红灯灭。

可由P1.0控制绿灯的亮灭;P3.3接外部中断源,模拟故障发生;P1.1控制红灯的亮灭;P1.2读取总开头的状态。

编写程序实现以上功能。

(P3.3复用为外部中断1输入,即为INT1。

其中断向量地址为0013H,使用下降沿触发中断。

三、实验程序框图

主程序:

中断服务程序:

 

四、实验步骤

1、由P1.1控制绿灯的亮灭;P3.3接外部中断源,模拟故障发生;P1.2控制红灯的亮灭;P1.3读取总开头的状态。

P3.3复用为外部中断1输入,即为INT1。

其中断向量地址为0013H,使用下降沿触发中断。

程序代码:

ORG0000h

AJMPMAIN;主程序

ORG0013H;中断矢量表p211

AJMPIRPRO;中断服务程序入口

ORG0050H;主程序

MAIN:

CLRP1.2;红灯灭

SETBP1.1;绿灯亮

SETBIT1;设置INT1负边缘触发p206(定时器控制寄存器TCON)

SETBEX1;外部中断1有效p208(中断容许控制器IE)

SETBEA;开中断p208(中断容许控制器IE)

LOOP1:

JBP1.1,LOOP1

LOOP2:

JNBP1.3,LOOP2

SETBP1.1

SJMPLOOP1

AL1:

AJMPAL1

;中断服务程序

IRPRO:

PUSHPSW

PUSHACC

CLRP1.1;灭绿灯

LOOP3:

SETBP1.2;亮红灯

ACALLD500

CPLP1.2

ACALLD500

JNBP1.3,LOOP3;这里用P1.2进行监视,若开关没有闭合,则红灯一直闪烁。

POPACC

POPPSW

RETI

D500:

MOVR6,#255;延时子程序

DELAY:

MOVR7,#0FFH

DJNZR7,$

DJNZR6,DELAY

RET

END

实验接线:

P1.1接绿灯;P1.2接红灯;P1.3开关K1;P3.3接点触开关SP

2、将实验内容1中的外部中断源换成INT0,其中断向量地址为0003H,使用下降沿触发中断。

程序代码:

ORG0000h

AJMPMAIN;主程序

ORG0003H;中断矢量表p211

AJMPIRPRO;中断服务程序入口

ORG0050H;主程序

MAIN:

CLRP1.2;红灯灭

SETBP1.1;绿灯亮

SETBIT0;设置INT0负边缘触发p206(定时器控制寄存器TCON)

SETBEX0;外部中断0有效p208(中断容许控制器IE)

SETBEA;开中断p208(中断容许控制器IE)

LOOP1:

JBP1.1,LOOP1

LOOP2:

JNBP1.3,LOOP2

SETBP1.1

SJMPLOOP1

AL1:

AJMPAL1

;中断服务程序

IRPRO:

PUSHPSW

PUSHACC

CLRP1.1;灭绿灯

LOOP3:

SETBP1.2;亮红灯

ACALLD500

CPLP1.2

ACALLD500

JNBP1.3,LOOP3;这里用P1.3进行监视,若开关没有闭合,则红灯一直闪烁。

POPACC

POPPSW

RETI;中断返回

D500:

MOVR6,#255;延时子程序

DELAY:

MOVR7,#0FFH

DJNZR7,$

DJNZR6,DELAY

RET

END

实验接线:

P1.1接绿灯;P1.2接红灯;P1.3开关K1;P3.2接点触开关SP

3、在实验内容1的实现功能中加上有故障发生时,绿灯灭,红灯闪烁同时报警;

程序代码:

ORG0000h

AJMPMAIN;主程序

ORG0013H;中断矢量表p211

AJMPIRPRO;中断服务程序入口

ORG0050H;主程序

MAIN:

CLRP1.2;红灯灭

SETBP1.1;绿灯亮

SETBIT1;设置INT1负边缘触发p206(定时器控制寄存器TCON)

SETBEX1;外部中断1有效p208(中断容许控制器IE)

SETBEA;开中断p208(中断容许控制器IE)

LOOP1:

JBP1.1,LOOP1

LOOP2:

JNBP1.3,LOOP2

SETBP1.1

SJMPLOOP1

AL1:

AJMPAL1

;中断服务程序

IRPRO:

PUSHPSW

PUSHACC

CLRP1.1;灭绿灯

LOOP3:

SETBP1.2;亮红灯

ACALLD500

CPLP1.2

MOVR1,#200;

LOOP:

ACALLD500U;

CPLP1.4;P1.4取反输出

DJNZR1,LOOP;R1减1,不为0时转移到LOOP

JNBP1.3,LOOP3;这里用P1.2进行监视,若开关没有闭合,则红灯一直闪烁。

POPACC

POPPSW

RETI

D500:

MOVR6,#255;延时子程序

DELAY:

MOVR7,#0FFH

DJNZR7,$

DJNZR6,DELAY

RET

D500U:

MOVR5,#125;延迟500us

DJNZR5,$

RET

END

实验接线:

P1.1接绿灯;P1.2接红灯;P1.3开关K1;P1.4接响铃;P3.3接点触开关SP

五、问题与讨论

1、实验内容1要注意P3.3复用为外部中断1输入,即为INT1。

其中断向量地址为0013H,使用下降沿触发中断将IT1置1,开总中断将EA置1,开外部中断1将EX1置1.

2、实验内容2要注意P3.2复用为外部中断0输入,即为INT0。

其中断向量地址为0003H,使用下降沿触发中断将IT0置1,开总中断将EA置1,开外部中断1将EX0置1.

3、实验内容3要加上一个输出接响铃,加上的响铃代码必须加在中断服务程序中红灯闪烁的那一段。

响铃的声音要大一点,输出频率就要变大,最简单的方法就是加上一个延时子程序,响铃时调用。

因为原有的延时子程序是使红灯闪烁,频率很低。

实验四定时/计数实验

一、实验目的

1、熟悉8031定时/计数功能。

2、掌握定时/计数初始化编程方法。

二、实验内容

1、选择T1工作于模式0定时,在P1.0脚上输出周期为4ms的方波,单片机采用6MHZ晶振。

分析:

输出周期为4ms的方波,即高低电平的持续时间均为2ms,那么只要使P1.0脚上的电平每隔2ms取反一次,就可得到周期为4ms的方波。

将T1设为定时方式0:

GATE=0,C/T=0,M1M0=00;T0不用,可为任意,只要不使其进入方式3(此时,定时器1对外停止计数),一般取0即可。

计数初值的计算:

单片机系统默认的定时/计数器的工作时钟是晶振经12分频的,即T=12/(6*106),所以计数初值为

X=(213-2ms/T)=213-(2*10-3*6*106)/12=8192-1000=7192=1110000011000B

因为是13位计数器,所以X的高8位装入TH1,X的低5位装入TL1的低5位,即TH1=0E0H,TL1=18H。

思考:

T1计数结束采用中断工作方式,程序应如何编写?

2、在P1.7端接一个发光二极管LED,要求利用定时器控制,使LED亮1秒、灭1秒,周而复始,设

=6MHZ。

三、实验内容一参考程序框图:

 

四、实验步骤

1、选择T1工作于模式0定时,在P1.0脚上输出周期为4ms的方波,单片机采用6MHZ晶振。

(查询方式)

程序代码:

ORG0000H

MOVTMOD,#00H;设定Timer1工作在模式0下

LOOP2:

MOVTH1,#0E0H;向Timer1中载入计数的初始值

MOVTL1,#18H

SETBTR1;启动

AGAIN:

JBCTF1,LOOP1;定时时间到否?

没有则继续查询,到了则输出,并清TF1位等。

SJMPAGAIN

LOOP1:

CPLP1.0

SJMPLOOP2

END

思考:

T1计数结束采用中断工作方式

程序代码:

ORG0000H;中断方式:

选择T1工作,方式0

AJMPMAIN

ORG001BH

AJMPTIMER_1

ORG0030H

MAIN:

SETBP1.0;P1.0输出为高电平

MOVTMOD,#00H;设置定时器1,工作在定时方式0

MOVTH1,#0E0H;输入时间初始常数

MOVTL1,#18H

SETBTR1;启动Timer1

SETBEA;开中断

SETBET1;容许Timer1中断

WAIT:

SJMPWAIT

TIMER_1:

CPLP1.0

MOVTH1,#0FCH

MOVTL1,#18H

RETI

END

2、在P1.7端接一个发光二极管LED,要求利用定时器控制,使LED亮1秒、灭1秒,周而复始,设

=6MHZ。

程序代码:

ORG00H;查询方式

AJMPMAIN

MAIN:

MOVTMOD,#10H;选择T1工作,方式1

SETBP1.0

SETBTR1;启动定时器

LOOP1:

MOVR2,#20;设置调用延时的次数为20次

LOOP2:

CALLDELAY;调用50ms的延时

DJNZR2,LOOP2;若调用延时次数不到,则继续调用延时程序

CPLP1.0;取反,输出

AJMPLOOP1

DELAY:

MOVTH1,#9EH;50ms的延时子程序

MOVTL1,#58H

LOOP:

JBCTF1,NEXT

SJMPLOOP

NEXT:

RET

END

用中断方式实现:

ORG0000H;中断方式:

选择T1工作,方式1,TEST4_4

AJMPMAIN

ORG001BH

AJMPTIMER_1

ORG0030H

MAIN:

SETBP1.0;主程序

MOVTMOD,#10H

MOVTH1,#09eH

MOVTL1,#58H

SETBTR1

SETBEA

SETBET1

MOVR2,#20;设置循环次数

WAIT:

SJMPWAIT

TIMER_1:

DJNZR2,LOOP;中断服务程序

MOVR2,#20

CPLP1.0

LOOP:

MOVTH1,#9EH

MOVTL1,#58H

RETI

END

实验五串行口应用实验

一、实验目的

掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。

二、实验内容

1、重复发送同一个数据,观察TXD端输出的波形。

将8031串口设为工作方式1,即10位异步收发,发送时钟由计数器控制;计数器T1设为定时工作,工作方式2,即自动重装8位计数器;波特率取1200bps,不加倍;单片机采用6MHZ晶振。

计数初值的计算:

TH1=256-[(1+0)*fosc]/(12*32*BPS)

P3.1复用为串行发送端TXD,将其接至示波器,观察输出波形。

注意观察8位数据位前后的起始位和停止位。

2、自发自收。

将代码段中定义的10个数据0~9,通过串口发送和接收,存放在外部存储器7000H开始的单元中。

实验内容一参考程序框图:

 

三、实验步骤及结果

1、重复发送同一个数据,观察TXD端输出的波形。

程序代码:

ORG00H

START:

MOVSCON,#50H;设置串口工作在模式1,接收使能

MOVTMOD,#20H;使用T1工作在模式2下

MOVTH1,#0F3H;波特率1200bps

MOVTL1,#0F3H;

SETBTR1;

MOVA,#0DH;将数据赋给ACC

MOVSBUF,A;发送数据送缓冲区

WAIT:

JNBTI,$;等待发送

CLRTI;若发送完,则清TI

MOVSBUF,A;未发完,则继续发送

AJMPWAIT;循环发送

END

结果:

将P3.1口接到示波器观察会有二进制010*******的波形。

2、自发自收。

将代码段中定义的10个数据0~9,通过串口发送和接收,存放在外部存储器7000H开始的单元中。

程序代码:

ORG00H

START:

MOVSCON,#50H;设置串口工作在模式1,接收使能

MOVTMOD,#20H;使用T1工作在模式2下

MOVDPTR,#7000H;将外部存储器初始地址赋给DPTR

MOVR0,#00H;将0赋给R0

MOVTH1,#0F3H;波特率1200bps

MOVTL1,#0F3H;

SETBTR1;

CLRA;清ACC

LOOP:

MOVA,R0;将待发数据赋给A

INCR0;R0+1→R0

CJNER0,#0BH,WAIT;判断是否发送完

SJMP$;停机

WAIT:

MOVSBUF,A;数据发送到缓冲区

JNBTI,$;等待发送

CLRTI;数据发送完,则清TI

MOVSBUF,A;未发完,则继续发送

MOVA,SBUF;接收数据

JNBRI,$;等待接收

CLRRI;接收完,则清RI

MOVA,SBUF;未接收完,则继续接收

MOVX@DPTR,A;将接收的数据送到指定位置

INCDPTR;DPTR自增1

JMPLOOP;跳回到LOOP,向串行口载入新数据。

END

结果:

程序运行前

运行后

很明显看出完成能实验要求,将0-9通过串行通信存到外部存储器7000H开始的单元。

四、问题与讨论

做串口自发自收的实验时,一定要将P3.0口与P3.1口用导线连起来,还有数据发送和接收都用查询方式。

刚开始用查表的方式将待发数据送A,这样就多次应用了DPTR寄存器,效率不高也很麻烦,后来用寄存器R0每次发送完后加1来实现将数据0-9赋给A。

还有接收程序部分开始作为子程序调用,后来不用,直接放在发送程序后面就行了,整段程序变得很简单明了。

附:

实验六装药生产线仿真

一、实验目的

1)掌握仿真软件Proteus的应用。

2)掌握系统设计的方法。

3)掌握程序编写与调试。

4)学会对系统进行改进。

二、实验内容

生产过程:

制药厂有一条装药丸的生产线,单片机的P3.4脚,即Timer0的外部事件输入端T0与生产线上的药丸漏斗上的红外传感器相连,每一颗药丸通过漏斗颈时,红外传感器都会检测到,并会向单片机的T0口输入一个脉冲信号。

单片机的P1.0口控制阀门打开

(1),或关闭(0),以控制药丸掉落到药瓶中的个数。

每个药瓶装满20粒药丸后,单片机的P1.1口输出一个高电平,使得履带电机转动,履带则运送下一个空瓶到漏斗下,准备装药。

P0口驱动一个2位的七段数码管,显示已经装好药丸的瓶数。

设计完整系统模拟上述生产过程,并运用Proteus软件进行仿真。

三、实验程序框图

四、实验步骤

1、用LED模拟阀门和履带,用脉冲开关模拟药丸装入,数码管显示包装的瓶数。

每输入20个脉冲,瓶数加1。

程序代码:

;装药丸出产线的程序,使用Timer做计数器。

ORG

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

当前位置:首页 > 自然科学 > 物理

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

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