人人范文网 范文大全

单片机实验教案

发布时间:2020-03-03 20:09:43 来源:范文大全 收藏本文 下载本文 手机版

单片机技术实验

1 实验一(1) 顺序结构程序设计

一、实验目的

掌握汇编语言设计和调试方法。

二、实验内容

把外部RAM中2000h单元的内容拆开,高位送2001h单元,低位送2002h单元,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。

三、程序流程

四、实验步骤

1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

⑵在“P.”状态下键入0000,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se02.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~2002h中内容变化情况。

五、思考

如何用断点方式调试本程序。

ORG 0000H LJMP START

ORG 0030H START: MOV DPTR,#2000H

MOVX A,@DPTR ANL A,#0F0H SWAP A MOV DPTR,#2001H MOVX @DPTR,A

MOV DPTR ,#2000H MOVX A,@DPTR ANL A,0FH MOV DPTR,#2002H MOVX @DPTR,A SJMP $ END 实验一(2) 循环结构程序设计

一、实验目的

熟悉MCS-51指令系统,掌握程序设计方法。

二、实验内容

编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。

三、程序框图

四、实验步骤

1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。

⑵对片内RAM地址50h~5AH进行不规则置数。

⑶在“P.”状态下键入0000,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se05.asm,用连续或单步方式运行程序。

3、运行结果检查

⑴在单步运行时每走一步可观察其运行结果。

⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查片内50~5Ah中内容是否按从

3 小到大排列。

五、思考:修改程序把50~5Ah中内容按从小到大排列。

ORG 0000H LJMP START ORG 0030H MOV R7,#09H MOV R6,#00H;清除标志 CLR C MOV A,@R0 INC R0 SUBB A,@R0 JC LOOP1 MOV R6,#01H DEC R0 MOV A,@R0 INC R0 XCH A,@R0 MOV @R0,A DJNZ R7,START1 CJNE R6,#00H,START SJMP $ END START:

MOV R0,#50H START1:

DEC R0

INC R0 LOOP1:

实验一(3) 选择结构程序设计

一、实验目的

掌握汇编语言的编程。

二、实验内容

编写程序,根据送入的数据转移运行。

三、程序框图

四、实验步骤

1、LED环境

⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 ⑵在20H中分次送入00、0

1、0

2、03。

⑶在“P.”状态下键入0A10,然后按“STEP”或“EXEC”进入实验项目的调试与运行。

2、PC环境

在与PC联机状态下,编译、连接、下载PH51\\se08.asm,用连续或单步方式运行程序。

3、运行结果检查

(1)在单步运行时每走一步可观察其运行结果。

