单片机实验.docx

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

单片机实验.docx

《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(83页珍藏版)》请在冰点文库上搜索。

单片机实验.docx

单片机实验

 

8051单片机实验指导书

 

超想3000仿真器WINDOWS软件安装步骤

1、1超想3000仿真器WINDOWS软件安装步骤:

(1)将所配光盘放入光驱,双击我的电脑,然后双击光盘驱动图标。

(2)双击HK-51文件夹

(3)双击Superimage3000文件夹

(4)双击disk1文件夹

(5)双击Setup程序

(6)点击系统界面提示的(下一步),进行操作,直到安装完成。

 

连接51CPU适配板

连接51CPU适配板

在实验仪的右下角有三个插座,是用来安装96CPU适配板的。

仿真器与计算机的连接

仿真器与计算机的连接

仿真器与计算机的连接

●用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。

但务必注意所选用的串口未被设置成它用,如Modem口、鼠标口。

●应特别注意的是,在仿真器与计算机连接串口电缆时,两台机器必须都关断电源。

否则易损坏计算机和仿真器。

 

实验连线

实验连线

按实验方案,用随机的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接

触。

拆线时,应先回转一下,不要硬拨,以免损坏线路板。

不管是拆线还是插线,

都应在断电的情况下进行。

实验例程中“实验电路及连线”的粗线即为用户动手接

连的线。

 

实验一单片机仿真实验系统基本操作

1.实验目的:

掌握汇编语言设计方法;学习手工汇编的方法;学习键盘输入机器代码的方法;

2.实验器材:

(1)超想-3000TB综合实验仪1台

(2)HK51TB仿真板1块

3.实验原理:

尽管手工编译由于效率太低而在实际工作中不再使用,然而对于初学者而言,手工编译对理解编译原理

是必不可少的,同时对于理解一些譬如相对偏移、绝对偏移等专用名词的含义帮助甚丰。

仿真工具为了

使得工具的64K的程序空间(也称仿真ROM)、64K的数据空间(也称仿真RAM)和用户的64K的程序空

间(也称用户ROM)、64K的数据空间(也称用户RAM)完全分离,从而达到全资源开放(或准全资源开

放)目的,分别对/PSEN、/WR、/RD信号进行了硬件处理,分别对应仿真ROM空间、仿真RAM空间、用

户ROM空间、用户RAM空间,这四个空间的组合,即为四种工作模式。

4.实验步骤:

(1)按流程图编写程序,借助MCS51指令速查表手工编译成机器代码。

(2)把超想-3000TB综合实验仪与HK51TB仿真适配板连接好。

打开电源,数码管应显示8051,否则,请

速关机。

(3)通过键盘输入程序代码

(4)外部数据XDATA查看及修改

(5)设置工作模式

(6)单步调试

(7)断点调试

(8)特殊功能寄存器查看

5.实验内容:

1.拆字程序

把8000H地址上的内容拆开,高位送8001H地址的低位,低位送8002H地址的低位,8001H、8002H地址的

高位清零.本程序通常在把数据送显示缓冲区时使用。

 

实验流程

实验程序

;把指定字节的高低位拆开分别存放,多用于显示子程序

 

ORG0000H

MOVDPTR,#8000H;指定的字节

MOVXA,@DPTR

MOVB,A;暂存

SWAPA;交换

ANLA,#0FH;屏敝高位

INCDPTR

MOVX@DPTR,A

INCDPTR

MOVA,B

ANLA,#0FH;指定字节的内容屏敝高位

MOVX@DPTR,A

LOOP:

SJMPLOOP

END

2.拼字程序

把8000H、8001H两个字节的低位分别送入8002H的高位和低位。

本程序一般用于把显示缓冲区数据

取出拼装成一个字节。

 

实验流程

实验程序

;把两字节的低位合拼成一个字节,多用于显示子程序

ORG0000h

MOVDPTR,#8000H

MOVXA,@DPTR

ANLA,#0FH;屏敝高位

