单片机实验.docx
- 文档编号:7630673
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:36
- 大小:308.85KB
单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(36页珍藏版)》请在冰豆网上搜索。
单片机实验
实验二汇编语言程序设计实验
1、拆字程序实验
一、实验目的:
掌握汇编语言设计方法。
二、实验内容:
把8000H地址上的内容拆开,高位送8001H地址的低位,低位送8002H地址的低位,8001H、8002H地址的高位清零.本程序通常在把数据送显示缓冲区时使用。
三、实验器材:
计算机1台
四、实验步骤:
1、按流程图编写程序,以下是通过计算机交叉汇编得到的.LST文件清单,供参考。
2、文件编译连接、装载,用鼠标点击[项目/重建所有目标文件],系统自动进行编译,并弹出信息窗口,若有错误则重新修改再编译;若无错误,点击[调试/启动/停止调试]后进入调试状态。
3、设置观察窗口:
(1)用鼠标点击[视图/存储器窗口],在地址栏中输入[0X8000];
(2)在8000H中写入数据(任意);(3)单步执行观察寄存器和8000H—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、数据区传送子程序实验
一、实验目的:
学习Windows平台下的编辑、编译、排错调试方法。
二、实验内容:
把外部扩展RAM(6264)的8000H-807FH中的内容传送到8080H开始的空间中去。
R2.R3存放源RAM区首址,R6.R7存放需传送的字节数,R4.R5存放目的RAM区首址。
三、实验器材:
计算机1台
四、程序框图:
五、实验程序:
;数据传送子程序
ORG0000H
MOVR2,#80H
MOVR3,#00H
MOVR6,#00H
MOVR7,#7FH
MOVR4,#80H
MOVR5,#80H
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
3、清零内存实验
一、实验目的:
学习Windows软件的调试方法
二、实验内容:
把外部RAM的8000-80FFHRAM空间置数
三、实验器材:
计算机1台
四、程序框图:
五、实验程序:
ORG0000H
MOVR0,#00H
MOVDPTR,#8000H;空间首地址送DPTR
LOOP:
mova,#12h
MOVX@DPTR,A;清零
INCDPTR;DPTR加1
INCR0;字节数加1
CJNER0,#7FH,LOOP;连续清256个字节
LOOP1:
SJMPLOOP1
END
实验三P1口应用实验
一、实验目的:
掌握P1口的基本方法和编程。
二、实验内容:
利用P1口输出高低电平,控制对外部装置的控制。
三、实验步骤
1采用P1口作输出
P1口是准双向口,它作为输出口使用时具有锁存功能。
实验所需要LED电平显示电路如图1所示。
实验平台上有8只发光二极管,由U33的74HC245驱动,以显示电平状态。
高电平“1”点亮发光二极管。
电平显示电路
在实验系统上如下表所示连线。
执行如下程序,发光二极管LED将循环显示。
连线
连接孔1
连接孔2
1
P1.0
L0
2
P1.1
L1
3
P1.2
L2
4
P1.3
L3
连线说明表
四、实验程序:
Loop:
mova,#01h
movr2,#8
Output:
movP1,a
rla
LCALLDelay
djnzr2,Output
ljmpLoop
Delay:
;延时子程序
movr6,#0
movr7,#0
DelayLoop:
djnzr6,DelayLoop
djnzr7,DelayLoop
ret
end
关于延时子程序的时间计算,查指令表可知MOV和DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6=2μs,所以上面延时子程序该的执行时间为:
(256×255+2)×2×12÷6≈261ms
2采用P1口作输入和输出
由P1口的准双向口结构可知,当作为输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据是不正确的。
实验所需要LED电平显示电路和逻辑电平开关电路如图2所示。
实验平台上有8只拨动开关K0-K7及相应的驱动电路,以产生“1”、“0”的逻辑电平。
开关向上拨相应插孔输出高电平为“1”,反之,输出低电平为“0”。
逻辑电平开关电路
在实验系统上如下表所示连线。
执行如下程序,发光二极管LED将随拨动开关的位置而点亮或熄灭。
连线
连接孔1
连接孔2
1
P1.0
k0
2
P1.1
k1
3
P1.2
L0
4
P1.3
L1
连线说明
实验程序
KeyLeftequP1.0
KeyRightequP1.1
LedLeftequP1.2
LedRightequP1.3
SETBKeyLeft
SETBKeyRight
Loop:
MOVC,KeyLeft
MOVLedLeft,C
MOVC,KeyRight
MOVLedRight,C
LJMPLoop
END
3、P1口控制继电器
“系统资源区”的P1.0接继电器的Con端,继电器的In接VCC,编制程序,使P1.0电平变化,高电平时继电器吸合,常开触点接上,双色灯亮绿灯,低电平时继电器不工作,常闭触点闭合,亮红灯。
AA:
clrp1.0
movr0,#10h
LCALLDELY
LCALLDELY
NOP
setbp1.0
LCALLDELY
LCALLDELY
SJMPAA
DELY:
MOVR5,#02H;延时
DELY1:
MOVR7,#00H
DELY2:
DJNZR7,DELY2
DJNZR6,DELY2
DJNZR5,DELY2
RET
END
实验四外部中断实验
一、实验目的:
掌握工业顺序控制程序的简单编程,中断的使用。
二、实验内容:
8031P1.0-P1.6控制注塑机七道工序,现模拟控制七只发光二极管的点亮,高电平点亮。
设定每道工序时间转换为延时,P3.4为开工启动开关,高电平启动。
P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出。
设定7道工序只有一位输出。
三、实验器材:
1、超想3000TC综合实验仪1台2、KEIL仿真器1台
3、计算机1台4、连线若干根
四、程序框图:
主程序流程图中断服务子程序
五、接线图案:
六、实验步骤:
按图接好连线。
执行程序,把K1和K0接到高电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K0置为低电平,看是否有声音报警。
恢复中断1,报警停,又从刚才报警时一道程序执行下去。
七、实验程序:
;掌握工业顺序控制的简单编程,中断的使用
ORG0000H
SJMPMAIN
ORG0013H
LJMPINTO
MAIN:
MOVP1,#00H
ORLP3,#00H
PO11:
JNBP3.4,PO11;开工吗?
ORLIE,#84H
ORLIP,#04H
MOVPSW,#00H;初始化
MOVSP,#53H
PO12:
MOVP1,#01H;第一道工序
ACALLPO1BH
MOVP1,#02H;第二道工序
ACALLPO1BH
MOVP1,#04H;第三道工序
ACALLPO1BH
MOVP1,#08H;第四道工序
ACALLPO1BH
MOVP1,#10H;第五道工序
ACALLPO1BH
MOVP1,#20H;第六道工序
ACALLPO1BH
MOVP1,#40H;第七道工序
ACALLPO1BH
SJMPPO12
INTO:
MOVB,R2;保护现场
PO17:
MOVP1,#00H;关输出
MOV20H,#0A0H;振荡次数
PO18:
SETBP1.7;振荡
ACALLPO1A;延时
CLRP1.7;停止
ACALLPO1A;延时
DJNZ20H,PO18;不为零转
CLRP1.7
ACALLPO1A
JNBP3.3,PO17;故障消除吗?
MOVR2,B;恢复现场
RETI
PO19:
MOVR2,#10H;延时1
ACALLDELY
RET
PO1A:
MOVR2,#06H;延时2
ACALLDELY
RET
PO1BH:
MOVR2,#30H;延时3
ACALLDELY
RET
DELY:
PUSH02H;延时子程序
DEL2:
PUSH02H
DEL3:
PUSH02H
DEL4:
DJNZR2,DEL4
POP02H
DJNZR2,DEL3
POP02H
DJNZR2,DEL2
POP02H
DJNZR2,DELY
RET
END
实验五定时/计数器的记数功能实验
一、实验目的:
1、熟悉8031定时/计数器的记数功能;2、掌握初始化编程方法;3、掌握中断程序的调试方法。
二、实验内容:
定时/记数器0对外部输入的脉冲进行计数,并送显示器显示。
三、实验器材:
1、超想-3000TC综合实验仪1台2、KEIL仿真器1台
3、连线若干根4、计算机1台
四、实验原理:
MCS-51有两个16位的定时/计数器:
T0和T1。
计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。
当工作在定时方式时,计数脉冲来自单片机的内部,每个机器周期使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能。
当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个由1到0的电平变化时,计数器的值加1,从而实现计数功能。
可以通过编程来指定时计数器的功能,以及它的工作方式。
读取计数器的当前值时,应读3次。
这样可以避免在第一次读完后,第二次读之前,由于低位溢出向高位进位时的错误。
五、接线图:
接线方案1接线方案2
六、程序框图:
七、实验步骤:
用连线把“系统资源区”的P3.4孔连“脉冲源”的“DOWN”孔,执行程序,按动AN锁按钮,观察数码管上计数脉冲的个数。
八、思考问题:
把P3.4孔分别与“脉冲源”的2MHZ、1MHZ、0.5MHZ孔相连时,显示值反而比连0.25MHZ孔更慢,为什么?
当fosc=6MHZ时,能够计数的脉冲信号最高频率为多少?
九、实验程序:
;对定时器0外部输入的脉冲信号进行计数且显示
OUTBITequ0e101h
CLK164equ0e102h;段控制口(接164时钟位)
DAT164equ0e102h;段控制口(接164数据位)
LEDBufequ40h
INequ0e103h
ORG0000h
MOVSP,#60H
MOVDPTR,#0e100H;8155初始化
MOVA,#03H
MOVX@DPTR,A
MOVTMOD,#05H;定时器初始化
MOVTH0,#00H
MOVTL0,#00H
SETBTR0
LOOP0:
MOVR2,TH0
MOVR3,TL0
LCALLLOOP1
MOVR0,#40H
MOVA,R6
LCALLPTDS
MOVA,R5
LCALLPTDS
MOVA,R4
LCALLPTDS
LCALLDISPLAY
SJMPLOOP0
LOOP1:
CLRA;二转十子程序
MOVR4,A
MOVR5,A
MOVR6,A
MOVR7,#10H
LOOP2:
CLRC
MOVA,R3
RLCA
MOVR3,A
MOVA,R2
RLCA
MOVR2,A
MOVA,R6
ADDCA,R6
DAA
MOVR6,A
MOVA,R5
ADDCA,R5
DAA
MOVR5,A
MOVA,R4
ADDCA,R4
DAA
MOVR4,A
DJNZR7,LOOP2
RET
PTDS:
MOVR1,A;拆字子程序
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
Delay:
movr7,#0;延时子程序
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DISPLAY:
setb0d3h
movr0,#LEDBuf
movr1,#6;共6个八段管
movr2,#00000001b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#00h
movx@dptr,a;关所有八段管
mova,@r0
movdptr,#LEDmap
movca,@a+dptr
movB,#8;送164
DLP:
rlca
movr3,a
movacc.0,c
anla,#0fdh
movdptr,#DAT164
movx@dptr,a
movdptr,#CLK164
orla,#02h
movx@dptr,a
anla,#0fDh
movx@dptr,a
mova,r3
djnzB,DLP
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelay
mova,r2;显示下一位
rla
movr2,a
incr0
djnzr1,Loop
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
clr0d3h
ret
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
END
实验六8255输入输出实验
一、实验目的:
了解8255和8155接口方法;了解芯片的性能及编程方法。
二、实验内容:
设计8255与单片机的接口。
三、实验器材:
(1)超想-3000TB综合实验仪1台
(2)超想3000仿真器1台
(3)连线若干根
(4)8255芯片1片
四、实验原理:
8255是一种可编程并行I/O扩展接口芯片,内集成有256字节的静态RAM,一个14位的定时计数器。
8255有三个8位的并行口,端口既可以编程为普通I/O口,也可以编程为选通I/O口和双向传输口。
8255为总线兼容型,可以与8051的总线直接接口。
其中,口地址取决于片选CS和A1、A0。
1、端口输入输出实验
本实验中8255编程为PB口输入、PC口、PA口输出,根据8255状态控制字选择方法。
由于该电路中8255的片选段CS接到YC2,因此PA、PB、PC以及控制口的地址分别为0A000H、0A001H、0A002H、0A003H。
编程实现8255的PA口按方式0输出,PB口按方式0输入,将PB口外接8个开关的状态通过PA口外接的LED灯反映出来。
接线图:
8255的片选段CS55接到YC2,8255的PA0-PA7接到L0-L7,PB0-PB7接到K0-K7。
实验程序:
PORTAEQU0A000H;8255PA口地址
PORTBEQU0A001H;8255PB口地址
PORTCEQU0A002H;8255PC口地址
CADDREQU0A003H;8255控制字地址
SJMPSTART
ORG0030H
START:
MOVA,#82H;方式0,PA,PC输出,PB输入
MOVDPTR,#CADDR
MOVX@DPTR,A
LOOP:
MOVDPTR,#PORTB
MOVXA,@DPTR;读入PB口
MOVDPTR,#PORTA
MOVX@DPTR,A;输出到PA口
LCALLDELAY
LJMPLOOP
DELAY:
MOVR6,#0;延时子程序
DELAY1:
MOVR7,#0
DELAY2:
DJNZR7,DELAY2
DJNZR6,DELAY1
RET
END
2、8255控制交通灯
8255的片选段CS接到YC2,因此PA、PB、PC以及控制口的地址分别为0A000H、0A001H、0A002H、0A003H。
本实验中8255编程为PB口、PC口、PA口均输出,根据8255状态控制字选择方法,8255控制字应为80H。
接线图:
8255的片选段CS55接到YC2
实验程序:
程序框图:
ORG0000H
start:
MOVDPTR,#0AC03H
MOVA,#080H
MOVX@DPTR,A
MOVDPTR,#0AC00H
MOVA,#0FFH
MOVX@DPTR,A;全灭
LCALLDelay
MOVDPTR,#0AC00H
MOVA,#0F0H
MOVX@DPTR,A;全红
LCALLDelay
MOVDPTR,#0AC00H
MOVA,#05AH
MOVX@DPTR,A
LCALLDelay
MOVDPTR,#0AC00H
MOVA,#0F5H
MOVX@DPTR,A
LCALLDelay
MOVDPTR,#0AC00H
MOVA,#0AH
MOVX@DPTR,A;全黄
LCALLDelay
MOVDPTR,#0AC00H
MOVA,#0A0H
MOVX@DPTR,A
LCALLDelay
MOVDPTR,#0AC00H
MOVA,#0A5H
MOVX@DPTR,A
LCALLDelay
SJMPSTART
Delay:
MOVR7,#08H
L1:
MOVR6,#0FFH
L2:
MOVR5,#0FFH
L3:
DJNZR5,L3
DJNZR6,L2
DJNZR7,L1
RET
END
实验七D/A转换实验
一、实验目的:
了解D/A转换与单片机的接口方法;了解D/A转换芯片DA0832的性能及编程方法。
二、实验内容:
利用0832输出一个从0V开始逐渐升至5V再降至0V的三角波电压,数码管显示数字量值。
三、实验器材:
1、超想-3000TC综合实验仪1台2、KEIL仿真器1台
3、连线若干根4、计算机1台
四、接线图案:
五、、实验原理:
D/A转换器的功能主要是将输入的数字量转换成模拟量输出,在语音合成等方面得到了广泛的应用。
本实验中采用的转换器为DAC0832,该芯片为电流输出型8位D/A转换器,输入设有两级缓冲锁存器,因此可同时输出多路模拟量。
本实验中采用单级缓冲连接方式,用0832来产生三角波,具体线路如上图所示。
VREF引脚的电压极性和大小决定了输出电压的极性与幅度,超想-3000TC综合实验仪上的DA0832的第8引脚(VREF)的电压已接为-5V,所以输出电压值的幅度为0-5V。
六、实验步骤:
1、把DA0832的片选CS32孔接至YC3(0B000H-0BFFFH)孔。
2、编写程序、编译程序:
用单步、断点、连续方式调试程序,排除软件错误。
运行程序,8155键显区数码管上显示不断加大或减小的数字量,用万用表测量D/A输出孔AOUT,应能测出不断加大或减小的电压值。
七、思考问题:
修改程序,使能产生锯齿波。
九、实验程序:
程序框图:
OUTBITequ0e101h;位控制口
CLK164equ0e102h;段控制口(接164时钟位)
DAT164equ0e102h;段控制口(接164数据位)
INequ0e103h;键盘读入口
LEDBufequ40h;显示缓冲
org0000h
movsp,#60h
movdptr,#0e100h;8155初始化
mova,#03h
movx@dptr,a
mov40h,#00h;显示缓冲区置值
mov41h,#08h
mov42h,#03h
mov43h,#02h
loop1:
movr5,#00h
loop2:
movdptr,#0B000h;0832DA从小到大转换
mova,r5
movx@dptr,a
movr0,#45h
mov45h,a;拆字后送显示缓冲区
acallptds
movr6,#15h
dir10:
acalldisplay;调用显示子程序
djnzr6,dir10
incr5
cjner5,#00h,loop2
loop3:
movdptr,#0B000h;0832DA从大到小转换
decr5
mova,r5
movx@dptr,a
movr0,#45h
acallptds
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验