单片机实验单片机控制直流电机数码显示速度.docx
- 文档编号:12900031
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:27
- 大小:165.29KB
单片机实验单片机控制直流电机数码显示速度.docx
《单片机实验单片机控制直流电机数码显示速度.docx》由会员分享,可在线阅读,更多相关《单片机实验单片机控制直流电机数码显示速度.docx(27页珍藏版)》请在冰豆网上搜索。
单片机实验单片机控制直流电机数码显示速度
武汉工程大学实验报告
实验课程单片机综合实验
姓名张鹏学号0704140228专业及班级通信02
实验地点408实验组号1组实验日期
实验项目单片机控制电机实验(PWM)
实验目的1了解直流电机PWM调速的原理
2了解对象模块的工作原理
3了解ADC0809工作原理
4了解显示模块的工作原理
实验任务
(1)基础实验(开环)
(2)扩展实验(闭环)
实验原理,实验步骤,实验仪器设备(名称,型号,功能,量程,在本次试验中的用途)
二实验原理
(1)单片机控制直流调速系统的工作原理概述
整个系统的工作原理:
首先是人为给定电动机转速的电压信号,然后将这个电压信号通过A/D转换成数字信号后传送给单片机(8025)。
单片机通过中断方式将接收到的数据先保存起来。
然后再对此数据进行处理,接着启动ADC0809开始采样直流电动机的实际速度值,再通过PID控制算法,得到一个输出信号值,再通过DA转换器将这个数字信号转换成相应的模拟电压控制信号,经过PWM波形发生器来驱动直流发动机;并且不断循环,并且在这个循环往复的过程中,讲采集到的不断变化的速度值,通过LED数码管显示出直流电机的速度值。
整个系统设计包括了电位器控制部分,A/D转换部分,单片机控制部分,数码显示部分,电动机模块部分。
PWM调速原理及其实现方法
PWM是通过控制固定电压的直流电源开关频率,从而改变伏在两端电压,从而达到控制要求的一种电压调整方法。
PWM可以应用在很多方面,如电机调速,温度控制,压力控制等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内接通和断开的时间的长短。
通过改变直流电机电枢上电压的占空比来改变平均电压的大小,从而控制电动机的转速。
因此,PWM又被称为开关驱动装置。
当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电的时间,即可让电机转速得到控制
PWM信号的产生通常有两种方法:
一种是软件的方法,另一种是硬件的方法
了解对象模块的工作原理
PWM模块内部结构图
在设计中首先要将给定的直流电动机转速的模拟电压转换成数字信号,同时还要对测速发电机进行采样并转化成数字信号,因此需要用A/D芯片。
我们采用ADC0809芯片。
ADC0809是8路8位逐次逼近式A/D,由多路模拟开关,通道地址缩存,译码器,8位A/D转换器及三态输出数据锁存器组成。
在电动机上我们装上霍尔感应装置进行测速,并且将数据传给单片机进行测速处理,
(3)电位器的工作原理
电位器是一种可调的电子元件。
它是由一个电阻体和一个转动或滑动系统组成。
当电阻体的两个固定触电之间外加一个电压时,通过转动或滑动系统改变触点在电阻体上的位置,在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。
它大多是用作分压器,电位器是一个四端元件。
电位器基本上就是滑动变阻器,通过ADC0809采样0—5V的电压值就是由电位器来产生的。
(4)ADC0809的工作原理
A/D转换器大致有三类:
一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。
每采集一次需100us。
ADC0809START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。
实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令:
MOVDPTR,#PORT
MOVX@DPTR,A
A中为何内容并不重要,这是一次虚拟写。
在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031CPU板上的INT0相连接。
在中断处理程序中,使用如下指令即可读取A/D转换的结果:
MOVDPTR,#PORT
MOVXA,@DPTR
ADC0809与电位器相连电路图
(5)8279显示模块工作原理实验
7段LED显示器由7个发光二极管组成,7个条形发光二极管排列成“日”字形,每个通过不同的发光管的组合可以显示数字0~9、A~F以及一些特殊的字样。
LED显示器可以分为两种类型。
一种是7个发光二极管的阳极连在一起,称为共阳极LED显示器;另一种是7个发光二极管的阴极连在一起的,称为共阴极LED显示器。
为了显示字符,必须给LED的a、b、c、d、e、f、g一个确定的电平,如对于共阴极LED,为了显示‘0',则要求a、b、c、d、e、f端为高电平,g端为低电平,用数据表示即为11111100。
显然,将共阳极LED的段码按位取反即可得到共阳极LED的段码。
8279是一种可编程键盘/LED显示器接口器件,具有键盘、传感器以及选通三种输入方式和8位或16位LED显示器控制功能,实际的应用系统中采用8279芯片,不仅可以大大地节省CPU处理键盘或显示操作的时间,减轻CPU的负担,而且,显示稳定,编程简单。
8279显示控制部分主要由显示控制逻辑电路和16个字节的显示RAM以及显示寄存器组成。
显示RAM用来存放显示数据;显示寄存器分为两组,OUTA3~0和OUTB3~0可以单独4位输出,也可以合成为8位(一个字节)输出,以字节输出时,OUTA3对应数据总线的D7,OUTB0对应数据总线的D0。
8279工作时,显示寄存器不停地从显示RAM中读出显示数据,然后,从OUTA3~0和OUTB3~0输出,与输出的扫描信号(SL3~SL0)配合实现多位LED的循环显示。
8279最多可用来控制16位的LED显示,当显示位数超过8位时,均设定为16位字符显示。
LED有两种显示方式:
即左边输入和右边输入。
左边输入是较简单的方式,显示RAM单元0对应显示器最左边的位;显示RAM单元7(或15)对应显示器的最右边的位。
单片机写入单元的地址和显示的位之间的对应关系是固定的,单片机依次从0地址或某一个地址开始将段码数据写入显示缓冲区。
本次设计中要将霍尔传感器测得的转速的电压转换成用数字量的转速,并用LED数码管显示,因此需要一个四位的LED数码管来完成实验要求。
单片机控制系统的接口电路中的LED数码显示器使用的是共阴极接法。
共阴极接法的原理:
将所有发光二极管的阴极互相连接后接地,每个发光二级管的阳极通过电阻与输入端相连,当阳极属于为高电平时,段发光二极管就导通点亮,当阳极端输入为低电平时,段发光二极管就不点亮。
设计中采用动态显示,单片机控制系统采用动态扫描显示。
动态显示软件法将要显示的十六进制数或BCD码转化为相应字型码。
三系统组成
(1)结构框图
本次设计的任务是单片机控制的直流调速系统,该单片机对直流电动机的速度进行控制,同时对速度进行检测采样,并显示速度。
控制系统设计总体结构框图如下:
系统的总体设计以及连线图
四软件设计
1设计思路
为实现单片机对直流电机的控制,满足设计要求,系统的工作过程是靠软件来实现的。
因此软件的设计和编写很重要。
程序的编写采用汇编语言。
主程序的设计
主程序的内容一般包括:
主程序的起始地址,中断服务程序的起始地址,设置堆栈指针,相关存储单元和元器件的初始化以及一些子程序的调用等。
主程序的初始化
所谓的初始化,就是对将要用到的MCS-51系列单片机的内部单元和扩展芯片进行初始化工作状态的设定。
MCS-51系列单片机复位后,特殊功能寄存器IE,IP的内容为00H,所以应对IE,IP进行初始化编程,以开CPU总中断,允许某些中断源中断,并设置中断优先级等。
主程序流程图和TO中断流程图设计如下:
主程序如下
ORG0000H
LJMPMAIN;转主程序
ORG0003H;外部中断INT0的入口地址
LJMPINTA;转外部中断INT0服务程序
ORG00BH;T0;入口地址
LJMPT0-SEV;转T0溢出中断服务程序
ORG0300H;
DATABUFEQU5OH;数据缓冲区的首地址
DISBUF1EQO60H;给定速度显示缓冲区的首地址
DISBUF2EQO64H;实际速度显示的缓冲区的首地址
SAMO-D1EQU0000H;保存给定速度的首地址
SAMP-D2EQU0500H;保存实际速度采样数据的首地址
MAIN:
MOVSP,#70H;设置堆栈指针
MOVTMOD,#01H;定时器T0工作方式1
MOVTL0,#18H;定时器赋初值,定时1ms
MOVTH0,#OFCH
MOVR0,#OFH;软件计数器R0赋初值
SETBTR0;启动T0工作
SETBEX0;允许INT0中断
SETBEA;开CPU中断
SJMP$;等待中断
T0-SEV:
;T0中断服务子程序
MOVTL0,#18H;定时器重新赋值
MOVTH0,#OFCH
SETBITO;中断触发方式为边沿触发方式
SETBEA;CPU开中断
SETBEXO;允许外部中断0中断
INTA:
PUSHACC;保护现场
PUSHDPH
PUSHDPL
ACALLAD1;调用AD1给定速度采样子程序
ACALLFILTER;调用中值滤波子程序
ACALLFA1
ACALLAD2;调用AD2实际速度采样子程序
ACALLFILTER;调用中值滤波子程序
ACALLFA2
POPDPH;恢复现场
POPDPL
POPACC
RET1
ACALLPID;调用PID控制算法子程序
ACALLDAC;调用DAC转换程序
LCALLTRAST1
LCALLDBCD1
LCALLDIS1;调用速度显示子程序
MOVA,2AH;实际速度值送A
LCALLTRAST1;调用代码转换子程序
LCALLDBCD2;将实际转速压缩BCD码转换成单独BCD码
LCALLDIS2;调用实际速度显示子程序
RETI;中断返回
采样子程序
AD0809采样程序
DAC0809的地址可为7FF8H—7FFFH,具体该为哪一个地址涉及到转换通道的选择我们设定转速电压模拟量地址为7FF8H(INO),实际速度电压通道地址为7FF9H(IN1)
采样设计流程图如下
采样程序如下:
AD1:
;调用AD1给定速度采样子程序
MOVRO,#2CH;采样值起始地址送R0
MOVR2,#03H;采样次数初值送R2
MOVDPTR,#6FF8H
JMPADC1
AD2:
MOVR0,#2CH;采样值起始地址送R0
MOVR2,#03H;采样次数初值送R2
MOVDPTR,#6FF9H
ADC1:
MOVX@DPTR,A;启动ADC0809工作
MOVR3,#20H
DLYDJNZR3,DLY;延时
HERE:
JBP3.3,HERE;等待A/D转换完成
MOVXA,@DPTR;采样值送A
MOV@R0,A;存放采样值
INCRO
DJNZR2,ADC1;若采样未完,则ADC1
RET;若采样完,则返回
附录:
总程序
ORG0000H
LJMPMAIN;转主程序
ORG0003H;外部中断INT0的入口地址
LJMPINTA;转外部中断INT0服务程序
ORG00BH;T0;入口地址
LJMPT0-SEV;转T0溢出中断服务程序
ORG0300H
DATABUFEQU5OH;数据缓冲区的首地址
DISBUF1EQO60H;给定速度显示缓冲区的首地址
DISBUF2EQO64H;实际速度显示的缓冲区的首地址
SAMO-D1EQU0000H;保存给定速度的首地址
SAMP-D2EQU0500H;保存实际速度采样数据的首地址
MAIN:
MOVSP,#70H;设置堆栈指针
MOVTMOD,#01H;定时器T0工作方式1
MOVTL0,#18H;定时器赋初值,定时1ms
MOVTH0,#OFCH
MOVR0,#OFH;软件计数器R0赋初值
SETBTR0;启动T0工作
SETBEX0;允许INT0中断
SETBEA;开CPU中断
SJMP$;等待中断
T0-SEV:
;T0中断服务子程序
MOVTL0,#18H;定时器重新赋值
MOVTH0,#OFCH
SETBITO;中断触发方式为边沿触发方式
SETBEA;CPU开中断
SETBEXO;允许外部中断0中断
INTA:
PUSHACC;保护现场
PUSHDPH
PUSHDPL
ACALLAD1;调用AD1给定速度采样子程序
ACALLFILTER;调用中值滤波子程序
ACALLFA1
ACALLAD2;调用AD2实际速度采样子程序
ACALLFILTER;调用中值滤波子程序
ACALLFA2
POPDPH;恢复现场
POPDPL
POPACC
RET1
ACALLPID;调用PID控制算法子程序
ACALLDAC;调用DAC转换程序
LCALLTRAST1
LCALLDBCD1
LCALLDIS1;调用速度显示子程序
MOVA,2AH;实际速度值送A
LCALLTRAST1;调用代码转换子程序
LCALLDBCD2;将实际的转速压缩BCD码转换成单独的BCD码
LCALLDIS2;调用实际速度显示子程序
RETI;中断返回
AD1:
;调用AD1给定速度采样子程序
MOVRO,#2CH;采样值起始地址送R0
MOVR2,#03H;采样次数初值送R2
MOVDPTR,#6FF8H
JMPADC1
AD2:
MOVR0,#2CH;采样值起始地址送R0
MOVR2,#03H;采样次数初值送R2
MOVDPTR,#6FF9H
ADC1:
MOVX@DPTR,A;启动ADC0809工作
MOVR3,#20H
DLYDJNZR3,DLY;延时
HERE:
JBP3.3,HERE;等待A/D转换完成
MOVXA,@DPTR;采样值送A
MOV@R0,A;存放采样值
INCRO
DJNZR2,ADC1;若采样未完,则ADC1
RET;若采样完,则返回
FILTER:
;中值滤波算法子程序
MOVA,2CH;(2CH)送A
CJNEA,2DH,CMP1;(2CH)≠(2DH),则CMP1
AJMPCMP2;否则转CMP2
CMP1:
JNCCMP2;若(2CH)=(2DH),则CMP2
XCHA,2DH
XCHA,2CH
CMP2:
MOVA,2DH;(2DH)送A
CJNEA,2EH,CMPP3;若(2DH)≠(2EH),则CMP3
MOV2AH,A;否则(2DH)送2AH
RET;返回
CMP2:
JCCMP4;若(2DH)<(2EH),则CMP4
MOV2AH,A;否则(2DH)送2AH
ERT;返回
CMP4:
MOVA,2EH;(2EH)送A
CJNEA,2CH,CMP5;若(2EH)≠(2CH),CMP5
MOV2AH,A;否则(2EN)送2AH
RET;返回
CMP5:
JCCMP6;若(2EH)<(2CH)则CMP6
XCHA,2CH
CMP6:
MOV2AH,A;A送2AH
RET
FA1:
MOVDPTR,#SAMP-D1
MOVX@DPTR,A
MOV1AH,A
INCDPTTR
FA2:
MOVDPTR,#SAMP-D2
MOVX@DPTR,A;将采样值送到外部RAM中的0000H单元
INCDPTR
RET
PID:
;数字PID控制算法子程序
MOVR5,1AH;给定值Ug送R5R4
MOVR4,#00H
MOVR3,2AH;实际值送UI(K)R3R4
MOVR2,#0OH
ACALLCPL1;去UI(K)的补码
ACALLDSUM;双字节加法,计算E(K)
MOV39H,R7;E(K)送39H和3A
MOV3AH,R6
MOVR5,35H;起始地址送4AH送R0
MOVR4,36H
MOVR0,#4AH;双字节带符号乘法,计算PI=KI*E(K)
ACALLMULT1;E(K)送R4R5
MOVR5,39H
MOVR4,31H
MOVR3,3BH
MOVR2,3CH
ACALLCPL1;对E(K-1)求补
ACALLDSUM;求[E(K)-E(K-1)]
MOVR5,33H;KP送R5R4
MOVR4,34H
MOVR0,#46H;积起始地址46H送R0
ACALLMULT1;求得Pp
MOVR5,49H;Pp的高16位送R5R4
MOVR4,48H
MOVR3,4DH;PI送R3R2
MOVR2,4CH
ACALLDSUM;求得Pp+PI
MOV4AH,R7;存入4AH和4BH单元
MOV4BH,R6
MOVR5,39H;E(K)送R5R4
MOVR4,3AH
MOVR3,3DH;E(K-2)送R3R2
MOVR2,3EH
ACALLDSUM;计算E(K)+E(K-2)
MOVR5,F7;存入R5R4
MOVR4,R6
MOVR3,3BH;E(K-1)送R3R2
MOVR2,3CH
ACALLCPL1;对E(K-1)求补
ACALLDSUM;对E(K)-2E(K-1)+E(K-2)
MOVR5,37H;KD送R5R4
MOVR4,38H
MOVR0,#46H;积起始地址46H送R0
ACALLMULT1;求的PD
MOVR5,49H;送入R5R4
MOVR4,48H
MOVR3,4AH;Pp+PI送R3R2
MOVR2,4BH
ACALLDSUM;求的Pp+PI+PD
MOVR3,R7;送入R3R2
MOVR2,R6
MOVR5,2FH;P(K-1)送R5R4
MOVR4,30H
ACALLDSUM;求出P(K)
MOV2FH,R7;存入2FH到30H
MOV30H,R6
MOV3DH,3BH;E(K-1)送E(K-2)
MOV3EH,3CH
MOV3BH,39H;E(K)S送E(K-1)
MOV3CH,3AH
RET
DSUM:
MOVA,R4
ADDA,R2
MOVR6,A
MOVA,R5
ADDCA,R3
MOVR7,A
RET
CPL:
;双字节求补子程序
MOVA,R2
CPLA
ADDA,#01H
MOVR2,A
MOVA,R3
CPLA
ADDCA,#00H
MOVR3,A
RET
MULT1:
;双字节带符号乘法子程序
MOVA,R7
RLCA
MOVSIGN1,C;被乘数符号送SIHN1
JNCPOS1
MOVA,R6
CPLA
ADDA,#01H
MOVR6,A
MOVA,R7;对R7求补
CPLA
ADDCA,#00H
MOVR7,A
POS1:
MOVA,R5
RLCA
MOVSIGN2,C;乘数符号送SIGN2
JNCPOS2
MOVA,R4;对R4求补
CPLA
ADDA,#01H
MOVR4,A
MOVA,R5;对R5求补
CPLA
ADDCA,#00H
MOVR5,A
POS2:
ACALLMULT;调用无符号乘法程序MULT
MOVC,SIGN1;两乘数皆为负?
ANLC,SIGN2
JCTPL
MOVC,SIGN1;否则,判断两乘数是否为正
ORLC,SIGN2
JNCTPL
DECR0;否则对乘数的高十六位求补
MOVA,@R0
CPLA
ADDA,#01H
MOV@R0,A
INCR0
MOVA,@R0
CPLA
ADDCA,#00H
MOV@R0,A
TPL:
RET
MULT:
;双字节无符号乘法子程序
MOVA,R6
MOVB,R4
MULAB;b*d=BA
MOV@R0,A;bdL送(R0)
MOVR3,B;bdH送R3
MOVA,R7
MOVB,R4
MULAB
ADDCA,R3;加法形成Cy
MOVR3,A
MOVA,B
ADDCA,#00H
MOVR2,A
MOVA,R6
MOVB,R5
MULAB
ADDA,R3
INCR0
MOV@R0,A;R3+bcl送(R0+1)
MOVA,R2
ADDCA,B
MOVR2,A;R2+bcH+Cy送R2
MOVR1,#00H
JNCNEXT;若Cy=0,则NEXT
INCR1;若Cy=1,则R1+1
NEXT:
MOVA,R7
MOVB,R5
MULAB
ADDA,R2;加法形成Cy
INCR00
MOV@R0,A;R2+acL送(R0+2)
MOVA,B
ADDCA,R1
INCR0
MOV@R0,A
DAC:
MOVDPTR,#5FFFH
MOVA,30H
TRAST1:
MOVA,1AH
JMPTRAST
TRAST:
MOVB,#3BH
MULAB
MOVR5,A
MOVR4,B
ACALLCHU
MOV51H,R4
MOV50H,R5
CHU:
MOVR6,#00H
MOVR7,#0AH;除数为10
SRT:
ACALLL1
L2:
SJMPL5
NOP
L1:
CLRA
MOVR2,A
MOVR3,A
MOVR1,#10H;循环16次
L5:
CLRA;进位标志位清零
MOVA,R5;被乘数低8位送A
RLCA
MOVR5,A
MOVA,R4;被乘数高8位送A
RLCA
MOVR4,A;A中内容送到被乘数高8位
MOVA,R3
RLCA
MOVR3,A
MOVA,R2
RLCA
MOVR2,A
CLRC
SUBBA,R6;比较R2和R6的大小
JCL3;R2小则转L3
PUSH0E0H;压入堆栈
MOVA,R3
SUBBA,R7
JNCL4
MOV0F0H,A
POP0E0H
SUBBA,#00H
JCL3
MOVR2,A
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 控制 直流电机 数码 显示 速度