单片机实验例题

  • 格式:docx
  • 大小:23.20 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1 LED单灯跑动

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

MOV A,#0FEH

MOV R0,#9 ;循环九次,8个灯亮及1次灯全灭

START:

MOV P0,A ;输出到P0口连接的LED灯上

SETB C ;置进位C

RLC A;带进位左移

CALL D ELAY ;延时一段时间

DJNZ R0,START ;反复循环

AJMP MAIN ;重新开始

;延时子程序

DELAY:

MOV R1,#15

D1: MOV R2,#100

D2: MOV R3,#100

DJNZ R3,$

DJNZ R2,D2

DJNZ R1,D1

RET

END

实验2

****************************步进电机的驱动*************************************

;FOSC = 12MHz

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

; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!

; 本步进电机步进角为5.625度. 一圈360 度, 需要64个脉冲完成!!! ;---------------------------------------------------------------------------------

; A组线圈对应P0.0

; B组线圈对应P0.1

; C组线圈对应P0.2

; D组线圈对应P0.3

; 正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转5.625度) ;----------------------------------------------------------------------------------

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:

;----------------------------正转--------------------------

MOV R3,#192 ;正转3圈共192个脉冲

START:

MOV R0,#00H

START1:

MOV P0,#00H

MOV A,R0

MOV DPTR,#TABLE

MOVC A,@A+DPTR

JZ START ;对A的判断,当A=0时则转到START

MOV P0,A

LCALL DELAY

INC R0

DJNZ R3,START1

MOV P0,#00H

LCALL DELAY1

;-----------------------------反转------------------------

MOV R3,#128 ;反转2圈共128个脉冲

START2:

MOV P0,#00H

MOV R0,#05

START3:

MOV A,R0

MOV DPTR,#TABLE

MOVC A,@A+DPTR

JZ START2

MOV P0,A

CALL D ELAY

INC R0

DJNZ R3,START3

MOV P0,#00H

LCALL DELAY1

LJMP MAIN

;---------------------------转速控制-----------------------

DELAY: MOV R7,#10 ;步进电机的转速

M3: MOV R6,#248

DJNZ R6,$

DJNZ R7,M3

RET

;---------------------------延时控制----------------------

DELAY1: MOV R4,#5 ;2S 延时子程序

DEL2: MOV R3,#200

DEL3: MOV R2,#250

DJNZ R2,$

DJNZ R3,DEL3

DJNZ R4,DEL2

RET

;---------------------------正反转表----------------------

TABLE:

DB 03H,06H,0CH,09H; 正转表

DB 00; 正转结束

DB 03H,09H,0CH,06H; 反转表

DB 00; 反转结束

END

实验3 8个数码管轮流显示

;

;重要说明:数码管在循环轮流显示的时候,喇叭跟继电器会有规律的发出声音跟吸合,

;解决的办法可以将SE8(SPEAKER),SE2(RELAY)跳线设置为OFF,或者在软件上加入CLR P3.7 就可以解决

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

CLR P3.7 ;锁定继电器喇叭数据锁存器

MOV P0,#0c0h ;送0的段码到数码管

CLR P2.0 ;跟P2.0连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.0 ;关闭P2.0连接的数码管显示

CLR P2.1 ;跟P2.1连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.1 ;关闭P2.1连接的数码管显示

CLR P2.2 ;跟P2.2连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.2 ;关闭P2.2连接的数码管显示

CLR P2.3 ;跟P2.3连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.3 ;关闭P2.3连接的数码管显示

CLR P2.4 ;跟P2.4连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.4 ;关闭P2.4连接的数码管显示

CLR P2.5 ;跟P2.5连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.5 ;关闭P2.5连接的数码管显示

CLR P2.6 ;跟P2.6连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.6 ;关闭P2.6连接的数码管显示

CLR P2.7 ;跟P2.7连接的那位数码管点亮CALL D ELAY ;延时

SETB P2.7 ;关闭P2.7连接的数码管显示

AJMP MAIN ;重新开始

;延时子程序

DELAY:

MOV R5,#30

D1: MOV R6,#100

D2: MOV R7,#100

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

END