(2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后观察每次运行程序后,数码管上数字循环情况。

ORG 0000H

LJMP START

ORG 0030H START: MOV 20H,#00H MOV A,20H MOV B,#03H

MUL AB

MOV DPTR,#TAB

JMP @A+DPTR

SJMP $ ORG 3000H TAB:

LJMP LOOPA

LJMP LOOPB

LJMP LOOPC

LOOPA: MOV A,#01H LOOPA1: MOV P1,A

LCALL DELAY1S

RL A

LJMP LOOPA1

LOOPB: MOV A,#03H LOOPB1: MOV P1,A

LCALL DELAY1S

RL A

LJMP LOOPB1

LOOPC: MOV A,#05H LOOPC1: MOV P1,A

LCALL DELAY1S

RL A

LJMP LOOPC1

5

DELAY1S: DELAY1S3: DELAY1S2: DELAY1S1:

MOV R7,#10 MOV R6,#200 MOV R5,#250 DJNZ R5,DELAY1S1 DJNZ R6,DELAY1S2 DJNZ R7,DELAY1S3 RET END

实验二 中断实验

一、实验目的

熟悉单片机中断概念及中断编程方法。

二、实验内容

编写程序,从P3.3输入脉冲,记录输入脉冲个数,并用P1口外部链接的发光二极管显示技术结果。

二、参考程序

ORG 0000H

LJMP START

ORG 0013H

LJMP INT1_COUNT

ORG 0030H START:

MOV SP,#60H

MOV A,#00H

SETB IT1;下降边沿触发方式

SETB EX1;开启INT1中断

SETB EA

SJMP $ INT1_COUNT:

INC A

MOV P1,A

RETI

END

实验三 LED显示实验

一、实验要求

利用实验系统提供的显示设备,动态显示一行数据。

二、实验目的

⑴了解数码管动态显示的原理; ⑵了解用总线方式控制数码管显示。

三、实验说明

本实验系统提供了8位七段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

四、程序框图

ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H MOV 50H,#8CH ;显示字符P. MOV 51H,#40H MOV 52H,#79H MOV 53H,#24H MOV 54H,#30H MOV 55H,#19H MOV 56H,#12H MOV 57H,#02H

LOOP1: LCALL DISPLAY

LJMP LOOP1

DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS

MOV P2,#1FH MOV P0,51H LCALL DELAY20MS

MOV P2,#2FH MOV P0,52H LCALL DELAY20MS

8 MOV P2,#3FH MOV P0,53H LCALL DELAY20MS

MOV P2,#4FH MOV P0,54H LCALL DELAY20MS

MOV P2,#5FH MOV P0,55H LCALL DELAY20MS

MOV P2,#6FH MOV P0,56H LCALL DELAY20MS

MOV P2,#7FH MOV P0,57H LCALL DELAY20MS

LJMP DISPLAY

DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

TAB: DB 40H,79H,24H,30H,19H,12H,02H ;0 1 2 3 4 5 6 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符码

TAB1: DB 8CH;P.TAB2: DB 7FH; END

的字符码的字符码

空,不显示的字符

键盘电路实验

电路图:

程序:

;用int1中断实现按键功能,键值存放在4fh单元中 ;通过P1口输出按键值,用发光二极管显示按键值 ;通过P2.4--P2.6和三八译码器输出八列按键扫描码 ;通过P2.0---P2.3读入按键的行值 ;行列值组合,就是按键的键值 ORG 0000H LJMP START ORG 0013H LJMP key_value ORG 0030H START: MOV 4fH,#00h;存放按键键值单元 MOV P1,#00H MOV P2,#0FFH setb ex1 setb it1 setb ea KEY_SCAN: MOV P2,#0FH LCALL DELAY5MS

MOV P2,#1FH LCALL DELAY5MS

MOV P2,#2FH LCALL DELAY5MS

10

MOV P2,#3FH LCALL DELAY5MS

MOV P2,#4FH LCALL DELAY5MS

MOV P2,#5FH LCALL DELAY5MS

MOV P2,#6FH LCALL DELAY5MS

MOV P2,#7FH LCALL DELAY5MS

LJMP KEY_SCAN

DELAY5MS: MOV R7,#40 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

KEY_VALUE: PUSH ACC PUSH PSW MOV A,P2 MOV 4FH,A MOV P1,A POP PSW POP ACC RETI END

11

LED和键盘综合实验

电路图:

参考程序:

ORG 0000H LJMP START ORG 0013H LJMP KEY_VALUE ORG 0030H START: MOV SP,#60H

MOV 4fH,#00h;存放按键键值单元 MOV P2,#0FFH setb ex1 setb it1 setb ea

MOV 50H,#0CH ;显示字符P. MOV 51H,#0CH MOV 52H,#7FH MOV 53H,#7FH MOV 54H,#7FH MOV 55H,#7FH MOV 56H,#7FH MOV 57H,#0CH

12

LOOP1: LCALL DISPLAY

LJMP LOOP1

DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS

MOV P2,#1FH MOV P0,51H LCALL DELAY20MS

MOV P2,#2FH MOV P0,52H LCALL DELAY20MS

MOV P2,#3FH MOV P0,53H LCALL DELAY20MS

MOV P2,#4FH MOV P0,54H LCALL DELAY20MS

MOV P2,#5FH MOV P0,55H LCALL DELAY20MS

MOV P2,#6FH MOV P0,56H LCALL DELAY20MS

MOV P2,#7FH MOV P0,57H LCALL DELAY20MS

LJMP DISPLAY

DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

13

KEY_VALUE: PUSH ACC PUSH PSW MOV 4FH,P2 LCALL KEY_VALUE_DISP POP PSW POP ACC RETI

KEY_VALUE_DISP: MOV A,4FH ANL A,#0F0H SWAP A MOV DPTR,#TAB MOVC A,@A+DPTR MOV 56H,A MOV A,4FH ANL A,#0FH MOVC A,@A+DPTR MOV 57H,A RET

TAB: DB 40H,79H,24H,30H,19H,12H,02H ;0 1 2 3 4 5 6的字符码 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符码

TAB1: DB 8CH;P.的字符码

TAB2: DB 7FH;空,不显示的字符 END

实验四 A/D转换实验

一、实验目的

(1)掌握A/D转换与单片机接口的方法;(2)了解A/D芯片0809转换性能及编程方法; (3)通过实验了解单片机如何进行数据采集。

二、实验内容

利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。

三、程序框图

四、实验电路

五、实验步骤

把0809的零通道INT0用插针接至AINl孔,0809CS位FFE0孔,运行程序,数码管显示0809.XX,后二位显示当前采集的电压转换的数字量,调节W1,该二位将随着电压变化而相应变化。

六、思考

修改程序,用其它通道轮流采样显示。

实验五 电脑时钟(定时器、中断综合实验)

一、实验目的

熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。

二、实验内容

编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。

三、程序框图

四、实验步骤

连续运行程序,在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。

五、思考

(1)电子钟走时精度和程序中那些常数有关?

(2)修改程序使定时器工作方式改变,调节有关参数,进一步提高精度。

六、参考程序

ORG 0000H LJMP START ORG 000BH LJMP T0_INT ORG 0030H START: MOV 50H,#00H ; 时的低位字符码 MOV 51H,#00H ; 时的高位字符码 MOV 52H,#00H ; “-”的字符码 MOV 53H,#00H ; 分的低位字符码 MOV 54H,#00H ; 分的高位字符码 MOV 55H,#00H ; “-”的字符码 MOV 56H,#00H ; 秒的低位字符码 MOV 57H,#00H ; 秒的高位字符码 MOV 5FH,#00H ; 存放小时的单元 MOV 5EH,#00H ; 存放分钟的单元 MOV 5DH,#00H ; 存放秒的单元 MOV 5CH,#00H;存放T0中断次数,50次为1秒

MOV SP,#60H; 设置堆栈栈顶 MOV TH0,#??? ;设置T0定时器初值 MOV TL0,#??? MOV TMOD,#00000001H;T0工作在定时方式,工作方式0

SETB ET0 ;开放T0中断 SETB EA ;开放总中断 SETB TR0 ;启动定时器T0 LOOP: mov P2,#11111110H MOV R0,#50H loop1: MOV R7,#08H LOOP2: MOV A,@R0 MOV P1,A LCALL DELAY INC R0 MOV A,P2 RL A

MOV P2,A DJNZ R7, LOOP2 LJMP LOOP SJMP $

DELAY: MOV R6,#2 ;延时程序 DELAY1: MOV R5,#10 DELAY2: MOV R4,#100 DELAY3: DJNZ R4,DELAY3 DJNZ R5,DELAY2 DJNZ R6,DELAY1 RET 16 T0_INT: CLR TR0 PUSH ACC MOV A,5CH CJNE A,#50H,T0_INT1 MOV 5CH,#00H MOV A,5DH CJNE A,#59H,T0_INT2 MOV 5DH,#00H MOV A,5EH CJNE A,#59H,T0_INT3 MOV 5EH,#00H MOV A,5FH CJNE A,#23H,T0_INT4 MOV 5FH,#00H LJMP T0_END T0_INT1: INC 5CH LJMP T0_END T0_INT2: INC 5DH LJMP T0_END T0_INT3: INC 5EH LJMP T0_END T0_INT4: INC 5FH T0_END: MOV A,5FH

MOV B,#10 DIV AB MOV 51H,A MOV A,B MOV 50H,A MOV A,5EH MOV B,#10 DIV AB MOV 54H,A MOV A,B MOV 53H,A MOV A,5DH MOV B,#10 DIV AB MOV 57H,A MOV A,B MOV 56H,A POP ACC

MOV TH0,#??? MOV TL0,#??? SETB TR0 RETI

实验六 LCD液晶显示屏实验

一、实验目的

⑴掌握单片机扩展液晶显示接口的设计与编程。 ⑵利用字符式液晶显示器显示字符。

二、实验内容

编制程序,在液晶显示器上显示:

学生所在的院系的汉语拼音字母和学生的名字。分两行显示。

三、实验电路

四、参考程序

DAT1 DAT2 EQU EQU 30H ;第一参数单元 31H;第二参数单元 32H;指令代码单元 0100H;指令通道地址 0000H;数据通道地址 COM EQU C_ADD EQU D_ADD EQU

org 0000h ljmp main org 0030h ;主程序

MAIN: MOV SP,#60H;

lcall delay;上电延时

LCALL INT;初始化

LCALL CLEAR;清缓冲区 TEST: LCALL hgnu_disp;显示\"WELCOM TO HGNU\" LCALL PL_XW_ZKB;显示 \"P_L :\"

\"X_W :\"

\"ZKB:\" sjmp test

;上电延时子程序 delay: MOV R6,#50H; MOV R7,#00H; DELY1: NOP

18 DJNZ R7,DELY1;上电延时

DJNZ R6,DELY1; ret ;读状态字子程序

R_ST: MOV DPTR,#C_ADD;设置指令通道 MOVX A,@DPTR; RET ;判断状态位STA1,STA0子程序(读写指令和数据),在指令的读,写

;数据之前这两个标志必须同时为“1” ST01: LCALL R_ST; JNB ACC.0,ST01; JNB ACC.1,ST01; RET ;判断状位STA2子程序(数据自动读状态),该位

;在数据自动操作过程中取代STA0和STA1有效。在连续读过程中每读一次 ;之前都要确认STA2=1 ST2: LCALL R_ST; JNB ACC.2,ST2; RET ;判断STA3子程序(数据自动写状态) ST3: LCALL R_ST; JNB ACC.3,ST3; RET ;判断状态位STA6子程序(屏读/屏拷贝状态) ST6: LCALL R_ST; JB ACC.6,ERR; RET ERR: LJMP ST6;;出错处理

;写指令和写数据子程序 ..;双字节参数指令写入入口

PR1: LCALL ST01;判断状态位STA1,STA0 MOV A,DAT1;取第一参数单元数据

LCALL PR13;写入参数 ;单字节参数指令写入入口

PR11: LCALL ST01;判断状态位STA1,STA0 MOV A,DAT2;取第二参数单元数据 LCALL PR13;写入参数

;无参数指令写入入口

PR12: LCALL ST01;无参数指令写入入口

MOV A,COM;取指令代码单元数据

MOV DPTR,#c_ADD;设置指令通道地址/数据写入入口

LJMP PR14;写入指令代码

PR13: MOV DPTR,#D_ADD;设置数据通道地址/数据写入入口 PR14: MOVX @DPTR,A;写入操作

19 RET ;读数据子程序 PR2: LCALL ST01;判断状态位

MOV DPTR,#D_ADD;设置数据通道地址

MOVX A,@DPTR;读数据操作 MOV DAT2,A;数据存入第二参数/数据单元

RET ;初始化子程序

INT:

;显示区域设置

MOV DAT1,#00H;设置文本显示区首地址

MOV DAT2,#00h; MOV COM,#40H; LCALL PR1;双字节参数指令写入入口

MOV DAT1,#16;设置文本显示区域宽度

MOV DAT2,#00H;即一行显示所占字节数

MOV COM,#41H; LCALL PR1;双字节参数指令写入入口

MOV DAT1,#00H;设置显示区域首地址

MOV DAT2,#00H;或文本属性区域首地址

MOV COM,#42H; LCALL PR1;双字节参数指令写入入口

MOV DAT1,#10H;设置图形显示区域宽度

MOV DAT2,#00H;或为文本属性区域狂宽度

MOV COM,#43H;即一行显示所占字节数

LCALL PR1;双字节参数指令写入入口

;显示光标设置

MOV COM,#0A1H;光标形状设置

LCALL PR12;

;设置光标初始位置,是字符行和字符列,第0行第15列

MOV DAT1,#0;光标行位置

MOV DAT2,#0; 光标列位置

MOV COM,#21H; LCALL PR1;双字节参数指令写入入口

;显示方式设置,使用内部字符发生器

MOV COM,#80H;显示方式设置,逻辑“或”合成 LCALL PR12;无参数指令写入入口+

MOV COM,#97H;仅用文本显示

LCALL PR12;无参数指令写入入口

;显示开关方式

RET

;写数据子程序,8*8点阵

;R6中装入显示位置的列数(字符的个数),每行16个字符,R7中装入显示位置距左上角的字符行数

;5FH单元中装入待显示的字符码

20 DISP: mov b,r7

mov a,#16 mul ab mov r7,a CLR C mov a,R6

ADD A,R7 MOV R6,A;R7*16+R6

MOV DAT1,R6; 设置显示RAM首地址,水平方向字符数

MOV DAT2,#00H;固定送00H MOV COM,#24H;地址指针指令

LCALL PR1; MOV

dat2,5fH;取要显示的字符

MOV COM,#0c4H;数据写,地址不变 LCALL PR11;写入数据

RET ;清显示缓冲区(16*8单元) clear: MOV 5FH,#00H

MOV R5,#0 CLEAR0: MOV R4,#0 CLEAR1: MOV A,R5

MOV R7,A MOV A,R4 MOV R6,A CLEAR2: LCALL DISP

INC R4 CJNE R4,#16,CLEAR1

mov r4,#00h

INC R5

CJNE R5,#8,CLEAR0 CLEAR9: RET ;显示频率、相位、占空比、相位差等字符。(P_L : ; PL_XW_ZKB:MOV R7,#3 MOV R6,#0 MOV

5fh,#30H;\"P\" LCALL DISP MOV R7,#3 MOV R6,#1 MOV

5fh,#3FH;\"_\" LCALL DISP MOV R7,#3 MOV R6,#2 MOV

5fh,#2CH;\"L\"

21

X_W :

ZKB:)

