单片机实验教程.docx

上传人:b****6 文档编号:6902680 上传时间:2023-01-12 格式:DOCX 页数:46 大小:1.07MB
下载 相关 举报
单片机实验教程.docx_第1页
第1页 / 共46页
单片机实验教程.docx_第2页
第2页 / 共46页
单片机实验教程.docx_第3页
第3页 / 共46页
单片机实验教程.docx_第4页
第4页 / 共46页
单片机实验教程.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

单片机实验教程.docx

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

单片机实验教程.docx

单片机实验教程

 

单片机实验教程

 

应用技术学院电气系

邵淑华

 

目录

第一部分软件实训部分4

实训一数据传送4

实训二多字节十进制加法5

实训三找最大数6

实训四循环程序设计8

实训五排序9

第二部分硬件实训部分10

实训六P1口实训一10

实训七P1口实训二12

实训八简单I/O口扩展实验14

实训九定时器节日彩灯控制器15

实训十有中断申请的交通灯控制实训17

实训十一可编程并行接口芯片扩展键盘21

实训十二数字钟26

第三部分Keil使用简介32

 

第一部分软件实训部分

实训说明:

本时实训内容是参照北京理工大学ELΠ型教学实训系统来编写的

实训一数据传送

一实训目的

1熟悉单片机开发工具的使用,掌握在开发机上设计、调试和运行程序的方法。

2掌握数据传送指令的应用和手工汇编的方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实训内容:

编制数据块搬家程序。

要求先将8031单片机内部RAM的40H-4FH单元置初值A0H-AFH;然后将内部RAM40H-4FH单元的内容传送到外部RAM3800H-380FH;再将外部RAM7800H-780FH单元内容传回内部RAM50H-5FH单元。

四实训步骤:

1将目标程序输入到开发机中进行调试。

2执行程序、检查运行结果,查看外部RAM7800H-780FH单元和内部RAM50H-5FH单元中的内容。

五参考程序清单:

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVR0,#40H

MOVR2,#10H

MOVA,#0A0H

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVDPTR,#7800H

MOVR2,#10H

A2:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,A2

MOVR0,#50H

MOVDPTR,#7800H

MOVR2,#10H

A3:

MOVXA,@DPTR

MOV@R0,A

INCR0

INCDPTR

DJNZR2,A3

A4:

AJMPA4

END

六实训报告要求:

1程序运行后,外部RAM7800H-780FH单元和内部RAM50H-5FH单元内容各是什么?

实训二多字节十进制加法

一实训目的:

1熟悉单片机实训开发系统的使用,掌握在开发机上调试运行程序的方法。

2熟练掌握加法汇编语言编程方法,及程序调试方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实训内容:

编制多字节十进制(BCD码)加法程序,要求:

先将加数1234存储于40H,41H单元,另一加数5678存储于50H,51H单元;两数相加后,结果存于50H,51H单元(低位存于50H,高位存于51H),最高位溢出位为52H。

四实训步骤:

1将目标程序输入开发机中进行调试。

2执行程序检验运行结果。

五参考程序清单:

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVR0,#41H

MOV@R0,#12H

DECR0

MOV@R0,#34H

MOVR1,#51H

MOV@R1,#56H

DECR1

MOV@R1,#78H

MOVR2,#02H

LCALLDACN

HERE:

AJMPHERE

DACN:

CLRC

DAL:

MOVA,@R0

ADDCA,@R1

DAA

MOV@R1,A

INCR0整

INCR1

DJNZR2,DAL

CLRA

MOV52H,A

MOVACC0,C

MOV52H,A

RET

END

六实训要求:

1修改程序计算5678h+6789h并检查结果是否正确。

2试编写6字节十六进制加法程序并保留进位位。

 

实训三找最大数

一实训目的:

1熟悉8031指令系统,掌握程序设计方法。

2掌握找最大数的汇编语言的编程方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实训内容:

将50H-59H十个单元中的最大数存于50H单元中。

四编程说明:

R0存放数据首地址指针,R2存放字节数,A中存放最大的数。

五实训步骤:

1输入程序代码并进行调试。

2检查程序运行后50H单元中是否为十个数中的最大数。

六参考程序清单1:

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVR0,#50H

