外部扩展资源和扩展编址技术概述.pptx
7.1 外部扩展资源和扩展编址技术概述7.1.1 单片机外部扩展资源分类单片机外部扩展资源包含有:外部RAM/ROM、键盘、显示、A/D、D/A、I/O扩展、中断扩展、串行通信、总线驱动、电源监控、看门狗等一些最基本的模块,它们都是大多数单片机应用系统必不可少的关键部分。第1页/共171页1.外部程序存储器ROM当单片机内部程序存储器ROM容量无法满足应用系统要求时,需要在外部进行扩展。对于80C51系列,内部存储器都达到64KB,用户没有必要再扩展外部程序存储器。第2页/共171页2.外部数据存储器RAM 由于单片机的内部数据存储器容量较小,在需要大量数据缓冲的单片机应用系统中(如语音系统、商场收费POS)仍然需要在外部扩展数据存储器。外部数据存储器有SRAM、Flash EEPROM 第3页/共171页3.并行I/O口资源扩展在较为复杂的控制系统(尤其是工业控制系统,如可编程控制器)中,经常需要扩展I/O口。常用的I/O接口芯片有74HC系列锁存器/寄存器、8255和8155等。第4页/共171页4.键盘和显示器键盘和显示器提供了用户与单片机应用系统之间的人机界面,用户通过键盘向单片机系统输入数据或程序,而通过显示器用户可以了解单片机系统的运行状态。第5页/共171页5.串行通信接口单片机通常都提供了一个串行通信接口,且信号为TTL电平,为了方便单片机系统与PC机、打印机、外设等接口,往往需要扩展通用的RS-232通信接口。为了实现远距离通信,还要扩展RS-485通信接口。常用的RS-232接口芯片为MAX232,常用的RS-485接口芯片为MAX485。当单片机系统需要更多的串行通信接口时,可以通过串行口芯片扩展,常用的串行口芯片有8251、8250、16C554等。第6页/共171页6.模数转换A/DA/D转换接口将外设输入的模拟量转换为计算机使用的数字量,常用的A/D转换芯片有ADC0808/0809、ADC0816/0817、ADC1140、ADC71/76、AD574A等。7.数模转换D/AD/A转换接口将计算机的数字量转换为外设使用的模拟量,常用的D/A转换芯片有DAC0832、DA7520、DAC1208、DAC1230等。第7页/共171页8.电源监控和硬件看门狗在电源不稳定或有强大的干扰源时,系统经常会出现“程序跑飞”等异常情况,给系统的开发和实际应用带来了极大的不便,严重时会使系统瘫痪,甚至发生工业事故。为此需要使用专用的电源监控复位芯片,人们常把此类电路称为硬件看门狗,当系统电压下降和“程序跑飞”时,它能发出复位信号,保证系统正常工作。常用的电源监控复位芯片有CSI24C161、DS1232、X5045等。第8页/共171页9.硬件日历时钟由单片机构成的大多数计费、计时系统中,日期和时间是数据库中的一个重要参数,为此需要在单片机系统中扩展日历时钟芯片。常用的日历时钟接口电路有DS1302、DS12887等。单片机系统是指以单片机为核心,根据其应用目标扩展相关的外围电路所构成的硬件系统,外部扩展是和应用紧密联系的。本章只是对单片机系统中常用资源扩展和流行接口加以论述。第9页/共171页7.1.2 单片机系统扩展结构与编址技术第10页/共171页图7.1为AT89C52单片机通过三总线的扩展系统结构图。图7.1第11页/共171页第12页/共171页译码器产生地址译码信号,在任一时刻其输出的有效片选信号使得单片机只能访问RAM、I/O 和CLOCK其中之一,避免了总线竞争现象。下面介绍单片机扩展中的地址译码技术。地址译码有两种方法,线选法和全地址译码法。第13页/共171页1.线选法线选法一般用于扩展少量的片外存储器和I/O接口芯片。所谓线选法通常是将单片机的高8位地址线A8A15中的某几根与外部接口芯片的片选端一一相连,当该地址线为0时(对0选通有效的外部芯片而言),与该地址线相连接的外部芯片被选通。这种方法的缺点是:全部地址空间是断续的,每个接口电路的地址空间又可能是重叠的。第14页/共171页图是线选法典型电路组成。第15页/共171页图7.2中,当A15=0时,选中RAM 6264,而A14=0时,选中I/O芯片8255,为了避免产生总线竞争,A15和A14不能同时为0,由此可确定选中RAM6264的二进制数地址应为:01xxxxxx xxxxxxxx,x为任意,即可以是0也可以是1。故RAM 6264的地址范围二进制数是01000000 0000000001111111 11111111,对应的十六进制数是4000H7FFFH。而RAM6264容量只有8KB,故4000H5FFFH、6000H7FFFH两段地址完全重叠。同样可确定选中I/O芯片8255的二进制数地址应是:10 xxxxxx xxxxxxxx,x为任意。故I/O芯片8255的地址范围二进制数是10000000 0000000010111111 11111111。对应十六进制数是8000HBFFFH。而I/O8255实际只占用4个地址单元,故地址重叠部分更多。第16页/共171页2.全地址译码法全地址译码法,是通过译码电路对单片机可利用的高位地址线进行译码,以得到较多的片选信号。第17页/共171页用全地址译码法扩展存储器举例第18页/共171页7.1.3 单片机系统存储器扩展方法第19页/共171页第20页/共171页7.2 并行I/O口扩展7.2.1 8255可编程并行I/O接口芯片1.8255 的电路结构和功能8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。第21页/共171页8255内部结构如图7.5所示。第22页/共171页8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制器部分。第23页/共171页1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。第24页/共171页2)与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。3)控制器8255将3个通道分为两组,即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组。相应的控制器也分为A组控制器与B组控制器。第25页/共171页2.8255芯片引脚与CPU的连接第26页/共171页1)数据总线DB引脚AT89C52的P0.0P0.7与8255的D0D7连接 2)地址总线AB引脚A0、A1通过74HC373锁存器与AT89C52的P0.0、P0.1连接。A1A0取0011值,可选择A、B、C口与控制寄存器,选择方法如下:A1A0=00:选择A口。A1A0=01:选择B口。A1A0=10:选择C口。A1A0=11:选择控制寄存器。第27页/共171页其中,xx表示取值可任意 第28页/共171页4)3个通道引脚(1)A口的8个引脚PA0PA7与外设连接,用于8位数据的输入与输出。(2)B口的8个引脚PB0PB7与外设连接,用于8位数据的输入与输出。(3)C口的8个引脚PC0PC7与外设连接,用于8位数据的输入与输出或通信线。第29页/共171页3.8255的工作方式4.8255初始化1)工作方式选择字8255工作方式选择字共8位,如图所示,存放在8255控制寄存器中。最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。第30页/共171页第31页/共171页D3D6用于A组的控制,D6D5=00表示A组工作于基本I/O方式0,D6D5=01表示A组工作于应答I/O方式1,D6D5=1x表示A组工作于双向应答I/O方式2(x取0或1)。D4=1表示A口工作于输入方式,D4=0表示A口工作于输出方式,D3=1表示上C口工作于输入方式,D3=0表示上C口工作于输出方式。第32页/共171页D0D2用于B组的控制,各位含义如图7.8所示。D2=0表示B组工作于基本I/O方式0,D2=1表示B组工作于应答I/O方式1。D1=1表示B口工作于输入方式,D1=0表示B口工作于输出方式,D0=1表示下C口工作于输入方式,D0=0表示下C口工作于输出方式。工作方式字应输入控制寄存器,按上面的连接方式,控制寄存器的地址为E003H。所谓8255初始化,就是要根据工作要求确定8255工作方式选择字,并输入8255控制寄存器。第33页/共171页【例7.1】按照8255与AT89C52的连接图对8255初始化编程:(1)A、B、C口均为基本I/O输出方式。(2)A口与上C口为基本I/O输出方式,B口与下C口为基本I/O输入方式。(3)A口为应答I/O输入方式,B口为应答I/O输出方式。第34页/共171页解:(1)A、B、C口均为基本I/O输出方式。#define COM8255 XBYTE0 xe003 /*定义8255控制寄存器地址*/void init8255(void)COM8255=0 x80;/*工作方式选择字送入8255控制寄存器,设置A、B、C口为基本I/O输出方式*/第35页/共171页(2)A口与上C口为基本I/O输出方式,B口与下C口为基本I/O输入方式。第36页/共171页(3)A口为应答I/O输入方式,B口为应答I/O输出方式。uchar xdata COM8255 _at_ 0 xe003;/*定义8255控制寄存器地址*/void init8255(void)COM8255=0 xb4;/*工作方式选择字送入8255控制寄存器,设置A、B、C口为基本I/O输出方式*/第37页/共171页2)C口置/复位控制字8255的C口可进行位操作,即可对8255C口的每一位进行置位或清0操作,该操作是通过设置C口置/复位字实现的。C口置/复位字共8位,各位含义如图所示。由于8255的工作方式选择字与C口置/复位字共用一个控制寄存器,故特别设置D7为标志位,D7=0表示控制字为C口置/复位字,D7=1表示控制字为8255工作方式选择字。第38页/共171页5.8255应用举例【例7.2】按照图7.7 8255与AT89C52的连接图,用8255C口的PC3引脚向外输出连续的正方波信号,频率为500Hz。解:(1)软件延时方式实现将C口设置为基本I/O输出方式,先从PC3引脚输出高电平1,间隔1ms后向PC3输出低电平0,再间隔1ms后向PC3输出高电平1,周而复始,则可实现从PC3输出频率为500Hz正方波的目的。第39页/共171页(2)定时器1工作方式1中断实现中断实现有效提高CPU的工作效率。将C口设置为基本I/O输出方式,12MHz晶振,定时器初值设为65536-1000即可,每次中断PC3引脚翻转,周而复始,则可实现从PC3输出频率为500Hz正方波的目的。第40页/共171页7.2.2 用74HC系列芯片扩展I/O接口在80C51单片机应用系统中,采用74HC系列的锁存器和触发器通过P0口也可以构成各种类型的输入/输出接口,这种I/O口具有电路简单、成本低、配置灵活方便等优点。故在单片机应用系统中也被广泛采用。第41页/共171页1.用锁存器扩展输出接口第42页/共171页第43页/共171页2.用总线驱动器扩展输入接口通过P0口扩展输入接口时,总线驱动器被视为一个外部RAM地址单元。使用MOVX A,DPTR指令从输入口读取数据。图7.11是AT89C52通过74HC245扩展输入口的原理图。第44页/共171页在单片机数据总线上用74HCXX系列芯片扩展I/O接口,74HCXX芯片被视为80C51的片外RAM单元,用MOVX指令对其进行读写。以80C51的信号对它们进行读写控制时需要注意三点:输出锁存。输入三态。用RD、WR和地址线产生的有效选片信号(可能高、也可能低),作为数据输入或输出控制信号。第45页/共171页7.3 大容量闪速存储器Flash的扩展本节以Super Flash 28SF040A存储器为例,介绍闪速存储器Flash存储器在单片机系统中的使用方法。7.3.1 Super Flash 28SF040A简介28SF040A是一个容量为512KB的CMOS快速闪存,可块擦除、字节编程的Flash EEPROM,引脚与EPROM、EEPROM兼容。第46页/共171页第47页/共171页2.引脚排列及芯片特殊操作命令对28SF040A的读操作非常简单,类似于SRAM,这里不再赘述。第48页/共171页28SF040A的其他特殊操作命令包括扇区擦除(Sector_Erase)、芯片擦除(Chip_Erase)、字节编程、复位、读ID号、软件数据写保护、软件数据写保护打开。第49页/共171页7.3.2 89C52单片机和28SF040A接口方法28SF040A是大容量并行存储器共计512KB,地址线A0A18共19根,而89C52全部寻址空间仅为64KB,地址线A0A15共16根,因此需要增加高位地址线访问28SF040A。第50页/共171页1.使用单片机的I/O口控制高位地址线用P1口的P1.2P1.0控制28SF040A高位地址线 第51页/共171页2.使用单片机的扩展I/O口控制高位地址线第52页/共171页7.4 单片机系统中的键盘接口技术键盘是单片机应用系统最常用的输入设备,操作人员可以通过键盘向单片机系统输入指令、地址和数据,实现简单的人机通信。第53页/共171页7.4.1 键盘工作原理及消抖键盘是一组按键的集合,键是一种常开型按钮开关,平时(常态)键的两个触点处于断开状态,按下键时它们才闭合(短路),如图所示。第54页/共171页键盘分编码键盘和非编码键盘,按键的识别由专用的硬件译码实现,并能产生键编号或键值的称为编码键盘,如BCD码键盘、ASCII码键盘等,而缺少这种键盘编码电路要靠自编软件识别的称为非编码键盘。在单片机组成的电路系统及智能化仪器中,用得更多的是非编码键盘,本节只讨论非编码键盘。第55页/共171页1.键盘操作特点在图中,当按键S未被按下(即断开)时,P1.1输入为高电平,S闭合后,P1.1输入为低电平。通常的按键所用的开关为机械弹性开关,当机械触点断开、闭合时,电压信号波形如图(b)所示。由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会马上断开,因而在闭合及断开的瞬间均伴随有一连串的抖动。第56页/共171页2.按键抖动的消除方法键抖动会引起一次按键被误读多次,为了确保单片机对键的一次闭合仅做一次处理,必须去除键抖动,在键闭合稳定时取键状态,并且必须判别到键释放稳定后再进行处理。按键的抖动,可用硬件或软件两种方法消除。通常在键数较少时,可用硬件方法消除键抖动。RS触发器为常用的硬件去抖电路。单片机系统中常用软件法。第57页/共171页7.4.2 独立式键盘与工作原理独立式按键是各按键互相独立地接通一条输入数据线,各按键的状态互不影响,如图7.16所示,这是最简单的键盘结构,该电路采用了中断方式读取键值。由于89C51系列单片机P1口在内部已经有上拉电阻,根据使用经验图7.16中的3个外部上拉电阻可省掉。第58页/共171页当没有键按下时,与之相连的输入口线为1(高电平),与门输出为高电平。当任何一个键按下时,与之相连的输入口线被置0(低电平),与门输出由高变低,产生外中断条件,在中断服务程序中读取键盘值。第59页/共171页【例7.4】按照图7.16,使用外中断,编写独立式按键程序。第60页/共171页7.4.3 行列式键盘与工作原理为了减少键盘与单片机接口时所占用I/O口线的数目,在键数较多时,通常都将键盘排列成行列矩阵式,每一水平线(行线)与垂直线(列线)的交叉处不相通,是通过一个按键连通的。利用这种行列矩阵结构只需N个行线和M个列线即可组成M N个按键的键盘。第61页/共171页图7.17是44(16键)行列式键盘电路。由于89C52单片机P1口在内部已经有上拉电阻,根据使用经验外部上拉电阻可以省掉。第62页/共171页在这种行列矩阵式非编码键盘的单片机系统中,对键的识别通常采用两步扫描判别法。具体方法描述见主教材252页。第63页/共171页7.4.4 键盘扫描的控制程序单片机对按键的控制通常有以下三种方式:(1)程序控制扫描方式,即利用程序连续地对键盘进行扫描。(2)定时扫描方式,即单片机定时地对键盘进行扫描。(3)中断扫描方式,即键的按下引起中断后,单片机对键盘进行扫描。第64页/共171页【例7.5】按照图7.17的电路,使用两步扫描法,编写的键扫描程序。有键按下,扫描函数返回值为键值,若无键按下,返回值为0 xff。要求每10ms定时检测一次按键,使用定时器中断实现定时。按键信息由printf输出到串口。第65页/共171页7.5 单片机系统中的LED数码显示器7.5.1 LED显示器的结构与原理第66页/共171页单片机系统中通常使用8段LED数码显示器,8段LED显示器由8个发光二极管组成。其中7个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,通过不同的组合可用来显示各种数字,包括AF在内的部分英文字母和小数点“”等字样。第67页/共171页LED显示器的显示方法有静态显示与动态显示两种,下面分别予以介绍。7.5.2 LED静态显示接口数码管工作在静态显示方式时,共阴极(共阳极)的公共端COM连接在一起接地(电源)。每位的段选线与一个8位并行口相连。只要在该位的段选线上保持段选码电平,该位就能保持相应的显示字符。第68页/共171页图7.19是通过串行口扩展8位LED显示器静态驱动电路,在TXD(P3.1)运行时钟信号,将显示数据由RXD(P3.0)口串行输出,串行口工作在移位寄存器方式(方式0)。第69页/共171页显然,要显示某字符,首先要把这个字符转换成相应的字形码,然后再通过串行口发送到74HC164。74HC164把串行口收到的数变为并行输出加到数码管上。第70页/共171页先建立一个字形码表,以十六进制数的次序存放它们的相应字形码,共阴极字形码表如主教材257页表7.5所示。如要显示字符6,查表可知6的字形码为0 x7d,把0 x7d送到8位移位寄存器74HC164即可。显然,要显示字符09、AF,其高4位为全0,而低4位为十六进制数。如果要显示的数高半字节不是0,则要通过程序加以变换。第71页/共171页【例7.6】按照图7.19显示电路编写显示驱动程序。第72页/共171页7.5.3 LED动态扫描显示接口静态LED显示法有着显示亮度大,软件较为简单的优点,但硬件上使用芯片多,每个LED显示器需要一个驱动电路。LED动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,在选通相应LED后,即在显示字段上得到显示字形码。这种方式不但能提高数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。第73页/共171页动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。其接口电路是把所有显示器的8个笔划段adp同名端并联在起,而每一个显示器的公共极COM是各自独立地受I/O线控制。动态扫描是指采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。第74页/共171页在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。第75页/共171页图7.20是一个典型的动态扫描8位LED显示接口电路。该电路由74HC245提供段adp的驱动,74LS145提供位COM1COM8的驱动。请注意89C52的P0.0P0.7每个口线上有1个10k的上拉电阻,图中未示出。第76页/共171页数码管是8段共阴极LED显示器,所以发光时字形驱动输出1有效,位驱动输出0有效。但注意位驱动是74LS145的译码输出,如果要显示第5位(数码管序号为07)数码管,74LS145的输入端应为DCBA=0101。第77页/共171页【例7.7】按照图7.20电路,编写在8个数码管依次显示0,1,7的程序。第78页/共171页7.6 单片机系统中的LCD液晶显示器LCD液晶显示器是一种被动式的显示器,与LED不同,液晶本身并不发光,而是利用液晶在电压作用下,能改变光线通过方向的特性,而达到显示白底黑字或黑底白字的目的。液晶显示器具有体积小、功耗低,抗干扰能力强等优点,特别适用于小型手持式设备。这几年随着价格的下降而得到广泛的应用。第79页/共171页常见的液晶显示器有七段式LCD显示器、点阵式字符型LCD 显示器和点阵式图形LCD 显示器。本节主要介绍点阵式字符型LCD 显示器以及应用。第80页/共171页7.6.1 字符型液晶显示模块的组成和基本特点字符型液晶显示模块是专门用于显示字母、数字、符号等的点阵型液晶显示模块。分4位和8位数据传输方式。提供57点阵光标和510点阵光标的显示模式。提供内部上电自动复位电路,当外加电源电压超过+4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。第81页/共171页字符型液晶显示模块组件内部主要由LCD 显示屏(LCD PANEL)、控制器(controller)、驱动器(driver)、少量阻、容元件,结构件等装配在PCB板上构成。如图7.21所示。第82页/共171页字符型液晶显示模块目前在国际上已经规范化,无论显示屏规格如何变化,其电特性和接口形式都是统一的。因此只要设计出一种型号的接口电路,在指令设置上稍加改动即可使用各种规格的字符型液晶显示模块。下面介绍点阵式字符型LCD 显示器LCD1602模块以及应用。第83页/共171页7.6.2 LCD1602模块接口引脚功能LCD1602共有16个引脚,见主教材261页表7.6。管脚进一步说明如下:第1脚:VSS为地电源;第2脚:VDD接5V正电源;第3脚:VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度;第84页/共171页第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据;第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;第714脚:DB0DB7为8位双向数据线;第15、16两脚用于带背光模块,不带背光的模块这两个管脚悬空不接。第85页/共171页7.6.3 LCD1602模块的操作命令1.1602LCD 各寄存器介绍控制器主要由指令寄存器IR、数据寄存器DR、忙标志BF、地址计数器AC、DDRAM、CGROM、CGRAM以及时序发生电路组成。寄存器介绍见主教材262-263页。第86页/共171页 指令寄存器(IR)和数据寄存器(DR)本系列模块内部具有两个8位寄存器:指令寄存器(IR)和数据寄存器(DR)。用户可以通过RS和R/W输入信号的组合选择指定的寄存器,进行相应的操作。第87页/共171页 忙标志位BF 忙标志BF=1时,表明模块正在进行内部操作,此时不接受任何外部指令和数据。当RS=0、R/W=1以及E为高电平时,BF输出到DB7。每次操作之前最好先进行状态字检测,只有在确认BF=0之后,MPU才能访问模块;第88页/共171页 地址计数器(AC)AC地址计数器是DDRAM或者CGRAM的地址指针。随着IR中指令码的写入,指令码中携带的地址信息自动送入AC中,并做出AC作为DDRAM的地址指针还是CGRAM的地址指针的选择。第89页/共171页 显示数据寄存器(DDRAM)DDRAM存储显示字符的字符码,其容量的大小决定着模块最多可显示的字符数目。控制器内部有80字节的DDRAM缓冲区,DDRAM地址与LCD显示屏上的显示位置的对应关系如图7.22所示。第90页/共171页 字符发生器ROM 在CGROM中,模块已经以8位二进制数的形式,生成了58点阵的字符字模组字符字模(一个字符对应一组字模)。字符字模是与显示字符点阵相对应的88矩阵位图数据(与点阵行相对应的矩阵行的高三位为“0”),同时每一组字符字模都有一个由其在CGROM中存放地址的高八位数据组成的字符码对应。字符码地址范围为00HFFH,其中00H07H字符码与用户在CGRAM中生成的自定义图形字符的字模组相对应。第91页/共171页 字符发生器RAM 在CGRAM中,用户可以生成自定义图形字符的字模组。可以生成58点阵的字符字模8组,相对应的字符码从CGROM的00H0FFH范围内选择。第92页/共171页2.1602LCD指令说明模块向用户提供了11条指令,大致可以分为四大类:模块功能设置,诸如:显示格式、数据长度等;设置内部RAM地址;完成内部RAM数据传送;完成其他功能。说明详细见主教材264-266页!第93页/共171页7.6.4 LCD1602与89C52单片机接口与编程LCD1602适配M6800系列MPU的操作时序,可直接与该系列MPU连接。由于80C51系列单片机的操作时序与M6800系列不同,可采用80C51的I/O模拟LCD1602的操作时序。其连接方法如图7.23所示。图7.23第94页/共171页采用图7.23中接口电路将占用很多80C51宝贵的I/O口资源,将80C51的读写信号经门电路变换后,可直接将LCD1602连到80C51的三总线上。第95页/共171页如图7.24所示,是采用AT89C52、74HC00和74HC573组成的接口电路。图中连接方法LCD1602的寄存器读写地址如下:uchar xdata Lcd1602CmdPort _at_ 0 x8000;/写IR寄存器,命令uchar xdata Lcd1602StatusPort _at_ 0 x8001;/读IR寄存器,状态uchar xdata Lcd1602WdataPort _at_ 0 x8002;/写DR寄存器uchar xdata Lcd1602RdataPort _at_ 0 x8003;/读DR寄存器第96页/共171页【例7.8】如图7.24所示电路,编写程序顺序实现:(1)LCD1602初始化;(2)在LCD1602显示Welcome to scut!-By zhangqin;(3)然后在第2行循环显示ASCII可打印字符。第97页/共171页7.7 日历时钟接口芯片及应用7.7.1 并行接口日历时钟芯片DS12887DS12887是内置锂电池的实时日历时钟芯片,它可以产生秒、分、时、星期、日、月及年等7个时标,并有供用户使用的114B带掉电保护的RAM,可以通过编程读取和修改这些时标,也可以编程产生定时间隔时间中断,使用十分方便。1.DS12887芯片的引脚第98页/共171页2.片内结构和寄存器DS12887的内部有10B时标寄存器、4B状态寄存器、114B带掉电保护的RAM。其地址分配如图7.26所示。第99页/共171页1)时标寄存器 10个时标寄存器可用二进制表示,也可用BCD码表示。其功能和数值范围如表7.7所示。第100页/共171页2)寄存器0AH寄存器0AH的格式如图7.27所示。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0UIPDV2DV1DV0RS3RS2RS1RS0UIP:更新周期进行标志位,UIP=1时,芯片正处于或将开始新周期,此期间不允许读写时标寄存器。DV2DV0:为010时晶振工作,其他组合时晶振停止。RS3RS0:中断周期时间和SQW输出频率选择位。第101页/共171页3)寄存器0BH寄存器0BH中的格式如图7.28所示。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0SETPIEAIEUIESQWEDM24/12DSESET:为1时禁止更新。为0时正常。PIE:为1时周期中断允许。AIE:为1时警报中断允许。UIE:为1时更新结束中断允许。SQWE:为1时方波输出允许。DM:为0时时间为BCD码,为1时为二进制。24/12:为1时是24小时进制。为0时是12小时进制。DSE:置0。第102页/共171页4)寄存器0CH寄存器0CH的格式如图7.29所示。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0IRQFPFAFUF0000IRQF:中断申请标志。PF:周期中断标志。AF:警报中断标志。UF:更新结束中断标志。第103页/共171页5)寄存器0DH寄存器0DH格式如图7.30所示。BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0VRT0000000VRT:为0时表示内部锂电池耗尽。第104页/共171页3.DS12887与89C52的接口电路图7.31是89C52与DS12887的接口电路,DS12887的片选信号接P2.4,即P2.4=0时,选中DS12887,设片内时标寄存器和掉电RAM的地址范围是:0E400H0E47FH。第105页/共171页时标寄存器设置的步骤为:(1)寄存器B的SET位置1,芯片停止工作。(2)时标寄存器置初值。秒、分、时、星期、年、月、日时标寄存器的地址顺序为:E400H、E402H、E404H、E406H、E407H、E408H、E409H。(3)读寄存器C,以消除已有的中断标志。(4)读寄存器D,使片内寄存器和RAM数据有效。(5)寄存器B的SET位清0,启动DS12887开始工作。第106页/共171页7.7.2 串行接口日历时钟芯片DS1302串行接口的日历时钟芯片以其使用简单、接口容易、与微机连线少等特点,在单片机应用系统,尤其是手持式信息设备中得到广泛应用。下面介绍在单片机应用系统中广为使用的串行接口实时时钟芯片DSl302的特点和使用方法。第107页/共171页1.DS1302特性和引脚说明DSl302内部具有实时时钟、日历和用户可用RAM,通过一个简单的串行接口与微机通信,可根据月份和闰年的情况自动调整月份的结束日期,时钟可由用户决定是以24小时制式或12小时制式工作。第108页/共171页芯片主要特性实时时钟包括秒、分、小时、日、月、星期和年等信息。31B静态RAM可供用户使用。简单的3线串行I/O接口。2.5V5.5V的电压工作范围。TTL/CMOS兼容(Vcc5V时)。在2.5V工作时,芯片电流小于300nA。8脚DIP或SOIC封装。可选的涓流充电方式。工作电源和备份电源双引脚输入。备份电源可由超级电容(1F)替代。第109页/共171页2.基本控制操作1)命令字节命令字节的格式如图所示 第110页/共171页每次数据的传输都是由命令字节开始的,这里的最高有效位必须是1。D6是RAM(为1)或时钟/日历(为0)的标识位。D1D5定义片内寄存器的地址。最低有效位(D0)定义了写操作(为0时)或读操作(为1时)。命令字节的传输始终从最低有效位开始。第111页/共171页2)数据的写入或读对芯片的所有写入或读出操作都是由命令字节为引导的。每次仅写入或读出1B数据的操作称为单字节操作。每次对时钟/日历的8B或31个RAM字节进行全体写入或读出操作,称其为多字节突发模式操作。第112页/共171页图7.35 多字节突发模式操作格式图7.34 单字节传送操作格式 第113页/共171页3)时钟/日历寄存器地址命令格式及功能定义访问DS1302片内各寄存器地址命令格式见主教材277页表7.9所示。访问DS1302片内各寄存器数据格式见主教材277页表7.10所示。时钟/日历寄存器共有秒、分、时、日、月、星期和年共7个寄存器。秒寄存器的最高位CH标志位是时钟的暂停标志。当这一位被置为逻辑1时,时钟振荡电路停振,且DS1302进入低功耗空闲状态,这时芯片消耗电流将小于l00nA。当这一位被置为逻辑0时,时钟将工作。第114页/共171页控制寄存器即写保护寄存器,该寄存器的最高位是芯片的写保护位,D0D6应强迫写0,且读出时始终为0。对任何片内时钟/日历寄存器或RAM,在写操作之前,写保护位必须是0,否则将不可写入。因此,通过置写保护位,可提高数据的安全性。第115页/共171页涓流充电寄存器控制着DSl302的涓流充电特性。寄存器的D4D7决定是否具备充电性能,仅在1010编码的条件下才具备充电性能,其他编码组合不允许充电。D2和D3可以选择在VCC2脚和VCC1脚之间串联一个二极管还是两个二极管。如果编码是01,选择一个二极管;如果编码是10,选择两个二极管;其他编码将不允许充电。该寄存器的D0和D1选择与二极管相串联的电阻值,其中编码01为2k,10为4k,11为8k,而00将不允许进行充电。第116页/共171页因此根据涓流充电寄存器的不同编程,可得到不同的充电电流。其充电电流具体计算公式如下:式中,5.0V为VCC2脚所接入的工作电压,VD为二极管正向压降0.7V,R为寄存器0和1位编码决定的电阻值,VE为VCC1脚所接入的电池电压。第117页/共171页3.DS1302与89C52的接口电路图7.36是89C52与DS1302的接口电路,DSl302的3条接口线可接到单片机的任何通用双向I/O口上。图7.36 89C52与DS1302的接口电路第118页/共171页【例7.10】编写图7.36所示的时钟电路DS1302时钟芯片驱动程序。并在主程序中每隔1秒读取时钟信息送到串口输出。在P1.7增加一个按钮,当按钮按下时间超过1S时,时钟被初始化为08年1月1日0点0分0秒周二。第119页/共171页7.8 单片机数据采集系统在工业生产和科学技术研究的各行业中,常常利用PC或工控机对各种数据进行采集如液位、温度、压力、频率等物理量。现实世界的物理量都是模拟量,能把模拟量转化为数字量的器件称为模/数转换器(A/D转换器)。A/D转换器是单片机数据采集系统的关键接口电路,按照和单片机系统的接口形式,可分为并行A/D转换器和串行A/D转换器。第120页/共171页7.8.1 并行A/D转换器ADC08091.ADC0809的特性与引脚ADC0809是单片CMOS器件,是8位模/数转换器,带有使能控制端,可以和微机直接接口。片内带有锁存功能的8路模拟多路开关,可以对8路05V的输入模拟电压信号分时进行转换。第121页/共171页ADC0809逻辑框图如图7.37所示。器件的核心部分是8位A /D转换器,它由比较器、逐次逼近寄存器、D/A转换器及控制和定时5部分组成。输出具有TTL三态锁存缓冲器,可直接连到单片机数据总线上。第122页/共171页八路模拟开关用于输入IN0-IN7上八路模拟电压。逐次逼近寄存器和比较器SAR在A/D转换过程中存放暂态数字量,在A/D转换完成后存放数字量,并可送到“三态输出锁存器”锁存。三态输出锁存器和控制电路 三态输出锁存器和控制电路用于锁存A/D转换完成后的数字量。CPU使OE引脚变成高电平就可以从“三态输出锁存器”取走A/D转换后的数字量。控制电路用于控制 ADC0809