LCALL DISP MOV R7,#3 MOV R6,#3 MOV

5fh,#1AH;\": \" LCALL DISP MOV R6,#0 MOV

5fh,#38H;\"X\" LCALL DISP MOV R7,#5 MOV R6,#1 MOV

5fh,#3FH;\"_\" LCALL DISP MOV R7,#5 MOV R6,#2 MOV

5fh,#37H;\"W\" LCALL DISP MOV R7,#5 MOV R6,#3 MOV

5fh,#1AH;\": \" LCALL DISP

MOV R7,#5

MOV R7,#7 MOV R6,#0 MOV

5fh,#3AH;\"Z\" LCALL DISP

MOV R7,#7 MOV R6,#1 MOV

5fh,#2BH;\"K\" LCALL DISP MOV R7,#7 MOV R6,#2 MOV

5fh,#22H;\"B \" LCALL DISP MOV R7,#7 MOV R6,#3 MOV

5fh,#1AH;\": \" LCALL DISP RET ;顶行显示\"黄冈师院物科院“的英文名称。 ;\"welcome to hgnu!\" hgnu_DISP:

MOV R7,#0;显示位置的行列数

MOV R6,#0 MOV

5fh,#37H;\"W\" LCALL DISP

22 MOV R7,#0 MOV R6,#1 MOV

