单片机接口技术与实验.docx

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

单片机接口技术与实验.docx

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

单片机接口技术与实验.docx

单片机接口技术与实验

--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--

 

单片机接口技术与实验(附原理图及源程序)(总25页)

《单片机接口技术与实验》

 

姓名:

学号:

年级:

专业:

电子信息科学与技术

实验二并行口输入输出实验——循环彩灯控制

一、实验功能

(1).P1口接8个开关,P0口接8个灯,每个开关对应一个灯,实时读取开关状态,开关闭合时,灯亮。

开关断开时,灯灭。

二、实验原理图

注意:

因为P0口作为输出口时必须接上拉电阻,为简化起见,此处接到P2口上

三、实验程序

org0000h

ljmpmain

org0100h

main:

movp1,#0ffh

movp2,p1

ajmpmain

end

(2)

一、实验功能

用5个开关K0~K4,控制P0口所接8个灯的循环,各开关的功能要求如下:

(1)K1~K2分别选择灯的四种闪动方式;

(2)K3用于控制灯的循环方式(顺时针或逆时针);

(3)K4用于选择灯的两种循环速度

(4)K0用于引发外部中断,在外部中断子程序中,读取通过K1-K4所设定的循环

彩灯的工作方式,并按所设定的工作方式控制彩灯运行。

二、实验原理图

三、实验流程图

中断程序

把的状态存入位地址50H

把的状态存入位地址51H

是否为1

是否为1

MOVA,#80H

是否为1

MOVA,#0C0H

MOVA,#0AAH

MOVA,#0E0H

开始

50H是否为1

调用延时程序DELAY1

调用延时程序DELAY2

51H是否为1

灯循环右移子程序:

LOOP1

灯循环左移子程序:

LOOP2

结束

MOVP1,#0FFH

四、实验程序

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT0PR0

ORG0100H

MAIN:

MOVP1,#0FFH

MOVSP,#60H

SETBEX0

SETBIT0

SETBEA

MOVC,

MOV50H,C

MOVC,

MOV51H,C

JB,NEXT1

JNB,NEXT2

NEXT1:

JB,CIRCLE1

JNB,CIRCLE2

NEXT2:

JB,CIRCLE3

JNB,CIRCLE4

CIRCLE1:

MOVA,#80H

LJMPSTEP0

CIRCLE2:

MOVA,#0C0H

LJMPSTEP0

CIRCLE3:

MOVA,#0AAH

LJMPSTEP0

CIRCLE4:

MOVA,#0E0H

LJMPSTEP0

STEP0:

MOVP2,A

JB50H,S1

JNB50H,S2

STEP1:

JB51H,LOOP1

JNB51H,LOOP2

S1:

LCALLDELAY1

LJMPSTEP1

S2:

LCALLDELAY2

LJMPSTEP1

DELAY1:

MOVR7,#100

D1:

MOVR6,#100

D2:

MOVR5,#10

D3:

DJNZR5,D3

DJNZR6,D2

DJNZR7,D1

RET

DELAY2:

MOVR7,#200

D4:

MOVR6,#100

D5:

MOVR5,#10

D6:

DJNZR5,D6

DJNZR6,D5

DJNZR7,D4

RET

LOOP1:

RLA

LJMPSTEP0

LOOP2:

RRA

LJMPSTEP0

ORG0400H

INT0PR0:

MOVC,

MOV50H,C

MOVC,

MOV51H,C

JB,WORK1

JNB,WORK2

WORK1:

JB,L1

JNB,L2

WORK2:

JB,L3

JNB,L4

L1:

MOVA,#80H

LJMPPASS

L2:

MOVA,#0C0H

LJMPPASS

L3:

MOVA,#0AAH

LJMPPASS

L4:

MOVA,#0E0H

LJMPPASS

PASS:

RETI

END

实验三七段LED数码管控制实验

一、实验功能

1.实验采用4位一体的数码管,用P1口通过驱动芯片控制段码输出信号线,P0口

通过驱动芯片控制位选线:

(1)当开关K0接低电平时,第一位依次显示0~F,然后第二位、第三位、第四

位,再循环回第一位。

