基于单片机的直流电机测速调速及显示系统设计分解Word格式.docx
《基于单片机的直流电机测速调速及显示系统设计分解Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的直流电机测速调速及显示系统设计分解Word格式.docx(37页珍藏版)》请在冰豆网上搜索。
具有许多增强功能,如内置64KB用户程序Flash,8KB引导Flash(用来支持ISP和IAP功能),1KB片内静态RAM,双倍速模式,双DPTR,4个中断优先级,进入掉电模式后外部中断可唤醒(8052只有复位,不方便),硬件SPI,增强型UART,等等。
●配备的P89LV51RD2单片机支持ISP(在系统可编程)方式下载用户程序。
Quick51只需要一根普通电脑RS-232通信电缆(该电缆已经随SmartSOPC实验箱标配)就能实现ISP下载,不需要制作专门的下载线。
●配备1片专门的仿真芯片。
在目前最流行的8051内核单片机Windows环境软件开发工具KeilC51的支持下,能够方便地进行硬件在线仿真,而且并不需要安装特别的驱动程序。
该仿真芯片能够全面支持单步、全速、断点、跳出、变量观察、外围设备访问等仿真功能。
●晶振(默认11.0592MHz)采用插座式安装,为用户替换成其它频点的晶振来做实验提供了方便。
●复位方式可选:
RC复位、按键复位、看门狗复位。
此外,看门狗芯片还内置有256B的EEPROM。
●单片机的4组I/O端口全部用双排插针引出,方便用户做实验。
●扩展32KB静态RAM。
●扩展512KB大容量Flash存储器,可以用作程序Flash或者大容量数据存储。
●扩展1个8位并行高阻输入端口、1个8位并行推挽输出端口。
●采用PLD器件作为译码器。
提供8组输出,地址范围已经印在PCB上,一目了然。
在产品光盘里提供译码器内部结构的等效电路原理图。
第二章总体方案设计
本速度表由信号预处理电路、8051单片机、LCD显示电路、串口数据存储电路和系统软件组成。
其中信号预处理电路包含信号放大、波形变换和波形整形。
信号预处理电路中的放大器用于对待测信号进行放大,以降低对待测信号的幅度要求;
波形变换和波形整形电路则用来将放大的信号转换成可与单片机接口的TTL信号;
通过单片机的设置可使INT0引脚能够对内部定时器T0的工作进行控制,这样能精确地测出加到INT0引脚的正脉冲宽度(即测出脉冲信号的周期);
速度显示部分采用数码显示模块,所得的数据采用I2C总线,并通过E2PROM来存储,因而节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。
系统软件包括单片机和液晶模块的初始化模块、液晶模块的写数据/命令子模块、数据显示模块以及实时中断服务模块等。
该设计能实时地将所测的速度显示出来。
该速度表能将传感器输入到单片机的脉冲信号的宽度(传感器将车速转变成相应宽度的脉冲信号)实时地测量出来,然后通过单片机计算出速度,再将所得的数据存储到串口数据存储器,并由动态数码显示模块实时显示出所测速度。
本设计用两个按键来控制显示速度。
考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后再输入到单片机进行测速。
系统方框图如图2-1所示。
图2-1系统方框图
2.18051单片机简介
一、8051单片机的基本组成
8051单片机由CPU和8个部件组成,它们都通过片内单一总线连接,其基本结构依然是通用CPU加上外围芯片的结构模式,但在功能单元的控制上采用了特殊功能寄存器的集中控制方法。
二、CPU及8个部件的作用功能介绍如下
中央处理器CPU:
它是单片机的核心,完成运算和控制功能。
内部数据存储器:
8051芯片中共有256个RAM单元,能作为存储器使用的只是前128个单元,其地址为00H—7FH。
通常说的内部数据存储器就是指这前128个单元,简称内部RAM。
特殊功能寄存器:
是用来对片内各部件进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区,位于内部RAM的高128个单元,其地址为80H—FFH。
内部程序存储器:
8051芯片内部共有4K个单元,用于存储程序、原始数据或表格,简称内部ROM。
并行I/O口:
8051芯片内部有4个8位的I/O口(P0,P1,P2,P3),以实现数据的并行输入输出。
串行口:
它是用来实现单片机和其他设备之间的串行数据传送。
定时器:
8051片内有2个16位的定时器,用来实现定时或者计数功能,并且以其定时或计数结果对计算机进行控制。
中断控制系统:
该芯片共有5个中断源,即外部中断2个,定时/计数中断2个和串行中断1个。
振荡电路:
它外接石英晶体和微调电容即可构成8051单片机产生时钟脉冲序列的时钟电路。
系统允许的最高晶振频率为12MHz。
三、8051单片机引脚图
四、单片机系统中所用其他芯片简介
1.地址锁存器74LS373
74LS373片内是8个输出带三态门的D锁存器。
其结构如下图所示:
当使能端G呈高电平时,锁存器中的内容可以更新,而在返回低电平的瞬间实现锁存。
如果此时芯片的输出控制端
为低,也即是输出三态门打开,锁存器中的地址信息便可以通过三态门输出。
以下是其引脚图:
2.程序存储器27128
(1)芯片引脚
(2)功能表
引脚
工作方式
(片选)
(允许输出)
VPP
(编程控制)
输出
读
L
VCC
H
数据输出
维持
*
高阻
编程
数据输入
编程校验
编程禁止
3.数据存储器6264
(2)芯片功能表
引脚
I/O0—I/O7
未选中
输出禁止
写
五、8051单片机扩展电路及分析
接线分析
P0.7---P0.0:
这8个引脚共有两种不同的功能,分别使用于两种不同的情况。
第一种情况是8051不带片外存储器,P0口可以作为通用I/O口使用,P0.7---P0.0用于传送CPU的I/O数据。
第二种情况是8051带片外存储器,P0.7---P0.0在CPU访问片外存储器时先是用于传送片外存储器的低8位地址,然后传送CPU对片外存储器的读写数据。
P2.7---P2.0:
这组引脚的第一功能可以作为通用的I/O使用。
它的第二功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但是并不能像P0口那样还可以传送存储器的读写数据。
P3.7---P3.0:
这组引脚的第一功能为传送用户的输入/输出数据。
它的第二功能作为控制用,每个引脚不尽相同,如下表所示:
P3口的位
第二功能
注释
P3.0
RXD
串行数据接收口
P3.1
TXD
串行数据发送口
P3.2
外中断0输入
P3.3
外中断1输入
P3.4
T0
计数器0计数输入
P3.5
T1
计数器1计数输入
P3.6
外部RAM写选通信号
P3.7
外部RAM读选通信号
VCC为+5V电源线,VSS为接地线。
ALE/
:
地址锁存允许/编程线,配合P0口引脚的第二功能使用,在访问片外存储器时,8051CPU在P0.7---P0.0引脚线上输出片外存储器低8位地址的同时还在ALE/
线上输出一个高电位脉冲,其下降沿用于把这个片外存储器低8位地址锁存到外部专用地址锁存器,以便空出P0.7---P0.0引脚线去传送随后而来的片外存储器的读写数据。
在不访问片外存储器时,8051自动在ALE/
线上输出频率为1/6fOSC的脉冲序列。
该脉冲序列可以用作外部时钟源或者作为定时脉冲源使用。
/VPP:
允许访问片外存储器/编程电源线,可以控制8051使用片内ROM还是片外ROM。
如果
=1,那么允许使用片内ROM;
=0,那么允许使用片外ROM。
片外ROM选通线,在执行访问片外ROM的指令MOVC时,8051自动在
线上产生一个负脉冲,用于片外ROM芯片的选通。
其他情况下,
线均为高电平封锁状态。
RST/VPD:
复位备用电源线,可以使8051处于复位工作状态。
XTAL1和XTAL2:
片内振荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接8051片内OSC的定时反馈电路。
石英晶振起振后,应能在XTAL2线上输出一个3V左右的正弦波,以便于8051片内的OSC电路按石英晶振相同频率自激振荡,电容C1、C2可以帮助起振,调节它们可以达到微调fOSC的目的。
2.2PWM信号发生电路设计
2.2.1PWM的基本原理
PWM(脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。
PWM可以应用在许多方面,比如:
电机调速、温度控制、压力控制等等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。
也正因为如此,PWM又被称为“开关驱动装置”。
如下图所示:
设电机始终接通电源时,电机转速最大为Vmax,设占空比为D=t1/T,则电机的平均速度为Va=Vmax*D,其中Va指的是电机的平均速度;
Vmax是指电机在全通电时的最大速度;
D=t1/T是指占空比。
由上面的公式可见,当我们改变占空比D=t1/T时,就可以得到不同的电机平均速度Vd,从而达到调速的目的。
严格来说,平均速度Vd与占空比D并非严格的线性关系,但是在一般的应用中,我们可以将其近似地看成是线性关系。
2.3128*64液晶显示
LCD显示器工作原理就是利用液晶的物理特性;
通电时排列变得有序,使光线容易通过;
不通电时排列混乱,阻止光线通过,说简单点就是让液晶如闸门般地阻隔或让光线穿透。
LCD的好处有:
与CRT显示器相比,LCD的优点主要包括零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。
其接口信号说明如下:
第三章硬件设计与连接
3.1传感器电路设计
在信号脉冲发生源上,本系统采用的是开关型霍尔传感器。
以磁场作为媒介,利用霍尔传感器可以检测多种物理量,如位移、振动、转速、加速度、流量、电流、电功率等。
它不仅可以实现非接触测量,并且采用永久磁铁产生磁场,不需附加能源。
另外霍尔传感器尺寸小、价格便宜、应用电路简单、性能可靠,因而获得极为广泛的应用。
除了直接利用霍尔传感器外,还利用它开发出各种派生的传感器。
金属或半导体薄片的两个端面通以控制电流Ic,并在薄片的垂直方向上施加磁感应强度为B的磁场,则在垂直于电流和磁场的方向上将产生电势Uh,称为霍尔电势或霍尔电压(如图l所示)。
霍尔电势Uh=KhIcB(其中Kh为霍尔元件灵敏度,它与所用的材料及几何尺寸有关)。
这种现象称为霍尔效应,而用这种效应制成的元件称为霍尔元件。
由于霍尔元件输出的电压信号较小,并且有一定温度误差,目前已较少直接使用霍尔元件作传感器。
霍尔传感器原理图如图3-6所示。
图3-6霍尔传感器磁场效应
本系统采用开关型霍尔传感器A04E。
开关型霍尔传感器是一种集成传感器,它内部含有霍尔元件、放大器、稳压电源、带一定滞后特性的比较器及集电极开路输出部分等,如图3-7所示。
开关型霍尔传感器的工作特性如图3-8所示。
图3-7开关型霍尔传感器内部结构图
图3-8开关型霍尔传感器工作特性
当外加的磁感应强度超过动作点Bop时,传感器输出低电平,但磁感应强度降到动作点Bop以下时,传感器输出电平不变,一直要降到释放点BRE时,传感器才由低电平跃变为高电平。
Bop与Bre之间的滞后(或称为回差)使开关动作更为可靠。
图3-9霍尔传感器检测转速示意图
霍尔传感器检测转速示意图3-9如下。
在非磁材料的圆盘边上粘贴一块磁钢,霍尔传感器固定在圆盘外缘附近。
圆盘每转动一圈霍尔传感器便输出一个脉冲。
通过单片机测量产生脉冲的频率,就可以得出圆盘的转速。
同样道理,根据圆盘(车轮)的转速,再结合圆盘的周长就是计算出物体的位移。
如果要增加测量位移精度,可以在圆盘(车轮)上多增加几个磁钢。
由于传感器内部为集电极开路输出,所以需外接一个上拉电阻,其阻值与电源电压大小有关,一般取1~2k,如图3-10所示。
图3-10传感器输出电路
系统的信号预处理电路由二级电路构成,第一级是由开关三极管组成的零偏置放大器,采用开关三极管可以保证放大器具有良好的高频响应。
当输入信号为零或负电压时,三极管截止,电路输出高电平;
而当输入信号为正电压时,三极管导通,此时输出电压随着输入电压的上升而下降,这使得速度里程表既可以测量任意方波信号的频率,也可以测量正弦波信号的频率。
由于放大器的放大功能降低了对待测信号的幅度要求,因此,系统能对任意大于0.5V的正弦波和脉冲信号进行测量。
预处理电路的第二级采用带施密特触发器的反相器DM74LS14来把放大器生成的单相脉冲转换成与COMS电平相兼容方波信号,同时将输出信号加到单片机的P3.4口上。
利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。
输入的信号只要幅度大于VT+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。
从传感器得到的矩形脉冲经传输后往往发生波形畸变。
当传输线上的电容较大时,波形的上升沿将明显变坏;
当传输线较长,而且接受端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象;
当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。
无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。
只要施密特触发器的VT+和VT-设置得合适,均能受到满意的整形效果。
信号预处理电路如图3-11所示。
图3-11信号预处理电路图
I2C总线是一种用于IC器件之间连接的二线制总线。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上器件之间传送信息,并根据地址识别每个器件,不管是单片机、存储器、LCD驱动器还是键盘接口。
采用I2C总线标准单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立模块,通过软件寻址实现片选,减少了器件片选线连接。
CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。
I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。
当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。
主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。
I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。
在总线上,既没有中心机,也没有优先机。
I2C总线的数据传送格式是:
在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)。
方向位为“0”表示发送,即主器件把信息写到所选择的从器件;
方向位为“1”表示主器件将从从器件读信息。
开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)确定。
图3-12AT24CO2与单片机的接口电路
3.4显示电路设计
3.5PWM信号发生电路设计
PWM波可以由具有PWM输出的单片机通过编程来得以产生,也可以采用PWM专用芯片来实现。
当PWM波的频率太高时,它对直流电机驱动的功率管要求太高,而当它的频率太低时,其产生的电磁噪声就比较大,在实际应用中,当PWM波的频率在18KHz左右时,效果最好。
在本系统内,采用了两片4位数值比较器4585和一片12位串行计数器4040组成了PWM信号发生电路。
两片数值比较器4585,即图上U2、U3的A组接12位串行4040计数输出端Q2—Q9,而U2、U3的B组接到单片机的P1端口。
只要改变P1端口的输出值,那么就可以使得PWM信号的占空比发生变化,从而进行调速控制。
12位串行计数器4040的计数输入端CLK接到单片机C51晶振的振荡输出XTAL2。
计数器4040每来8个脉冲,其输出Q2—Q9加1,当计数值小于或者等于单片机P1端口输出值X时,图中U2的(A>
B)输出端保持为低电平,而当计数值大于单片机P1端口输出值X时,图中U2的(A>
B)输出端为高电平。
随着计数值的增加,Q2—Q9由全“1”变为全“0”时,图中U2的(A>
B)输出端又变为低电平,这样就在U2的(A>
B)端得到了PWM的信号,它的占空比为(255-X/255)*100%,那么只要改变X的数值,就可以相应的改变PWM信号的占空比,从而进行直流电机的转速控制。
第四章软件设计
4.1系统软件总流程图
图4.1系统软件主程序流程图
4.2程序清单
/*
LCD.C
128×
64LCD驱动程序头文件
*/
#ifndefLCD_H_
#defineLCD_H_
#include<
REG51.H>
//定义背光控制信号
sbitLCD_BL=P1^4;
//点亮背光灯
voidLcdLightOn();
//熄灭背光灯
voidLcdLightOff();
//清屏
voidLcdClear();
//初始化
voidLcdInit();
//显示ASCⅡ码
voidLcdPutChar(unsignedcharc);
//显示字符串
voidLcdPuts(unsignedchar*s);
#endif//LCD_H_
64LCD驱动程序
#include<
INTRINS.H>
ABSACC.H>
//#include"
LCD.H"
//定义屏幕光标(取值0~63,光标本身不可见)
unsignedcharLcdCursor;
inti,j;
函数:
LcdLightOn()
功能:
点亮背光灯
voidLcdLightOn()
{
LCD_BL=1;
}
LcdLightOff()
熄灭背光灯
voidLcdLightOff()
LCD_BL=0;
LcdGetBF()
读出状态位BF
返回:
BF=1,表示忙,不可进行任何操作
BF=0,表示不忙,可以进行正常操作
bitLcdGetBF()
unsignedchardat;
dat=XBYTE[0xD002];
//XBYTE的定义见<
return(bit)(dat&
0x80);
LcdWriteCmd()
向LCD发送命令
参数:
cmd:
命令字,详见器件的数据手册
voidLcdWriteCmd(unsignedcharcmd)
while(LcdGetBF());
XBYTE[0xD000]=cmd;
LcdWriteDat()
向LCD写入数据
dat,要写入的数据
说明:
目标地址由地址计数器AC隐含指定,写完后AC自动加1
voidLcdWriteDat(unsignedchardat)
XBYTE[0xD001]=dat;
LcdReadDat()
从LCD读出数据
读出的数据
unsignedcharLcdReadDat()
volatileunsignedchardat;
while(LcdGetB