5fh,#25H;\"E\" LCALL DISP MOV R7,#0 MOV R6,#2 MOV

5fh,#2CH;\"L\" LCALL DISP MOV R7,#0 MOV R6,#3 MOV

5fh,#23H;\"C\" LCALL DISP MOV R7,#0 MOV R6,#4 MOV

5fh,#2FH;\"0\" LCALL DISP MOV R7,#0 MOV R6,#5 MOV

5fh,#2DH;\"M\" LCALL DISP MOV R7,#0 MOV R6,#6 MOV

5fh,#25H;\"E\" LCALL DISP MOV R7,#0 MOV R6,#7 MOV

5fh,#00H;\" \" LCALL DISP MOV R7,#0 MOV R6,#8 MOV

5fh,#34H;\"T\" LCALL DISP MOV R7,#0 MOV R6,#9 MOV

5fh,#2FH;\"O\" LCALL DISP MOV R7,#0 MOV R6,#10 MOV

5fh,#00H;\" \" LCALL DISP MOV R7,#0 MOV R6,#11 MOV

5fh,#28H;\"H\" LCALL DISP

23

MOV R7,#0 MOV R6,#12 MOV

5fh,#27H;\"G\" LCALL DISP MOV R7,#0 MOV R6,#13 MOV

5fh,#2EH;\"N\" LCALL DISP MOV R7,#0 MOV R6,#14 MOV

