《单片机原理及应用(第2版)》第8章_第1页
《单片机原理及应用(第2版)》第8章_第2页
《单片机原理及应用(第2版)》第8章_第3页
《单片机原理及应用(第2版)》第8章_第4页
《单片机原理及应用(第2版)》第8章_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章功能器件的应用,第一节概述第二节实时时钟第三节串行方式的LED显示器接口第四节A/D与D/A转换接口第五节看门狗电路,本章要点,单片机应用系统的外围功能器件品种繁多,而且新的器件不断推出,不可能也不必要一一加以介绍,本章只选择一些典型的常用芯片,介绍它的使用方法。根据这些方法就能了解功能器件的使用要点。使用功能器件主要是掌握它与单片机的连接,使用前的初始化,以及程序的编制方法,本章着重介绍串行扩展的程序的编制。,第一节概述,1.功能器件是指一些为实现某种功能而设计的专用集成电路。2.功能器件是为了解决片内功能的不足,需要在片外扩展,以满足单片机应用系统的功能需要。3.功能器件的扩展方法有并行扩展或串行扩展两种。串行扩展由于所占用的I/O口少。特别适用于小控制系统。,并行扩展与串行扩展,并行扩展法并行扩展法是利用单片机的三总线(地址总线、数据总线和控制总线)与被扩展的器件相连接,采用并行扩展法的接口应与存储器统一编址。串行扩展法串行扩展法有一线制、两线制和三线制等方式,其中两线制的总线、三线制的SPI总线比较常用。,返回本章首页,第二节实时时钟,配置实时时钟,便于按时钟所提供的时间按时操作或按时记录。时钟芯片有并行和串行两种形式。一、并行时钟1.并行时钟硬件结构,常用并行实时时钟芯片有MC146818、DS12887、DS12887A等。它们都具有完备的时钟、闹钟及万年历功能。能实时提供年、月、日、时、分、秒,且可任意选12或24小时制。图为DS12887A的引脚图。,2.DS12887A与单片机的连接方法,5V,3.、DS12887A内存单元的地址分配,4.DS12887中寄存器A各位定义5.DS12887中寄存器B各位定义,6.DS12887中寄存器C各位定义7.DS12887中寄存器D各位定义,8.初始化及写入程序初始化是指时钟使用前根据使用要求对寄存器A、B进行设置,以决定时钟、日历的工作制式。以及通过程序对时钟、日历和闹钟当前时间进行初始化,俗称拨钟,以便将实时的秒、分、时和年、月、日值赋予00H-09H的10个时间单元。以DS12887A为例。初始化部分MOVDPTR,#7F0AH;7F0AH为寄存器A的地MOVA,#70H;设置分频器复位MOVXDPTR,AINCDPTR;指向寄存器B的地址MOVA,#82H;SET=1钟暂停,选BCD24小时制MOVX,DPTR,A,设置当前时间MOVDPL,#00H;指向秒单元地址MOVA,#00H;拨成0秒MOVXDPTR,AMOVDPL,#02H;指向分单元地址MOVA,#00H;拨成0分MOVXDPTR,AMOVDPL,#04H;指向时单元地址MOVA,#08H;拨成8时MOVXDPTR,AMOVDPL,#07H;指向日单元地址MOVA,#15H;15日MOVXDPTR,AINCDPTR;指向月单元地址MOVA,#12H;12月MOVXDPTR,AINCDPTR;指向年单元地址MOVA,#05H;2005年MOVXDPTR,A,读出当前时间INCDPTR;寄存器A的地址MOVA,#20H;频率为32.768kHzMOVXDPTR,AINCDPTR;寄存器B的地址MOVA,#02H;SET=0MOVXDPTR,A;开始走钟;以下为实时时间读出程序,读出值存入31H-33HMOVDPTR,#7F0AH;指向寄存器A的地址TEST:MOVA,DPTRJBACC.7,TESTMOVDPL,#00H;取秒MOVXA,DPTRMOV31H,AMOVDPL,#02H;取分MOVXA,DPTRMOV32H,AMOVDPL,#04H;取小时MOVXA,DPTRMOV33H,A,二、串行实时时钟,1.硬件结构串行时钟只需要一根数据线来读出或写入数据。,DS1302的引脚图,DS1302与单片机的连接,2.读写程序DS1302的读写步骤1将RST置高。2写入带有地址和命令的控制字,控制字共8位。D7必须为1,如果为0,不能写入。D6即RAM/CK,0为存取日历时钟数据,1表示存取RAM数据。D5至D1用来表示操作地址,7个日历、时钟寄存器的地址分别为0000000110。D0即RD/WR,若为0表示进行写操作,为1表示读操作。控制字的值所代表的意义,可参看教材表8-6。,3输入或输出数据时序输入时,跟在写地址和命令控制字节的8个SCLK周期之后,在下8个SCLK周期的上升沿写入数据字节。数据输入从低到高,要求采用BCD码。输出读操作时,跟随在输入写地址和命令控制字节的8个SCLK周期之后,在下8个SCLK周期的下降沿读出该地址数据。数据读出同样从低到高。传送结束,将RST置低,所有传送停止。,返回本章首页,串行实时时钟的读写子程序(读写时可通过调用子程序)(1)启动子程序ST02:CLRP1.0;SCLK置低CLRP1.2NOPSETBP1.2;RST置高RET,(2)写入控制字为BF的子程序WR02:MOVR7,#08HMOVA,#0BFH;一次性写入控制字0BFHLP02:CLRP1.0;SCLK置低RRCAMOVP1.1,C;写入一位NOPSETBP1.0;SCLK置高NOPDJNZR7,LP02;未写完8位继续RET,(3.)串行实时时钟读出一个字节子程序RD02:MOVR7,#08HLP021:CLRP1.0;SCLK置低NOPMOVC,P1.1;读出一位RRCASETBP1.0;SCLK置高NOPDJNZR7,LP021;未读完8位继续RET(4)结束子程序STOP:CLRP1.2;置高NOPRET,(5)读出秒分时日月周日年全部7个字节LCALLST02;启动MOVA,#0BFHLCALLWR02;写入控制字MOVR6,#07HMOVR0,#49HLP:LCALLRD02;读入一个字节MOVR0,AINCR0DJNZR6,LP;7个字节未完继续LCALLSTOPRET,第三节串行方式的LED显示器接口,最简单的LED显示器串行扩展方式是利用单片机的串口,通过串入并出移位寄存器,接到LED数码显示器如图所示。现在则多采用串行接口芯片如PS7219。,一、PS7219的引脚及与单片机的连接,二、PS7219内部的控制寄存器PS7219内部的控制寄存器共15个,其中01H08HC存放待显示的数据,09H0FH为控制寄存器。1译码方式寄存器(地址09H)共8位,每一位与一个LED数码显示器相对应。每个数码显示器可设为BCD译码(置“1”);或设为非代码操作(置“0”),此时存于01H到08H寄存器的显示数据必须是七段码。2亮度寄存器(地址0AH)此寄存器的值对应数码管的亮度,它们之间的关系见教材的表8-8。3数据个数扫描界线寄存器(地址0BH)用来设置所要接的数码管个数,最多接8个,4掉电控制寄存器(地址0CH)置“1”时,芯片正常工作;置“0”时,工作于掉电模式,显示器不显示,但数据保持不变。5闪烁控制寄存器(地址0DH)共8位,某位置“1”时,该位对应的数码显示器处于闪烁状态,否则为正常显示。6显示测试寄存器(地址0FH)控制两种工作方式,当其D0位为“0”,选择工作于正常显示方式;D0位为“1”,选择工作于测试显示方式。,三、PS7219中串行数据传送,显示时必须分别向以上15个寄存器传送数据,每一个寄存器都要送16位数据,数据的格式如表:数据从PS7219的DIN端输入,高位在前低位在后,可以用一个子程序来完成。传送数据的通信时序见图8-10。,无关位,四、显示程序举例设连接如上图,要显示的8个数码以BCD码的形式存放在单片机的50H-53H存储单元,试编程显示。主程序:ADDRDATA30H;30H存地址DBUFDATA31H;31H存数据LOADEQUP2.0DOEQUP2.1CLKEQUP2.2ORG0000HAJMPMAINORG0100HMAIN:ACALLDISPLAYACALLMS300AJMPMAIN,显示子程序:在显示子程序中应先送控制字DISPLAY:CLRLOADMOVADDR,#09H;设置译码方式MOVDBUF,#0FFHACALLSEND16MOVADDR,#0AH;设置亮度MOVDBUF,#0FHACALLSEND16MOVADDR,#0BH;设置扫描界限MOVDBUF,#07HACALLSEND16MOVADDR,#0CH;设置掉电控制MOVDBUF,#01HACALLSEND16MOVADDR,#0FH;设置是否测试MOVDBUF,#00HACALLSEND16ACALLMS2,续上,MOVR7,#04H;控制字后送4个字节MOVR1,#50HMOVADDR,#00H;待显示数码送的01H-08HDIS1:INCADDR;取PS7219地址MOVA,R1ANLA,#0F0HSWAPAMOVDBUF,AACALLSEND16INCADDRMOVA,R1ANLA,#0FHMOVDBUF,AACALLSEND16INCR1DJNZR7,DIS1RET,串行通信子程序:入口条件为发送数据存于DBUF,发送到PS7219的地址存于ADDR,MOVR7,#08H;送数据MOVA,DBUFSEND2:SETBCLKRLCAMOVDO,CACALLMS2CLRCLKDJNZR7,SEND2SETBLOADSETBCLKACALLMS2RET,SEND16:CLRLOADNOPMOVR7,#08H;送地址MOVA,ADDRSEND1:SETBCLKRLCAMOVDO,CACALLMS2CLRCLKACALLMS2DJNZR7,SEND1ACALLMS2,延时子程序:,MS2:MOVR2,#20HM1:DJNZR2,M1RETMS300:MOVR3,#20HM2:MOVR2,#0FHM3:DJNZR2,M3DJNZR3,M2RET,返回本章首页,第四节A/D与D/A转换接口,一、A/D转换接口ADC08091.ADC0809结构ADC0809是采用逐次逼近式并行输电的芯片。通过逐次比较使产生出的等价数字量,最接近于被测模拟量,转换速度高。,2.ADC0809的引脚,从引脚D0D7输出的数字量与输入电压及参考电压有关。,3.ADC0809应用实例利用单片机测量炉温的系统如图所示,设温度传感器信号接IN3,利用单片机P2,7作为地址线选的高位线,将0809的地址定在7FF0H7FF7H.。,4.测量炉温的A/D转换程序,MOVR0,#30HMOVDPTR,#7FF3HMOVXDPTR,ASETBP1.0LOOP:JNBP1.0,LOOP;读转换结束标志MOVXA,DPTR;EOC为1读结果MOVR0,ARET,二、8位串行D/A转换接口MAX5181.内部结构MAX518是两线串行接口的8位数-模转换器,两路转换器可分别将两个8位数字量转换为两路模拟量从OUT0、OUT1输出。电源电压同时作为参考电压,当数字量为FFH时,最大的输出模拟电压约等于5V。,2.MAX518与AT89C51的连接与引脚排列,P1.6和P1.7分别虚拟SCL和SDA,引脚排列,连接电路,3.MAX518转换程序按上图连接,若置AD1=0、AD0=0写操作时的从地址为58H。若R2=0、R1=0、R0=0、RST=0、PD=0、A0=0、00H则写操作指令为00H,也可用01H。A/D转换子程序如下。入口条件:待转换模拟量的数据置于B。,MOVA,B;取出数据LCALLWRB;完成转换LCALLSTOPRET,ADDREQU58H;从地址值DAC0EQU00H;写操作指令OUT0:LCALLSTARTMOVA,#ADDRLCALLWRBMOVA,#DAC0LCALLWRB,返回本章首页,程序中使用的子程序START、STOP、WRB参看第四章第五节,第五节看门狗电路,看门狗定时器简称看门狗或WDT(WacthDogTimer),它是监视程序正常运行的一种定时器。一、内置看门狗电路某些单片机片内有内置看门狗电路,例如AT89S51,但使用必须先激活,或称为初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论