精品单片机直流电机控制定.docx

上传人:b****4 文档编号:3527699 上传时间:2022-11-23 格式:DOCX 页数:12 大小:69.32KB
下载 相关 举报
精品单片机直流电机控制定.docx_第1页
第1页 / 共12页
精品单片机直流电机控制定.docx_第2页
第2页 / 共12页
精品单片机直流电机控制定.docx_第3页
第3页 / 共12页
精品单片机直流电机控制定.docx_第4页
第4页 / 共12页
精品单片机直流电机控制定.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

精品单片机直流电机控制定.docx

《精品单片机直流电机控制定.docx》由会员分享,可在线阅读,更多相关《精品单片机直流电机控制定.docx(12页珍藏版)》请在冰豆网上搜索。

精品单片机直流电机控制定.docx

精品单片机直流电机控制定

单片机课程设计报告书

 

课题名称

姓名

学号

院、系、部

专业

指导教师

 

201

直流电机控制

20086503贾辰斌

一、设计目的

1、了解D/A转换芯片0832的性能、基本转换原理以及编程方法。

2、了解数码管动态显示的原理。

3、掌握键盘扫描的工作原理。

4、使用8255扩展键盘的接口方法和编程方法。

5、了解直流电机控制原理。

6、学习单片机控制直流电机的编程方法。

7、了解单片机控制外部设备的常用电路。

二、设计要求

1、利用D/A电路,输出-8V到+8V的电压,控制直流电机。

2、电机速度可调,具有启动键、方向控制键及提示灯、加速键、减速键及停止键:

S0键-升速,每按一次,电压值增大一个定值,转速提高。

S1键-减速,每按一次,电压值减小一个定值,转速降低。

3、利用霍尔元件感应电机转速,读出感应脉冲,从而计算出电机转速,用数码管显示出来。

三、硬件电路设计

 

四、使用说明

在电压允许范围内,直流电机的转速随着电压的升高而加快,若加上的电压为负电压,则电机会反向旋转。

本实验仪的D/A变换可输出-8V到+8V的电压,将电压经驱动后加在直流电机上,使其运转。

通过单片机输出数据到D/A变换电路,控制电压的高低和正负,观察电机的旋转情况。

在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用单片机控制读回感应脉冲,从而测算出电机的转速。

有兴趣的同学,可以做一个恒速的试验,即让电机转速保持一定。

若电机转速偏低,则提高输出电压,若电机转速偏高,则降低输出电压。

首先给电机一定的阻力,让转速保持一定,然后稍微给加大阻力,观察D/A输出的电压是否能做出反应,再减小阻力,也观察D/A电压,有何变化。

注意所加的阻力不能过大,以免电机烧毁。

五、流程图设计

 

六、程序设计如下:

HANGEQU8001H

LIEEQU8002H

DUANEQU8004H

LEDBUFEQU60H;显示缓冲

NUMEQU70H;显示的数据

SPEEDEQU90H

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVA,#128

MOVDPTR,#9000H

MOVX@DPTR,A

K0:

MOVR4,#04H

K1:

MOVA,#00H;判断

MOVDPTR,#LIE

MOVX@DPTR,A

MOVDPTR,#HANG

MOVXA,@DPTR

CPLA

ANLA,#0FH;00001111

JNZK2

AJMPK1

K2:

MOVR5,#255

LP:

DJNZR5,LP;DELAY

MOVR7,A

K3:

MOVA,#00H;再判断

MOVDPTR,#LIE

MOVX@DPTR,A

MOVDPTR,#HANG

MOVXA,@DPTR

CPLA

ANLA,#0FH

JNZK5

AJMPK1

K5:

MOVB,R7

CJNEA,B,K1

ACALLKSCAN

JBC11H,K1

LCALLKPRO

AJMPK1

KSCAN:

MOVR6,#20H;00100000

MOVA,R6

CPLA

MOVDPTR,#LIE

MOVX@DPTR,A;10111110

MOVR3,#00H;存列值

KS1:

MOVDPTR,#HANG

MOVXA,@DPTR

JBACC.3,KS2

MOVA,#00H;存行值

RET

KS2:

JBACC.2,KS3

MOVA,#04H

RET

KS3:

JBACC.1,KS4

MOVA,#08H

RET

KS4:

JBACC.0,NEXT

MOVA,#0CH

RET

NEXT:

INCR3;列值加1

MOVA,R6

RRA

MOVR6,A

CPLA

MOVDPTR,#LIE

MOVX@DPTR,A

DJNZR4,KS1

MOVR4,#04H

SETB11H;没扫描到有效键值

RET

KPRO:

ADDA,R3

RLA

MOVDPTR,#KTAB

JMP@A+DPTR

KTAB:

AJMPSTART

AJMPCHANGE

AJMPUP

AJMPDOWN

AJMPSTOP

AJMPKEY5

AJMPKEY6

AJMPKEY7

AJMPKEY8

AJMPKEY9

AJMPKEYA

AJMPKEYB

AJMPKEYC

AJMPKEYD

AJMPKEYE

AJMPKEYF

START:

MOVDPTR,#9000H

MOVA,#0B0H

MOV90H,A

MOVX@DPTR,A

LCALLDELAY

LJMPDISPLAY

RET

CHANGE:

MOVDPTR,#9000H

MOVXA,@DPTR

MOVR7,A

MOVA,#256