5fh,#35H;\"U\" LCALL DISP RET tab: db 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h;\"0-----9\"

db 21h,22h,23h,24h,25h,26h;\"A-----F\" end

实验七 直流电机转速测量与控制实验

一、实验目的

1.掌握直流电机的驱动原理。 2.了解直流电机调速的方法。

二、实验内容

1.用0832 D/A转换电路后的输出经放大后驱动直流电机。

2.编制程序改变0832输出经放大后的方波信号的占空比来控制电机转速。本实验中 D/A输出为双极性输出,因此电机可以正反向旋转。

三、程序流程

三、实验电路

24

五、参考程序

DATA_TH0 EQU 00H DATA_TL0 EQU 00H;信号周期为130ms DATA_TH1 EQU 20H DATA_TL1 EQU 00H;高电平时间65ms ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0;启动电机按键

ORG 000BH LJMP T_0;T0确定输出信号的周期(或者频率) ORG 0013H LJMP INT_1;电机转动方向控制按键 ORG 001BH LJMP T_1;T1确定输出信号高电平的时间期

ORG 0030H MAIN: MOV SP,#60H

CLR P1.0 CLR P1.1;关闭电机

setb 20h.0;初始化电机正转

clr 20h.1;初始状态时,电机停止转动 MOV TMOD,#11H SETB IT0 SETB EX0 SETB IT1 SETB EX1 SETB ET0 SETB ET1 SETB EA