SWAPA

MOVB,A;保存

INCDPTR

MOVXA,@DPTR

ANLA,#0FH

ORLA,B;合拼

INCDPTR

MOVX@DPTR,A;送8002H存放

LOOP:

SJMPLOOP

END

3.数据区传送子程序

把外部扩展RAM(6264)的8000H-807FH中的内容传送到8080H开始的空间中去。

R2.R3存放源RAM区首址,

R6.R7存放需传送的字节数,R4.R5存放目的RAM区首址。

 

实验流程

 

实验程序

;数据传送子程序

ORG0000H

LOOP0:

MOVDPL,R3

MOVDPH,R2;建立源程序首地址

MOVXA,@DPTR;取数

MOVDPL,R5

MOVDPH,R4;目标首地址

LOOP:

MOVX@DPTR,A;传送

CJNER3,#0FFH,LOOPA

INCR2

LOOPA:

INCR3;源地址加1

CJNER5,#0FFH,LOOP1

INCR4

LOOP1:

INCR5;目地址加1

CJNER7,#00H,LOOP2

CJNER6,#00H,LOOP3

LOOP4:

SJMPLOOP4

LOOP2:

DECR7;字节数减1

SJMPLOOP0

LOOP3:

DECR7

DECR6

SJMPLOOP0;未完继续

END

4.数据排序

编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单字节无符号正整数,按从小到大

的次序重新排列。

实验流程

实验程序

;用冒泡法进行数据排序

ORG0000H

MOVR3,#50H

LOOP0:

MOVA,R3

MOVR0,A;指针送R0

MOVR7,#0AH;长度送R7

CLR00H;标志位为0

MOVA,@R0

LOOP1:

INCR0

MOVR2,A

CLRC

MOV22H,@R0

CJNEA,22H,LOOP2;相等吗?

SETBC

LOOP2:

MOVA,R2

JCLOOP3;小于或等于不交换

SETB00H

XCHA,@R0

DECR0

XCHA,@R0

INCR0;大于交换位置

LOOP3:

MOVA,@R0

DJNZR7,LOOP1

JB00H,LOOP0;一次循环中有交换继续

LOOP:

SJMPLOOP;无交换退出

END

3.清零程序

把外部RAM(XDATA)的2000-20FFHRAM空间置零

实验流程

实验程序

 

ORG000H

MOVR0,#00H

MOVDPTR,#2000H;空间首地址送DPTR

LOOP:

mova,#01h

MOVX@DPTR,A;清零

INCDPTR;DPTR加1

INCR0;字节数加1

CJNER0,#00H,LOOP;连续清256个字节

LOOP1:

SJMPLOOP1

END

 

实验二8051定点数运算程序设计

1.实验目的与要求

通过本实验,学习编写8051单片机定点数运算程序,同时进一步熟悉keilc软件调试的方法。

熟练掌握keilc调试环境的使用方法,编写并调试通过8051定点数加减运算和乘法运算程序。

对于子程序调用要学会使用入口和出口参数,同时还要学会通过CPU窗口和工作寄存器观察程序运行过程以及最后的结果。

2.实验内容

二进制定点数加减运算程序

(R2R3)和(R4R5)中的内容为两个用原码表示的二进制,最高位为符号位,将(R2R3)±(R4R5)的结果送R6R7.程序中DADD为原码加法子程序入口,DSUB为原码减法子程序入口,出口时CY=1发生溢出,CY=0为正常。

程序清单如下:

ORG0000H

MOVR2,#00H

MOVR3,#0C8H;100

MOVR4,#01H;-2

MOVR5,#2CH

LCALLDSUB

LCALLDADD

SJMP$

ZSUB:

MOVA,R4;取减数高字节

CPLACC.7;取减数符号取反以进行加法

MOVR4,A

;------------------

ZADD:

MOVA,R2

MOVC,ACC.7

MOVF0,C

;------------------

XRLA,R4;两数高字节异或