SUBBA,R7

MOV90H,A

MOVX@DPTR,A

LJMPDISPLAY

RET

UP:

MOVDPTR,#9000H

MOVA,90H

ADDA,#20

MOV90H,A

MOVX@DPTR,A

LCALLDELAY

LJMPDISPLAY

RET

DOWN:

MOVDPTR,#9000H

MOVA,90H

SUBBA,#20

MOV90H,A

MOVX@DPTR,A

LCALLDELAY

LJMPDISPLAY

RET

STOP:

MOVDPTR,#9000H

MOVA,#128

MOVX@DPTR,A

MOV90H,#0

LCALLDELAY

LJMPDISPLAY

RET

KEY5:

LJMPKSCAN

KEY6:

LJMPKSCAN

RET

KEY7:

LJMPKSCAN

RET

KEY8:

LJMPKSCAN

RET

KEY9:

LJMPKSCAN

RET

KEYA:

LJMPKSCAN

RET

KEYB:

LJMPKSCAN

RET

KEYC:

LJMPKSCAN

RET

KEYD:

LJMPKSCAN

RET

KEYE:

LJMPKSCAN

RET

KEYF:

LJMPKSCAN

RET

DISPLAY:

MOV76H,A;将当前寄存器A中的内容给76H单元进行保存

MOVTMOD,#05H;方式控制字T0设为计数器

MOVTH0,#00H;计数初值为0

MOVTL0,#00H

SETBTR0;开计数器

MOV55H,#4;延时约1S

D01:

MOV56H,#250

D02:

MOV57H,#248

D03:

DJNZ57H,D03

DJNZ56H,D02

DJNZ55H,D01

CLRTR0;1S到关计数器

MOVR1,TH0;送数

MOVR0,TL0

MOV70H,R0

MOV71H,R1

START2:

MOVR4,#100;显示次数

START02:

MOVSP,#40H;堆栈指针

MOVA,70H;计数得到的低8位数给A

MOVR0,#LEDBUF;缓冲地址

ANLA,#0FH;屏蔽高位,传送低位

MOVDPTR,#LEDMAP;表地址

MOVCA,@A+DPTR;数字转换成显示码

MOV@R0,A;显示码填入显示缓冲

INCR0;缓冲地址加1

MOVA,70H;计数得到的低8位数给A

ANLA,#0F0H;屏蔽地位,传送高位

MOVDPTR,#LEDMAP;表地址

MOVCA,@A+DPTR;数字转换成显示码

MOV@R0,A;显示码填入显示缓冲

INCR0;缓冲地址加1

MOVA,71H;计数得到的高8位给A

ANLA,#0FH;屏蔽高位,传送地位

MOVDPTR,#LEDMAP;表地址

MOVCA,@A+DPTR;数字转换成显示码

MOV@R0,A;显示码填入显示缓冲

INCR0;缓冲地址加1

MOVA,71H;计数得到的高8位给A

ANLA,#0F0H;屏蔽低位,传送高位

MOVDPTR,#LEDMAP;表地址

MOVCA,@A+DPTR;数字转换成显示码

MOV@R0,A;显示码填入显示缓冲

LJMPDISPLAYLED;到显示程序

LEDMAP:

;八段管显示码表格

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

DISPLAYLED:

MOVR0,#LEDBUF;缓冲地址

MOVR1,#4;共4个八段管

MOVR2,#00000001B;从右边开始显示

MOVDPTR,#LIE;位选

MOVA,#0

MOVX@DPTR,A;关所有八段管

LOOP:

MOVA,@R0

MOVDPTR,#DUAN;段选

MOVX@DPTR,A

MOVDPTR,#LIE

MOVA,R2

MOVX@DPTR,A;显示一位八段管

MOV4AH,#10

DL2:

MOV4BH,#200

DL1:

DJNZ4BH,DL1

DJNZ4AH,DL2

MOVA,R2;显示下一位

RLA

MOVR2,A

INCR0

DJNZR1,LOOP

DJNZR4,START02

MOVA,76H

LJMPK0;显示完成,跳回检验处

DELAY:

MOVR5,#5;延时子程序1秒

MOVR6,#200

LP1:

MOVR7,#248

DJNZR7,$

DJNZR6,LP1

LP2:

DJNZR5,LP2

RET

END

 

七、设计总结:

 通过本次课程设计,我学到了很多东西,同时也暴露出了很多问题。

首先表现在面对一个相对较为综合内容进行编程,不知道该如何下手;另外,甚至在看别人的程序时也有许多地方搞不明白;还有,像键盘这一块根本不知道是怎么用的。

但是,课程设计完之后我发现了自己的很多弊病。

最主要的是我对0832、8255以及键盘这些内容的理解还不是很透彻,这也就直接导致了我无法按要求编写出甚至调试出程序来。

因此,我当前对单片机的任务就是先理解好各块的功能以及程序的编写方法,这样才能编写好一般的功能性程序,最终尝试一下较大的程序编写。

八、参考文献:

1、《单片机原理及应用实验指导书》,屈波等编,2008年

2、《单片机原理及应用》,赵德安等编,机械工业出版社,2004

3、《单片机原理及应用》,雷晓平等编著,机械工业出版社,2007

4、高峰.单片微型计算机原理与接口技术.科学出版社,2007

 

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

当前位置:首页 > 表格模板 > 合同协议

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

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