25

SJMP $

T_0: JNB 20H.1,T_01;

MOV TH1,#DATA_TH1

MOV TL1,#DATA_TL1 SETB TR1

MOV TH0,#DATA_TH0 MOV TL0,#DATA_TL0 SETB TR0 JNB 20H.0,T_02 setb P1.0 clr P1.1 LJMP T_05 T_02: clr P1.0 setb P1.1 LJMP T_05 T_01: CLR P1.0

CLR P1.1 CLR TR0 CLR TR1 RETI CLR TR1 T_05: T_1: clr p1.0 clr p1.1 RETI int_1: CPL 20H.1;电机启动标志求反,开启电机或者关闭电机

JNB 20H.1,INT_11;启动标志不为1,则停止电机,关闭定时器

MOV TH1,#DATA_TH1;启动标志为1,则开启定时器1和定时器2,输出PWM波

MOV TL1,#DATA_TL1 SETB TR1

MOV TH0,#DATA_TH0

MOV TL0,#DATA_TL0 SETB TR0 JNB 20H.0,INT_12;转动方向标志不为1,则反转,否则正转 setb P1.0 clr P1.1 LJMP INT_19 setb P1.1 LJMP INT_19 INT_12: clr P1.0 INT_11: CLR P1.0 CLR P1.1 CLR TR0 CLR TR1 INT_19: RETI 26

INT_0: CPL 20H.0 RETI END

实验八 步进电机控制实验

一、实验目的

1.了解步进电机控制的基本原理。 2.掌握步进电机转动编程方法。

二、实验内容

从键盘上输入正、反转命令,转速参数和转动步数显示在显示器上,CPU再读取显示器上显示的正、反转命令,转速级数(16级)和转动步数后执行。转动步数减为零时停止转动。

三、实验电路图

四、参考程序

ORG 0000H

ljmp main ORG 000BH LJMP COUNT0

27 ORG 001BH LJMP COUNT1 ORG 0100H MAIN: MOV P0,#0FFH ;输送脉冲口, SETB P1.2 ; MOV R0,#1 ;延时变化变量 LOOP1: MOV P0,#0FCH LCALL DELAY MOV P0,#0F6H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F9H LCALL DELAY JNB P1.2,LOOP2 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP1 LOOP2: MOV P0,#0FCH LCALL DELAY MOV P0,#0F9H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F6H LCALL DELAY JB P1.2,LOOP1 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH 28 SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP2 SJMP $ COUNT0: MOV TH0,#0FFH ;减速中断 MOV TL0,#0FFH CJNE R0,#9,L4 JMP L5 L4: INC R0

L5: setb TR0 RETI COUNT1: MOV TH1,#0FFH ;加速中断 MOV TL1,#0FFH CJNE R0,#1,L6 JMP L7 L6: DEC R0 L7: setb TR1 RETI DELAY: MOV A,R0 ;延时 MOV R1,A L1: MOV R2,#50 L2: MOV R3,#250 L3: DJNZ R3,L3 DJNZ R2,L2 DJNZ R1,L1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;显示程序查表,共阴 END

29

单片机实验教案

单片机实验教案

单片机实验教案

单片机实验

单片机实验

单片机实验心得体会

单片机液晶显示实验

单片机实验小结

单片机实验感想

单片机实验一

单片机实验教案
《单片机实验教案.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档