(2)当开关K0接高电平时,四位动态显示“HELP”

二、实验原理图

三、实验流程图

开始

是否为1

调用延时子程序delay1

按位循环显示0-F

调用位显示子程序LOOP1

左移一位P2

判断是否显示一遍

显示HELP子程序

位显示子程序LOOP1

是否为1

调用延时子程序delay1

依次查表,付给P0显示数字

判断数是否显示一遍

位显示子程序HELP

是否为0

调用延时子程序delay1

返回

显示HELP

四、实验程序

org0000h

ljmpmain

org0100h

main:

movp2,#0ffh

setb

movdptr,#tab

movr0,#0

mova,#00h

loop1:

movr0,#00h

jnb,h

sjmploop2

h:

movp2,#0feh

lcalllight

movp2,#0fdh

lcalllight

movp2,#0fbh

lcalllight

movp2,#b

lcalllight

sjmploop1

light:

jb,loop2

mova,r0

movca,@a+dptr

incr0

movp0,a

lcalldelay1

cjner0,#16,light

movr0,#0

ret

loop2:

movp2,#0feh

movp0,#73h

lcalldelay1

jnb,loop1

movp2,#0fdh

movp0,#38h

lcalldelay1

jnb,loop1

movp2,#0fbh

movp0,#79h

lcalldelay1

jnb,loop1

movp2,#b

movp0,#76h

lcalldelay1

jnb,loop1

sjmploop1

tab:

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h

delay1:

MOVR3,#10

D2:

MOVR2,#100

D1:

MOVR1,#100

D0:

DJNZR1,D0

DJNZR2,D1

DJNZR3,D2

RET

end

实验四定时器中断实验

一、实验功能

1.用T0定时器实现1秒定时,控制一个LED亮1秒,灭1秒,并不断循环。

二、实验原理图

三、实验流程图

开始

置TR0为1

置TR0为0

置为1

置为0

是否循环100次

是否循环100次

定时程序

TR0=1

 

计时

四、实验程序

org0000h

ljmpmain

org000bh

ljmpt0pr0

org0100h

main:

movsp,#60h

movtmod,#01h

movth0,#0b8h

movtl0,#00h

movr0,#100

setbea

setbet0

setbtr0

loop:

sjmp$

ljmploop

t0pr0:

djnzr0,w

cpl

movr0,#100

w:

movth0,#0b8h

movtl0,#00h

reti

end

2.

一、实验功能

实现一个4位秒表:

(1)用开关K0模拟秒表的启动、停止、清零功能,按一次启动计时,按一次停

止,再按一次清零,在三个状态中循环。

(2)最低位按1/10秒计数,依次计数单位为1/10秒,1秒,1分

(3)要求K0使用外部中断,优先级高于T0的优先级

二、实验原理图

三、实验流程图

开各种中断

开始

百分之一毫秒显示:

R2

十分之一毫秒显示:

R3

毫秒十位显示:

R5

毫秒个位显示:

R4

外部中断

INCR0

R0是否等于2

是否循环100次

TR0置1

TR0置0

设初值

R0是否等于1

 

设R1=0

INCR2

INCR3

INCR4

INCR5

设R2=0

INCR1

R1是否等于10

是否循环100次

判断四位是否显示一遍

R2是否等于10

是否循环100次

判断四位是否显示一遍

R3是否等于10

是否循环100次

判断四位是否显示一遍

R5是否等于10

是否循环100次

判断四位是否显示一遍

R4是否等于20

是否循环100次

判断四位是否显示一遍

设R3=0

设R4=10

设R5=0

四、实验程序

org0000h

ljmpmain

org0003h

ljmpintx0

org000bh

ljmpt0pr0

org0100h

main:

movtmod,#01h

movth0,#0b8h

movtl0,#00h

movp2,#0ffh

movr0,#1

movr1,#0

movr2,#0

movr3,#0

movr4,#0

movr5,#0

mova,#0

movdptr,#tab

setbea

setbex0

setbit0

setbtr0

setbpx0

setbet0

k:

lcallaaa

jmpk

aaa:

movp2,#0feh

mova,r2

lcallloop

lcallmm

movp2,#0fdh