MOVC,ACC.7;C=1,两数异号,C=0,两数相同

;-------------------

MOVA,R2

CLRACC.7

MOVR2,A

MOVA,R4

CLRACC.7

MOVR4,A

;---------------------

JCJIAN;异号相减

MOVA,R3

ADDA,R5

MOVR7,A

MOVA,R2

ADDCA,R4

MOVR6,A

JBACC.7,QAZ

;----------------------

QWE:

MOVC,F0

MOVACC.7,C

MOVR6,A

CLROV

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

JIAN:

MOVA,R3

CLRC

SUBBA,R5

MOVR7,A

MOVA,R2

SUBBA,R4

MOVR6,A

JNBACC.7,QWE

BMP:

MOVA,R7

CPLA

ADDA,#1

MOVR7,A

MOVA,R6

CPLA

ADDCA,#0

MOVR6,A

CPLF0

SJMPQWE

;--------------------------

QAZ:

SETBC

RET

;-------------------------

END

 

二进制定点数乘法运算程序

将(R2R3)和(R6R7)两个双字节无符号数相乘,结果送R4R5R6R7。

程序清单如下:

ORG00H

MOVR2,#00H

MOVR3,#64H

MOVR6,#00H

MOVR7,#64H

NMUL:

MOVR4,#0

MOVR5,#0

MOVR0,#16;16位二进制数

CLRC

NMLP:

MOVA,R4;右移一位

RRCA

MOVR4,A

MOVA,R5

RRCA

MOVR5,A

MOVA,R6

RRCA

MOVR6,A

MOVA,R7

RRCA

MOVR7,A

INCR1

JNCNMLN;籆为移出的乘数最低位,若为0,不执行加法

MOVA,R5;执行加法

ADDA,R3

MOVR5,A

MOVA,R4

ADDCA,R2

MOVR4,A

NMLN:

DJNZR0,NMLP;16次

MOVA,R4;最后再右移一位

RRCA

MOVR4,A

MOVA,R5

RRCA

MOVR5,A

MOVA,R6

RRCA

MOVR6,A

MOVA,R7

RRCA

MOVR7,A

NOP

NOP

END

 

实验三8051单片机P1口应用实验

1实验目的

(1)掌握P1口作为I/O口时的使用方法。

(2)理解读引脚和读锁存器的区别。

3实验器材

(1)超想-3000TB综合实验仪1台

(2)超想3000仿真器1台

(3)连线若干根

(4)计算机1台

4实验原理

由8051组成的单片机系统通常情况下,P0口分时复用作为地址、数据总线,P2口提供A15-A8即高8,位地址,P3口用作第二功能,只有P1口通常用作I/0口。

P1口是8位准双向口,它的每一位都可独立地定义为输入或输出,因此既可作为8位的并行I/O口,也可作为8位的输入输出端。

当工作在输入方式时,对应位的锁存器必须先置1,才能正确地读到引脚上的信号,否则,执行读引脚指令时,若对应位的锁存器的值为0,读的结果永远为0。

每个I/0端口都有两种读入,即读锁存器和读引脚,读引脚指令一般都是以I/0端口为源操作数的指令,如MOVC,P1.3,而读锁存器指令一般为“读-修改-写”指令,如ANLP1.3,C指令,请同学们在实验中体会。

图示中,P1.2作为输出口,P1.3作为输入口。

 

P1口作为输出

 

实验电路

 

实验程序

ORG0000H

START:

MOVA,#01H

LP:

MOVP1,A

MOVR1,#10

DEL1:

MOVR2,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RLA

LJMPLP

END

8路指示灯读出8路开关量的状态

 

org0000h;开始

loop:

movp2,#0ffh

MOVA,P2;P2口的状态(开关)读到A

MOVP1,A;把A的数据送到P1口(指示灯)

SJMPLOOP;重新开始

END

 

广告灯实验

框图

实验电路

程序

ORG0000H

START:

MOVDPTR,#TABLE

LOOP:

