单片机实验.docx
- 文档编号:10145795
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:83
- 大小:1.16MB
单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(83页珍藏版)》请在冰豆网上搜索。
单片机实验
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口均输出,根据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验