MOVR2,#09H

MOVA,R0

MOVR1,A

MOVA,@R1

LP0:

MOVR3,A

INCR1

CLRC

SUBBA,@R1

JNCLP1

MOVA,@R1

SJMPLP2

LP1:

MOVA,R3

LP2:

DJNZR2,LP0

MOV@R0,A

HERE:

AJMPHERE

END

参考程序清单2:

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVR0,#50H

MOVR2,#09H

MOVA,@R0

INCR0

LOOP:

CLRC

SUBBA,@R0

JNCLOOP1

MOVA,@R0

SJMPLOOP2

LOOP1:

ADDA,@R0

LOOP2:

INCR0

DJNZR2,LOOP

MOV50H,A

HERE:

AJMPHERE

END

七实训报告要求:

1若想将50H-59H十个单元的无符号数中找最小的数程序如何修改?

实训四循环程序设计

一实训目的:

1熟悉8031指令系统,掌握程序设计方法。

2掌握循环程序设计的编写方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根

2软件:

Windows操作系统keilc51

三实训内容:

1设计一个循环程序得到相应的延时时间,同时可以改变参数来改变延时时间。

四实训说明:

1使用KEIL软件进行调试。

五参考程序清单:

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVR7,#200;1US

DEL1:

MOVR6,#123

NOP

DEL2:

DJNZR6,DEL2

DJNZR7,DEL1

here:

ajmphere

end

六、实训报告要求:

1画出程序流程图。

2修改程序使之改变延时时间。

实训五排序

一实训目的:

1熟悉8031指令系统,掌握程序设计方法。

2掌握排序程序的编写方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根

2软件:

Windows操作系统keilc51

三实训内容:

1将50h-59h单元的数据进行排序。

四实训说明:

1使用KEIL软件进行调试。

五参考程序清单:

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

movr3,#09h

LOOP:

movr1,#50h

mova,r3

movr2,a

mova,@r1

incr1

loop1:

clrc

subba,@r1

jncno

adda,@r1

xcha,@r1

decr1

xcha,@r1

incr1

no:

mova,@r1

incr1

djnz,r2,loop1

djnzr3,loop

here:

ajmphere

end

七、实训报告要求:

3画出程序流程图。

4修改程序使之按照从大到小的顺序排列起来。

第二部分硬件实训部分

实训六P1口实训一

一实训目的

1掌握P1口做输出口的编程方法。

2掌握使用74LS32扩展输出口的接线及编程方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实验说明

P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。

作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。

8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。

可以用第二个实训做一下实训。

先按要求编号程序并调试成功后,可将PI口锁存器中置“0”,此时将PI做输入口,会有什么结果。

再来看一下延时程序的实现。

现常用的有两种方法,一是用定时器中断实现,一是用指令循环来实现。

在系统时间允许的情况下可以采用的后一中方法。

现要写一个延时0.1S的程序,可大致写出如下:

MOVR7,#200

(1)

DEL1:

MOVR6,#126

(2)

DEL2:

DJNZR6,DEL2(3)

DJNZR7,DEL1(4)

四连线方法:

执行程序1时:

P1.0~P1.7接发光二级管LED1~LED8。

执行程序2时:

P1.0~P1.7接开关K1~K8。

74LS273的00~07接发光二级管LED1~LED8;74LS273的片选端CS273接CS0。

五程序举例:

NAMET1_1;P1口输实训

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVA,#0FEH;先让第一个发光二极管点亮

LOOP:

MOVP1,A;从P1口输出到发光二极管

MOVR1,#5;延时05秒

DEL1:

MOVR2,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RLA;左移一位,点亮下一个发光二极管

JMPLOOP

SJMPSTART

END

NAMET1_2;P1口输实训

PORTEQU0CFA0H;片选地址CS0

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVP1,#0FFH

LOOP:

MOVA,P1;从P1口读取开关状态

MOVDPTR,#PORT

MOVX@DPTR,A;从74LS273输出到发光二极管

LJMPLOOP;循环

END

六实训分析:

1如果使彩灯成从中间到两边循环点亮程序如何修改?

2如何改变彩灯的流水速度?

 

实训七P1口实训二

一实训目的

1掌握P1口控制发光二极管的方法。

