51lcd1602与单片机连接图 使用1602液晶 为什么检测忙信号时 要把总线拉高?

查看: 9091|回复: 0
通用型1602LCD液晶操作方法
项目2& &通用型1602LCD液晶操作方法
液晶显示器的英文名是Liquid Crystal Display, 简称 LCD。 液晶显示器作为显示器件具有体积小、重量轻、功耗低等优点,所以 LCD 日渐成为各种便携式电子产品的理想显示器,如计算器,电子表,汽车电子仪表等。根据LCD的显示内容划分,可以分为段式LCD、字符式LCD和点阵式LCD 3种。其中,字符式LCD以其廉价、显示内容丰富、美观、使用方便等特点,成为LED数码管的理想替代品。
1. 1602字符型液晶简介
字符型LCD专门用于显示数字、字母、图形符号以及少量自定义符号。这类显示器把LCD控制器、点阵驱动器、字符存储器等做在一块板上,再与液晶屏一起组成一个显示模块。如下图所示。
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
& && && && & 图<font color="# LCD1602的外形图
目前字符型LCD常用的有<font color="#字X1行、<font color="#字X2行、<font color="#字X2行、<font color="#字X4行等液晶模块,型号通常用 XXX1602、XXX1604、XXX2002、XXX2004等 其中XXX为厂家商标名称 16代表液晶每行可以显示<font color="#个字符;<font color="#代表共有<font color="#行,也就是说这个液晶一共可以显示<font color="#字符。
2&&通用型1602液晶操作方法
<font color="#02液晶也叫<font color="#02字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个<font color="#X7或<font color="#X11点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔 每行之间也有间隔 起到了字符间距和行间距的作用,正因为如此 所以他不能显示图形(用自定义CGRAM,显示效果也不好)<font color="#02LCD是指显示的内容为<font color="#X2,即可以显示两行,每行<font color="#个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg& && && && && && &&&图<font color="#&&LCD1602的背面引脚图如图<font color="#所示,字符型LCD1602通常有<font color="#条引脚线或<font color="#条引脚线的LCD,多出来的<font color="#条线是背光电源线VCC(15脚)和地线GND(16脚),从左到右分别是<font color="#引脚到<font color="#引脚
<font color="#02LCD采用标准的<font color="#脚(无背光)或<font color="#脚(带背光)接口,各引脚接口说明如表<font color="#
&&编号&&&&符号&&&&引脚说明&&&&编号&&&&符号&&&&引脚说明&&&&<font color="#&&&&VSS&&&&电源地&&&&<font color="#&&&&D2&&&&数据&&&&<font color="#&&&&VDD&&&&电源正极&&&&<font color="#&&&&D3&&&&数据&&&&<font color="#&&&&VL&&&&液晶显示偏压&&&&<font color="#&&&&D4&&&&数据&&&&<font color="#&&&&RS&&&&数据/命令选择&&&&<font color="#&&&&D5&&&&数据&&&&<font color="#&&&&R/W&&&&读/写选择&&&&<font color="#&&&&D6&&&&数据&&&&<font color="#&&&&E&&&&使能信号&&&&<font color="#&&&&D7&&&&数据&&&&<font color="#&&&&D0&&&&数据&&&&<font color="#&&&&BLA&&&&背光源正极&&&&<font color="#&&&&D1&&&&数据&&&&<font color="#&&&&BLK&&&&背光源负极&&
& && && && && && && && && & 表<font color="#&&&&LCD1602接口信号说明
第<font color="#脚:VSS为地电源。
第<font color="#脚:VDD接<font color="#V正电源。
第<font color="#脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个<font color="#K的电位器调整对比度。
第<font color="#脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第<font color="#脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第<font color="#脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第<font color="#~<font color="#脚:D0~D7为<font color="#位双向数据线。
第<font color="#脚:背光源正极。
第<font color="#脚:背光源负极。
3 下面几个表是1602指令集
<font color="#)寄存器选择功能
& && && && && &
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
& && && && && && & 表2& &寄存器选择功能
2)11条指令表
&&指令&&&&指令码&&&&说明&&&&指令周期&&fosc=250kHz&&&&RS&&&&R/W&&&&DB7&&&&DB6&&&&DB5&&&&DB4&&&&DB3&&&&DB2&&&&DB1&&&&DB0&&&&清屏&& &&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&1&&&&清除屏幕,置AC为0,光标回位。&&&&1.64ms&&&&光标返回&& &&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&1&&&&*&&&&DDRAM地址为0,显示回原位,DDRAM内容不变.&&&&1.64ms&&&&设置输入&&方式&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&0&&&&1&&&&I/D&&&&S&&&&设置光标移动方向并指定显示是否移动。&&&&40&s&&&&显示开关&&&&0&& &&&&0&&&&0&&&&0&&&&0&&&&0&&&&1&&&&D&&&&C&&&&B&&&&设置显示开或关D、光标开关C、光标所在字符闪烁B.&&&&40&s&&&&移位&& &&&&0&&&&0&&&&0&&&&0&&&&0&&&&1&&&&S/C&&&&R/L&&&&*&&&&*&&&&移动光标及整体显示,同时不改变DDRAM内容。&&&&40&s&&&&功能设置&&&&0&&&&0&&&&0&&&&0&&&&1&&&&DL&&&&N&&&&F&&&&*&&&&*&&&&设置接口数据位数DL、显示行数L、字符字体F。&&&&40&s&&&&CGRAM&&地址设置&&&&0&&&&0&&&&0&&&&1&&&&ACG&&&&设置CGRAM地址。设置后发送接收数据。&&&&40&s&&&&DDRAM&&地址设置&&&&0&&&&0&&&&1&&&&ADD&&&&设置DDRAM地址。设置后发送接收数据。&&&&40&s&&&&忙标志/读地址计数器&&&&0&&&&1&&&&BF&&&&AC&&&&读忙标志BF标志正在执行内部操作并读地址计数器内容。&&&&0&s&&&&CGRAM/DDRAM数据写&&&&1&&&&0&&&&写数据&&&&从CGRAM或DDRAM写数据。&&&&40&s&&&&CGRAM/DDRAM数据读&&&&1&&&&1&&&&读数据&&&&从CGRAM或DDRAM读数据。&&&&40&s&&&& &&&& &&&& &&&& &&&& &&&&I/D=1:增量方式;I/D=0:减量方式&&S=1:移位&&S/C=1:显示移位;S/C=0:光标移位&&R/L=1:右移;R/L=0:左移&&DL=1:8位;DL=0:4位&&N=1:2行;N=0:1行&&F=1:5&&x 10字体&&F=0:5 x 7字体&&BF=1:执行内部操作;BF=0可接收指令&&&&DDRAM:显示数据RAM&&CGRAM:字符发生器RAM&&ACG:CGRAM地址&&ADD:DDRAM地址及光标&&& && &地址&&AC:地址计数器,用于&&& &&&DDRAM和CGRAM&&&&执行周期主频改变而改变。&&例如当fcp或&&fosc=270KHZ&&时:40μs&&x&&250/270=37μs&&
& && && && && && && & 表3& &11条指令表
3)标准字符库
&&High 4BIT&&&&MSB&&&&2&&&&3&&&&4&&&&5&&&&6&&&&7&&&&8&&&&A&&&&B&&&&C&&&&D&&&&E&&&&F&&&&LOW 4BIT&&&&RAM0000&&&&0&&&& (1)&&&& &&&&0&&&&@&&&&P&&&&ˋ&&&&p&&&& &&&& &&&&ー&&&&タ&&&&ミ&&&&α&&&&p&&&&1&&&& (2)&&&&!&&&&1&&&&A&&&&Q&&&&a&&&&q&&&& &&&&。&&&&ア&&&&チ&&&&ム&&&&&&&&&q&&&&2&&&& (3)&&&&“&&&&2&&&&B&&&&R&&&&b&&&&r&&&& &&&&┌&&&&イ&&&&ッ&&&&メ&&&&β&&&&θ&&&&3&&&& (4)&&&&#&&&&3&&&&C&&&&S&&&&c&&&&s&&&& &&&&┘&&&&ウ&&&&テ&&&&モ&&&&ε&&&&∞&&&&4&&&& (5)&&&&$&&&&4&&&&D&&&&T&&&&d&&&&t&&&& &&&&、&&&&エ&&&&ト&&&&ャ&&&&μ&&&&Ω&&&&5&&&& (6)&&&&%&&&&5&&&&E&&&&U&&&&e&&&&u&&&& &&&&&#8226;&&&&オ&&&&ナ&&&&ュ&&&&σ&&&&ü&&&&6&&&& (7)&&&&&&&&&6&&&&F&&&&V&&&&f&&&&v&&&& &&&&ゝ&&&&カ&&&&ニ&&&&ヨ&&&&ρ&&&&Σ&&&&7&&&& (8)&&&&’&&&&7&&&&G&&&&W&&&&g&&&&w&&&& &&&&ァ&&&&キ&&&&ヌ&&&&ラ&&&&g&&&&π&&&&8&&&& (1)&&&&(&&&&8&&&&H&&&&X&&&&h&&&&x&&&& &&&&ィ&&&&ク&&&&ネ&&&&リ&&&&√&&&&_х&&&&9&&&& (2)&&&&)&&&&9&&&&I&&&&Y&&&&i&&&&y&&&& &&&&ゥ&&&&ケ&&&&ノ&&&&ル&&&&¨&&&&y&&&&A&&&& (3)&&&&*&&&&:&&&&J&&&&Z&&&&j&&&&z&&&& &&&&ェ&&&&コ&&&&ハ&&&&レ&&&&j&&&&千&&&&B&&&& (4)&&&&+&&&&;&&&&K&&&&[&&&&k&&&&{&&&& &&&&ォ&&&&サ&&&&ヒ&&&&ロ&&&&`&&&&万&&&&C&&&& (5)&&&&,&&&&& &&&&L&&&&&&&&&l&&&&|&&&& &&&&ャ&&&&シ&&&&フ&&&&ヮ&&&&φ&&&&円&&&&D&&&& (6)&&&&-&&&&=&&&&M&&& & &&m&&&&}&&&& &&&&ュ&&&&ス&&&&ヘ&&&&ン&&&&キ&&&&÷&&&&E&&&& (7)&&&&.&&&&& &&&&N&&&&^&&&&n&&&&→&&&& &&&&ョ&&&&セ&&&&ホ&&&&゛&&&&_n&&&& &&&&F&&&& (8)&&&&/&&&&?&&&&O&&&&_&&&&o&&&&←&&&& &&&&ッ&&&&ソ&&&&マ&&&&゜&&&& &&&& &&
& && && && && && & 表<font color="# 标准字符库
DDRAM就是显示数据RAM, 用来寄存待显示的字符代码,共<font color="#个字节,其地址和对应的关系如下表:也就是说在屏幕上第一行第一列要显示“A“字,就要向DDRAM中的<font color="#H处写入A的代码就行,但具体的写入要按LCD1602的指令格式来进行,一行有<font color="#个地址,我们就用前<font color="#个就行,第二行也同样用前<font color="#个就行。对应如下:
&&& && &&&显 示 位 序 号&&&&<font color="#& & <font color="#& & <font color="#& && &<font color="#& & <font color="#&&……………………&&<font color="# &&&&&&DD RAM&& 地 址(HEX)&&&&第 一 行&&&&<font color="#& &<font color="#& &<font color="#& & <font color="#& &<font color="#&&..………………..&&<font color="#&&&&第 二 行&&&&<font color="#& &<font color="#& &<font color="#& & <font color="#& &<font color="#&&…………………..&&<font color="#&&
& && && && && & 表<font color="# 显示位与DDRAM地址的对应关系
<font color="#02型LCD显示字符的过程
在这里要说明的是:
<font color="#)& && &要用<font color="#02型LCD显示字符必须解决<font color="#个问题:(<font color="#)待显示字符ASCII标准码产生;(<font color="#)液晶显示模式的设置;(<font color="#)字符显示位置的指定
<font color="#)& && &若想在<font color="#H处显示数据的话,则必须将<font color="#H加上<font color="#H,即<font color="#x00H+0x80H,若要在<font color="#H处显示数据,也必须加<font color="#x80H, 例如要将某字符显示在第<font color="#行第<font color="#列,则确定地址的指令代码应为<font color="#H+44H=C4H。依次类推
<font color="#)& && &CGRAM是用户自定义的字符图形,可以定义<font color="#个
<font color="#)& && &LCD1602只有<font color="#条指令,学会使用这<font color="#条指令,就可以轻松控制。
<font color="#)& && &要让液晶显示字符,必须对有无光标、光标的移动方向、光标是否闪烁及字符的移动方向等进行设置,才能获得所需的显示效果。<font color="#02液晶显示模式的设置是通过控制指令对内部的控制器控制而实现的,常用的控制指令见表<font color="#-5.例如,要将显示模式设置为“<font color="#X2显示,<font color="#X7点阵,<font color="#位数据接口”,只要向液晶模块写二进制指令代码<font color="#111 000B,即<font color="#进制代码<font color="#H就可以了。
<font color="#)& && &LCD是一个慢显示器件,所以在写每条指令前一定要先读LCD的忙碌状态。如果LCD正忙于处理其他指令,就等待;如果不忙,再执行写指令。为此,<font color="#02型LCD专门设了一个忙碌标志位BF,该位链接在<font color="#位双向数据线的DB7位上。如果BF为低电平“<font color="#”,表示LCD不忙;如果BF为高电平“<font color="#”,则表示LCD处于忙碌状态,需要等待。假定<font color="#02型LCD的<font color="#位双向数据线(DB0~DB7)是通过单片机的P0口进行数据传递的,那么只要检测P0口的P0.7引脚电平(DB连P0.7)就可以知道忙碌标志位BF的状态
4. 对照上面的表格,我们对11条指令作如下分解:
对DDRAM的内容和地址操作,HD44780的指令集及其设置说明,共有<font color="#条指令:<font color="#)清屏指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg功能:&1& 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符&2& 光标归位,即将光标撤回液晶显示屏的左上方;
&3& 将地址计数器(AC)的值设为<font color="#。 <font color="#)光标归位指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg功能:&1& 把光标撤回到显示器的左上方;
&2& 把地址计数器(AC)的值设置为<font color="#;
&3& 保持DDRAM的内容不变 <font color="#).输入模式设置指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg功能:设定每次写入<font color="#位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示:
I/D=0写入新数据后光标左移& & I/D=1写入新数据后光标右移
S=0写入新数据后显示屏不移动& &S=1写入新数据后显示屏整体右移或左移,以得到光标不移动而屏幕移动 效果 <font color="#)显示开关控制指令file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:
& && &D=0显示功能关& && & & & &&D=1显示功能开
& && &C=0无光标& && && && && &&&C=1有光标
& && &B=0光标不闪烁& && && && & B=1光标闪烁 <font color="#).设定显示屏或光标移动方向指令
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg
S/C &&R/L 设定情况<font color="#<font color="#光标左移<font color="#格,且AC值减<font color="#<font color="#<font color="#光标右移<font color="#格,且AC值加<font color="#<font color="#<font color="#显示器上字符全部左移一格,但光标不动<font color="#<font color="#显示器上字符全部右移一格,但光标不动
<font color="#).功能设定指令 (非常重要的指令)file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg& &功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:
& && && &DL=0 数据总线为<font color="#位&&& & DL=1数据总线为<font color="#位
& && && &N=0&&显示<font color="#行& && & && &&N=1&&显示<font color="#行
& && && &F=0&&<font color="#×<font color="#点阵/每字符&& F=1 5×<font color="#点阵/每字符<font color="#).设定CGRAM地址指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg功能:设定下一个要存入数据的CGRAM的地址<font color="#).设定DDRAM地址指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg功能:设定下一个要存入数据的CGRAM的地址。 (注意这里我们送地址的时候应该是<font color="#x80+Address,这也是前面说到写地址命令的时候要加上<font color="#x80的原因) <font color="#).读取忙信号或AC地址指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg功能:&1& 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; &2& 读取地址计数器(AC)的内容。 <font color="#).数据写入DDRAM或CGRAM指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg功能:&1& 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;& && &&2& 将用户自己设计的图形存入CGRAM。&& <font color="#)从CGRAM或DDRAM读出数据的指令 file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image026.jpg功能:读取DDRAM或CGRAM中的内容。
基本操作时序:
读状态& & 输入:RS=L,RW=H,E=H& & 输出:DB0~DB7=状态字
写指令& & 输入:RS=L,RW=L,E=下降沿脉冲,DB0~DB7=指令码
读数据& &输入:RS=H,RW=H,E=H& & 输出:DB0~DB7=数据
写数据& &输入:RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据
输出:无说明:平时我们只用到常用的<font color="#—4条指令,学生不需去记录,只需以后做项目时用到去查这些指令即可。<font color="#.读写操作时序图:
<font color="#)读操作时序(用的不多)
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image028.jpg2)写操作时序
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg
下面我们亲自操作LCD1602,在我们是实验板上实现如下描述
<font color="#. 举例说明
1)用LCD循环右移显示&Welcome to china&
2)实验电路图
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg
注意:1602VR 是1602液晶的对比度调节电位器,如果液晶不显示或者显示文字不清晰,可以调节此电位器,来达到最理想的显示效果。
15脚是背光灯正极引脚 接到实验的JPBG跳线端 通过JPBG来控制背光灯的亮灭。
3 )操作步骤
将 JPP0跳线端的跳线帽拔掉 以免干扰<font color="#02液晶显示
将JPSMG 数码管控制跳线拔掉 使数码管停止工作。
插上<font color="#02LCD液晶
将JPBG液晶背光跳线插上
<font color="#) 液晶显示流程图
file:///C:/Users/d/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg
5) C语言源程序
//用LCD循环右移显示&Welcome to China&#include&reg52.h&& & //包含单片机寄存器的头文件#include&intrins.h&&&//包含_nop_()函数定义的头文件sbit RS=P2^0;& & //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1;& & //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2;& &
//使能信号位,将E位定义为P2.2引脚sbit BF=P0^7;& & //忙碌标志位,,将BF位定义为P0.7引脚unsigned char code string[ ]={&Welcome to China&}; /*****************************************************函数功能:延时<font color="#ms(3j+2)*i=(3×<font color="#+2)×<font color="#=1010(微秒),可以认为是<font color="#毫秒***************************************************/void delay1ms(){& &unsigned char i,j;& && && &
for(i=0;i&10;i++)& & &&for(j=0;j&33;j++)& & & &;& && && &&&
} /*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/ void delay(unsigned char n) {& && & for(i=0;i&n;i++)& & & &delay1ms(); }/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙***************************************************/ unsigned char BusyTest(void)&&{& & & & RS=0;& && & //根据规定,RS为低电平,RW为高电平时,可以读状态& & RW=1;& & E=1;& && &&&//E=1,才允许读写& & _nop_();& &//空操作& & _nop_();& & _nop_(); & & _nop_();& &//空操作四个机器周期,给硬件反应时间& && && & result=BF;&&//将忙碌标志电平赋给result& & E=0;& & &&}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void WriteInstruction (unsigned char dictate){& && & while(BusyTest()==1); //如果忙就等待& &
RS=0;& && &&&//根据规定,RS和R/W同时为低电平时,可以写入指令& &
RW=0;& && &
E=0;& && && && & //E置低电平(根据表<font color="#-6,写指令时,E为高脉冲,& && && && && && && &// 就是让E从<font color="#到<font color="#发生正跳变,所以应先置&0&& &
_nop_();& &
_nop_();& && && && & //空操作两个机器周期,给硬件反应时间& &
P0=& && && && &//将数据送入P0口,即写入指令或地址& &
_nop_();& &
_nop_();& &
_nop_();& &
_nop_();& && && && && &//空操作四个机器周期,给硬件反应时间& &
E=1;& && && && && && & //E置高电平& &
_nop_();& &
_nop_();& &
_nop_();& &
_nop_();& && && && && &//空操作四个机器周期,给硬件反应时间& & &&E=0;& && &//当E由高电平跳变成低电平时,液晶模块开始执行命令 }/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/ void WriteAddress(unsigned char x) {WriteInstruction(x|0x80);//显示位置的确定方法规定为&80H+地址码x& }/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/ void WriteData(unsigned char y) {& & while(BusyTest()==1);&&& & &&RS=1;& && && &&&//RS为高电平,RW为低电平时,可以写入数据& & &&RW=0;& & &&E=0;& && && && &//E置低电平(根据表<font color="#-6,写指令时,E为高脉冲,& && && && && && && &&&// 就是让E从<font color="#到<font color="#发生正跳变,所以应先置&0&& & &&P0=y;& && && &&&//将数据送入P0口,即将数据写入液晶模块& & &&_nop_();& & &&_nop_(); & &&&_nop_();& &&&_nop_();& && & //空操作四个机器周期,给硬件反应时间& & &&E=1;& && && & //E置高电平& & &&_nop_();& & &&_nop_();& & &&_nop_();& &
_nop_();& && &&&//空操作四个机器周期,给硬件反应时间& &
E=0;& && & //当E由高电平跳变成低电平时,液晶模块开始执行命令 }/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void LcdInitiate(void){& &delay(15);&&//延时<font color="#ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38)//显示模式设置:<font color="#×<font color="#显示,<font color="#×<font color="#点阵,<font color="#位数据接口& & delay(5);& &//延时<font color="#ms & & WriteInstruction(0x38);& & delay(5);& & WriteInstruction(0x38);& & delay(5);& &WriteInstruction(0x0f);//显示模式设置:显示开,有光标,光标闪烁& & delay(5);& & WriteInstruction(0x06);&&//显示模式设置:光标右移,字符不移& & delay(5);& & WriteInstruction(0x01);&&//清屏幕指令,将以前的显示内容清除& & delay(5); }void main(void)& && && && &//主函数 {&&&&LcdInitiate();& && && &//调用LCD初始化函数&&&&delay(10);&&while(1)& &&&{& && & WriteInstruction(0x01);//清显示:清屏幕指令& &&& WriteAddress(0x00);&&// 设置显示位置为第一行的第<font color="#个字& & &&& && && &&&i = 0;& && && &&&while(string != '\0')& && && && && && & {& && && && && && &&&& && && && && && && && &WriteData(string);& && && && && && && && &&&i++;& && && && && && && && &delay(150);& && && && && && & }& && & & && &&&for(i=0;i&4;i++)& && && &&&& & delay(250);& && && && && && &
& && && &&&}& && && && && && & &&& && && &&&}
<font color="#.实时演练操作
& &演练<font color="#: <font color="#)LCD第一行显示: CHINESE& && && && &
LCD第二行显示: NEWYEAR& && && && && && && && && && && && && & &&
<font color="#)先将两行字符写入DDRAM中,然后从右至左逐字移出显示。& && && && && && &
<font color="#)在指定位置停留<font color="#.6秒后,闪烁<font color="#次,清屏。& && && && && && && && && && &
<font color="#)反复循环上述显示方式。& && && && && && && && && && && && && && && && && &&&
浏览过的版块
Powered by查看: 2308|回复: 0
基于51单片机PID电机测速系统论文下载
重庆邮电大学毕业设计(论文)
设计(论文)题目:
学院&&名&&称 :
学&&生&&姓&&名 :
专& && && & 业 :
班& && && & 级 :
学& && && & 号 :
指&&导&&教&&师 :
答辩组&&负责人 :
填表时间:年月重庆邮电大学教务处制
摘&&要在工业自动控制系统和各种智能产品中常常会应用到电动机进行驱动、传动和控制,而现代智能控制系统中,对电机的控制要求越来越精确和迅速,对环境的适应要求越来越高。本设计以AT89C51单片机为核心,完成了直流电机的转速自动测量及转速调节功能。在设计中采用PWM技术对电机进行控制,并且利用LCD1602液晶屏设计的人机界面系统显示转速的设定值及实际值,通过应用PID算法对占空比的计算达到精确调速的目的。
目&&录第一章 前言& && && && &&&41.1 直流电机闭环调速系统背景& && && && &&&41.2 本设计实现的基本功能& && && && &&&41.3设计目的及意义& && && && &&&4第二章 总体设计规划& && && && &&&22.1 直流电机的基本工作原理& && && && &&&52.2 直流电机控制原理及特点& && && && &&&52.3 直流电机调速控制方式选择& && && && &&&52.4 PWM脉宽调制方式& && && && &&&52.5 电机实际转速的获取& && && && &&&62.6总体设计框图& && && && &&&7第三章 硬件设计& && && && &&&83.1 AT89C51芯片介绍& && && && &&&83.1.2电源滤波电路& && && && &&&123.1.3 系统时钟的设计& && && && &&&123.1.4 系统复位方式& && && && &&&133.2 L293D芯片介绍& && && && &&&143.2.1 驱动电路设计& && && && &&&143.3 脉冲信号的获取& && && && &&&153.3.1 LM393芯片介绍& && && && &&&16& &3.3.2 测速电路设计& && && && &&&16& &3.4 LCD1602液晶屏介紹& && && && &&&18& &3.4.1 LCD显示模块设计& && && && &&&253.5按键模块设计& && && && &&&26第四章 软件设计& && && && &&&194.1 主程序& && && && &&&194.2 系统原理图& && && && &&&28参考文献& && && && &&&29致 谢& && && && &&&30& && & 第一章&&前 言
1.1 直流电机闭环调速系统背景对直流电机转速的控制即可采用开环控制,也可采用闭环控制。与开环控制相比,速度控制闭环系统的机械特性有以下优越性:闭环系统的机械特性与开环系统机械特性相比,其性能大大提高;理想空载转速相同时,闭环系统的静差率(额定负载时电机转速降落与理想空载转速之比)要小得多;当要求的静差率相同时, 闭环调速系统的调速范围可以大大提高。1.2 本设计实现的基本功能(1)按键设定并显示转速,实时显示实际转速。(2)按键控制电机起停、正反转。(3)PWM转速闭环控制。1.3 设计目的及意义本课程是机械电子工程本科专业的重要实践课程,是《单片机原理与应用》课程的一个综合性、设计性的实践环节。通过这门课程的学习与实践,能够提出基于单片机的机电系统的设计思路、论证设计方案;熟悉单片机系统开发、研制的过程,软硬件设计方法和设计步骤;初步学会设计单片机系统软硬件设计及调试的方法,具备技术实现能力;基本上能够处理实践过程中出现的问题并提出解决办法;提高理论付诸于实践的能力,提高工程设计能力和处理实际问题的能力,开发和创新能力。
& && && && && &第二章&&总体设计规划
2.1 直流电机的基本工作原理一 直流电机的用途直流电动机的优点:1 调速范围广,易于平滑调节2 过载、启动、制动转矩大3 易于控制,可靠性高4 调速时的能量损耗较小缺点:&&换向困难,容量受到限制,不能做的很大。应用:&&轧钢机、电车、电气铁道牵引、造纸、纺织拖动。直流发电机用作电解、电镀、电冶炼、充电、交流发电机励磁等的直流电源。
二、直流电机的工作原理原理:任何电机的工作原理都是建立在电磁感应和电磁力这个基础上。为了讨论直流电机的工作原理,我们把复杂的直流电机结构简化为工作原理图。 (一)直流发电机的工作原理1.工作原理:导体在磁场中运动时,导体中会感应出电势e 。& && && && && && && &e=Blv。B:磁密l:导体长度; v:导体与磁场的相对速度。正方向:用右手定则判断。电势e正方向表示电位升高的方向,与U相反。如果同一元件上e和U正方向相同时,e= -U。
理解:电磁感应原理的变形(变化的磁通产生感应电动势)
2 发电机工作过程分析:两磁极直流发电机的工作原理图。构成:
磁场:图中 N和 S是一对静止的磁极,用以产生磁场,其磁感应强度沿圆周为正弦分布。励磁绕组——容量较小的发电机是用永久磁铁做磁极的。容量较大的发电机的磁场是由直流电流通过绕在磁极铁心上的绕组产生的。用来形成N极和S极的绕组称为励磁绕组,励磁绕组中的电流称为励磁电流If。电枢绕组:在N极和 S极之间,有一个能绕轴旋转的圆柱形铁心,其上紧绕着一个线圈称为电枢绕组(图中只画出一匝线圈),电枢绕组中的电流称为电枢电流Ia。换向器:电枢绕组两端分别接在两个相互绝缘而和绕组同轴旋转的半圆形铜片——换向片上,组成一个换向器。换向器上压着固定不动的炭质电刷。电枢:铁心、电枢绕组和换向器所组成的旋转部分称为电枢。
(2)工作过程:P1:电动势产生当电枢被原动机以恒速驱动,按逆时针方向转动时,用右手定则可以判定,线圈ab和cd边切割磁力线产生的感应电动势的方向,则在负载与线圈构成的回路中产生电流Ia,其方向与电动势方向相同。电流由电刷A流出,由电刷B流回。电动势与电流关系:同向
P2:换向当电枢转到上图b所示位置时,ab边转到了S极下,cd边转到了N极下。这时线圈中感应电动势的方向发生了改变,但由于换向器随同一起旋转,使得电刷 A总是接触 N极下的导线,而电刷B总是接触S极下的导线,故电流仍由A流出 B流回,方向不变。
虽然有换向器的作用,将线圈内的交变电动势在两电刷间变换为方向不变的电动势,但它的大小仍然是脉动的。欲获得在方向和量值上均为恒定的电动势,则应把电枢铁心上的槽数和线圈匝数增多,同时换向器上的换向片数也要相应地增加。(3) 电磁转矩与能量转换分析 :电磁转矩:电枢电流 Ia与磁场相互作用而产生的电磁力形成了电磁转矩 T。用左手定则可以判定,电磁转矩 T的方向与电枢旋转方向相反。因此,在电枢等速旋转时,原动机的驱动转矩 T1必须与发电机的电磁转矩 T和空载损耗转矩 T0相平衡( T0是发电机轴上的转矩),即T1=T+ T0*电磁转矩方向与转速方向关系:反向能量转换:原动机(机械能)-&电磁转矩-&发电机负载(电能)当发电机的负载(即电枢电流)增加时,电磁转矩和输出功率也随之增加,这时原动机的驱动转矩所供给的机械功率亦必须相应增加,以保持转矩之间和功率之间的平衡。可见,发电机向负载输出电功率的同时,原动机却向发电机输出机械功率,发电机起着将机械能转换为电能的作用。 (二)直流电动机的工作原理1.工作原理:电磁力定律载流导体在磁场中将会受到力的作用,若磁场与载流导体互相垂直,作用在导体上的电磁力大小为:& && &f = B·l·i& &&&力的方向用左手定则确定
理解:电流产生磁场原理的变形(电流产生磁场)一个通电线圈相当于一个具有NS极的磁体。形成电磁力。2电动机工作过程分析:直流电动机的工作原理图。(1)构成:磁场:图中 N和 S是一对静止的磁极,用以产生磁场,其磁感应强度沿圆周为正弦分布。励磁绕组——容量较小的发电机是用永久磁铁做磁极的。容量较大的发电机的磁场是由直流电流通过绕在磁极铁心上的绕组产生的。用来形成N极和S极的绕组称为励磁绕组,励磁绕组中的电流称为励磁电流If。电枢绕组:在N极和 S极之间,有一个能绕轴旋转的圆柱形铁心,其上紧绕着一个线圈称为电枢绕组(图中只画出一匝线圈),电枢绕组中的电流称为电枢电流Ia。换向器:电枢绕组两端分别接在两个相互绝缘而和绕组同轴旋转的半圆形铜片——换向片上,组成一个换向器。换向器上压着固定不动的炭质电刷。电枢:铁心、电枢绕组和换向器所组成的旋转部分称为电枢。
(2)工作过程:P1:电磁转矩产生电枢绕组通过电刷接到直流电源上,绕组的旋转轴与机械负载相联。电流从电刷 A流入电枢绕组,从电刷B流出。电枢电流Ia与磁场相互作用产生电磁力F,其方向可用左手定则判定。这一对电磁力所形成的电磁转矩T,使电动机电枢逆时针方向旋转。*电磁转矩与电枢旋转方向关系:同向
P2:换向当电枢转到上图b所示位置时,ab边转到了S极下,cd边转到了N极下。这时线圈电磁转矩的方向发生了改变,但由于换向器随同一起旋转,使得电刷 A总是接触 N极下的导线,而电刷B总是接触S极下的导线,故电流流动方向发生改变,电磁转矩方向不变。(3) 电动势与能量转换分析 :电动势:电枢转动时,割切磁力线而产生感应电动势,这个电动势(用右手定则判定)的方向与电枢电流Ia和外加电压U的方向总是相反的,称为反电动势Ea。
它与发电机的电动势 E的作用不同。发电机的电动势是电源电动势,在外电路产生电流。而Ea是反电动势,电源只有克服这个反电动势才能向电动机输入电流。可见,电动机向负载输出机械功率的同时,却向电动机输入电功率,电动机起着将电能转换为机械能的作用。*电动势方向与电流方向关系:反向能量转换:电源(电能)-&电磁转矩-&负载(机械能) 比较:发电机和电动机两者的电磁转矩T、电动势的作用是不同的。发电机的电磁转矩是阻转矩,它与原动机的驱动转矩T1的方向是相反的。电动机的电磁转矩是驱动转矩,它使电枢转动。电动机的电磁转矩T必须与机械负载转矩T2及空载损耗转矩T0相平衡,即T=T2十T0。发电机的电动势是电源电动势。电动机的电动势是反电动势,电源只有克服这个反电动势才能向电动机输入电流。直流电机作发电机运行和作电动机运行时,虽然都产生电动势和电磁转矩,但两者作用截然相反。  第二节&&直流电机的结构目的:了解它们各主要部件的名称、作用、相互组装及动作关系。以利正确选用和使用。电机的结构要求:1 电磁要求:&&产生磁场,感应出电动势,通过电流,产生电磁转矩2机械要求:传递转矩,保持坚固稳定,冷却的要求,检修,运行可靠。
从电机的基本工作原理知道,电机的磁极和电枢之间必须有相对运动,因此,任何电机都有固定不动的定子和旋转的转子两部分组成,在这两部分之间的间隙叫空气隙。一、定子定子的作用是产生磁场和作为电机机械支撑。它由主磁极、换向磁极、电刷、机座、端盖和轴承等组成。(一)主磁极——产生主磁通φ。主磁极铁心包括极心和极掌两部分。极心上套有励磁绕组,各主磁极上的绕组一般都是串联的。直流电机的磁极如图所示。极掌的作用是使空气隙中磁感应强度分布最为合适。& & 改变励磁电流If的方向,就可改变主磁极极性,也就改变了磁场方向。
(二)换向磁极——产生附加磁场,改善电机的换向,减小电刷与换向器之间的火花,不致使换向器烧坏。在两个相邻的主磁极之间中性面内有一个小磁极,这就是换向磁极。它的构造与主磁极相似,它的励磁绕组与主磁极的励磁绕组相串联。主磁极中性面内的磁感应强度本应为零值,但是,由于电枢电流通过电枢绕组时所产生的电枢磁场,使主磁极中性面的磁感应强度不能为零值。于是使转到中性面内进行电流换向的绕组产生感应电动势,使得电刷与换向器之间产生较大的火花。用换向磁极的附加磁场来抵消电枢磁场,使主磁极中性面内的磁感应强度接近于零,这样就改善了电枢绕组的电流换向条件,减小了电刷与换向器之间的火花。
(三)电刷装置电刷装置主要由用碳一石墨制成导电块的电刷、加压弹簧和刷盒等组成。固定在机座上(小容量电机装在端盖上)不动的电刷,借助于加压弹簧的压力和旋转的换向器保持滑动接触,使电枢绕组与外电路接通。电刷数一般等于主磁极数,各同极性的电刷经软线汇在一起,再引到接线盒内的接线板上,作为电枢绕组的引出端。
(四)机座——用来固定主磁极、换向磁极和端盖,是电机磁路的一部分。机座用铸钢或铸铁制成。机座上的接线盒有励磁绕组和电枢绕组的接线端,用来对外接线。(五)端盖& & 端盖由铸铁制成,用螺钉固定在底座的两端,盖内有轴承用以支撑旋转的电枢。二、转子转子又称电枢,是电机的旋转部分。它由电枢铁心、绕组、换向器等组成。如右图所示。(一)电枢铁心电枢铁心由硅钢片冲制迭压而成,在外圆上有分布均匀的槽用来嵌放绕组。铁心也作为电机磁路的一部分。
(二)绕组绕组是产生感应电动势或电磁转矩,实现能量转换的主要部件。它是由许多绕组元件构成,按一定规则嵌放在铁心槽内和换向片相连,使各组线圈的电动势相加。绕组端部用镀锌钢丝箍住,防止绕组因离心力而发生径向位移。
(三)换向器换向器由许多铜制换向片组成,外形呈圆柱形,片与片之间用云母绝缘。
三、铭牌和额定值为了使电机安全而有效地运行,制造厂对电机的工作条件都加以技术规定。按照规定的工作条件进行运行的状态叫做额定工作状态。电机在额定工作时的各种技术数据叫做额定值,一般加下标 e表示。这些额定值都列在电机的铭牌上,使用电机前,应熟悉铭牌。使用中的实际值,一般不应超过铭牌所规定的额定值。& & (一)型号:它表示电机的类别。例如:Z2--12& && && && && && && &&&Z:直流;2:设计序号;1:铁心长度;2:机座号& & (二)额定电流Ie& & 这是指发电机长期运行时电枢输出给负载的允许电流。对于电动机则是指电源输入到电动机的允许电流。& & (三)额定电压Ue& & 这是指发电机输出的允许端电压。对于电动机则指输入到电动机端钮上的允许电压。& & (四)额定转速ne& & 这是指电机在额定工作状态时,应达到的转速。& & (五)额定功率(额定容量) Pe对于发电机来说,这是指在额定电压下,输出额定电流时,向负载提供的电功率Pe,Pe=UeIe& & 对于电动机来说,则是指在额定电压,额定电流和额定转速下,电动机轴上输出的机械功率Pe=UeIeηe& & (六)额定效率ηe& & 额定功率与输入功率之比,称为电机的额定效率,即ηe=(额定功率/输入功率)×100 % 四、电枢绕组1 有关术语1)极轴线——主磁极的中轴线。2) 几何中性线——相邻两个主磁极之间的几何分界线。3) 极距τ:相邻两磁极中心线间的距离称为极距τ,常用槽数表示,τ =z/2p其中z为槽数,p为极对数。4)绕组元件——两端分别与两个换向器片联接的单匝或多匝线圈,每个元件由两个放在电枢槽中可以产生感应电动势的有效边,叫元件边。槽外部分只起连接作用,叫端接部分。5)节距——绕组元件的宽度和元件之间的连接规律。第一节距: 一个线圈的两个边所跨定子圆周上的距离称为节距,用 y1 表示,一般用槽数计.线圈可范围分为:& &&&整距绕组: y1 = τ& &&&短距绕组: y1 & τ长距绕组: y1 & τ换向节距: 一个元件的两个边在换向器上的距离称为换向节距,用 yk 表示.第三节&&直流电机的磁场一、直流电机的励磁方式按励磁方式不同,电机可分为(一)他励直流电机& &电枢和励磁绕组由两个独立的直流电源供电。(二)并励直流电机& &电枢和励磁绕组并联后由一个独立的直流电源供电。 (三)串励直流电机& &电枢和励磁绕组串联后由一个独立的直流电源& && && && && && &&&供电(四)复励直流电机& &复励电机有两个绕组,一个并励绕组,一个串励& && && && && && & 绕组,并励绕组和电枢并联,和串励绕组串联后由& && && && && && &&&一个独立的直流电源供电。直流发电机的主要励磁方式是他励式、并励式和复励式&&二、直流电机的空载磁场 磁场的基本物理量(1)&&磁路:磁通&#61510;经过的路径。(2)&&磁通&#61510;:&&磁场中穿过某一截面积的总磁感线数称为通过该面积的磁通& && && && && && & 单位韦伯Wb。(3)&&磁感应强度B:&&描述磁介质中实际的磁场强弱和方向的物理量,矢量,& && && &&&有大小和方向,单位特斯拉T。B= &#61510;/A(磁通除以截面积)(4) 磁场强度 H:& &是计算磁场时常用的物理量,也是矢量。它与磁感应强度矢量的关系为&&H=B/&#61549;(5)&&磁通势:某一线圈的电流I与其匝数N的乘积。磁通势F的方向由产生& & 它的线圈电流按右手定则确定。单位:(A) 1.直流电机的磁场构成& &直流电机工作时的磁场是由各绕组的总磁动势共同产生的(包括励磁& &绕组,电枢绕组,换向极绕组,补偿绕组等)。励磁绕组的磁动势起& &最主要的作用。 1)主磁通 Φm&&所有那些由N极经过气隙到转子,再由另一个气隙返回S极的磁通,同时与励磁绕组和电枢绕组相交链,是直流电机中起有效作用的磁通,称为主磁通,它能够在旋转的电枢绕组中感应出电动势,并和电枢绕组的磁动势相互作用产生电磁转矩。 2)漏磁通 Φ1σ 交链励磁绕组本身,不和电枢绕组相交链,只能增加磁极和定子磁轭的饱和程度,不产生电动势和转矩。 2.直流电机的空载磁场&&直流电机的空载是指电枢电流等于零或者很小,且可以不计其影响& && &&&的一种运行状态。磁场的计算
全电流定律:在磁路中,沿任一闭合路径,磁场强度的线积分等于与该闭和路径交链的电流的代数和。
上式左侧为磁场强度矢量沿闭合回线的线积分;右侧是穿过由闭合回线所围面积的电流的代数和。电流的符号规定为:闭合回线的围绕方向与电流成右旋系时为正,反之为负。& & 由励磁磁通势单独建立的磁场,以一台四极直流电机空载时为例,由励磁电流单独建立的磁场分布如图。
& && && &空载磁密分布
不计齿槽影响,直流电机空载时,其气隙磁场(主磁场)的磁密分布波形如图所示
三.直流电机负载时的磁场和电枢反应1.负载时磁场电机带上负载以后,电枢绕组内流过电流,还会形成磁通势,该磁通称为电枢磁通势。 所以,负载时电机中气隙磁场是由励磁磁通势和电枢磁通势共同建立。由此可知,在直流电机中,从空载到负载,其气隙磁场是变化的&&2.电枢反应&&1)电枢磁通势电枢磁通势对励磁磁通势所产生气隙磁场的影响称为电枢反应。为画图简单起见,元件边只画一层,认为电枢是光滑的, 并考虑某一极性下元件中流过电流同一方向, 得电枢磁场分布。
电枢反应磁通势轴线的位置与电刷轴线重合,当电刷处于几何中性线时,电枢反应磁通势与磁极轴线互相垂直 。电枢反应使气隙磁场发生了畸变
电枢磁场使主磁场一半削弱,另一半加强,并使电枢表面磁密等于零处(物理中心线)离开了几何中性线。 电磁反应呈去磁作用
* 在磁路不饱和时 主磁场削弱的量与加强的量恰好相等。* 在磁路临界饱和时增磁会使半个极下饱和程度提高,铁心磁阻增大,另外半个极下饱和程度减小,铁心磁阻减小 ,因磁路临界饱和,从而使实际的合成磁场曲线要比不饱和时略低 。增加的磁通数量就会小于磁通减少的数量 。 第四节 感应电动势和电磁转矩的计算一.感应电动势的计算1.运行时感应电动势始终存在直流电机无论作电动机运行还是作发电机运行,电枢绕组内都感应产生电动势。这个感应电动势是指一条支路的电动势。2.如何计算感应电动势要计算支路电动势,可先求出每个元件电动势的平均值,然后乘上每条支路串联元件数,就可得出支路电动势。元件平均电势B为每一个磁极下的平均磁感应强度,等于每极磁通除以每极的面积&#61556;l, B= &#61510;/&#61556;l电磁感应定律:&&e=Blv式中:v为导体切割磁力线的线速度v=2&#61552;Rn/60= 2p&#61556;n/60(2&#61552;R= 2p&#61556;)n - 电枢的转速(r/min)p - 极对数&#61556; - 极距每条支路总导体数2N,则电枢感应电动势的平均值为:E=2Ne=2NBlv=4pN&#61510;n/60&&如果令4pN/60=CE&&则E= CE &#61510;nCe 称为电动势常数磁通的单位为 Wb,转速 n 的单位为 rpm,感应电动势的单位为 V感生电动势的方向由磁场的方向和转子的旋转方向决定。 在直流电动机中,电动势的方向与电枢电流的方向相反,为反电动势;在直流发电机中,电动势的方向与电枢电流的方向相同,为电源电动势。 二.电磁转矩的计算1.元件边所受切线方向电磁力设气隙中某处的径向磁密为 Bdx ,元件数为 Ny ;元件边中电流为ia根据电磁力定律,此处元件边所受的切线方向的电磁力为:fx = BliaB为每一个磁极下的平均磁感应强度,等于每极磁通除以每极的面积&#61556;l, Bdx= &#61510;/&#61556;l2.元件边所产生电磁转矩设电枢的直径2R ,因为2&#61552;R=2p&#61556;,所以R=p&#61556;/&#61552;.元件数为N, a为并联支路对数,则电枢表面共有元件边数为 4aN ,则电磁力产生的电磁转矩为:Te = 4aNfxR= 4aNBdx·l·iaR=2pN &#61510;ia/&#61552;若令 CT= 2pN /&#61552;, 则Te=&&CT&#61510;ia电磁转矩由磁场的方向和电枢电流的方向决定。在直流电动机中,电磁转矩的方向与转子的旋转方向相同,为拖动转矩在直流发电机中,电磁转矩的方向与转子的旋转方向相反,为制动转矩第四节直流电动机运行分析教学目的& && && && &&&掌握直流电动机的励磁方式掌握直流电动机的方程教学重点& && && && &&&直流电动机的励磁方式教学难点& && && && &&&直流电动机的电路方程一、直流电动机的基本方程& & 在这里我们将讨论直流电动机的电压、功率和转矩的平衡方程,说明其能量关系。(一)电枢电路电压平衡方程1.电动机的反电势& & 在电机工作原理的讨论中,我们知道电枢旋转时,电枢中的载流导体割切磁力线产生感应电动势Ea=Ceφn。这个电动势的方向与电枢电流的方向相反,抵制电枢电流的流入,故称为反电动势。因此,电源要向电枢输入电流,就必须克服反电动势的作用,即必须使加在电枢绕组两端的电压U&Ea。l2.电压平衡方程& && && && && && && && && & Ea=U–IaRa& && && && && && && && && && && && &式中,Ia为电枢电流(A); Ra为电枢绕组电阻(Ω)& && &上式改写后即得电压平衡方程为& && && && && && && && && && && &&&U=Ea+IaRa& && && && && && && && && && && && & 上式表明,电枢绕组两端的电压U可分为两部分,一部分用来平衡反电动势Ea,另一部分就是电枢绕组的电阻压降IaRa。3.电枢电流& & 由U=Ea+IaRa可导出电枢电流公式,即
(二)功率平衡方程
(三)转矩平衡方程
直流无刷电机使用的是直流电 仅仅是没有电刷而已 至于具体 是靠电子线路实现了电刷的功能。当然 有些种类的直流无刷电机的机械部分 和交流电机几乎一样 这种类型 就可以认为是先用电子线路把直流电变成交流电 再通给电机 直流电机虽然是供直流电&&但转子内部的线圈还在交流电路的。带电刷的直流电机是通过电刷换向。而无刷电机是通过逆变电路把直流变成交流,然后共给线圈。常见的是12V散热风扇等。在电脑主机里常用。交流电机 不需要换向片(电刷)。 直流无刷电机的定子绕组是星形连接的,他的转子是永磁体做成的并且转子上有一个位置传感器用于检测转子位置反馈给控制器,控制器 是直流电源,它根据位置传感器反馈的 信号分别使定子绕组通电,形成旋转磁场,直流无刷电机的机械特性比较硬。
2.2直流电机控制原理及特点对直流电机转速的控制即可采用开环控制,也可采用闭环控制。与开环控制相比,速度控制闭环系统的机械特性有以下优越性:闭环系统的机械特性与开环系统机械特性相比,其性能大大提高;理想空载转速相同时,闭环系统的静差率(额定负载时电机转速降落与理想空载转速之比)要小得多;当要求的静差率相同时, 闭环调速系统的调速范围可以大大提高。直流电机的速度控制方案如图1所示。
& && && && &&&+& && && && &
图 2-1 直流电机速度控制方案
2.3 直流电机调速控制方式选择2.3.1电阻网络或数字电位器采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。2.3.2 继电器采用继电器对电动机的开或关进行控制,通过开关的切换对电机的速度进行调整。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。2.3.3 H桥组成的高电压大电流双全桥式驱动芯片& && && && &&&L293D是德州仪器公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动芯片,即内含二个H桥的高电压大电流双全桥式驱动器,兼容所有的TTL信号输入。每个输出都是推拉式驱动电路,与达林顿三极管和伪达林源,可驱动4.5V至36V、1A以下的电机。桥型电路保证了可以简单地实现转速和方向的控制;响应的速度很快,性能稳定性好,是一种广泛采用的PWM调速控制芯片。兼于上述三种方案调速特性优良、调整平滑、调速范围广、过载能力大,因此本设计采用方案三。
2.4 PWM脉宽调制方式方案一:双极性工作制。双极性工作制是在一个脉冲周期内,单片机两控制口各输出一个控制信号,两信号高低电平相反,两信号的高电平时差决定电动机的转向和转速。方案二:单极性工作制。单极性工作制是单片机控制口一端置低电平,另一端输出PWM信号,两口的输出切换和对PWM的占空比调节决定电动机的转向和转速。由于单极性工作制中,应用相对简单易于实现与操作,所以我们采用了单极性工作制。2.5电机实际转速获取在Proteus中只有一种直流电机集成了测速传感器,在搜索栏里搜索motor-encoder,即可得到这种电机模型。本设计中设置电机转一圈发出60个脉冲。根据实际运转情况及结合所编写程序,确定转速公式为:
V=N*15;V:速度 R/min N:每秒采样的脉冲个数如右图所示,为带测速功能的直流电机模型
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &图 2-3 Proteus电机模型& && && && && && && && && &&&2.6 总体设计框图本系统采用AT89C51作为控制核心,用按键来调节电机转速和LCD1602液晶屏来显示设定转速和测量转速。由上述提供的方案和最后选择结果,则用H桥组成的高电压大电流双全桥式驱动芯片L293D作为本系统的驱动电路,采用光电传感器和20线码盘来读取电机的实际转速。
& && &图2-4 直流电机控制系统总体框图
第三章 硬件设计3.1 单片机的选型3.1.1 AT89C51介绍& &AT89C51是美国ATMEL公司生产的AT89系列单片机中的一种,它与MCS-51系列的许多机种都具有兼容性,并具有广泛的代表性。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51的特点与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定128×8位内部RAM32可编程I/O线两个16位定时器/计数器个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路
引脚定义及功能AT89C51有40条引脚,与其他51系列单片机引脚是兼容的。这40条引脚可分为I/O端口线、电源线、控制线、外接晶体线四部分。其封装形式有两种:双列直插封装(DIP)形式和方形封装形式,如图5所示。
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &图 3-1 AT89C51管脚图& & 主电源引脚VCC:电源正(+5V)。GND:电源负。I/O端口功能P0口: P0口有八条端口线,命名为P0.0~P0.7,其中P0.0为低位,P0.7为高位。每条线的结构组成如图3-2所示。它由一个输出锁存器,两个三态缓冲器,输出驱动电路和输出控制电路组成。P0口是一个三态双向I/O口,它有两种不同的功能,用于不同的工作环境。P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 & &
& && && && && && & 图3-2 P0口位结构图& &
P1口:P1口有八条端口线,命名为P1.0~P1.7,每条线的结构组成如图3-3所示。P1口是一个准双向口,只作普通的I/O口使用,其功能与P0口的第一功能相同。作输出口使用时,由于其内部有上拉电阻,所以不需外接上拉电阻;作输入口使用时,必须先向锁存器写入“1”,使场效应管T截止,然后才能读取数据。P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
& && && && && &图3-3&&P1口位结构图 P2口:P2口有八条端口线,命名为P2.0~P2.7,每条线的结构如图3-4所示。P2口也是一个准双向口,它有两种使用功能:一种是当系统不扩展外部存储器时,作普通I/O口使用,其功能和原理与P0口第一功能相同,只是作为输出口时不需外接上拉电阻;另一种是当系统外扩存储器时,P2口作系统扩展的地址总线口使用,输出高8位的地址A7~A15,与P0口第二功能输出的低8位地址相配合,共同访问外部程序或数据存储器(64 KB),但它只确定地址并不能像P0口那样还可以传送存储器的读写数据。P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口有八条端口线,命名为P3.0~P3.7,每条线的结构如图3-1所示。P3口是一个多用途的准双向口。第一功能是作普通I/O口使用,其功能和原理与P1口相同。第二功能是作控制和特殊功能口使用,这时八条端口线所定义的功能各不相同,如表3-4所示。P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口同时为闪烁编程和编程校验接收一些控制信号。
& && && &&&图3-4&&P2口位结构图
& && &图3-5&&P3口位结构图
& && && && && && && && & 表1 P3口各位的第二功能引脚第二功能功 能 说 明P3.0RXD串行数据输入端P3.1TXD串行数据输出端P3.2INT0外部中断0中断请求信号输入端P3.3INT1外部中断1中断请求信号输入端P3.4T0定时/计数器0外部计数脉冲输入端P3.5T1定时/计数器1外部计数脉冲输入端P3.6WR片外RAM写选通信号输出端P3.7RD片外RAM读选通信号输出端
3.1.2电源滤波电路
&&由于平时使用的5V电源并不是完全是直流成分,其中还包含了交流信号部分,为了剔除这部分噪声,在电源正极与负极之间并联了两个电容,其中104小电容可滤除高频信号,47uF电容可滤除低频信号,保证了流入单片机的电流基本上为直流电。此外,在滤波电路旁并联一个LED,作为电源指示灯。其中5.1K电阻起到限流作用,防止LED被烧毁。
& && && && && && && && && && && &图3-6 系统时钟
3.1.2 系统时钟的设计
时钟电路是用来产生AT89C51单片机工作时所必须的时钟信号,AT89C51本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89C51在唯一的时钟信号的控制下严格的按时序执行指令进行工作 ,时钟的频率影响单片机的速度和稳定性。通常时钟由于两种形式:内部时钟和外部时钟。我们系统采用内部时钟方式来为系统提供时钟信号。AT89C51内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一个自激励振荡器。电路中的C3、C4的选择在22PF左右,但电容太小会影响振荡的频率、稳定性和快速性。晶振频率为1.2MHZ~12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为11.592MHZ。&&
& && && && && && && && && && & 图3-7 系统时钟
3.1.3 系统复位方式当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。图中电容C5和电阻R9对电源+5V来说构成微分电路。上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻R9,也能达到上电复位的操作功能,如图 (3-7)中所示。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C5的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行过程中时,按下复位键S0后松开,也能使RST为一段时间的高电平,从而实现上电复位或开关复位的操作。
& && && && && && && && &&&图3-8手动复位电路3.2.L293D芯片介绍L293D是德州仪器公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动芯片,即内含二个H桥的高电压大电流双全桥式驱动器,兼容所有的TTL信号输入。每个输出都是推拉式驱动电路,与达林顿三极管和伪达林源,可驱动4.5V至36V、1A以下的电机。桥型电路保证了可以简单地实现转速和方向的控制;响应的速度很快,性能稳定性好,是一种广泛采用的PWM调速控制芯片。L293D的逻辑功能如表3-1所示∶
EN A(B)IN1(IN3)电机运行情况HH正转HL反转H同IN2(IN4)快速停止LX停止
& && && && && && && && & 图 3-9 L293D真值表& && && && & 3.2.1驱动电路设计单片机输出的PWM电机控制信号接到L293D EN1端口,IN1和IN2端口控制电机正反转,启动和停止。对应的OUT1和OUT2输出接到直流电机B1两端。
& && && && && && && & 图 3-10 L293D电机驱动电路&&3.3 脉冲信号的获取
& &&&光电传感器是应用非常广泛的一种器件,有各种各样的形式,如透射式、反射式等,基本的原理就是当发射管光照射到接收管时,接收管导通,反之关断。以透射式为例,如图3-10所示,当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则打开。为此,可以制作一个遮光叶片如图3-11所示,安装在转轴上,当扇叶经过时,产生脉冲信号。当叶片数较多时,旋转一周可以获得多个脉冲信号。
& && &&& & && & 图3-11光电传感器的原理图
& && && && & 图3-12遮光叶片
3.3.1 LM393芯片介绍LM393主要特点如下:●工作电源电压范围宽,单电源、双电源均可工作,单电源:2~36V,双电源:±1~±18V;●消耗电流小,Icc=0.8mA;●输入失调电压小,VIO=±2mV●共模输入电压范围宽,Vic=0~Vcc-1.5V;●输出与TTL,DTL,MOS,CMOS 等兼容;●输出可以用开路集电极连接“或”门;
& && && && && && && && & 图3-13 LM393内部结构图
& && && && && && && && & 图3-13 LM393引脚功能表
3.3.2 测速电路设计
& && && && && && && &&&图3-14 电机测速电路
测速电路主要由红外发射和接收电路组成,在电动机上安装一对红外发射和接收管, 当电动机转动时,根据电机的转速红外光线透过码盘栅格,因此产生的红外光脉冲信号经LM393电压比较器提供给单片机一个计数脉冲信号。3.4 LCD1602液晶屏介紹在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH
的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。字符的显示用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。汉字的显示汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。10.8.2 1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图3-15:
图3-15 1602字符型液晶显示器实物图1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:
图3-16 LCD尺寸图1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3-17所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极图3-17:引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。10.8.2.3 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令。序号指令RSR/WD7D6D5D4D3D2D1D0
1清显示0000000001
2光标返回000000001*
3置输入模式00000001I/DS
4显示开/关控制0000001DCB
5光标或字符移位000001S/CR/L**
6置功能00001DLNF**
7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容
图3-18控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0—D7=数据写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲输出无
图3-19控制命令表读写操作时序如图3-20和3-21所示:
图3-20 读操作时序
图3-21 写操作时序10.8.2.4 1602LCD的RAM地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。
图3-22 1602LCD内部显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是B(40H)+H)=B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
图3-23 字符代码与图形对应图1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置
3.4 .1显示电路图设计用1602LCD液晶屏实时显示电机的速度,以AT89C51单片机的P0.0-P.07口做八位数据线,P1.0-P1.2为1062的控制端。
& && && && && && && && &&&图3-15 显示模块电路
3.5 按键电路设计运行方式的设置主要有P1口外接按键来完成,判断按键是否按下的方法:然后从P1.4到P1.7逐个检测引脚的电平,如果某个引脚为低电平表示该键按下,此时不需要做相应的处理实现键盘功能,如果引脚为高电平则不做处理。采用4个独立的按键来控制电机的正反转,启停,加减速。
& && && && && && && && && & 图3-16 键盘扫描电路
& && && && && &&&第四章 软件的设计
4.1 (程序清单)及系统原理图(附件中)
4.2 系统原理图
参 考 文 献
[1] 王兆安等.电力电子技术[M]. 北京.机械工业出版社.2000年.[2] 周渊深.交直流调速系统与MATLAB仿真[M].北京.中国电力出版社,2007年.[3] 陈伯时.运动控制系统[M]. 北京.机械工业出版社.2003年.[4] 黄家善等.电力电子技术[M]. 北京.机械工业出版社.2007年.[5]孙立志.PWM与数字化电动机控制技术应用[M].北京.中国电力出版社.2008年.[6] 杨素行.模拟电子技术基础[M].高等教育出版社. 2003年. [7] 陈明荧. 8051单片机基础教程[M].科学出版社. 2003年.& &&&[8] 康华光.电子技术基础数字部分[M].高等教育出版社. 2004年.[9] 李广第.单片机基础 [M].北京航空航天大学出版社. 1999年.
#include
#include &LCD1602.h&
#define uchar unsigned char
#define uint&&unsigned int
& && && && & //定义标志位,确定是否到了1s
unsigned long x,x1;
uint T0& && &&&//从T0的计数单元中读取计数的数值
unsigned char Motor_Count,Set_C
sbit KEY1 = P1^4;//按键1
sbit KEY2 = P1^5;//按键2
sbit KEY3 = P1^6;//按键3
sbit KEY4 = P1^7;//按键4
sbit IN1 = P2^5;//电机控制端1
sbit IN2 = P2^6;//电机控制端2
sbit EN = P2^7;& && && && &&&//电机使能端
void Timer(void);
//延时函数
void Delay_ms(uint jj) //延时1毫秒
{
& && && && &&&
& && && && &&&while(jj--)
& && && && && && && && && & for(ii=0;ii&116;ii++);
}
void Motor_Speed(unsigned char Speed) //电机状态
{
& && && && &&&if(Speed==0)&&{IN1=0;IN2=0;}//停止
& && && && &&&if(Speed==1)&&{IN1=0;IN2=1;}//正转
& && && && &&&if(Speed==2)&&{IN1=1;IN2=0;}//反转
}
void main()& && && && && &&&//函数功能:主函数
{& && && && && &
& && && && &&&unsigned char&&Data[3];
& && && && && &&&unsigned int&&i,j;
& && && && &&&unsigned char Set_x;
& && && && &
& && && && &&&Timer(); //定时器初始化
& & LCD1602_init();//液晶初始化
//////////////////////////ABCDEF
& & LCD1602_Disp_ZF(0x80,&Now Speed:& &r/s&,16);//显示实时速度
& && && && && && && && && && && && && && && && && && && && && && && && && && && && && &&&//ABCDEF
& & LCD1602_Disp_ZF(0x80+0X40,&Set:& &r/s& && &&,16); //设置速度
& && && && &&&//LCD1602_Disp_ZF(0x8b+0X40,&Left &,5);
& && && && &&&//LCD1602_Disp_ZF(0x8b+0X40,&Right&,5);
& && && && &&&LCD1602_Disp_ZF(0x8b+0X40,&Stop &,5);
& && && && &&&Motor_Speed(0);//停止
& && && && &&&Set_Count=1;
& && && && &&&Set_x=15;
& && && && &&&Data[0]='0'+Set_x/100;& && && && && &//显示设置速度
& && && && &&&Data[1]='0'+(Set_x/10)%10; //显示设置速度
& && && && &&&Data[2]='0'+Set_x%10;& && &//显示设置速度
& && && && &&&LCD1602_Disp_ZF(0x84+0x40,Data,3);& && && && &&&//显示设置速度
& && && && &&&while(1)
& && && && &&&{
& && && && &
& && && && && && && && && & if(flag==1)& && && && && && &
& && && && && && && && && & {
& && && && && && && && && && && && && && &flag=0;& && && && && && && && &//清标志位
& && && && && && && && && && && && && && &x=T0count*65536+TH0*256+TL0;& &//取得时间宽度参数
& && && && && && && && && && && && && && &x=x*2;& &&&//计算速度
& && && && && && && && && && && && && && &timecount=0;
& && && && && && && && && && && && && && &T0count=0;
& && && && && && && && && && && && && && &TH0=0;
& && && && && && && && && && && && && && &TL0=0;
& && && && && && && && && && && && && && &TR0=1;& && && &//TR0=1,控制开关闭合,计数脉冲进入T1计数器,启动计数
& && && && && && && && && && && && && && &Data[0]='0'+x/100;& && && && && &//显示当前速度
& && && && && && && && && && && && && && &Data[1]='0'+(x/10)%10; //显示当前速度
& && && && && && && && && && && && && && &Data[2]='0'+x%10;& && &//显示当前速度
& && && && && && && && && && && && && && &LCD1602_Disp_ZF(0x80,&Now Speed:& &r/s&,16); //显示当前速度
& && && && && && && && && && && && && && &LCD1602_Disp_ZF(0x8a,Data,3); //显示当前速度
& && && && && &
& && && && && && && && && && && && && &&&
& && && && && && && && && & }
& && && && && && && && && && && && && && && && && && && && && && && && & if(x&Set_x)//速度调节
& && && && && && && && && && && && && && &{
& && && && && && && && && && && && && && && && && && &&&if(Set_Count==0)Set_Count=1;
& && && && && && && && && && && && && && && && && && &&&Set_Count--;
& && && && && && && && && && && && && && && && && && &&&Delay_ms(50);& && && && &
& && && && && && && && && && && && && && &}
& && && && && && && && && && && && && && &if(x&set_x) 速度调节
& && && && && && && && && && && && && && &{
& && && && && && && && && && && && && && && && && && &&&Set_Count++;
& && && && && && && && && && && && && && && && && && &&&if(Set_Count==200)Set_Count=199;
& && && && && && && && && && && && && && && && && && &&&Delay_ms(50);& && && && &
& && && && && && && && && && && && && && &}
& && && && && && && && && & if(!KEY1) //开始停止按键
& && && && && && && && && & {
& && && && && && && && && && && && && && &Delay_ms(10);
& && && && && && && && && && && && && && &if(!KEY1) //开始停止按键
& && && && && && && && && && && && && && &{
& && && && && && && && && && && && && && && && && && &&&i++;
& && && && && && && && && && && && && && && && && && &&&if(i%2==0)
& && && && && && && && && && && && && && && && && && &&&{
& && && && && && && && && && && && && && && && && && && && && && && & Motor_Speed(1);//开始
& && && && && && && && && && && && && && && && && && && && && && && & LCD1602_Disp_ZF(0x8b+0X40,&Right&,5);
& && && && && && && && && && && && && && && && && && &&&}
& && && && && && && && && && && && && && && && && && &&&if(i%2==1)
& && && && && && && && && && && && && && && && && && &&&{
& && && && && && && && && && && && && && && && && && && && && && && & Motor_Speed(0);//停止
& && && && && && && && && && && && && && && && && && && && && && && & LCD1602_Disp_ZF(0x8b+0X40,&Stop &,5);
& && && && && && && && && && && && && && && && && && &&&}
& && && && && && && && && && && && && && && && && && &&&while(!KEY1);
& && && && && && && && && && && && && && &}& && && && && && && && && &
& && && && && && && && && & }
& && && && && && && && && & if(!KEY2)& && && && &&&//正转反转按键
& && && && && && && && && & {
& && && && && && && && && && && && && && &Delay_ms(10);
& && && && && && && && && && && && && && &if(!KEY2)
& && && && && && && && && && && && && && &{
& && && && && && && && && && && && && && && && && && &&&j++;
& && && && && && && && && && && && && && && && && && &&&if(j%2==0)//正转
& && && && && && && && && && && && && && && && && && &&&{& && && && &
& && && && && && && && && && && && && && && && && && && && && && && & Motor_Speed(1);
& && && && && && && && && && && && && && && && && && && && && && && & LCD1602_Disp_ZF(0x8b+0X40,&Right&,5);
& && && && && && && && && && && && && && && && && && &&&}
& && && && &
& && && && && && && && && && && && && && && && && && &&&if(j%2==1)//反转
& && && && && && && && && && && && && && && && && && &&&{
& && && && && && && && && && && && && && && && && && && && && && && & Motor_Speed(2);
& && && && && && && && && && && && && && && && && && && && && && && & LCD1602_Disp_ZF(0x8b+0X40,&Left &,5);
& && && && && && && && && && && && && && && && && && &&&}
& && && && && && && && && && && && && && && && && && &&&while(!KEY2);
& && && && && && && && && && && && && && &}& && && && && && && && && &
& && && && && && && && && & }
& && && && && && && && && & //////////////////////////////////
& && && && && && && && && & if(!KEY3) //设置加速
& && && && && && && && && & {
& && && && && && && && && && && && && && &Delay_ms(50);
& && && && && && && && && && && && && && &if(!KEY3)//设置加速
& && && && && && && && && && && && && && &{
& && && && && && && && && && && && && && && && && && &&&Set_x ++;
& && && && && && && && && && && && && && && && && && &&&if(Set_x&30)Set_x=30;
& && && && && && && && && && && && && && && && && && &&&Data[0]='0'+Set_x/100;//显示设置速度
& && && && && && && && && && && && && && && && && && &&&Data[1]='0'+(Set_x/10)%10;//显示设置速度
& && && && && && && && && && && && && && && && && && &&&Data[2]='0'+Set_x%10;&&//显示设置速度
& && && && && && && && && && && && && && && && && && &&&LCD1602_Disp_ZF(0x84+0x40,Data,3);//显示设置速度& && && && &
& && && && && && && && && && && && && && &}& && && && && && && && && &
& && && && && && && && && & }
& && && && && && && && && & if(!KEY4)//设置减速
& && && && && && && && && & {
& && && && && && && && && && && && && && &Delay_ms(50);
& && && && && && && && && && && && && && &if(!KEY4)//设置减速
& && && && && && && && && && && && && && &{
& && && && && && && && && && && && && && && & if(Set_x==0)Set_x=1;
& && && && && && && && && && && && && && && && && && &&&Set_x --;
& && && && && && && && && && && && && && && && && && &&&Data[0]='0'+Set_x/100;//显示设置速度
& && && && && && && && && && && && && && && && && && &&&Data[1]='0'+(Set_x/10)%10;//显示设置速度
& && && && && && && && && && && && && && && && && && &&&Data[2]='0'+Set_x%10;&&//显示设置速度
& && && && && && && && && && && && && && && && && && &&&LCD1602_Disp_ZF(0x84+0x40,Data,3);//显示设置速度& && && && &
& && && && && && && && && && && && && && &}& && && && && && && && && &
& && && && && && && && && & }
& && && && && && && && && & /////////////////////////////////
& && && && && && && && && & /////////////////////
& && && && && && && && && & ///////////////////////////
& && && && &&&}
& && && && && &&&
&&}
void t0() interrupt 1 using 0& && &//T0中断服务
{
T0count++;& && && && && && && & //对P3。4口的脉冲进行计数
}
void t1(void) interrupt 3 using 0& && & //T1中断服务
{& &
& & TH1=()/256;& && && && && &//计数初值重装载
& & TL1=()%256;
& & timecount++;
& && && && &&&Motor_Count++;
& && && && &&&if(Motor_Count==Set_Count)& && && && &&&//调节速度
& && && && &&&{
& && && && && && && && && & EN=0;
& && && && &&&}
& && && && &&&if(Motor_Count==200)&&//调节速度
& && && && &&&{
& && && && && && && && && & EN=1;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
完整论文下载(word格式 可编辑):
(1.02 MB, 下载次数: 21)
15:19 上传
点击文件名下载附件
Powered by

我要回帖

更多关于 单片机1602显示程序 的文章

 

随机推荐