CLRA

MOVCA,@A+DPTR

CJNEA,#25H,LOOP1

SJMPSTART

LOOP1:

MOVP1,A

MOVR3,#20

LCALLDELAY

INCDPTR

SJMPLOOP

DELAY:

MOVR4,#20

D1:

MOVR5,#248

DJNZR5,$

DJNZR4,D1

DJNZR3,DELAY

RET

TABLE:

DB01H,02H,04H,08H

DB10H,20H,40H,80H

DB01H,02H,04H,08H

DB10H,20H,40H,80H

DB80H,40H,20H,10H

DB08H,04H,02H,01H

DB80H,40H,20H,10H

DB08H,04H,02H,01H

DB00H,0FFH,00H,0FFH

DB00H,0FFH,00H,0FFH

DB25H

END

实验四外部中断实验

1.实验目的与要求

通过本实验加深对8051单片机中断系统的理解,学习外部中断的基本使用方法和相关编程

3.实验器材:

(1)超想-3000TB综合实验仪1台

(2)超想3000仿真器1台

(3)连线若干根(4)计算机1台

4.实验原理:

MCS-51单片机有5个中断源,其中两个是由/INT0、/INT1引脚输入的外部中断源;另外三个是内部中断源即由T0、T1的溢出引起中断和串行口发送完一个字节或接收到一个字节数据引起中断。

触发外部中断有两种方式,即下降沿引起中断或低电平引起中断。

当编程TCON中的ITi为1时,则引起触发的方式为边沿触发方式,反之为低电平触发方式。

每个中断源的中断请求能否得到响应要受两级“开关”的控制,即一个总“开关”EA和五个分“开关”ES、ET1、EX1、ETO和EX0的控制,只有当EA为1,且对应的分“开关”也为1时,相应中断源的中断请求才能被响应。

5个中断源可编程为两个优先级,同一优级内以/INT0的优先级最高,然后是TO中断、/INT1中断、T1中断和串行口中断。

5个中断源对应有个固定的中断服务程序入口地址。

CPU在每个机器周期顺序采样每个中断源,如查询到某个中断源的中断标志为1,中断系统通过硬件自动将相应的中断矢量装入PC,进入中断服务程序。

实验内容

P1口的8个灯循环亮,用单次脉冲申请中断,按下脉冲源后8个灯全部闪烁5次后继续循环亮。

 

电路

框图

程序

org0000h;开始

sjmpstart

org0003h;中断入口(P3.2)

sjmpext0;到中断子程序

start:

movie,#10000001b;中断使能

movip,#00000001b;中断优先

movtcon,#0000000b;中断为电平触发

movsp,#70h;堆栈指针

loop:

mova,#01h;左移动初值

movr2,#07;左移动7次

loop1:

movp1,a;输出到P1口

acalldelay;延时

rla;左移动一位

djnzr2,loop1;左移动7次了吗?

movr2,#07;设定右移7次

loop2:

rra

movp1,a

acalldelay

djnzr2,loop2;右移动7次了吗?

sjmploop

ext0:

pushacc;把a压入堆栈

pushpsw;保存现场

setbrs0;设定工作寄存器1

clrrs1

mova,#0FFH;使P1全亮一次

movr2,#10;闪烁5次(亮灭共10次,小心了)

loop3:

movp1,a;输出到P1

acalldelay

cpla

djnzr2,loop3;10次到了么?

没有继续否则完成

poppsw;恢复现场

popacc

reti

delay:

movr5,#20;延时200MS

d1:

movr6,#20

d2:

movr7,#250

djnzr7,$

djnzr6,d2

djnzr5,d1

ret

end

2P1口的8个灯循环亮,用单次脉冲申请中断,按下脉冲源后小喇叭响,松开继续循环

电路

框图

 

程序清单

 

org0000h;开始

sjmpstart;跳到主程序

org0003h;int0中断入口(p3.2)

sjmpext0;到中断子程序

start:

movie,#10000001b;中断使能

