资源预览内容
第1页 / 共134页
第2页 / 共134页
第3页 / 共134页
第4页 / 共134页
第5页 / 共134页
第6页 / 共134页
第7页 / 共134页
第8页 / 共134页
第9页 / 共134页
第10页 / 共134页
亲,该文档总共134页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
51单片机C语言应用与开发第第6章章 ELITE-III开发应用实例开发应用实例n本章主要介绍利用ELITE-III开发板的现有资源进行简单单片机控制系统开发的几个实例n本章重点n流水灯控制系统的设计与开发n数码管和键盘接口的软硬件设计n点阵显示系统的设计与开发n步进电机控制系统的设计与开发n单片机串行通信接口的应用及软件设计n特殊串行总线的应用及软件设计nLCD显示系统的控制及软件设计第第6章章 ELITE-III开发应用实例开发应用实例n本章难点本章难点n中断函数的定义及设计方法中断函数的定义及设计方法n矩阵键盘的设计及键盘识别矩阵键盘的设计及键盘识别n点阵显示系统的工作原理及软件设计点阵显示系统的工作原理及软件设计n步进电机的驱动及时序设计步进电机的驱动及时序设计nA/D转换的原理及软件驱动转换的原理及软件驱动n串行通信的中断程序设计串行通信的中断程序设计n特殊总线串行通信接口芯片的工作原理及其寄特殊总线串行通信接口芯片的工作原理及其寄存器的应用存器的应用nLCD显示模块的工作原理及编程控制显示模块的工作原理及编程控制第第6章章 ELITE-III开开发应用用实例例n本章各章节安排本章各章节安排n6.1 流水灯控制系统设计流水灯控制系统设计n6.2 I/O 口的高级应用口的高级应用n6.3 点阵显示设计点阵显示设计n6.4 步进电机控制步进电机控制n6.5 A/D 转换设计转换设计n6.6 单片机串行通信单片机串行通信n6.7 I2C总线技术总线技术 n6.8 特殊总线串行通信特殊总线串行通信 n6.9 LCD显示设计显示设计第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例l6.1 流水灯控制系统设计流水灯控制系统设计l 流水灯是指若干个灯泡或流水灯是指若干个灯泡或LED发光二极发光二极管按一定顺序依次点亮的一种装置,有时也管按一定顺序依次点亮的一种装置,有时也称跑马灯,可用在夜间建筑物的装饰等方面。称跑马灯,可用在夜间建筑物的装饰等方面。流水灯控制系统是单片机最简单的控制系统之流水灯控制系统是单片机最简单的控制系统之一,具有电路简单、设计灵活、控制方便等特一,具有电路简单、设计灵活、控制方便等特点,是单片机入门开发的首选,几乎所有的单点,是单片机入门开发的首选,几乎所有的单片机开发板都提供流水灯控制系统。本节以片机开发板都提供流水灯控制系统。本节以ELITE-III开发板为例,介绍流水灯控制系统的开发板为例,介绍流水灯控制系统的设计。设计。l6.1.1 流水灯的硬件电路流水灯的硬件电路l1. 发光二极管与单片机的接口发光二极管与单片机的接口l 发光二极管发光二极管 l发光二极管简称为发光二极管简称为LED,是一种特殊的二极管,是一种特殊的二极管,也具有单向导电性,其正向导通电压一般为也具有单向导电性,其正向导通电压一般为1.75V左右。发光二极管通常由镓左右。发光二极管通常由镓Ga与砷与砷AS)、磷)、磷P的化合物制成,可以把电能转化的化合物制成,可以把电能转化成光能,在电子仪器及其他电器设备中作为指成光能,在电子仪器及其他电器设备中作为指示灯,或者组成文字或数字显示。磷砷化镓二示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发红光,磷化镓二极管发绿光,碳化硅二极管发极管发 黄光。发光二极管的电路符号如图黄光。发光二极管的电路符号如图6-1所所示。示。第第6章章 ELITE-III开发应用实例开发应用实例p(2)发光二极管与单片机的接口 第第6章章 ELITE-III开发应用实例开发应用实例pLED发光二极管与单片机的接口一般可以分为直接式、扫描式与多路复用式三种,其接口电路如图7-2所示。 p直接式:LED发光二极管的一端一般是阴极直接连到对应单片机的一个输出引脚,另一端通过限流电阻接到电源VCC,如图6-2a)。使用这种连接方式时,单片机的一个I/O端口P0、P1或P2最多只能控制8个LED发光二极管。当单片机的对应管脚输出低电平时,电流从VCC经限流电阻、发光二极管后流入单片机,发光二极管开始发光,其发光亮度可由串联的限流电阻控制;当对应管脚输出高电平时,没有电流通过LED发光二极管,发光二极管熄灭。第第6章章 ELITE-III开发应用实例开发应用实例扫描式:扫描式:LED发光二极管被设计成行列形式的矩阵,发光二极管被设计成行列形式的矩阵,其中,各行各列分别接到对应单片机的一个唯一输其中,各行各列分别接到对应单片机的一个唯一输出引脚,如图出引脚,如图6-2b)。当单片机对应行、列的管)。当单片机对应行、列的管脚分别输出高和低电平时,电流从单片机输出高电脚分别输出高和低电平时,电流从单片机输出高电平的管脚经限流电阻和平的管脚经限流电阻和LED流入到另一个引脚,流入到另一个引脚,LED发光二极管开始发光。在扫描式连接时,为了发光二极管开始发光。在扫描式连接时,为了让让LED发光二极管显示一个固定的状态,必须有相发光二极管显示一个固定的状态,必须有相应的软件扫描程序维持输出的信号。在此种方式下,应的软件扫描程序维持输出的信号。在此种方式下,单片机的一个端口最多可控制单片机的一个端口最多可控制16个个LED发光二极管。发光二极管。如果两个端口结合使用,一个端口控制行信号,另如果两个端口结合使用,一个端口控制行信号,另一个端口控制列信号,则可以控制一个端口控制列信号,则可以控制64个个LED的状态。的状态。复用式:多路复用式与扫描式类似,也是将复用式:多路复用式与扫描式类似,也是将LED发发光二极管组织成行列形式的矩阵,但是矩阵的行、光二极管组织成行列形式的矩阵,但是矩阵的行、列信号是由单片机外置的多路解码及锁存芯片进行列信号是由单片机外置的多路解码及锁存芯片进行控制,因此实现了多于单片机输出端口数目的控制,因此实现了多于单片机输出端口数目的LED发光二极管阵列,本质上就是扫描式的扩充,如图发光二极管阵列,本质上就是扫描式的扩充,如图6-2c所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例u2. 流水灯硬件电路流水灯硬件电路u单片机控制的流水灯系统如图单片机控制的流水灯系统如图6-3所示。图中,单所示。图中,单片机的片机的P1口接口接8个发光二极管个发光二极管LD1LD8的阴的阴极,控制发光二极管的亮灭。电源极,控制发光二极管的亮灭。电源VCC经开关经开关JP1后,通过后,通过8个限流电阻个限流电阻R57R64接到发光二极接到发光二极管的阳极。开关管的阳极。开关JP1接通时,发光二极管可以发光,接通时,发光二极管可以发光,显示流水灯的工作状态;断开时,发光二极管不能显示流水灯的工作状态;断开时,发光二极管不能发光。发光。第第6章章 ELITE-III开发应用实例开发应用实例n6.1.2 流水灯软件设计流水灯软件设计n 本节的流水灯由本节的流水灯由8个个LED发光二极管组成,发光二极管组成,通过单片机的通过单片机的P1口进行驱动,电路如图口进行驱动,电路如图6-3所所示。当示。当8个发光二极管按一定顺序依次点亮时,个发光二极管按一定顺序依次点亮时,显示流水灯的工作状态。在流水灯控制系统中,显示流水灯的工作状态。在流水灯控制系统中,每个发光二极管亮的状态都需要持续一段时间,每个发光二极管亮的状态都需要持续一段时间,这段持续时间在单片机控制系统中一般有两种这段持续时间在单片机控制系统中一般有两种方法实现:定时器中断延时或软件延时。由于方法实现:定时器中断延时或软件延时。由于51系列单片的定时器资源有限系列单片的定时器资源有限8051只有的只有的2个定时器,个定时器,8052也只有也只有3个),所以在流水灯个),所以在流水灯这种系统任务不多且对定时时间要求不是十分这种系统任务不多且对定时时间要求不是十分严格的情况下,一般采用软件延时。严格的情况下,一般采用软件延时。n1. 软件延时程序软件延时程序n软件延时一般通过重复运行一段程序循环程软件延时一般通过重复运行一段程序循环程序来实现,以下程序可实现软件延时功能:序来实现,以下程序可实现软件延时功能: void delay()unsigned int j; for(j = 0;j 20000;j+);第第6章章 ELITE-III开发应用实例开发应用实例p改变变量j的取值范围,可以改变延时时间。如果延时时间不够,可以通过两层或多层循环来增加延时时间。p延时时间是原来单层循环的20倍。p2. 流水灯的软件实现p由于图6-3的8个发光二极管阳极通过限流电阻接电源VCC,阴极则分别连接到单片机P1口的8根口线。因而,要使某个发光二极管亮,只须在对应口线输出低电平即可;反之,如果要让某个发光二极不亮,则只须在对应口线输出高电平。第第6章章 ELITE-III开发应用实例开发应用实例p在C51程序设计语言中,单片机的4个并行I/O口作为特殊功能寄存器使用,以变量的形式在库函数REG52.h或REG51.h中进行定义各并行口的口线,可以以位变量的形式使用)。因而,要使某个并行I/O口各位输出指定的电平,只须对该口所对应的变量赋值即可。例如:要让P1口输出二进制数10100110对应的电平,则只须在C51程序中执行下列语句即可:p对于图7-3的硬件电路,如果要使8个发光二极管以流水灯的效果按顺序点亮,则只须对P1口的各位从最低位开始依次赋“0”(其他各位赋值为“1”)。完成这一操作,可在一循环中用左移1位再加“1的算法实现。假定用变量disp为P1进行赋值,且disp初始值为0xFE。P1 = 0x0A6;第第6章章 ELITE-III开发应用实例开发应用实例u3. 花样流水灯花样流水灯u对上述程序稍加修改,可以显示花样流水灯的效对上述程序稍加修改,可以显示花样流水灯的效果,如亮灯左移、亮灯右移、亮灯从两边向中间移果,如亮灯左移、亮灯右移、亮灯从两边向中间移再从中间向两边移等。以下为亮灯从两边向中间移再从中间向两边移等。以下为亮灯从两边向中间移动再由中间向两边移动的花样流水灯程序程序,程动再由中间向两边移动的花样流水灯程序程序,程序中实现流水灯效果的算法采用两个变量移位相加序中实现流水灯效果的算法采用两个变量移位相加再取反的算法,变量的初值分别为再取反的算法,变量的初值分别为0x01和和0x80若若采用上述程序的方法,则可用两个变量分别移位加采用上述程序的方法,则可用两个变量分别移位加1,再相与的算法,变量初值分别为,再相与的算法,变量初值分别为0xFE和和0x7F)。)。第第6章章 ELITE-III开发应用实例开发应用实例u4. 蛇形花样蛇形花样u所谓蛇形花样是指流水灯显示的花样像蛇一样不所谓蛇形花样是指流水灯显示的花样像蛇一样不停地游走,与前述流水灯不同的是:蛇形花样需要停地游走,与前述流水灯不同的是:蛇形花样需要多个连续的发光二极管同时亮并流动。一段多个连续的发光二极管同时亮并流动。一段4位长位长的蛇形花样流水灯随时间变化的示意图如图的蛇形花样流水灯随时间变化的示意图如图6-4所所示。示。第第6章章 ELITE-III开发应用实例开发应用实例n6.1.3 利用定时器中断产生延时利用定时器中断产生延时n定时器中断延时属硬件延时,是利用单片机自带或定时器中断延时属硬件延时,是利用单片机自带或外接的定时外接的定时/计数器每隔一定时间产生一个中断,计数器每隔一定时间产生一个中断,当中断产生时,才做相应工作来完成延时任务的。利当中断产生时,才做相应工作来完成延时任务的。利用定时器中断产生延时,不会使程序停留在某一个地用定时器中断产生延时,不会使程序停留在某一个地方等待延时时间到,方等待延时时间到,CPU可以继续做其他的工作,提可以继续做其他的工作,提高了高了CPU的工作效率。在单片机系统比较复杂、的工作效率。在单片机系统比较复杂、CPU任务比较繁重或者系统要求的延时时间比较精确时,任务比较繁重或者系统要求的延时时间比较精确时,常使用定时器中断来实现延时功能。常使用定时器中断来实现延时功能。n定时器中断延时产生的延时时间,其长短主要由系统定时器中断延时产生的延时时间,其长短主要由系统时钟频率和定时器的计数初值决定。在系统要求的延时钟频率和定时器的计数初值决定。在系统要求的延时时间较短时,可直接在中断服务程序中执行有延时时时间较短时,可直接在中断服务程序中执行有延时要求的任务;当要求的延时时间较长、需产生多次定要求的任务;当要求的延时时间较长、需产生多次定时器中断才能到达延时时间时,不能在中断服务程序时器中断才能到达延时时间时,不能在中断服务程序中执行有延时要求的任务。此时一般用中执行有延时要求的任务。此时一般用1个或多个个或多个变量来记录中断的次数,当中断次数与变量来记录中断的次数,当中断次数与1次中断产次中断产生的延时时间相乘达到延时时间要求时,再在主程序生的延时时间相乘达到延时时间要求时,再在主程序中执行有延时要求的任务。中执行有延时要求的任务。n对于前述基本流水灯控制程序,若采用定时器对于前述基本流水灯控制程序,若采用定时器0中断中断产生延时,假定系统时钟频率为产生延时,假定系统时钟频率为11.0592MHz,每个灯,每个灯亮的延时时间为亮的延时时间为0.5s,则可求得计数次数,则可求得计数次数X为:为:第第6章章 ELITE-III开发应用实例开发应用实例u当定时器0工作于方式1时,最大计数次数为65536,显然需要多次中断才能达到系统规定的延时时间。为简便起见,可设中断次数number=10,则定时器的计数初值x为:u根据以上计算和说明,可写出利用定时器中断实现延时的基本流水灯程序为: 第第6章章 ELITE-III开发应用实例开发应用实例l6.2 I/O口的高级应用口的高级应用l6.2.1 数码管显示器数码管显示器l 在单片机系统中,常用在单片机系统中,常用LED数码管作数码管作为显示输出设备来显示单片机控制系统的为显示输出设备来显示单片机控制系统的工作状态、运算结果等相关信息。虽然工作状态、运算结果等相关信息。虽然LED数码管显示器显示的信息简单,但它数码管显示器显示的信息简单,但它具有显示清晰、亮度高、使用电压低、寿具有显示清晰、亮度高、使用电压低、寿命长、与单片机接口方便等特点,是单片命长、与单片机接口方便等特点,是单片机控制系统进行人机对话的重要输出设备。机控制系统进行人机对话的重要输出设备。l1. LED数码管数码管l LED数码管的构造及特点数码管的构造及特点第第6章章 ELITE-III开发应用实例开发应用实例LED数码管的内部实际上由8个发光二极管构成,其中7个发光二极管为线段形叫做字段),排列成的字符“8的形状,另一个发光二极管为圆点形状,安放在显示器的右下角作为小数点用。通过发光二极管亮暗的不同组合,可以显示09的数字符号或其它能由这些字形线段构成的各种字符。LED数码管的字形结构如图6-5所示。第第6章章 ELITE-III开发应用实例开发应用实例从内部结构上看,LED数码管中的发光二极管有两种连接方式:一种是共阳极连接,数码管内部8个发光二极管的阳极正极全部连接在一起组成公共端,阴极则各自独立引出,其内部电路如图6-6所示。使用时一般将公共端阳极接电源VCC,阴极通过限流电阻接至驱动电路的输出端(或单片机的I/O口)。单片机的口线输出低电平时,对应的发光二极管点亮,输出高电平时则不亮;另一种是共阴极连接方式,数码管内部8个发光二极管的阴极负极连接在一起组成公共端,阳极则各自独立引出,其内部电路如图6-7所示。使用时公共端阴极接地,阳极通过限流电阻接至驱动电路的输出端(或单片机的I/O口),单片机的口线输出高电平时,对应的发光二极管亮,输出低电平时则不亮驱动电路中限流电阻R的值通常根据LED的工作电流计算得到,即R=(VCC-VLED)/ILED。式中,VCC为电源电压(+5V),VLED为LED的正向压降约1.8V),ILED为数码管中单片LED的工作电流120mA)。因而,限流电阻一般取几百欧姆。第第6章章 ELITE-III开发应用实例开发应用实例p LED数码管的字形编码数码管的字形编码p为了让为了让LED数码管显示数字或符号,需要为数码管数码管显示数字或符号,需要为数码管提供相应的显示代码,由于这些代码是为了显示字提供相应的显示代码,由于这些代码是为了显示字形的,所以也称为字形码或字段码。形的,所以也称为字形码或字段码。p七段发光二极管,加上一个小数点位,共七段发光二极管,加上一个小数点位,共8位代码,位代码,由一个字节的二进字数组成。这个字节的各数据位由一个字节的二进字数组成。这个字节的各数据位与数码管各字段的对应关系如表与数码管各字段的对应关系如表6-1所示。所示。p与与16进制数对应的进制数对应的LED数码管显示器的数码管显示器的7段字形段字形段二进制编码如表段二进制编码如表6-2所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例p 需要指出的是:上表的字段码并不是绝对的,字段码其实由各字段在字节中的位置决定。如果字段码按格式“gfedcba形成,则对于字符“0”,其字段码为0x3F共阴);而如果字段码按格式“abcdefg而定,则字符“0的字段码将变成0x7E共阴)。也就是说,字符的字段码可由设计者自行设计,不必拘泥于表6-1和表6-2。第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例u2. 数码管的静态显示数码管的静态显示u在实际应用中,在实际应用中,LED数码管显示器的显示方式有两种:静态数码管显示器的显示方式有两种:静态显示法和动态扫描显示法。静态显示就是数码管的段线在一显示法和动态扫描显示法。静态显示就是数码管的段线在一定时间内输入固定不变的字段码,静态的显示同一个字符。定时间内输入固定不变的字段码,静态的显示同一个字符。数码管工作于静态显示方式时,各位数码管的公共端阴极数码管工作于静态显示方式时,各位数码管的公共端阴极或阳极直接接地或或阳极直接接地或+5V电源),每位的段线电源),每位的段线ah分分别独占一个具有锁存功能的输出口线,别独占一个具有锁存功能的输出口线,CPU把欲显示的字形把欲显示的字形代码送到输出口上,就可以使显示器显示所需的数字或符号。代码送到输出口上,就可以使显示器显示所需的数字或符号。以后,即使以后,即使CPU不再去访问它,数码管显示的内容也不会消不再去访问它,数码管显示的内容也不会消失。失。u静态显示法的优点是显示程序简单,显示亮度高,占用静态显示法的优点是显示程序简单,显示亮度高,占用CPU的工作时间少的工作时间少CPU不必经常去扫描显示器);缺点是占用不必经常去扫描显示器);缺点是占用I/O口较多,硬件成本也较高。静态显示常用在显示器数目较口较多,硬件成本也较高。静态显示常用在显示器数目较少的系统中。图少的系统中。图6-8是一种两个共阳极数码管静态显示电路的是一种两个共阳极数码管静态显示电路的示意图,利用图示意图,利用图6-8所示电路,在两个数码管上静态显示所示电路,在两个数码管上静态显示“78两个字符的程序段为:两个字符的程序段为:第第6章章 ELITE-III开发应用实例开发应用实例u3. 动态扫描显示动态扫描显示u动态扫描显示是单片机应用系统中最常见的显示方法之一。动态扫描显示是单片机应用系统中最常见的显示方法之一。它是把所有显示器的它是把所有显示器的8个字段个字段ah的各同名端并联在一起,的各同名端并联在一起,并把它们接到字段码并把它们接到字段码I/O输出口上。为了防止各个显示器同时输出口上。为了防止各个显示器同时显示同一个字符,各显示器的公共端并不接到电源或地,而显示同一个字符,各显示器的公共端并不接到电源或地,而是接到另一组控制信号,即位输出口上。在动态扫描显示方是接到另一组控制信号,即位输出口上。在动态扫描显示方式下,一组数码管显示器需要两组信号来控制:一组是字段式下,一组数码管显示器需要两组信号来控制:一组是字段码输出口输出的字形代码,用来控制显示的字符形状;另一码输出口输出的字形代码,用来控制显示的字符形状;另一组是位输出口输出的控制信号,用于控制哪一位显示器工作,组是位输出口输出的控制信号,用于控制哪一位显示器工作,也称为位码。在两组信号的共同控制下,可以按顺序一位一也称为位码。在两组信号的共同控制下,可以按顺序一位一位地轮流点亮每个显示器,显示各自的字符,以实现数码管位地轮流点亮每个显示器,显示各自的字符,以实现数码管的动态扫描显示。由于的动态扫描显示。由于LED具有的余辉特性及人眼的视觉残具有的余辉特性及人眼的视觉残留现象,尽管各位显示器实际上是分时断续地显示的,但只留现象,尽管各位显示器实际上是分时断续地显示的,但只要选取适当的扫描频率,给人眼的感觉就会是连续稳定的显要选取适当的扫描频率,给人眼的感觉就会是连续稳定的显示,不会察觉有闪烁现象。示,不会察觉有闪烁现象。P0=0xF8;P2=0x80;第第6章章 ELITE-III开发应用实例开发应用实例p由于动态扫描显示方式中,各个数码管的字段线是并联使用的,极大地简化了硬件电路,所以特别适用于多个数码管的显示系统。在ELITE-III开发板中,有6个共阳极数码管的动态扫描显示电路如图6-9所示。第第6章章 ELITE-III开发应用实例开发应用实例p当单片机P2口低6位输出低电平有效的扫描信号后,6个数码管按顺序轮流工作,此时如果锁存器74HC574输出对应的字段码,则由于LED具有的余辉特性及人眼的视觉残留现象,我们将会看到在6个数码管上连续稳定地显示指定的字符。第第6章章 ELITE-III开发应用实例开发应用实例n6.2.2 键盘接口键盘接口n 键盘是单片机应用系统中最常用的输入设键盘是单片机应用系统中最常用的输入设备之一,能够向单片机输入数据、传送命令,备之一,能够向单片机输入数据、传送命令,实现简单的人机对话功能,是人工干预单片机实现简单的人机对话功能,是人工干预单片机系统的主要手段。系统的主要手段。n 在单片机应用系统中,键盘的结构一般在单片机应用系统中,键盘的结构一般有两种形式:独立式键盘和矩阵式键盘。独立有两种形式:独立式键盘和矩阵式键盘。独立式键盘的各键相互独立、互不干扰,每个按键式键盘的各键相互独立、互不干扰,每个按键都单独接在单片机的一根都单独接在单片机的一根I/O口线上;矩阵式口线上;矩阵式键盘也称为行列式键盘,由键盘也称为行列式键盘,由I/O口线组成行、口线组成行、列式结构,键位则设置在行、列线的交叉点上。列式结构,键位则设置在行、列线的交叉点上。n1键盘的工作原理键盘的工作原理n键盘实质上是一组按键开关的集合,开关在平键盘实质上是一组按键开关的集合,开关在平时总是处于断开的状态,只有在按键被按下时,时总是处于断开的状态,只有在按键被按下时,开关才闭合。按键的结构和产生的波形如图开关才闭合。按键的结构和产生的波形如图6-11所示。所示。n在图在图6-11(a)中,按键开关的一端接地,另一端中,按键开关的一端接地,另一端分两路:一路接单片机的分两路:一路接单片机的P1.0;另一路经上拉;另一路经上拉电阻接电源电阻接电源VCC。当按键未被按下时,开关。当按键未被按下时,开关处于断开状态,输出高电平;当按下按键后,处于断开状态,输出高电平;当按下按键后,开关闭合,输出低电平。开关闭合,输出低电平。第第6章章 ELITE-III开发应用实例开发应用实例p 按键的检测按键的检测p由于按键未被按下时,开关输出高电平;按下后,由于按键未被按下时,开关输出高电平;按下后,开关输出低电平。因而,系统可以通过读开关输出低电平。因而,系统可以通过读P1.0口,口,然后根据然后根据P1.0输入电平的状态来判断按键是否被按输入电平的状态来判断按键是否被按下:如果下:如果P1.0输入为高电平,则说明键没有按下;输入为高电平,则说明键没有按下;如果输入低电平,则表示按键已经被按下。如果输入低电平,则表示按键已经被按下。p在在C51程序设计语言中,读取按键值的操作可通过程序设计语言中,读取按键值的操作可通过赋值语句完成。假定某按键接在单片机的赋值语句完成。假定某按键接在单片机的P1.0口线口线上如图上如图6-11),则下列程序段可实现按键的读取),则下列程序段可实现按键的读取和检测:和检测:p有时为了简化程序,也可直接通过一判断语句完成有时为了简化程序,也可直接通过一判断语句完成按键的读取与检测:按键的读取与检测:sbit key0 = P10;a=key0; /读按键的值if(a=0) /检测按键是否被按下 第第6章章 ELITE-III开发应用实例开发应用实例p 抖动的消除p通常按键开关都是机械式开关,由于机械触点的弹性作用,按键开关在闭合时并不会马上稳定地接通,弹开时也不会马上断开。在闭合与断开的瞬间都会伴随着一连串的抖动,其波形大致如图6-11(b)所示。抖动时间的长短由按键开关的机械特性决定,一般为510ms。这种抖动对人来说可能感觉不到,但对于单片机系统来说,完全可以检测到。在单片机系统中,如果对抖动不作处理,必然会出现按一次键,系统会多次读入同一个按键值的现象。为确保按一次键,系统只能读到一次按键值,必须消除按键抖动的影响。消除按键抖动的方法通常有两种:硬件去抖和软件去抖。 sbit key0 = P10;if(key0=0) /读按键并检测按键是否被按下 ;第第6章章 ELITE-III开发应用实例开发应用实例硬件去抖是利用在按键的输出部分增加一定的处理电路来消除抖动的。实际应用中,一般采用R-S触发器或单稳态电路。一种采用R-S触发器构成的硬件去抖电路如图6-12所示。综合图6-11(b)所示按键开关的波形和在图6-12所示的硬件去抖电路可知:当开关接到触点1后,第一个抖动波形的低电平到来时,与非门1的一个输入端输入低电平,则输出为高电平。此时与非门2的两个输入端都输入高电平,则与非门2输出低电平,反过来使与非门1的另一个输入端也输入低电平。当第一个抖动波形变为高电平后,由于与非门1的另一个输入端输入的仍是低电平,所以输出能保持高电平不变,将会使与非门2保持低电平输出不变,这样就可以去除掉开关闭合产生的抖动影响,使与非门2的输出端输出稳定不变的低电平;当开关接到触点2后,由于两个与非门的共同作用,同样可以去除掉接触瞬间抖动的影响,使与非门2能输出稳定不就的高电平。第第6章章 ELITE-III开发应用实例开发应用实例p 键位的编码键位的编码p 键位的编码用于确定按键在键盘中所处键位的编码用于确定按键在键盘中所处的位置。在一个单片机应用系统中,键盘通常的位置。在一个单片机应用系统中,键盘通常包含多个按键,这些键一般都通过包含多个按键,这些键一般都通过I/O口线来进口线来进行连接。按下一个键后,单片机通过键盘接口行连接。按下一个键后,单片机通过键盘接口电路可以得到该键的编码。键盘的键位怎样进电路可以得到该键的编码。键盘的键位怎样进行编码,是键盘工作过程中一个很重要的问题,行编码,是键盘工作过程中一个很重要的问题,常用的键盘编码方式有两种:常用的键盘编码方式有两种:p 用连接键盘的用连接键盘的I/O口线的二进制数组合进行口线的二进制数组合进行编码。编码。 顺序排列编码。顺序排列编码。第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例u2. 独立式键盘与单片机的接口独立式键盘与单片机的接口u独立式键盘的各键相互独立、互不干扰,每个按独立式键盘的各键相互独立、互不干扰,每个按键都单独接在一根键都单独接在一根I/O口线上。实际应用时,可以口线上。实际应用时,可以通过直接检测通过直接检测I/O口线的电平状态来判断哪个按键口线的电平状态来判断哪个按键被按下了。独立式键盘的电路灵活、程序简单。但被按下了。独立式键盘的电路灵活、程序简单。但由于每个按键都要占用一根由于每个按键都要占用一根I/O口线,在按键数量口线,在按键数量较多时,较多时,I/O口线的浪费很大,故独立式键盘常用口线的浪费很大,故独立式键盘常用在按键数量不多的场合。在按键数量不多的场合。u独立式键盘的按键获取有中断方式与查询方式两独立式键盘的按键获取有中断方式与查询方式两种。在种。在MCS-51系列单片机中,使用中断方式时,系列单片机中,使用中断方式时,键盘只能直接或通过一个门电路接到单片机的键盘只能直接或通过一个门电路接到单片机的P3.0或或P3.1口上,查询方式则可以接到单片机的任口上,查询方式则可以接到单片机的任意口线。独立式键盘与单片机的接口电路如图意口线。独立式键盘与单片机的接口电路如图6-14所示。所示。 第第6章章 ELITE-III开发应用实例开发应用实例u3. 矩阵式键盘与单片机的接口矩阵式键盘与单片机的接口u矩阵式键盘也称为行列式键盘,由矩阵式键盘也称为行列式键盘,由I/O口线组成行、列式结口线组成行、列式结构,键位则设置在行、列线的交叉点上,其结构如图构,键位则设置在行、列线的交叉点上,其结构如图6-13所所示。图中,示。图中,P1口的口的8根线分成两组,构成根线分成两组,构成4行、行、4列的矩阵键列的矩阵键盘,可控制盘,可控制16个按键。与一根线控制一个按键的独立式键盘个按键。与一根线控制一个按键的独立式键盘相比,矩阵式键盘少用了一半的接口线,节约了硬件资源,相比,矩阵式键盘少用了一半的接口线,节约了硬件资源,而且需要的按键越多,情况越明显。因而,在按键数量较多而且需要的按键越多,情况越明显。因而,在按键数量较多时,常采用矩阵式键盘。时,常采用矩阵式键盘。u矩阵式键盘的连接方法有多种:可直接与单片机的矩阵式键盘的连接方法有多种:可直接与单片机的I/O口线口线相连;也可通过扩展的并行接口芯片如相连;也可通过扩展的并行接口芯片如74HC244、8255A等与单片机相连;还可利用可编程的键盘、显示接口芯片等与单片机相连;还可利用可编程的键盘、显示接口芯片如如8279等与单片机相连。图等与单片机相连。图6-15是是ELITE-III开发板上矩开发板上矩阵键盘与单片机的接口电路,图中,矩阵键盘的列线通过阵键盘与单片机的接口电路,图中,矩阵键盘的列线通过74HC244接到单片机的接到单片机的P0口口74HC244的片选信号的片选信号RDkey由由地址译码器地址译码器74HC138的的/Y4提供);行线分别接单片机的提供);行线分别接单片机的P2.0、P2.1以输出行扫描信号。以输出行扫描信号。 第第6章章 ELITE-III开发应用实例开发应用实例p 矩阵式键盘的工作过程矩阵式键盘的工作过程p 矩阵式键盘的工作过程大体可分为两步:矩阵式键盘的工作过程大体可分为两步:第一步,按键检测,第一步,按键检测,CPU检测键盘上是否有键检测键盘上是否有键按下。第二步,按键识别,判断是哪一个键被按下。第二步,按键识别,判断是哪一个键被按下。按下。p 按键检测。按键检测。p 按键识别。按键识别。p注:在注:在ELITE-III开发板上,为了硬件系统总开发板上,为了硬件系统总体设计的方便,电路设计时体设计的方便,电路设计时16个按键设计成个按键设计成28的矩阵键盘形式,但在印刷电路板的布局的矩阵键盘形式,但在印刷电路板的布局上仍然将上仍然将16个按键设计个按键设计44的矩阵键盘形式。的矩阵键盘形式。第第6章章 ELITE-III开发应用实例开发应用实例p 矩阵键盘的工作方式矩阵键盘的工作方式p 在单片机系统中,检测键盘上有无按键被在单片机系统中,检测键盘上有无按键被按下常采用按下常采用3种方式:查询方式、定时扫描方式种方式:查询方式、定时扫描方式和中断方式。和中断方式。p 查询方式。查询方式。p 定时扫描方式。定时扫描方式。p 中断方式。中断方式。u2. 简易电子钟的硬件电路简易电子钟的硬件电路u本简易电子钟的显示电路和键盘输入电路如图本简易电子钟的显示电路和键盘输入电路如图6-9、6-15所示。显示电路中,锁存器所示。显示电路中,锁存器74HC574的片选由的片选由译码器译码器74HC138的的/Y2LCKDisp提供,键盘输提供,键盘输入电路中,缓冲器入电路中,缓冲器74HC244的片选由译码器的片选由译码器74HC138的的/Y4RDkey提供。提供。 u3. 简易电子钟的软件实现简易电子钟的软件实现u综合图综合图6-9和图和图6-15电路,可实现简易电子钟。电路,可实现简易电子钟。第第6章章 ELITE-III开开发应用用实例例l6.3 点阵显示设计点阵显示设计l 随着大规模集成电路和计算机技术的高速随着大规模集成电路和计算机技术的高速发展,发展,LED显示屏作为一种新兴的显示媒体,得显示屏作为一种新兴的显示媒体,得到了飞速发展。与传统的显示媒体相比较,到了飞速发展。与传统的显示媒体相比较,LED显示屏具有亮度高、动态影像显示效果好、故障显示屏具有亮度高、动态影像显示效果好、故障低、能耗少、使用寿命长、显示内容多样、显示低、能耗少、使用寿命长、显示内容多样、显示方式丰富、性价比高等优势,成为新一代大屏幕方式丰富、性价比高等优势,成为新一代大屏幕显示媒体的首选,已广泛应用于各行各业。本节显示媒体的首选,已广泛应用于各行各业。本节先介绍了先介绍了ELITE-III开发板上的开发板上的88点阵显示系统,点阵显示系统,然后介绍了一种扩展的然后介绍了一种扩展的1616点阵显示系统设计点阵显示系统设计方法。方法。l6.3.1 88点阵显示设计点阵显示设计l 所谓所谓LED点阵显示,就是将多个点阵显示,就是将多个LED发光发光二极管按行列顺序排列组合起来。每个二极管按行列顺序排列组合起来。每个LED构成构成点阵中的一个像素,把每个点阵中的一个像素,把每个LED的阴极和阳极都的阴极和阳极都引出来,就可以对点阵中的任何一个引出来,就可以对点阵中的任何一个LED像素加像素加以控制,从而达到需要的显示效果,以控制,从而达到需要的显示效果,88点阵显点阵显示器就是由示器就是由64个个LED组合而成。组合而成。l1. 点阵模块点阵模块l目前市面上的目前市面上的LED点阵显示屏一般是将列输入线点阵显示屏一般是将列输入线接至内部接至内部LED的阴极,行输入线接至内部的阴极,行输入线接至内部LED的的阳极,当阳极行线输入高电平,阴极列线阳极,当阳极行线输入高电平,阴极列线输入低电平时,对应的输入低电平时,对应的LED发光二极管点亮。发光二极管点亮。常见的常见的88点阵显示模块外观及引脚如图点阵显示模块外观及引脚如图6-16所所示:示: 第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例u2. 字符取模字符取模u点阵显示模块是通过点阵显示模块是通过LED发光二极管的亮灭组合发光二极管的亮灭组合来显示字符的,而来显示字符的,而LED的亮灭由点阵显示模块行、的亮灭由点阵显示模块行、列线的高低电平进行控制。当行线输入高电平有效列线的高低电平进行控制。当行线输入高电平有效的行扫描信号时,每一行的列线编码信号叠加在一的行扫描信号时,每一行的列线编码信号叠加在一起,就构成了一个对应的点阵字符列扫描的原理起,就构成了一个对应的点阵字符列扫描的原理相同)。相同)。 第第6章章 ELITE-III开发应用实例开发应用实例u3. 硬件电路硬件电路u ELITE-III开发板上自带一个开发板上自带一个88的点阵显示的点阵显示模块,由模块,由2片片8D锁存器锁存器74HC574U2、U10分别分别锁存列编码数据和行扫描信号,锁存器的片选信号锁存列编码数据和行扫描信号,锁存器的片选信号由由3-8译码器译码器U12的的/Y1和和/Y0提供,其电路组提供,其电路组成模块如图成模块如图6-20所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例p 信号锁存与驱动模块信号锁存与驱动模块第第6章章 ELITE-III开发应用实例开发应用实例信号的锁存与驱动电路如图6-21所示。电路由2片并行输入8D锁存器74HC574U2、U10)、8个晶体管反相放大电路及8个限流电阻组成。其中,列编码锁存器U2接收单片机输出的字符点阵编码,其输出经220限流电阻后控制点阵模块的列线,显示字符的点阵图形;行扫描锁存器U10接收单片机输出的行扫描信号,其输出经8个晶体管组成的驱动电路将电平反相、电流放大后驱动点阵模块的行线,以扫描的方式分行显示点阵字符各列 第第6章章 ELITE-III开发应用实例开发应用实例的图形,由于人眼的视觉残留现象,当扫描速度足够快时,人们将会看到在点阵显示屏上显示一个完整的字符形状;限流电阻负责保护点阵模块的发光二极管,以免二极管两端电压过高、电流过大而烧坏发光二极管。 点阵显示模块 点阵显示模块由1片88点阵模块组成,行编码锁存器和列扫描锁存器输出信号经放大或限流后,与点阵模块的连接电路如图6-22所示。4. 软件实现在上述点阵显示系统硬件电路的基础上结合汉字取模软件所得的字符点阵编码,编写适当的软件就可以控制点阵显示屏显示相应的汉字或英文字符。例如,汉字“中”,其点阵编码为:0xFF、0xF7、0x81、0xB5、0x81、0xF7、0xF7、0xFF。程序中,将其编码定义为一个字符型数组: 第第6章章 ELITE-III开发应用实例开发应用实例p根据硬件电路的工作原理可知,LED点阵显示系统通过行扫描、列编码的方式实现字符的显示。因而,程序中可先让列编码锁存器U2锁存第1列的点阵编码word0,然后由行扫描锁存器U10锁存第1行扫描数据,延时一段时间如50us后,再由U2锁存第2列的编码word1,然后再由U10锁存第2行扫描数据并延时一段时间50us)。如此下去直到8行全部扫描完,再从头开始扫描。由于人眼的视觉残留现象,当扫描速度足够快时,看上去就是一个完整的汉字“中”。程序流程如图6-23所示。unsigned char word8 =0xFF,0xF7,0x81,0xB5,0x81,0xF7,0xF7,0xFFn6.3.2 1616动态点阵显示n1616点阵显示屏通常由4片88点阵显示模块组合而成市面上一般很少有1616点阵显示模块出售)。在了解了88点阵模块和点阵显示系统的工作原理及软件编程后,通过扩展锁存器和点阵模块,可以设计成1616及以上的点阵显示系统。但如果使用74HC574等并入/并出锁存器进行扩展,硬件电路设计会比较麻烦。因而,在使用多片88点阵模块设计大屏幕点阵显示器时,一般使用74HC595等串行输入/并行输出锁存器以简化硬件电路的设计,如图6-24所示。 第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例u1. 硬件电路设计硬件电路设计u图图6-24所示电路是一种采用所示电路是一种采用2片串入片串入/并出锁存器并出锁存器74HC595和和2片片3-8译码器译码器74HC138设计的设计的1616点点阵系统硬件电路。图中,阵系统硬件电路。图中,2片片74HC595U4、U5采用级联的方式构成采用级联的方式构成16位并行输出,锁存单片机串位并行输出,锁存单片机串行输出的行输出的16位列编码数据,控制位列编码数据,控制4片片88点阵模块点阵模块组合而成的组合而成的1616点阵屏的列线;点阵屏的列线;2片片74HC138采采用级联的方式,连接成用级联的方式,连接成4-16译码器,输出行扫描信译码器,输出行扫描信号。行扫描信号经驱动电路号。行扫描信号经驱动电路PNP型晶体管型晶体管9012反相放大后,控制反相放大后,控制1616点阵显示屏的行线。点阵显示屏的行线。u1616点阵屏由点阵屏由4片片88点阵模块的根据同名行、列点阵模块的根据同名行、列组合连接而成。点阵屏的显示正确与否,主要取决组合连接而成。点阵屏的显示正确与否,主要取决于两个因素:于两个因素:u一是正确的显示效果,主要靠软件编程控制来实一是正确的显示效果,主要靠软件编程控制来实现;现;第第6章章 ELITE-III开发应用实例开发应用实例二是决定待显示文字或图形本身的字模格式C51或A51)。点阵字模的提取软件很多,且每种软件都提供多种提取方式,实际使用时要根据硬件电路的设计选择可行的字模提取方式。本例使用PCtoLCD2019完美版,以C51格式提取“上午天气好等5个汉字的1616点阵字模,在点阵屏上滚动显示。2. 系统软件实现第第6章章 ELITE-III开发应用实例开发应用实例l6.4 步进电机控制步进电机控制l 步进电机是一种将电脉冲信号转换成相应的角位步进电机是一种将电脉冲信号转换成相应的角位移或转速的精密执行元件。在非超载的情况下,电机的移或转速的精密执行元件。在非超载的情况下,电机的转速、停止位置只取决于脉冲信号的频率与脉冲数,而转速、停止位置只取决于脉冲信号的频率与脉冲数,而不受电源电压、负载大小、环境条件变化的影响,给电不受电源电压、负载大小、环境条件变化的影响,给电机加一个脉冲信号,电机则转过一个步距角。机加一个脉冲信号,电机则转过一个步距角。l 步进电机采用开环控制,避免了闭环控制的复杂步进电机采用开环控制,避免了闭环控制的复杂性、减小了系统的成本,却可以获得接近闭环的良好控性、减小了系统的成本,却可以获得接近闭环的良好控制性能。基于以上优点,加上步进电机只有周期性的误制性能。基于以上优点,加上步进电机只有周期性的误差而无累积误差等特点,使得其在精确控制速度、位置差而无累积误差等特点,使得其在精确控制速度、位置等领域应用非常广泛。本节详细介绍了步进电机的特点、等领域应用非常广泛。本节详细介绍了步进电机的特点、类型、原理及技术参数和类型、原理及技术参数和ELITE-III开发板上步进电机的开发板上步进电机的控制电路及软件编程等内容。控制电路及软件编程等内容。l6.4.1 步进电机步进电机l 步进电机分为很多种,常见的步进电机实物图如图步进电机分为很多种,常见的步进电机实物图如图6-25所示:所示:l1. 步进电机的特点步进电机的特点l步进电机是一种将电脉冲信号转变为角位移或线位移步进电机是一种将电脉冲信号转变为角位移或线位移的开环控制元件,其主要特点如下:的开环控制元件,其主要特点如下:第第6章章 ELITE-III开发应用实例开发应用实例 控制精度高。一般步进电机的精度为步进角的3-5%,且不累积。 步进电机外表允许的最高温度有限。步进电机温度过高会使电机的磁性材料退磁,从而导致力矩下降乃至于失步。因而,电机外表允许的最高温度主要取决于不同电机磁性材料的退磁点。但一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机在一般工作环境下完全可以正常运行。 步进电机的力矩会随转速的升高而下降。当步进电机转动时,电机各相绕组的电感将形成一个反向电动势,且频率越高,反向电动势越大。在这个反相电动势的作用下,电机随频率或速度的增大相电流将减小,从而导致力矩下降。第第6章章 ELITE-III开发应用实例开发应用实例 步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机将不能正常启动,会出现丢步或堵转的现象。在有负载的情况下,启动频率则更低。如果要使电机达到高速转动,脉冲频率应有一个加速的过程,即启动时频率较低,然后按一定加速度升到所希望的高频电机转速应从低速升到高速)。2. 步进电机的分类常见的步进电机一般分为三种类型:永磁式PM)、反应式VR及混合式HB),各种类型步进电机的主要特点为: 永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度。 反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。 混合式步进混合了永磁式和反应式的优点,又分为两相、三相和五相等几种。其中两相步进角一般为1.8度,这种步进电机的应用最为广泛。它的步距角小,出力大,动态性能好,是目前性能最高的步进电动机,有时也被称作永磁感应式步进电动机。第第6章章 ELITE-III开发应用实例开发应用实例u3. 步进电机的工作原理步进电机的工作原理u通常步进电机的转子为永磁体,当电流流过定子通常步进电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一个矢量磁场。该磁场会带绕组时,定子绕组产生一个矢量磁场。该磁场会带动转子旋转一角度,使得某对转子的磁场方向与定动转子旋转一角度,使得某对转子的磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角子的磁场方向一致。当定子的矢量磁场旋转一个角度,转子也随着该磁场转一个角度。每输入一个电度,转子也随着该磁场转一个角度。每输入一个电脉冲,电机转子转动一个角度,即前进一步。转子脉冲,电机转子转动一个角度,即前进一步。转子输出的角位移与输入的脉冲数成正比,转速与脉冲输出的角位移与输入的脉冲数成正比,转速与脉冲频率成正比,定子绕组的通电顺序决定电机的转动频率成正比,定子绕组的通电顺序决定电机的转动方向,所以可通过控制输入脉冲的数量、频率及电方向,所以可通过控制输入脉冲的数量、频率及电机各相绕组的通电顺序来控制步进电机的转动。步机各相绕组的通电顺序来控制步进电机的转动。步进电机的内部结构如图进电机的内部结构如图6-26所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例p当三相绕组按ABCA顺序循环通电时,转子将会按顺时针方向,以每个通电脉冲转动3的规律步进式转动起来。若改变通电顺序,按ACBA顺序循环通电,则转子将按逆时针方向并以每个通电脉冲转动3的规律转动。p因为在步进电机转动的过程中,每一瞬间只有一相绕组通电,并且按三种通电状态循环通电,故称为单三拍运行方式,单三拍运行时的步矩角b为30。三相步进电动机还有另外两种通电方式:双三拍运行方式和单、双六拍运行方式。双三拍运行方式按ABBCCAAB顺序循环通电运行;单、双六拍运行方式按AABBBCCCAA顺序循环通电运行,六拍运行时的步矩角将减小一半。p反应式步进电动机的步距角可按下式计算:p b=360/NEr p式中:Er 转子齿数;p N 运行拍数,N=km,m为步进电动机的绕组相数,k=1或2。第第6章章 ELITE-III开发应用实例开发应用实例u4. 步进电机的技术参数步进电机的技术参数u步进电机的技术参数包括静态指标和动态指标两大类。步进电机的技术参数包括静态指标和动态指标两大类。u 步进电机的静态指标步进电机的静态指标u 相数。产生不同对相数。产生不同对N、S磁场的激磁线圈对数,常用磁场的激磁线圈对数,常用m表表示。示。u 拍数。完成一个磁场周期性变化所需脉冲数拍数。完成一个磁场周期性变化所需脉冲数(或指电机转或指电机转过一个齿距角所需脉冲数过一个齿距角所需脉冲数),用,用n表示。以四相步进电机为例,表示。以四相步进电机为例,有四相四拍运行方式有四相四拍运行方式A-B-C-D-A或或AB-BC-CD-DA-AB),),四相八拍运行方式四相八拍运行方式A-AB-B-BC-C-CD-D-DA-A。u 步距角。指对应一个脉冲信号,电机转子转过的角位移,步距角。指对应一个脉冲信号,电机转子转过的角位移,用用表示,表示,=360/(转子齿数(转子齿数J运行拍数)。以转子齿数为运行拍数)。以转子齿数为50齿的电机为例,四拍运行时步距角为齿的电机为例,四拍运行时步距角为=360/(504)=1.8俗称整步),八拍运行时步距角为俗称整步),八拍运行时步距角为=360/(508)=0.9俗称半步)。俗称半步)。u 定位转矩。电机在不通电状态下,电机转子自身的锁定力定位转矩。电机在不通电状态下,电机转子自身的锁定力矩,由磁场齿形的谐波以及机械误差形成。矩,由磁场齿形的谐波以及机械误差形成。第第6章章 ELITE-III开发应用实例开发应用实例 静转矩。电机在额定静态电流的作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积几何尺寸的标准,与驱动电压及驱动电源等无关。虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。 步进电机的动态指标 步距角精度。 失步。指电机运转时,运转的实际步数不等于理论上的步数。 失调角。 最大空载起动频率。 最大空载的运行频率。 运行矩频特性。 电机共振点。第第6章章 ELITE-III开发应用实例开发应用实例n6.4.2 步进电机驱动系统步进电机驱动系统n1驱动电路的组成驱动电路的组成n 步进电机需要专门的驱动电路进行驱动,驱动电路步进电机需要专门的驱动电路进行驱动,驱动电路和步进电机构成一个有机的整体。在电机一定的情况和步进电机构成一个有机的整体。在电机一定的情况下,电机的运行性能主要取决于驱动电路。下,电机的运行性能主要取决于驱动电路。n驱动电路一般由变频信号源、环形分配器、功率放大驱动电路一般由变频信号源、环形分配器、功率放大器等器等3部分组成。变频信号源是一个频率可变的脉冲部分组成。变频信号源是一个频率可变的脉冲信号发生器;脉冲分配器将脉冲信号按一定的逻辑关信号发生器;脉冲分配器将脉冲信号按一定的逻辑关系加到放大器上。变频信号源和环形分配器共同作用,系加到放大器上。变频信号源和环形分配器共同作用,产生驱动步进电机的环形脉冲序列,使步进电机按一产生驱动步进电机的环形脉冲序列,使步进电机按一定的运行方式运转;功率放大电路对脉冲信号的电流定的运行方式运转;功率放大电路对脉冲信号的电流进行放大。步进电机控制系统的基本结构如图进行放大。步进电机控制系统的基本结构如图6-27所所示。示。p环形脉冲序列可由常规数字逻辑电路、可编程逻辑芯片等硬件电路产生,也可由单片机控制系统通过软件编程产生。通过单片机控制系统软件编程产生脉冲序列,具有电路设计简单、控制灵活等优点,在条件允许的情况下,一般由单片机系统产生控制步进电机的环形脉冲序列。p实际应用中,脉冲信号的占空比一般设定为0.30.4左右。占空比越大,电机转速可调得越高。p2. 功率放大电路p功率放大电路是驱动系统中最重要的组成部分。步进电机在一定转速下的转矩取决于它的动态平均电流非静态电流),动态平均电流越大电机力矩越大。要使平均电流大,就需要驱动系统尽量克服电机的反电动势,因而不同的场合需要采取不同的的驱动方式。驱动方式一般有单一电压源、高低压切换型电源、单电压斩波恒流电源、细分电路等形式。ELITE-III开发板采用单电压斩波恒流控制芯片ULN2019设计功率放大电路,如图6-28所示。 第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例p 图中,锁存器74HC574U13接收并锁存单片机P0口输出的环形脉冲信号,其片选输入端/OC接地,锁存输入端CLK接ELITE-III开发板上地址译码器U12的/Y5LCKMOTOR),锁存器输出的环形脉冲信号经驱动芯片ULN2019U14将电流放大后,通过开发板上的电机接口驱动步进电机。第第6章章 ELITE-III开发应用实例开发应用实例n6.4.3 简单步进电机控制程序简单步进电机控制程序n 从图从图6-28可以看出,可以看出,ELITE-III开发板上的电机开发板上的电机接口为接口为6针接口,可接二相、三相、四相等步进电机。针接口,可接二相、三相、四相等步进电机。本书以四相步进电机为例,介绍简单步进电机控制程本书以四相步进电机为例,介绍简单步进电机控制程序正、反转程序的设计。序正、反转程序的设计。n1. 脉冲分配脉冲分配n四相步进电机的工作方式有四相四拍步距角四相步进电机的工作方式有四相四拍步距角1.8度度和四相八拍步距角和四相八拍步距角0.9度两种。在四相四拍方式下,度两种。在四相四拍方式下,脉冲序列可为脉冲序列可为A-B-C-D-A或或AB-BC-CD-DA-AB;在四;在四相八拍方式下,脉冲序列为相八拍方式下,脉冲序列为A-AB-B-BC-C-CD-D-DA-A。为了提高步进电机的控制精度,本例选择四相八。为了提高步进电机的控制精度,本例选择四相八拍工作方式。拍工作方式。n2. 设计思路设计思路n根据步进电机的工作特点低速时可以正常启动并运根据步进电机的工作特点低速时可以正常启动并运转,但若高于一定速度就无法启动,并伴有啸叫声),转,但若高于一定速度就无法启动,并伴有啸叫声),为了使步进电机正常启动并防止失步现象的发生,步为了使步进电机正常启动并防止失步现象的发生,步机电机应在一个较低的转速下启动,然后再现逐渐加机电机应在一个较低的转速下启动,然后再现逐渐加速到需要的转速。停止时,也应该先逐渐降低转速,速到需要的转速。停止时,也应该先逐渐降低转速,最后再停止步进电机的转动。最后再停止步进电机的转动。第第6章章 ELITE-III开发应用实例开发应用实例p因而,控制步进电机正、反转的程序应具备如下功能:p 正转加速后匀速p 正转减速后停止p 反向加速后匀速p 反向减速后停止。p控制步进电机正、反转工作的程序流程如图6-29所示。p3. 正、反转步进电机控制程序设计第第6章章 ELITE-III开发应用实例开发应用实例l6.5 A/D转换设计转换设计 l 所谓所谓 A/D 转换就是将模拟信号转换转换就是将模拟信号转换成数字信号,而成数字信号,而A/D转换器转换器ADC就是就是一种将模拟信号转换成数字信号的电子器一种将模拟信号转换成数字信号的电子器件。件。ADC的信号输入端可以是传感器或的信号输入端可以是传感器或信号变送器输出的模拟信号,输出的则信号变送器输出的模拟信号,输出的则是数字信号,主要提供给微处理器进行处是数字信号,主要提供给微处理器进行处理。理。A/D转换在控制系统中有广泛的用途。转换在控制系统中有广泛的用途。l6.5.1 A/D转换器的基本原理转换器的基本原理l 常见的常见的A/D转换器有积分型、逐次逼转换器有积分型、逐次逼近型、并行比较型近型、并行比较型/串并行型、串并行型、-调制型、调制型、电容阵列逐次比较型及压频变换型等几种,电容阵列逐次比较型及压频变换型等几种,本书以逐次逼近型和积分型本书以逐次逼近型和积分型A/D转换器为转换器为例,来介绍例,来介绍A/D转换器的基本原理及特点。转换器的基本原理及特点。l1逐次逼近式逐次逼近式A/D转换器原理转换器原理l逐次逼近式逐次逼近式A/D转换器是一种比较常见的转换器是一种比较常见的A/D转换电路,转换的时间为微秒级。逐转换电路,转换的时间为微秒级。逐次逼近式次逼近式A/D转换器由逐次逼近寄存器、转换器由逐次逼近寄存器、比较器、比较器、D/A转换器、缓冲寄存器及控制转换器、缓冲寄存器及控制逻辑电路组成,其基本原理是从高位到低逻辑电路组成,其基本原理是从高位到低位逐位试探比较,结构原理图如图位逐位试探比较,结构原理图如图6-30所所示。示。 第第6章章 ELITE-III开发应用实例开发应用实例p逐次逼近法的转换过程为:初始化时,首先将逐次逼近寄存器各位清零。转换开始后,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量VO,将VO与送入比较器的待转换模拟量Vi进行比较,若VOVi,则该位“1被保留,否则被清除。然后,置逐次逼近寄存器的次高位为1,将寄存器的新数字量送D/A转换器,输出的VO再与Vi进行比较,同样若VOVi,该位“1被保留,否则被清除。重复此过程,直至确定逐次逼近寄存器的最低位。转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,即得到数字量的输出,整个操作过程由控制逻辑电路控制执行。第第6章章 ELITE-III开发应用实例开发应用实例u2. 双积分型双积分型A/D转换器原理转换器原理u采用双积分法的采用双积分法的A/D转换器由电子开关、积分器、转换器由电子开关、积分器、比较器、计数器和控制逻辑等部件组成,其基本原比较器、计数器和控制逻辑等部件组成,其基本原理是将输入电压变换成与其平均值成正比的时间间理是将输入电压变换成与其平均值成正比的时间间隔,再把此时间间隔转换成数字量,属于间接转换。隔,再把此时间间隔转换成数字量,属于间接转换。双积分法双积分法A/D转换器原理如图转换器原理如图6-31所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例p双积分法A/D转换的过程为:先将开关接通待转换的模拟量Vi,Vi采样输入到积分器,积分器从零开始进行固定时间的正向积分。时间到后,开关再接通与Vi极性相反的基准电压VREF,将VREF输入到积分器,进行反向积分,直到输出为0V时停止积分。Vi越大,积分器输出电压就越大,反向积分时间也越长。计数器在反向积分时间内所计的数值,就是输入模拟电压Vi所对应的数字量,即实现了A/D转换。p3. A/D转换器的技术指标p A/D转换器的功能是将模拟信号转换成数字信号,其主要技术指标有以下几点:p 分辨率pADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量,常用二进制的位数表示。例如,12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/212。一个10V满刻度的12位ADC能分辨输入电压变化的最小值是10V1/212=2.4mV。第第6章章 ELITE-III开发应用实例开发应用实例p 量化误差量化误差p利用利用ADC把模拟量变为数字量,并用数字量近似的把模拟量变为数字量,并用数字量近似的表示模拟量的过程称为量化。量化误差是指表示模拟量的过程称为量化。量化误差是指ADC的的有限位数对模拟量进行量化时而引起的误差。实际有限位数对模拟量进行量化时而引起的误差。实际上,要准确表示模拟量,上,要准确表示模拟量,ADC的位数需很大甚至无的位数需很大甚至无穷大。一个有限位分辨率的穷大。一个有限位分辨率的ADC,其阶梯状转换特,其阶梯状转换特性曲线与具有无限分辨率的性曲线与具有无限分辨率的ADC转换特性曲线直转换特性曲线直线之间的最大偏差即是量化误差。线之间的最大偏差即是量化误差。p 偏移误差偏移误差p偏移误差是指输入信号为零时,输出信号不为零的偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定值,所以有时又称为零值误差。假定ADC没有非线没有非线性误差,则其转换特性曲线各阶梯中点的连线必定性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。值就是偏移误差。p 满刻度误差满刻度误差p满刻度误差又称为增益误差。满刻度误差又称为增益误差。ADC的满刻度误差是的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输指满刻度输出数码所对应的实际输入电压与理想输入电压之差。入电压之差。p 线性度线性度p线性度有时又称为非线性度,它是指转换器实际的线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。转换特性与理想直线的最大偏差。p 绝对精度绝对精度p在一个转换器中,任何数码所对应的实际模拟量输在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。入与理论模拟输入之差的最大值,称为绝对精度。对于对于ADC而言,可以在每一个阶梯的水平中点进行而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。测量,它包括了所有的误差。p 转换速率转换速率pADC的转换速率是能够重复进行数据转换的速度,的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次即每秒转换的次数。而完成一次A/D转换所需的时转换所需的时间包括稳定时间),则是转换速率的倒数。间包括稳定时间),则是转换速率的倒数。第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例n6.5.2 并行接口并行接口A/D转换器转换器n 并行接口并行接口A/D转换器指转换结果以并行通信方式转换器指转换结果以并行通信方式输出的输出的A/D转换器,其最大特点是数据传输速度快、转换器,其最大特点是数据传输速度快、控制方便、程序简单、容易理解,是单片机控制系统控制方便、程序简单、容易理解,是单片机控制系统中比较常见的一种中比较常见的一种A/D转换器。转换器。ELITE-III开发板上使开发板上使用的并行接口用的并行接口A/D转换器为转换器为ADC0804。n1. ADC0804简介简介nADC0804是一种是一种8位位CMOS逐次逼近型中速逐次逼近型中速A/D 转换转换器,片内带器,片内带8个三态输出锁存器,转换电路的输出可个三态输出锁存器,转换电路的输出可以直接连接在以直接连接在CPU数据总线上,无须附加逻辑接口电数据总线上,无须附加逻辑接口电路,转换时间大约为路,转换时间大约为100us。ADC0804的转换时序是:的转换时序是:当片选当片选/CS=0时,允许进行时,允许进行A/D 转换。转换。/WR的上升沿到的上升沿到来时,开始来时,开始A/D转换完成一次转换大约需转换完成一次转换大约需6673个个时钟周期),转换结束后产生时钟周期),转换结束后产生/INTR 信号低电平有信号低电平有效),可供效),可供CPU查询或者向查询或者向CPU发中断请求。发中断请求。CPU检检测到测到/INTR的有效信号后,使的有效信号后,使/RD有效,以读取有效,以读取A/D转转换的结果。换的结果。ADC0804的引脚如图的引脚如图6-32所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例pADC0804引脚功能及应用特性为:p /CS、/RD、/WR引脚1、2、3):数字控制输入端,满足标准TTL 逻辑电平。p CLKI、CLKR引脚4、19):内部时钟电路输出、输入端。ADC08010805 片内带有时钟电路,只要在外部CLKI和CLKR两端外接一对电阻电容即可产生A/D 转换所需要的时钟,其振荡频率为fCLK1/1.1RC。p /INTR引脚5):/INTR是转换结束信号输出端,低电平有效。当该引脚跳转为低电平时,表示本次转换已经结束,此信号可作为微处理器的中断或查询信号。第第6章章 ELITE-III开发应用实例开发应用实例 Vin(+)和Vin(-)(引脚6、7):被转换的电压信号从Vin(+)和Vin(-)输入,允许此信号是差动的或不共地的电压信号。 AGND和DGND引脚8、10):为避免数字电路对模拟电路的干扰,A/D 转换器一般都有两个接地端模拟地AGND 和数字地DGND,使数字电路的地电流不影响模拟信号回路,以防止寄生耦合造成的干扰。 VREF/2引脚9):参考电压VREF/2一般由外部电路提供,从VREF/2端直接送入,VREF/2端电压值应是输入电压范围的二分之一,所以输入电压的范围可以通过调整VREF/2引脚处的电压加以改变,转换器的零点无需调整。第第6章章 ELITE-III开发应用实例开发应用实例pADC0804的工作时序如图6-33所示。p系统需要进行A/D转换时,由CPU给ADC0804发出有效的/CS和/WR信号。当ADC0804的/CS变为有效的低电平后,在/WR上升沿到来时ADC0804开始A/D转换的准备工作,经1-8个时钟周期的准备后,开始A/D转换。A/D转换的过程需64个时钟周期,经过64个时钟周期后,A/D转换结束,再过1/2个时钟周期后,由ADC0804的/INTR脚输出转换结束信号低电平有效)。当CPU接收到A/D转换结束的信号后,发出低电平有效的读信号/RD,ADC0804收到/RD后,经135ns的延时,将A/D转换的结果送到数据总线DB0DB7上。第第6章章 ELITE-III开发应用实例开发应用实例u2. ADC0804与单片机的接口电路与单片机的接口电路u在在ELITE-III开发板上,开发板上,ADC0804与单片机的接口与单片机的接口电路图如图电路图如图6-34所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例p图中,ADC0804的DB0DB7接到单片机P0口的P0.0P0.7,向单片机P0口输出A/D转换的结果。片选端/CS接3-8译码器74HC138的/Y3Csad,译码地址A2A1A0=101),读写控制信号/RD与/WR接单片机的P37、P36,控制ADC0804的A/D转换及转换结果的输出。时钟信号由外接的RC电路提供,参考电压VREF/2接电源VCC,A/D转换的模块输出电压采用差模输入方式,Vin-接地、Vin+接模拟电压的输入。转换结束信号接单片机的P3.4,可向单片机发A/D转换结束信号下面的A/D转换控制程序未用到此脚)。为了电路设计的简便,本电路的模拟地AGND与数字地DGND未分开,都接到电路的共用地。p3. 单片机控制ADC0804程序设计p基于以上A/D转换控制电路,使用ELITE-III开发板内部电位器输入的模拟信号,并将A/D转换的结果以十进制数的形式在数码管上显示。第第6章章 ELITE-III开发应用实例开发应用实例l6.6 单片机串行通信单片机串行通信l 在较大型的控制系统中,单片机常常在较大型的控制系统中,单片机常常要与远端的设备或要与远端的设备或PC机进行通信,以控制机进行通信,以控制远端的设备或者和远端的设备或者和PC机交换数据。使用机交换数据。使用80C51单片机自身的串行通信模块,可以单片机自身的串行通信模块,可以方便地实现单片机之间的点对点、点对多方便地实现单片机之间的点对点、点对多点以及与点以及与PC机的通信。本章将介绍串行通机的通信。本章将介绍串行通信的一般知识,信的一般知识,80C51单片机的单片机的UART串串行接口的结构、原理以及单片机串行通信行接口的结构、原理以及单片机串行通信的实现方法。的实现方法。l6.6.1 串行通信的基础知识串行通信的基础知识l1并行通信和串行通信并行通信和串行通信l 单片机通信是指单片机与外部器件、单片机通信是指单片机与外部器件、单片机与单片机,以及单片机与计算机之单片机与单片机,以及单片机与计算机之间的信息交换。基本的通信方式有并行通间的信息交换。基本的通信方式有并行通信和串行通信两种方式。信和串行通信两种方式。l(1) 并行通信方式并行通信方式第第6章章 ELITE-III开发应用实例开发应用实例并行通信方式是将数据字节的各位用多条数据线同时进行传送,每一位占用一条通信线,另外还需要联络线协调单片机和外部器件之间的工作。其优点是有较高的传输速率,缺点是传输线较多,长距离传送时接收方的各位接收信号困难,接收电路复杂、成本高,因此传输距离受到限制。这种方式多用于近距离的数据传输,示意图如图6-35所示:第第6章章 ELITE-III开发应用实例开发应用实例p(2) 串行通信方式p串行通信是将数据字节分成一位一位的形式,按时间先后在一条传输线上逐位的传输。其优点是传输线路少,长距离传输时成本低,特别适用于远距离通信,缺点是传输速度较慢。示意图如图6-36所示:p2串行通信的两种基本方式p串行通信分为异步通信和同步通信两种基本方式。p(1) 异步通信方式第第6章章 ELITE-III开发应用实例开发应用实例异步通信是指发送与接收设备使用各自的时钟控制数据的发送与接受过程。通信双方可以有各自独立的时钟,时钟频率可以不相同。示意图如图6-37所示:异步通信的数据传送一般以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的,相邻两字符间的间隔是任意长。接收端时刻做好接受的准备,发送端可以在任意时刻发送数据,每传送一个字符都要加上起始位和停止位,以便接收端能够将一个字符完整的接收下来。异步通信的数据格式字符格式描述如下图6-38所示。第第6章章 ELITE-III开发应用实例开发应用实例起始位为0信号,占用一位,用来表示一帧信息的开始;其后就是数据位,可以为58位,传送时低位在先、高位在后;再后面的是奇偶校验位即可编程位),只占一位;最后是停止位,它用逻辑1来表示一帧信息的结束,可以是1位、1位半或2位。(2) 同步通信方式同步通信方式要求发收双方具有同频同相的同步时钟信号,使双方达到完全同步。数据传送是以数据块一组字符为单位,字符与字符之间、字符内部的位与位之间都同步。此时,传输数据的位之间的距离均为“位间隔的整数倍,同时传送的字符间不留间隙,即保持位同步的关系,也保持字符同步的关系。发送端首先发送一个或两个同步字符,当发送方和接收方达到同步后,就可以一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。第第6章章 ELITE-III开发应用实例开发应用实例发送方对接收方的同步可以通过外同步和自同步两种方法来实现,如下图6-39所示。3单片机串行口简介为了使单片机能够实现串行通信,80C51系列单片机芯片的内部设计了UART串行接口,它是一个全双工的串行通信端口,能够同时进行接收和发送数据。其帧格式有8位、10位和11位三种,能够设置各种波特率,使用方便、灵敏。80C51串行口的结构如图6-40所示,在进行串行通信时,外部数据通过RXD(P3.0)输入。输入数据首先逐位进入移位寄存器,将串行数据转换为并行数据,再送入接收寄存器。发送时,要发送的数据通过发送端的控制逻辑门电路逐位通过TXD(P3.1)输出。第第6章章 ELITE-III开发应用实例开发应用实例p(1) 数据缓冲寄存器SBUFp两个物理上独立的接收、发送缓冲器寄存器SBUF,它们占用同一地址99H。读写不会因为是同一地址产生冲突,因为CPU读数据就是读接收器寄存器,CPU写数据就是写发送寄存器。p(2) 状态控制寄存器SCONpSCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志,既可按字节寻址也可按位寻址,字节地址位98H,位地址为98H9FH。各位定义如下所示:第第6章章 ELITE-III开发应用实例开发应用实例 SM0和SM1为工作方式选择位,可选择四种工作方式,如表6-3所示: 在方式0中,SM置为0;在方式1中,当串行口处于接收状态时,若SM2=1,只有接收到有效地停止位才将RI置1;在方式2和方式3中,SM2主要用于进行多机通信控制。当SM2=1且RB=1,则RI置1,产生中断请求,将接收到的8位数据送入SBUF。当SM2=0,不管RB是否为1,都将接收到的8位数据送入SBUF,并产生中断。 REN=1时,允许接收;REN=0时,禁止接收。第第6章章 ELITE-III开发应用实例开发应用实例 在方式2或方式3中RB8和TB8相呼应。 方式0中,发送完8位数据后,由硬件置TI=1,其他方式中,在发送停止位之初就由硬件置TI=1。 方式0中,接收完8位数据后,由硬件置RI=1,其他方式中,在接收停止位中间由硬件置RI=1。(3) 串行口初始化设置 在串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和终端控制。具体步骤如下: 确定定时器T1的工作方式(编程TMOD寄存器); 计算定时器T1的初值,装TH1、TL1; 启动定时器T1(编程TCON中的TR1位); 确定串行口控制(编程SCON寄存器); 串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。第第6章章 ELITE-III开发应用实例开发应用实例p在串行通信中,收发双方对发送或接受数据的速率(波特率)要有约定。以串行口工作方式1,SMOD=0为例,它的波特率计算方法如下:p方式1的波特率(2SMOD/32)(T1的溢出率) p当T1作为波特率发生器时,最典型的用法是使T1工作在自动在装入的8位定时器方式下(即定时器的方式2,且TCON的TR1=1,以启动定时器),这时溢出率取决于TH1中的计数值。pT1溢出率=fosc/12(256TH1) /fosc为单片机的频率(11.0592MHz)第第6章章 ELITE-III开发应用实例开发应用实例n6.6.2 单片机与单片机与PC机的通信机的通信n 单片机和单片机和PC机的串行通信一般采用机的串行通信一般采用RS-232C、RS-422或或RS-485总线标准接口。为保证通信的可靠,总线标准接口。为保证通信的可靠,在选择接口时必须注意:在选择接口时必须注意:(1)通信的速率;通信的速率;(2)通信距通信距离;离;(3)抗干扰能力;抗干扰能力;(4)组网方式。这里介绍采用组网方式。这里介绍采用RS-232C接口与单片机通信的方法。接口与单片机通信的方法。n RS-232C是在是在RS-232基础上经过改进而形成的。基础上经过改进而形成的。RS-232C标准是标准是1969年由美国年由美国EIA(电子工业联合会电子工业联合会)与与BELL等公司一起开发公布的一种串行通信协议,等公司一起开发公布的一种串行通信协议,它适合于数据传输速率在它适合于数据传输速率在020kb/s范围内的通信。由范围内的通信。由于通行设备厂商都生产与于通行设备厂商都生产与RS-232制式兼容的通信设备,制式兼容的通信设备,因而,它作为一种标准,目前已在计算机通信接口中因而,它作为一种标准,目前已在计算机通信接口中广泛应用。广泛应用。u1单片机与单片机与PC机的通信电路机的通信电路uRS-232C标准规定的逻辑电平使用标准规定的逻辑电平使用-3V-15V表示表示逻辑逻辑“1”,使用,使用+3V+15V表示逻辑表示逻辑“0”,与,与TTL等数字电路的逻辑电平不兼容,因此单片机和等数字电路的逻辑电平不兼容,因此单片机和PC机之间相互连接时必须先进行逻辑电平的转换。机之间相互连接时必须先进行逻辑电平的转换。这里选用这里选用MAX232作为电平转换芯片,它与作为电平转换芯片,它与RS-232接口的连接电路图如下图接口的连接电路图如下图6-41所示,其中所示,其中RS-232接接口的第口的第2脚是脚是TXD,第,第3脚是脚是RXD。第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例u2单片机与单片机与PC机的通信程序设计机的通信程序设计u(1) 查询方式串行通信查询方式串行通信u单片机以查询方式接收单片机以查询方式接收PC机发送数据的程序流程机发送数据的程序流程如图如图6-42所示所示P1接发光二极管)。接发光二极管)。程序如下:#include#define uchar unsigned charuchar a;void main() TMOD=0x20;/设置定时器工作方式TL1=0xfd;TR1=1;TH1=0xfd;/设置波特率9600SCON=0x50;while(1)if(RI) RI=0;a=SBUF;P1=a; 第第6章章 ELITE-III开开发应用用实例例第第6章章 ELITE-III开发应用实例开发应用实例p(2) 中断方式串行通信p查询方式虽然可以实现单片机与PC机的串行通信,但程序需停在此处不断查询标志位RI的状态,占用了CPU的资源。实际应用中,常以串口中断的方式实现单片机与PC机的串行通信。一个以串口中断的方式实现PC机与单片机之间进行字符串传输的中断服务子程序流程如图6-43所示。第第6章章 ELITE-III开发应用实例开发应用实例n6.6.3 单片机之间的通信n 80C51的方式2和方式3可以被用于多机通信,也可以方便的应用在多机分布式系统之中。在这种方式中通常采用一个主机和多个从机的方式。n1两个单片机之间的通信n双机通信也称为点对点的异步通信。利用单片机的串行口,可以实现单片机与单片机的串行通信。如果两个单片机之间的距离较短,可以直接连接两个单片机的串行端口,连接时将一方的TXD和另一方的RXD相连。当两个单片机的距离较远时,采用RS-232或者RS-422标准总线接口进行双机通信,可使通信距离增加到15m120m。n图6-44所示是两个80C51间进行点对点双机异步通信的连接方法,信号采用RS-232电平传输,并用MAX232芯片进行电平转换。第第6章章 ELITE-III开发应用实例开发应用实例u2串行多机通信串行多机通信u 在实际应用中,经常会遇到多个单片机协调在实际应用中,经常会遇到多个单片机协调工作的情况,这就需要构建一个点对多点的分布式工作的情况,这就需要构建一个点对多点的分布式多机通信系统,多机通信系统,80C51的方式的方式2和方式和方式3可以被用于可以被用于多机通信。在这种方式中通常采用一个主机和多个多机通信。在这种方式中通常采用一个主机和多个从机的方式。从机的方式。u(1) 硬件连接硬件连接第第6章章 ELITE-III开发应用实例开发应用实例单片机构成的多机系统常采用总线型主从式结构。所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机要服从主机的调度和支配。AT89C52单片机的串行口方式2和方式3就适于这种主从式的通信结构。当然采用不同的通信标准时,还需进行相应的电平转换,有时还要对信号进行光电隔离。在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输,示意图如下图6-45所示。第第6章章 ELITE-III开发应用实例开发应用实例p(2) 通信协议p 在点对多点的多机通信系统中,关键问题是如何识别各个点。这主要是靠主、从机之间正确地设置与判断多机通信控制位SM2和发送接收的第9位数据来实现。p 点对多点通信的流程如下:p 所有从机处于方式2或方式3状态,同时置SM2位为1,使从机处于接收地址帧状态。p 主机置TB8=1,发送一地址帧,其中8位是地址,第9位为地址帧/数据帧的区分标志,该位置1表示该帧为地址帧。p 所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0以接收主机随后发来的数据帧),并把本机地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。第第6章章 ELITE-III开发应用实例开发应用实例 主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号,保持TB8=1;如果地址相符,则置TB8=0,开始发送数据。 从机接收数据结束后,要发送一帧校验和,并置第9位TB8为1,作为从机数据传送结束的标志。 主机接收校验帧时先判断数据接收标志RB8),若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号0x00,此信号命令该从机复位即重新等待地址帧);若校验和出错,则发送0xFF,命令该从机重发数据。若接收帧的RB8=0,则存数据到缓冲区,并准备接收下帧信息。 从机收到复位命令后回到监听地址状态SM2=1),否则开始接收数据和命令。第第6章章 ELITE-III开发应用实例开发应用实例l6.7 I2C总线技术总线技术l 近年来,芯片间的串行数据传输技术被大近年来,芯片间的串行数据传输技术被大量采用,串行扩展接口和串行扩展总线的设置大量采用,串行扩展接口和串行扩展总线的设置大大简化了系统结构。由于串行总线连接线少,总大简化了系统结构。由于串行总线连接线少,总线的结构比较简单,不需要专用的接口,可以直线的结构比较简单,不需要专用的接口,可以直接用导线连接各种芯片,因而,采用串行总线可接用导线连接各种芯片,因而,采用串行总线可以使系统的硬件设计简化,系统的体积减小,可以使系统的硬件设计简化,系统的体积减小,可靠性提高,同时,系统易于更改和扩充。靠性提高,同时,系统易于更改和扩充。l 目前,单片机应用系统中使用的串行总线目前,单片机应用系统中使用的串行总线主要采用主要采用I2C总线、总线、SPI总线、总线、1-Wire总线和总线和SMBUS等几种方式。这里主要对等几种方式。这里主要对I2C总线进行介总线进行介绍。绍。l6.7.1 I2C总线总线l I2C总线是总线是PHLIPS公司推出的一种串行总公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高能串行总线。低速器件同步功能的高能串行总线。l1I2C总线的基本结构总线的基本结构lI2C只有两根双向信号线,一根是数据线只有两根双向信号线,一根是数据线SDA,另一根是时钟线,另一根是时钟线SCL。所有连接到。所有连接到I2C总总线上的设备,其串行数据都接到总线的线上的设备,其串行数据都接到总线的SDA线上,线上,而各设备的时钟均接到总线的而各设备的时钟均接到总线的SCL线上,线上,I2C总总线的基本结构如图线的基本结构如图6-46所示。所示。 第第6章章 ELITE-III开发应用实例开发应用实例p为了进行通信,每个接到I2C总线上的器件都有唯一的地址。主机与其他器件间进行数据传送时,数据由主机发送到其他器件,这时主机称为发送器,接受数据的器件则为接收器。p2数据传输p(1) 数据位的有效性规定pI2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟信号为低电平期间,数据线上的高电平或低电平状态才允许变化,时序图如图6-47所示。第第6章章 ELITE-III开发应用实例开发应用实例p(2) 起始和停止条件pI2C总线的协议规定:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号。SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号,示意图如图6-48。起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。第第6章章 ELITE-III开发应用实例开发应用实例接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接受下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态,直到接收器件准备好接受下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。第第6章章 ELITE-III开发应用实例开发应用实例p(3) 数据传送格式p 字节传送与应答第第6章章 ELITE-III开发应用实例开发应用实例当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答来实现的,然后从机释放SDA线,以允许主机产生终止信号。 数据帧格式I2C总线上传送的数据信号是广义的,既包括了地址信号,又包括了真正的数据信号。在起始信号后必须传送一个从机的地址7位),第8位是数据的传送方向位R/T),用“0表示主机发送数据T),用“1表示主机接收数据R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,只需马上再次发出起始信号对另一从机进行寻址即可。因而,在总线的一次数据传送过程中,可以有以下几种组合方式:a主机向从机发送数据,数据传送方向在整个传送过程中不变,其数据传送格式如下图6-50所示。第第6章章 ELITE-III开发应用实例开发应用实例b. 主机由从机处读取数据,在整个传输过程中除寻址字节外,都是从机发送、主机接收,其数据传送格式如下图6-51所示。c. 主机既向从机发送数据也接受数据,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,两次读、写方向正好相反,其数据传送格式如下图6-52所示。第第6章章 ELITE-III开发应用实例开发应用实例由以上格式可见,无论那种方式,起始信号、终止信号和地址均由主机发送,数据字节的传送方向由寻址字节中方向位规定,每个字节的传送都必须有应答信号位A或A相随。需注意,寻址字节只表明器件地址及传送方向,而器件内部的数据地址是由编程者在传送的第一个数据中指定的,即第一个数据为器件内的子地址。 总线的寻址约定 I2C总线协议有明确的规定,即采用7位的寻址字节寻址字节是起始信号后的第一个字节)。(1)寻址字节的位定义如下图6-53所示: D7D1位组成从机的地址,D0位是数据传送方向位,D0为“0时,表示主机向从机写数据,D0为“1时,表示主机由从机读数据。第第6章章 ELITE-III开发应用实例开发应用实例主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,然后根据R/T位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中的可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。 3总线竞争与仲裁在多单片机系统中,可能在某一时刻有两个单片机要同时向总线发送数据,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则如下:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可行性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。第第6章章 ELITE-III开发应用实例开发应用实例n6.7.2 串行串行EEPROM AT24C02n EEPROM(Electrically Erasable Programmable Read-Only Memory),电可擦,电可擦可编程只读存储器是一种掉电后数据不丢失的可编程只读存储器是一种掉电后数据不丢失的存储芯片。存储芯片。EEPROM可以在计算机或专用设可以在计算机或专用设备上擦除已有信息,重新编程,一般用于即插备上擦除已有信息,重新编程,一般用于即插即用即用Plug & Play接口卡中,用来存放硬接口卡中,用来存放硬件的设置数据,在防止软件非法拷贝的件的设置数据,在防止软件非法拷贝的“硬件硬件锁上面也能找到它。锁上面也能找到它。n1AT24C02简介简介nAT24C02是由是由ATMEL公司生产的基于公司生产的基于I2C总总线的串行线的串行EEPROM的典型产品,其容量为的典型产品,其容量为1KB,工作电压在,工作电压在1.8V 5.5V之间,采用之间,采用CMOS生产工艺,其引脚图如图生产工艺,其引脚图如图6-54所示。所示。nAT24C02的功能表如表的功能表如表6-4所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例u2AT24C02与单片机的接口电路与单片机的接口电路uAT24C02与单片机的接口电路图如图与单片机的接口电路图如图6-55所示。所示。u3AT24C02数据的读写数据的读写第第6章章 ELITE-III开发应用实例开发应用实例l6.8 特殊总线串行通信特殊总线串行通信l 本节我们将以一线总线数字温度传感器本节我们将以一线总线数字温度传感器DS18B20为例,介绍为例,介绍51系列单片机的特殊总线串系列单片机的特殊总线串行通信,并通过单片机实现温度测量。行通信,并通过单片机实现温度测量。l6.8.1 数字温度传感器数字温度传感器DS18B20l1DS18B20简介简介lDS18B20 是是Dallas半导体公司推出的一线总线数半导体公司推出的一线总线数字化温度传感器,它可以在进行现场温度数据采字化温度传感器,它可以在进行现场温度数据采集的同时,将温度数据直接转换成数字量输出。集的同时,将温度数据直接转换成数字量输出。此外,一线总线独特而且经济的特点,使得用户此外,一线总线独特而且经济的特点,使得用户可以很方便地组建传感器网络,为测量系统的构可以很方便地组建传感器网络,为测量系统的构建引入了全新的概念。建引入了全新的概念。lDS18B20测量温度范围为测量温度范围为-55125,其中在,其中在-10+85的范围内,精度为的范围内,精度为0.5,支持,支持3V5.5V的电压范围,使系统设计更灵活、方的电压范围,使系统设计更灵活、方便。现场温度直接以便。现场温度直接以“一线总线的数字方式传一线总线的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,主要用于环境控制、设备或境的现场温度测量,主要用于环境控制、设备或过程控制、测温类消费电子产品中。过程控制、测温类消费电子产品中。 第第6章章 ELITE-III开发应用实例开发应用实例pDS18B20内部结构主要由64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL以及内部存储器等部分组成。p(1) 64位光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位0x28是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码CRC=X8+X5+X4+1)。每一个DS18B20的地址序列码各不相同,这样就可以实现在一根总线上挂接多个DS18B20的目的。p(2) DS18B20中的温度传感器可完成对温度的检测。以12位转化为例,读数用16位符号扩展的二进制补码形式提供,以0.0625/LSB形式表达,其中S为符号位。表6-5为DS18B20温度值格式表。第第6章章 ELITE-III开发应用实例开发应用实例(3) DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度触发器TH、低温度触发器TL和结构寄存器。图6-56所示为DS18B20的外形和管脚排列,其内部结构如图6-57。DS18B20的引脚含义如下。DQ:数字信号输入、输出端。GND:电源地。VDD:外接供电电源输入端。第第6章章 ELITE-III开发应用实例开发应用实例pDS18B20的测温原理如图6-58所示,图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振的振荡频率随温度变化其值明显改变,它所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1。此时计数器1的预置将重新被装入,计数器 1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图6-58中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。第第6章章 ELITE-III开发应用实例开发应用实例u2DS18B20的寄存器的寄存器uDS18B20具有具有9个字节高速缓存,其地址分配如表个字节高速缓存,其地址分配如表6-6所示。字节所示。字节0和字节和字节1为只读寄存器,分别存储为只读寄存器,分别存储温度数据的温度数据的LSB和和MSB;字节;字节2和字节和字节3为上限报为上限报警触发寄存器警触发寄存器TH和下限报警触发寄存器和下限报警触发寄存器TL;字节;字节4包含配置寄存器数据;字节包含配置寄存器数据;字节5、6和和7保留作为器件保留作为器件内部使用,不能被改写,读该寄存器时,返回值为内部使用,不能被改写,读该寄存器时,返回值为0xff;字节;字节8是只读的,含有字节是只读的,含有字节0字节字节7的的CRC校验值。校验值。第第6章章 ELITE-III开发应用实例开发应用实例p高速暂存寄存器的第4个字节是配置寄存器,它的结构如下所示。p用户可以用配置寄存器的R0和R1位设置DS18B20的转换分配率。其中,R0和R1在上电复位后的默认值都是1,代表12位分辨率。第7位和第04位保留作为内部使用,其值不能改写,在读取时这些位将返回值1。DS18B20的转换分配率如表6-7所示。 第第6章章 ELITE-III开发应用实例开发应用实例u3DS18B20的读写的读写u主机在与主机在与DS18B20进行通信之前,需要完成初始进行通信之前,需要完成初始化序列,如图化序列,如图6-59所示为主机初始化过程的所示为主机初始化过程的“复位复位和存在脉冲和存在脉冲”。其中存在脉冲表示。其中存在脉冲表示DS18B20已经准已经准备好发送或接收主机发出的正确的备好发送或接收主机发出的正确的ROM命令和存命令和存储器操作命令的数据。储器操作命令的数据。第第6章章 ELITE-III开发应用实例开发应用实例p总线主机发送TX一个复位脉冲最短为480s的低电平信号),接着总线主机便释放此线并进入接收方式RX)。单线总线经过电阻被拉到高电平状态。在检测到I/O引脚上的上升沿之后,DS18B20等待1560us并且接着发送存在脉冲60240us的低电平信号。p当主机把数据线从逻辑高电平拉至逻辑低电平时,产生写时间片。有两种类型的写时间片:写1时间片和写0时间片。所有时间片必须有最短为60us的持续期,在各周期之间必须有最短为1us的恢复时间。p在I/O线由高电平变为低电平之后,DS18B20在1560us的窗口之间对I/O线采样。如果I/O线为高电平,则发生写1时间片,反之,如果I/O线为低电平,便发生写0时间片。如图6-60所示为DS18B20的写时序。对于主机产生写1时间片的情况,数据线必须先被拉至逻辑低电平,然后被释放,数据线在写时间片开始之后的15us之内拉至高电平。第第6章章 ELITE-III开发应用实例开发应用实例p当从DS18B20读数据是,主机产生读时间片。当主机把数据线从逻辑高电平拉至低电平时,产生读时间片。数据线必须保持在逻辑低电平至少1us;来自DS18B20的输出数据在读时间片下降沿之后的15us有效,因此在读时间片产生15us后,主机必须停止其它工作,把I/O引脚驱动至低电平。在读时间片结束时,I/O引脚经过外部的上拉电阻拉回至高电平。读时间片的最短持续时间为60us,各个读时间片之间必须有最短为1us的恢复时间。如图6-61所示为DS18B20读时序。 第第6章章 ELITE-III开发应用实例开发应用实例u4DS18B20的指令的指令u(1) DS18B20芯片芯片ROM指令表:指令表:uRead ROM读读ROM)33H 这个命令允许总线这个命令允许总线控制器到控制器到DS18B20的的64位位ROM。只有总线上存在。只有总线上存在一个一个DS18b20的时侯可以使用次指令,如果挂接不的时侯可以使用次指令,如果挂接不知一个,当通信时将会发生数据冲突。知一个,当通信时将会发生数据冲突。uMatch ROM(指定匹配芯片指定匹配芯片)55H 这条指令使芯这条指令使芯片不对片不对ROM编码做出反应,在总线的情况下,为编码做出反应,在总线的情况下,为了节省时间则可以选用次指令。如果在多芯片挂接了节省时间则可以选用次指令。如果在多芯片挂接时时使用次指令将会出现数据冲突,导致错误出现。时时使用次指令将会出现数据冲突,导致错误出现。第第6章章 ELITE-III开发应用实例开发应用实例Skip ROM(跳跃跳跃ROM指令指令)CCH 这条指令不对这条指令不对ROM编码做出反应,在单总线的清况之下,为了节编码做出反应,在单总线的清况之下,为了节省时间则可选用次指令。如果在多芯片挂接时使用省时间则可选用次指令。如果在多芯片挂接时使用次指令将会出现数据冲突,导致错误出现。次指令将会出现数据冲突,导致错误出现。Search ROM(搜索芯片搜索芯片)FOH 在芯片初始化后,搜在芯片初始化后,搜索指令允许总线上挂节多芯片时用排除法识别所以索指令允许总线上挂节多芯片时用排除法识别所以器件的器件的54位位ROM。Alarm Search报警芯片搜索)报警芯片搜索)ECH 在多芯片挂接在多芯片挂接的情况下,报警芯片搜索指令只对附和温度高于的情况下,报警芯片搜索指令只对附和温度高于TH或小于或小于TL报警条件的芯片做出反应。只要芯片不掉报警条件的芯片做出反应。只要芯片不掉电,报警状态将被保持,直到再一次测得温度达不电,报警状态将被保持,直到再一次测得温度达不到报警条件为止。到报警条件为止。2) DS18B20芯片存储器操作指令表芯片存储器操作指令表:Write Scratchpad (向向RAM中写数据中写数据)4EH 这是向这是向RAM中写入数据的指令,随后写入两个字节的数据中写入数据的指令,随后写入两个字节的数据将会被存到地址将会被存到地址2报警报警RAM的的TH和地址和地址3报警报警RAM的的TL)。写入过程中可以用复位信号中止写入。)。写入过程中可以用复位信号中止写入。第第6章章 ELITE-III开发应用实例开发应用实例Read Scratchpad (从(从RAM中读数据)中读数据)BEH 此指令将从此指令将从RAM中读数据,读地址从地址中读数据,读地址从地址0开始,一直到地址开始,一直到地址9,完成,完成整个整个RAM数据的读出。芯片允许在读过程中用复位信号终数据的读出。芯片允许在读过程中用复位信号终止读取,及可以不读后面不需要的字节以减少读取时间。止读取,及可以不读后面不需要的字节以减少读取时间。Copy Scratchpad将将RAM数据复制到数据复制到EEPROM中)中)48H 此指令将此指令将RAM中的数据存入中的数据存入EEPROM中,以使数中,以使数据掉电不丢失。此后由于芯片忙于据掉电不丢失。此后由于芯片忙于EEPROM存储处理,当存储处理,当控制器发一个读时间隙时,总线上输出控制器发一个读时间隙时,总线上输出“0”,当存储工,当存储工作完成时,总线将输出作完成时,总线将输出“1”。在寄生工作方式时必须在。在寄生工作方式时必须在发出此指令后立刻用上拉并至少保持发出此指令后立刻用上拉并至少保持10MS,来维持芯片工来维持芯片工作。作。Convert T温度转换)温度转换)44H 收到此指令后芯片将收到此指令后芯片将进行一次温度转换,将转换温度值放入进行一次温度转换,将转换温度值放入RAM的第的第1、2地址地址。此后由于芯片忙于温度转换处理,当处理器发一个读数。此后由于芯片忙于温度转换处理,当处理器发一个读数据时间隙时,总线上输出据时间隙时,总线上输出“0”,当存储工作完成时,总,当存储工作完成时,总线将输出线将输出“1”。在寄生工作方式时必须在发出次指令后。在寄生工作方式时必须在发出次指令后立即用上拉并至少保持立即用上拉并至少保持500MS,来维持芯片工作。,来维持芯片工作。Recall EEPROM将将EEPROM中的报警值复制到中的报警值复制到RAM)B8H 此指令将此指令将EEPROM中的报警值复制到中的报警值复制到RAM中的第中的第3、4个字节里。由于芯片忙于复制处理,当控制器个字节里。由于芯片忙于复制处理,当控制器发生一个读时间隙时,总线上输出发生一个读时间隙时,总线上输出“0”,当储存工作完,当储存工作完成时,总线将输出成时,总线将输出“1”。另外,此指令将在芯片上电复。另外,此指令将在芯片上电复位时将被自动执行。这样位时将被自动执行。这样RAM中的两个报警字节位将始终中的两个报警字节位将始终为为EEPROM中数据的镜像。中数据的镜像。第第6章章 ELITE-III开发应用实例开发应用实例ad Power Supply工作方式切换)工作方式切换)B4H 此指令发此指令发出后发出读时间隙,芯片会返回它的电源状态字,出后发出读时间隙,芯片会返回它的电源状态字,“0为寄生电源状态,为寄生电源状态,“1为外部电源状态。为外部电源状态。5DS18B20与单片机的接口电路与单片机的接口电路DS18B20具有独特的单线接口方式,在与微处理器具有独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。如图的双向通讯。如图6-62将单片机将单片机P15口与口与DS18B20的的2号引脚数据输入输出引脚相连。号引脚数据输入输出引脚相连。6DS18B20测温程序测温程序第第6章章 ELITE-III开发应用实例开发应用实例n6.8.2 时钟芯片时钟芯片DS1302n 本节首先介绍了本节首先介绍了DS1302着款芯片的主要着款芯片的主要特性以及寄存器的内容,然后给出了与单片机特性以及寄存器的内容,然后给出了与单片机的硬件接口电路,并给出了参考例程。的硬件接口电路,并给出了参考例程。n1DS1302简介简介nDS1302 是美国是美国DALLAS公司推出的一种高公司推出的一种高性能、低功耗、带性能、低功耗、带RAM的实时时钟电路,它的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与。采用三线接口与CPU进行同步通信,进行同步通信,并可采用突发方式一次传送多个字节的时钟信并可采用突发方式一次传送多个字节的时钟信号或号或RAM数据。数据。DS1302内部有一个内部有一个318的用的用于临时性存放数据的于临时性存放数据的RAM寄存器。寄存器。DS1302是是DS1202的升级产品,与的升级产品,与DS1202兼容,但增加兼容,但增加了主电源了主电源/后背电源双电源引脚,同时提供了后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。对后背电源进行涓细电流充电的能力。n如图如图6-63所示为所示为DS1302引脚图。引脚图。 第第6章章 ELITE-III开发应用实例开发应用实例p如表6-8所示为DS1302引脚说明。p2DS1302的寄存器pDS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表6-9所示:pDS1302有关日历、时间的寄存器共有12个,其中有7个寄存器读时81h8Dh,写时80h8Ch),存放的数据格式为BCD码形式。 第第6章章 ELITE-III开发应用实例开发应用实例p小时寄存器85h、84h的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5为0,表示AM;为1,表示PM。在24小时模式时,位5是第二个10小时位。p 秒寄存器81h、80h的位7定义为时钟暂停标志CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。p控制寄存器8Fh、8Eh的位7是写保护位WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。第第6章章 ELITE-III开发应用实例开发应用实例u3DS1302与单片机的接口与单片机的接口u下面对硬件电路,如图下面对硬件电路,如图6-64所示为所示为DS1302接接口电路,作具体说明如下:口电路,作具体说明如下:u(1) VCC:与:与+5V电压输入端相连作为电压输入端相连作为DS1302工工作时的供电电源。作时的供电电源。u(2) 晶振:晶振:X1和和X2直接和直接和32.768kHz的晶振两端相的晶振两端相连。连。u(3) 数字部分:数字部分:P11、P12、RST1302分别和单片分别和单片机的同名引脚相连,数据的输入和输出都通过机的同名引脚相连,数据的输入和输出都通过P12这个脚来实现。这个脚来实现。RST由单片机的由单片机的P14经经74HC574锁锁存得到。存得到。u需要注意的是需要注意的是DS1302的的1脚悬空,没有接备用电源,脚悬空,没有接备用电源,所以每次系统断电后要重新设置所以每次系统断电后要重新设置DS1302,它才能,它才能正常工作。正常工作。第第6章章 ELITE-III开发应用实例开发应用实例l6.9 LCD显示模块的驱动设计显示模块的驱动设计l 单片机应用系统的显示输出设备除单片机应用系统的显示输出设备除了发光二极管、数码管外,还经常使用各了发光二极管、数码管外,还经常使用各种规格的液晶显示器种规格的液晶显示器LCD显示器)。显示器)。LCD显示器英文全称为显示器英文全称为Liquid Crystal Display,是利用液晶的特殊物理性质,在,是利用液晶的特殊物理性质,在外加电场的作用下改变液晶分子排列状态,外加电场的作用下改变液晶分子排列状态,从而调节透光率的一种被动型显示器件。从而调节透光率的一种被动型显示器件。由于液晶显示屏的每一个点收到信号后一由于液晶显示屏的每一个点收到信号后一直保持色彩和亮度,恒定发光,不需要不直保持色彩和亮度,恒定发光,不需要不断地刷新,所以不存在闪烁现象。同时,断地刷新,所以不存在闪烁现象。同时,液晶显示器还具有工作电压低、体积小、液晶显示器还具有工作电压低、体积小、微功耗、无辐射等优点,和单片机的连接微功耗、无辐射等优点,和单片机的连接和控制也更简便。因此被广泛应用于各种和控制也更简便。因此被广泛应用于各种仪器仪表、便携设备、数码产品等领域。仪器仪表、便携设备、数码产品等领域。l6.9.1 LCD12864液晶显示模块液晶显示模块l 液晶显示模块是一种将液晶显示器件、液晶显示模块是一种将液晶显示器件、连接件、集成电路、连接件、集成电路、PCB线路板、背光源、线路板、背光源、结构件装配在一起的组件,英文名称叫结构件装配在一起的组件,英文名称叫“LCD Module”,简称,简称“LCM”,中文一般,中文一般称为称为“液晶显示模块液晶显示模块”。下面以。下面以HS12864-1液晶显示模块为例介绍单片机对液晶显示液晶显示模块为例介绍单片机对液晶显示模块的控制。模块的控制。第第6章章 ELITE-III开发应用实例开发应用实例u1. 概述概述uHS12864-1液晶显示模块是一种图形点阵液晶显示液晶显示模块是一种图形点阵液晶显示器,它主要由行驱动器器,它主要由行驱动器/列驱动器及列驱动器及12864全点阵全点阵液晶显示器组成,可完成图形和汉字液晶显示器组成,可完成图形和汉字(1616点阵点阵)显示,其中汉字可显示显示,其中汉字可显示32个每行个每行8个)。个)。u主要技术参数和性能:主要技术参数和性能:u 电源电源+5V,模块内自带,模块内自带-10V负压,用于负压,用于LCD的的驱动电压;驱动电压;u 显示内容显示内容128(列列)64(行行)点;点;u 全屏幕点阵;全屏幕点阵;u 七种指令;七种指令;u 与与CPU接口采用接口采用8位数据总线并行输入位数据总线并行输入/输出和输出和8条控制线;条控制线;u 占空比占空比1/64;u 工作温度工作温度-10+55,存储温度,存储温度-20+60 第第6章章 ELITE-III开发应用实例开发应用实例u2. 外形尺寸外形尺寸u HS12864-1液晶显示模块的外围尺寸:液晶显示模块的外围尺寸:113.065.013.0mm;u有效区域:有效区域:73.438.8mm;u点大小:点大小:0.4580.458mm;u其外形如图其外形如图6-65所示。所示。第第6章章 ELITE-III开发应用实例开发应用实例u3. 模块主要硬件构成模块主要硬件构成uHS12864-1液晶显示模块的硬件结构框图如图液晶显示模块的硬件结构框图如图6-66所示,其中所示,其中IC3 为行驱动,为行驱动,IC1、IC2 为列驱动器,为列驱动器,分别控制显示模块的右半屏和左半屏。分别控制显示模块的右半屏和左半屏。 IC1、IC2、IC3 含有以下主要功能器件,编程时通过相关指令含有以下主要功能器件,编程时通过相关指令控制显示模块的显示状态:控制显示模块的显示状态:u 指令寄存器指令寄存器(IR)u 指令寄存器指令寄存器IR用于寄存指令码。当用于寄存指令码。当D/I=0时,时,在在E信号下降沿的作用下将指令码写入信号下降沿的作用下将指令码写入IR中。中。u 数据寄存器数据寄存器(DR)第第6章章 ELITE-III开发应用实例开发应用实例 数据寄存器DR用于寄存数据,与指令寄存器寄存指令相对应。当D/I=1时,在E信号下降沿的作用下,图形显示数据写入DR中,或在E信号高电平作用下由DR读到DB7DB0数据总线。 忙标志BF) 忙标志BF标志提供内部工作情况。BF=1表示模块在内部操作,此时模块不接受外部命令和数据;BF=0时,模块为准备状态,随时可接受外部指令和数据。 程序中可利用STATUS READ指令,可以将BF读到DB7总线,以检验模块当前的工作状态。 显示控制触发器DFF 显示控制触发器DFF用于模块屏幕显示开和关的控制。DFF=1为开显示,DRAM的内容显示在屏幕上;DFF=0为关显示。DDF的状态由指令DISPLAY ON/OFF和RST信号控制。 XY地址计数器 XY地址计数器是一个9位计数器,高3位是X地址计数器,低6位为Y地址计数器。XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM 的Y地址指针。第第6章章 ELITE-III开发应用实例开发应用实例 X地址计数器没有记数功能,只能用指令设置;Y 地址计数器具有循环记数功能,在显示数据写入后Y地址自动加1,Y地址指针从0到63。 显示数据RAM DDRAM DDRAM 是存储图形显示数据的。数据为1表示显示选择,数据为0 表示显示非选择。 Z地址计数器 Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步,当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据;RST复位后Z地址计数器为0。 Z地址计数器可以用指令DISPLAY START LINE预置。因而,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM共64行,屏幕可以循环滚动显示64行。4. 模块的外部接口HS12864-1液晶显示模块的外部接口的管脚名称、特性与管脚功能描述见表6-10。第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例p5指令说明指令说明p HS12864-1液晶显示模块共有七条指令,实现液晶显示模块共有七条指令,实现对显示模块的状态设置和数据读对显示模块的状态设置和数据读/写操作。下面详写操作。下面详细介绍这七条指令所对应的指令码及其功能。细介绍这七条指令所对应的指令码及其功能。p(1) 显示开关控制显示开关控制(DISPLAY ON/OFF)p p D=1:开显示开显示(DISPLAY ON),即显示器可以进行,即显示器可以进行各种显示操作各种显示操作;p D=0:关显示关显示(DISPLAY OFF),即不能对显示器,即不能对显示器可以进行各种显示操作可以进行各种显示操作;p(2) 设置显示起始行设置显示起始行第第6章章 ELITE-III开发应用实例开发应用实例 显示起始行是由Z地址计数器控制的A5A0的6位地址,该地址自动送入Z地址计数器,起始行的地址可以是0到63的任意一行。(3) 设置页地址X地址) 页地址就是DDRAM的行地址,8行为一页,整个模块有64行,共8页。由A2A0表示07页,读写数据对地址没有影响,页地址由本指令或RST信号复位后页地址为0设置,页地址与DDRAM的对应关系见DDRAM地址表表6-11)。第第6章章 ELITE-III开发应用实例开发应用实例4) 设置Y 地址(SET Y ADDRESS) 此指令的作用是将A5A0送入Y地址计数器,作为DDRAM的Y地址指针。在对DDRAM进行读写操作后,Y地址指针自动加1,指向下一个DDRAM 单元。(5) 读状态(STATUS READ) 当R/W=1,D/I=0时,在E信号为H时,状态数据分别输出到数据总线DB7DB0的相应位。BF是忙标志;ON/OFF 表示DFF触发器的状态;RST=1表示内部正在初始化,此时组件不接受任何指令和数据。(6) 写显示数据(WRITE DISPLAY DATE)第第6章章 ELITE-III开发应用实例开发应用实例 D7D0为显示数据,本指令把D7D0写入相应的DDRAM单元,Y地址指针自动加1。(7) 读显示数据(READ DISPLAY DATE) 本指令把DDRAM 的内容D7D0读到数据总线DB7DB0,Y 地址指针自动加1。 第第6章章 ELITE-III开发应用实例开发应用实例n6.9.3 LCD12864与单片机的接口电路与单片机的接口电路n将将HS12864-1液晶显示模块的管脚与相应的液晶显示模块的管脚与相应的51单片机管脚连接,利用程序既可通过管脚对液单片机管脚连接,利用程序既可通过管脚对液晶显示状态进行控制。晶显示状态进行控制。n如图如图6-67所示为单片机与液晶显示模块接口电所示为单片机与液晶显示模块接口电路,其中:路,其中:n DB7DB0:数据总线。实现数据、命令:数据总线。实现数据、命令字和状态字的传输,与单片机字和状态字的传输,与单片机P0口连接。口连接。n VCC:+5V电源。电源。n GND:接地端,与单片机:接地端,与单片机GND相连。相连。n RSTLCD:控制器复位信号。:控制器复位信号。n R/W:写选通信号。:写选通信号。n CS12864A与与CS12864B:即前面介绍的:即前面介绍的CS1和和CS2,分别控制显示模块的右半屏和左半屏。,分别控制显示模块的右半屏和左半屏。n ELCD:通道选择信号,即前面介绍的:通道选择信号,即前面介绍的E信信号。号。第第6章章 ELITE-III开发应用实例开发应用实例第第6章章 ELITE-III开发应用实例开发应用实例l6.9.4 LCD12864显示驱动程序设计显示驱动程序设计l本程序在液晶显示屏上首先进行初始化,本程序在液晶显示屏上首先进行初始化,再从左向右显示再从左向右显示“欢迎学习单片机字样。欢迎学习单片机字样。由于使用的由于使用的HS12864-1液晶显示模块没有液晶显示模块没有内置汉字字库,因此应使用取模软件对要内置汉字字库,因此应使用取模软件对要显示的汉字取模。显示的汉字取模。l液晶模块的操作流程图如图液晶模块的操作流程图如图6-68所示,每所示,每次操作液晶模块时,都必须按照此流程进次操作液晶模块时,都必须按照此流程进行。行。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号