2掌握流水灯的花样编写方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实训说明

P1口作为输入输出口。

P1.0P1.1接K1K2;P1.2P1.3接发光二级管L1L2;P1.6P1.7接L5L6。

K1作为左转弯开关,K2作为右转弯开关。

L1L2作为左转弯灯,L5L6作为右转弯灯。

要求编写程序实现如下功能:

按下K1时左转弯灯以一定频率闪烁,按下K2时右转弯灯以一定频率闪烁,K1K2同时按下或弹起,发光二极管灭。

实训中的“SETBP1.0SETBP1.1”改为“CLR”看看会有什么结果。

四连线方法

K1接P10K2接P11;

L1接P12L2接P13;

L5接P16L6接P17。

五程序举例

NAMET2;P1口输实训

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

SETBP10

SETBP11;用于输入时先置位口内锁存器

MOVA,P1

ANLA,#03H;从P1口读入开关状态,取低两位

MOVDPTR,#TAB;转移表首地址送DPTR

MOVCA,@A+DPTR

JMP@A+DPTR

TAB:

DBPRG0-TAB

DBPRG1-TAB

DBPRG2-TAB

DBPRG3-TAB

PRG0:

MOVP1,#00;向P1口输出0,发光二极管全灭

JMPSTART

PRG1:

MOVP1,#0CH;只点亮L1L2,表示左转弯

AAA:

ACALLDELAY;延时05秒

MOVP1,#00

ACALLDELAY;再熄灭05秒

JMPSTART

PRG2:

MOVP1,#0C0H;只点亮L5L6,表示右转弯

JMPAAA

PRG3:

JMPPRG0;发光二极管全灭,此时K1=1,K2=1

DELAY:

MOVR1,#5;延时05秒

DEL1:

MOVR2,#200

DEL2:

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

DJNZR1,DEL1

RET

END

六实训分析

1如果要改变灯的流水速度,程序如何修改?

2如果要改变灯的流水方向,程序如何修改?

 

实训八简单I/O口扩展实验

一实训目的

1掌握单片机系统中的扩展I/O口的方法。

2掌握数据输入输出程序的编制方法。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实训说明

MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的,若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。

程序中加一段延时程序,以减少总线口读写的频繁程度。

延时时间约为0.01秒,不会影响显示的稳定

四实验内容

利用74LS244作为输入口,读取开关的状态,并将此状态通过发光二极管显示出来。

五实验步骤

1.74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1.

2.74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2

3.编程全速执行。

4.波动开关K1~K8,观察发光二极管状态的变化。

六.参考程序

;74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1。

;74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2。

NAMET4;I/O口扩展实验

CSEGAT0000H

LJMPSTART

CSEGAT4100H

INPORTEQU0CFA8H;74LS244端口地址

OUTPORTEQU0CFB0H;74LS273端口地址

START:

MOVDPTR,#INPORT

LOOP:

MOVXA,@DPTR;读开关状态

MOVDPTR,#OUTPORT

MOVX@DPTR,A;显示开关状态

MOVR7,#10H;延时

DEL0:

MOVR6,#0FFH

DEL1:

DJNZR6,DEL1

DJNZR7,DEL0

JMPSTART

END

六实训分析

1说明74LS244芯片的特点及工作原理?

2说明74LS273芯片的特点及工作原理?

实训九定时器节日彩灯控制器

一实训目的

1学习8031定时器/计数器初值的计算方法。

2学习8031内容定时器设置和编程方法。

3进一步掌握定时器/计数器中断处理程序的编写方法。

4掌握花样流水灯的控制方法,并灵活运用。

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根。

2软件:

Windows操作系统keilc51。

三实训原理说明

1定时常数的确定

定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。

本实训中时钟频率为24MHZ,一次中断方法定时不能完成05秒延时,需要循环定时完成。

如果使定时器1每次产生001秒定时中断,那么50次中断就可以产生05秒的定时。

实现方法:

令RO=50HCPU每次响应中断后将RO中计数器值减一,由RO来控制循环次数,50次中断即可实现05秒延时。

时间常数的计算方法:

机器周期=12/晶振频率=12/24*106=05*10-6S

设计数器值为X,则(216-x)*05*10-6S=001,可求得X=45535