movip,#00000001b;中断优先

movtcon,#0000000b;中断为电平触发

movsp,#70h;堆栈指针

main:

;主程序循环点亮

movp1,#0FFh;全亮

lcalldelay;延时一段时间

mova,#01h;每次只亮一个灯。

loop:

movp1,a;输出到p1

lcalldelay;延时

rla;循环左移

ajmploop;跳转main继续循环

ext0:

pushacc;把A的值压入堆栈,保存A)

pushpsw;(保存现场)

cplp3.3;小喇叭响

acalldeL;小喇叭响的速率

poppsw;恢复现场

popacc

reti

delay:

movr5,#20;延时子程序1闪烁灯调用

d1:

movr6,#20

d2:

movr7,#250

djnzr7,$

djnzr6,d2

djnzr5,d1

ret

del:

movr4,#250;延时子程序2小喇叭调用

djnzr4,$

ret

end

 

实验五定时器/计数器实验

1.实验目的:

通过本实验学习8051内部定时器的使用和编程方法,进一步掌握中断处理程序的编程

2.实验器材

(1)超想-3000TB综合实验仪1台

(2)超想3000仿真器1台

(3)连线若干根(4)计算机1台

3.实验原理

MCS-51单片机有两个16位的定时计数器T0和T1,它们都有定时和对外部事件进行计数的功能,可用于定时控制、对外部事件检测和计数等场合。

计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。

当工作在定时方式时,计数脉冲来自单片机的内部,即振荡器信号12分频后作计数脉冲,每个机器周期的时间使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能;当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个脉冲时,计数器加1,从而实现计数功能。

可以通过编程来指定定时/计数器的功能,以及它的工作方式。

实验内容

P1.0状态取反

 

框图

 

实验程序

org0000h;中断控制的P1.0小灯。

ajmpmain

org000bh

ajmpint_timer0

org0030h

main:

movtmod,#01h;设置定时器工作方式寄存器。

movth0,#high(65536-50000)

movtl0,#low(65536-50000);设50MS初始值。

movie,#82h;设置中断允许寄存器

mov30h,#10;

mov31h,#6;30H和31H是两个软件计数器。

setbtr0;启动定时

ajmp$;原地踏步

int_timer0:

;定时器0中断服务程序。

movth0,#high(65536-50000)

movtl0,#low(65536-50000);重设50MS定时。

djnz30h,l1;

mov30h,#10;

djnz31h,l1;

mov31h,#6;软件计数

cplp1.0;10*6*50MS=3000MS时间到,P1.0取反

l1:

reti;中断返回

end

定时器2计数实验

 

框图

实验程序

ORG0000H

LJMPMAIN

ORG00030H

MAIN:

MOVTMOD,#60H

MOVTH1,#0FFH

MOVTL1,#0FFH

MOVA,#00H

MOVIE,#88H

SETBTR1

MOVP1,#00H

ACALLDEL

LOOP:

JBCTF1,LOOP1

AJMPLOOP

LOOP1:

INCA

MOVP1,A

ACALLDEL

AJMPLOOP

DEL:

MOVR7,#014H

DEL1:

MOVR6,#0FFH

DEL2:

MOVR5,#01FH

DEL3:

DJNZR5,DEL3

DJNZR6,DEL2

DJNZR7,DEL1

RET

END

 

8255输入输出

1.实验目的

掌握8255的工作原理以及编程方法,了解软件与硬件的调试技术。

 

2.实验内容

编写并调试出一个实验程序,其功能为用8255模拟控制交通灯运行情况。

3.实验原理:

8255有三个8位的并行口,端口既可以编程为普通I/O口,也可以编程为选通I/O口和双向传输

8255为总线兼容型,可以与8051的总线直接接口。

其中,口地址取决于片选CS和A1、A0。

选择如下?

 

本实验中8255编程为PB口、PC口、PA口均输出,根据

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

当前位置:首页 > 总结汇报 > 学习总结

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

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