mova,r3

lcallloop

lcallmm

movp2,#0fbh

mova,r4

lcallloop

lcallmm

movp2,#b

mova,r5

lcallloop

lcallmm

ret

mm:

djnzacc,$

djnzacc,$

ret

loop:

movca,@a+dptr

movp0,a

ret

tab:

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

intx0:

incr0

cjner0,#1,st

setbtr0

reti

st:

cjner0,#2,w

clrtr0

reti

w:

mova,#0

movr0,a

movr1,a

movr2,a

movr3,a

movr4,a

movr5,a

reti

t0pr0:

movth0,#0b8h

movtl0,#00h

incr1

cjner1,#10,exit

movr1,#0

incr2

cjner2,#10,exit

movr2,#0

incr3

cjner3,#10,exit

movr3,#0

incr4

cjner4,#6,exit

movr4,#0

incr5

cjner5,#10,exit

movr5,#0

exit:

reti

end

实验五脉冲宽度与周期测量实验

一、实验功能

同时测量脉冲宽度和周期,由开关K0选择显示脉冲宽度还是显示脉冲周期。

二、实验原理图

三、实验流程图

开始

设置各种初值

是否为1

是否为0

是否为1

是否为0

置TR0为1

置TR0为0

是否为1

是否为0

置TR0为1

置TR0为0

是否为0

是否为0

是否为0

MOVA,TL0MOVR2,A

SUBBA,#48HMOVA,R0

MOVB,#2MOVB,#10

DIVABDIVAB

MOVB,#10MOVR3,B

DIVABADDA,#10

MOVR1,BMOVR4,A

百分之一毫秒显示:

R1

十分之一毫秒显示:

R2

毫秒十位显示:

R4

毫秒个位显示:

R3

T0中断

INCR0

四、实验程序

ORG0000H

limpmain

org000bh

ljmpt

org0100h

main:

movtmod,#oah

movth0,#48h

movtl0,#48h

setbea

setbet0

movdptr,#tab

mova,#0

movr0,#0

movr1,#0

movr2,#0

movr3,#0

movr4,#0

jb,b0

loop0:

jb,loop0

setbtr0

loop1:

jnb,loop1

loop2:

jb,loop2

loop3:

jnb,loop3

loop4:

jb,loop4

clrtr0

ljmploop

b0:

jb,b0

setbtr0

b1:

inb,b1

b2:

jb,b2

clrtr0

loop:

mova,tl0

subba,#48h

movb,#2

divab

movr1,b

movr2,a

mova,r0

movb,#10

divab

movr3,b

adda,#10

movr4,a

movp2,#b

mova,r1

lcallwww

lcallz

movp2,#b

mova,r2

lcallwww

lcallz

movp2,#b

mova,r3

lcallwww

lcallz

movp2,#b

mova,r4

lcallwww

lcallz

ljmpmain

www:

movca,@a+dptr

movp0,a

ret

z:

djnzacc,$

djnzacc,$

ret

tab:

db3fh,06h,5bh,4fh,66h,6dh,7dh,,6fh

db0bfh,86h,0d8h,0cfh,0e6h,0edh,0fdh,87h,0ffh,0efh

org0200h

t:

incr0

reti

end

实验六串行通信实验

一、实验功能

利用串行口方式0实现一个七段数码管的显示控制,轮流显示0~9十个数码

二、实验原理图

三、实验流程图

串行口中断

置RI为0

MOVR0,#10

CLRA

 

MOVCA,@A+DPTR

MOVSBUF,A

调用延时delay

INCDPTR

是否循环10次

四、实验程序

org0000h

ajmpmain

main:

movscon,#00h

movdptr,#table

movr0,#10

clr

NEXT:

djnzr0,send

ajmpmain

send:

clra

movca,@a+dptr

movsbuf,a

jnbti,$

clrti

incdptr

acalldelay

ajmpnext

delay:

movr1,#50

loop1:

movr2,#100

loop2:

movr3,#50

djnzr3,$

djnzr2,loop2

djnzr1,loop1

ret

table:

DB3Fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

end

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

当前位置:首页 > 解决方案 > 学习计划

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

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