化为十六进制则X=3800H,故初中始值为TH1=B1HTL1=DFH

2、初始化程序

包括定时器初始化和中断系统初始化,主要是对IPIETCONTMOD的相应位进行正确的设置,并将时间常数送入定时器中。

由于只有定时器中断,IP便不必设置。

3、编程说明

由8031内部定时器1`按方式1工作,即作为16位定时器使用,每01秒种T1溢出中断一次。

P1口的P10~P17分别接发光二级管的L1~L8。

要求编写程序模拟一循环彩灯。

彩灯变化花样可自行设计。

程序中给出的变化花样为:

1L1L2……L8依次点亮2L1L2……L8全亮,全灭等各种花样方式。

各时序间隔为05秒。

让发光二级管按以上规律循环显示下去。

其中,中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。

主程序则用来控制发光二级管的燃灭顺序。

四实训电路

 

五实训电路连线

P10~P17分别接发光二级管L1~L8

六实训程序清单

NAMECAIDENG;定时器实训

CSEGAT0000H

LJMPSTART

CSEGAT001BH;定时器/计数器1中断程序入口地址

LJMPINT

CSEGAT4100H

START:

MOVA,#01H;首显示码

MOVR1,#03H;03是偏移量,即从基址寄存器到表首的距离

MOVR0,#50H;50是计数值

MOVTMOD,#10H;计数器置为方式1

MOVTL1,#0DFH;装入时间常数

MOVTH1,#0B1H

ORLIE,#88H;CPU中断开放标志位和定时器

;1溢出中断允许位均置位

SETBTR1;开始计数

LOOP1:

CJNER0,#00,DISP

MOVR0,#50H;R0计数计完一个周期,重置初值

INCR1;表地址偏移量加1

CJNER1,#31H,LOOP2

MOVR1,#03H;如到表尾,则重置偏移量初值

LOOP2:

MOVA,R1;从表中取显示码入累加器

MOVCA,@A+PC

JMPDISP

DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH

DB0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH

DB0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH

DB0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H

DISP:

MOVP1,A;将取得的显示码从P1口输出显示

JMPLOOP1

INT:

CLRTR1;停止计数

DECR0;计数值减一

MOVTL1,#0DFH;重置时间常数初值

MOVTH1,#0B1H

SETBTR1;开始计数

RETI;中断返回

END

七实训调试与分析

1调试过程中会出现各式各样的错误,要细心改正。

调试通过后运行程序在实训箱上看结果。

2分析并解释程序中查表的内容。

3试修改程序,改变花样等的流水速度。

实训十有中断申请的交通灯控制实训

一实训目的

1学习在单片机系统中扩展简单I/O接口方法

2学习数据输出程序的设计方法

3学习模拟交通灯控制的实现方法

4学习外部中断技术的基本使用方法

二实训设备及工作环境

1硬件:

计算机一台EL-Ⅱ型综合单片机实训箱一台通讯电缆一根

2软件:

Windows操作系统keilc51

三实训原理与说明

首先必须了解交通路灯的燃灭规律。

本实训需要用到实训箱上八个发光二级管中的六个,即红黄绿各两个。

不妨将L1L3L5作为东西方向的指示灯,将L2L4L6作为南北方向的指示灯而交通灯的燃灭规律为:

初始状态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口灯灭,黄灯开始闪烁闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁闪烁若干次后,再切换到东西路口方向,重复上述过程。

各发光二级管共阳极,阴极接有与非门,因此使其点亮应使相应输入端为高电平。

当有急救车到达加入中断申请时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。

本实训以单脉冲为中断,表示有急救车通过。

本实训是中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。

要保护的地方,除了累加器ACC标志寄存器PSW外,还要注意:

一是主程序中的延时程序不能混用,本实训给出的程序中,住程序延时用的是R5R6R7,中断延时时用的是R3R4和新的R5。

第二主程序中每执行一步经74LS273端口输出数据的操作时,应先将所输出的数据保存到一个单元中。

因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。

还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:

MOVA,#0F0H(0)

MOVXR1,A

(1)

MOVSAVE,A

(2)

程序如果正好执行到

(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOVA,SAVE指令,由于主程序中没有执行

(2),故SAVE

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1