《《单片机原理及应用(第2版)》第8章功能器件的应用》由会员分享,可在线阅读,更多相关《《单片机原理及应用(第2版)》第8章功能器件的应用(38页珍藏版)》请在金锄头文库上搜索。
1、第八章 功能器件的应用,第一节 概述第二节 实时时钟第三节 串行方式的LED显示器接口第四节 A/D与D/A转换接口第五节 看门狗电路,本章要点,单片机应用系统的外围功能器件品种繁多,而且新的器件不断推出,不可能也不必要一一加以介绍,本章只选择一些典型的常用芯片,介绍它的使用方法。根据这些方法就能了解功能器件的使用要点。 使用功能器件主要是掌握它与单片机的连接,使用前的初始化,以及程序的编制方法,本章着重介绍串行扩展的程序的编制。,第一节 概述,1.功能器件是指一些为实现某种功能而设计的专用集
2、成电路。 2.功能器件是为了解决片内功能的不足,需要在片外扩展,以满足单片机应用系统的功能需要。 3.功能器件的扩展方法有并行扩展或串行扩展两种。串行扩展由于所占用的I/O口少。特别适用于小控制系统。,并行扩展与串行扩展,并行扩展法 并行扩展法是利用单片机的三总线(地址总线、数据总线和控制总线)与被扩展的器件相连接,采用并行扩展法的接口应与存储器统一编址。 串行扩展法 串行扩
3、展法有一线制、两线制和三线制等方式,其中两线制的 总线、三线制的SPI总线比较常用。,返回本章首页,第二节 实时时钟,配置实时时钟,便于按时钟所提供的时间按时操作或按时记录。时钟芯片有并行和串行两种形式。 一、并行时钟 1.并行时钟硬件结构,常用并行实时时钟芯片有 MC146818、DS12887、 DS12887A等。它们都具有完备的时钟、闹钟及万年历功能。能实时提供年、月、日、时、分、秒,且可任意选12或24小时制。图为DS12887A的引脚图。,2.DS
4、12887A与单片机的连接方法,5V,3.、DS12887A内存单元的地址分配,4.DS12887中寄存器A各位定义5.DS12887中寄存器B各位定义,6.DS12887中寄存器C各位定义7.DS12887中寄存器D各位定义,8. 初始化及写入程序 初始化是指时钟使用前根据使用要求对寄存器A、B进行设置,以决定时钟、日历的工作制式。以及通过程序对时钟、日历和闹钟当前时间进行初始化,俗称拨钟,以便将实时的秒、分、时和年、月、日值赋予00H-09H的10个时间单元。以DS12887A为例。 初始化部分
5、MOV DPTR,#7F0AH 7F0AH为寄存器A的地 MOV A,#70H 设置分频器复位 MOVX DPTR,A INC DPTR 指向寄存器B的地址 MOV A,#82H SET=1钟暂停,选BCD24小时制 MOV X,DPTR,A,设置当前时间MOVDPL
6、,#00H;指向秒单元地址MOVA,#00H;拨成0秒MOVXDPTR,AMOVDPL,#02H;指向分单元地址MOVA,#00H;拨成0分MOVXDPTR,AMOVDPL,#04H;指向时单元地址MOVA,#08H;拨成8时MOVXDPTR,A MOVDPL,#07H;指向日单元地址MOVA,#15H;15日MOVXDPTR,A INCDPTR;指向月单元地址MOVA,#12H;12月MOVXDPTR,AINCDPTR;指向年单元地址MOVA,#05H;2005年MOVXDPTR,A,读出当前时间INCDPTR  
7、; 寄存器A的地址MOVA,#20H 频率为32.768kHzMOVXDPTR,AINCDPTR 寄存器B的地址MOVA,#02H;SET=0MOVXDPTR,A;开始走钟;以下为实时时间读出程序,读出值存入31H-33HMOVDPTR,#7F0AH;指向寄存器A的地址TEST:MOVA,DPTRJBACC.7,TEST &
8、nbsp; MOVDPL,#00H ;取秒MOVXA,DPTRMOV31H,AMOVDPL,#02H;取分MOVXA,DPTRMOV32H,AMOVDPL,#04H;取小时MOVXA,DPTRMOV33H,A,二、串行实时时钟,1.硬件结构 串行时钟只需要一根数据线来读出或写入数据。,DS1302的引脚图,DS1302与单片机的连接,2.读写程序 DS1302的读写步骤 1将RST置高。 2写入带有地址和命令的控制字,控制字共8位。 D
9、7必须为1,如果为0,不能写入。 D6即RAM/CK,0为存取日历时钟数据,1表示存取RAM数据。 D5至D1用来表示操作地址,7个日历、时钟寄存器的地址分别为0000000110。 D0即RD/WR,若为0表示进行写操作,为1表示读操作。控制字的值所代表的意义,可参看教材表8-6。,3输入或输出数据时序 输入时,跟在写地址和命令控制字节的8个SCLK周期之后,在下8个SCLK周期的上升沿写入数据字节。数据输入从低到
10、高,要求采用BCD码。 输出读操作时,跟随在输入写地址和命令控制字节的8个SCLK周期之后,在下8个SCLK周期的下降沿读出该地址数据。数据读出同样从低到高。 传送结束,将RST置低,所有传送停止。,返回本章首页,串行实时时钟的读写子程序(读写时可通过调用子程序) (1)启动子程序 ST02:CLR P1.0;SCLK置低 CLR P1.2 NOP &nb
11、sp; SETB P1.2;RST置高 RET,(2)写入控制字为BF的子程序 WR02:MOV R7,#08H MOV A,#0BFH ;一次性写入控制字0BFH LP02:CLR P1.0;SCLK置低 RRC A MOV P1.1,C;写入一位 NOP SETB  
12、;P1.0;SCLK置高 NOP DJNZ R7,LP02;未写完8位继续 RET,(3.)串行实时时钟读出一个字节子程序RD02: MOVR7,#08HLP021: CLRP1.0;SCLK置低 NOP MOVC,P1.1;读出一位 RRCA SETBP1.0;SCLK置高 NOP DJNZR7,LP021;未读完8位继续 RET (4)结束子程序STOP: CLRP1.2; 置高 &nbs
13、p; NOP RET,(5)读出秒分时日月周日年全部7个字节LCALLST02 ;启动MOVA,#0BFHLCALLWR02 ;写入控制字MOVR6,#07HMOVR0,#49H LP:LCALLRD02;读入一个字节MOVR0,AINCR0DJNZR6,LP;7个字节未完继续LCALLSTOPRET,第三节 串行方式的LED显示器接口,最简单的LED显示器串行扩展方式是利用单片机的串口,通过串入并出移位寄存器,接到LED数码显示器如图所示。现在则多采用串行
14、接口芯片如PS7219。,一、PS7219的引脚及与单片机的连接,二、PS7219内部的控制寄存器 PS7219内部的控制寄存器共15个,其中01H08HC存放待显示的数据,09H 0FH为控制寄存器。 1译码方式寄存器(地址09H) 共8位,每一位与一个LED数码显示器相对应。每个数码显示器可设为BCD译码(置“1”);或设为非代码操作(置“0”),此时存于01H到 08H寄存器的显示数据必须是七段码。 2亮度寄存器
15、(地址0AH) 此寄存器的值对应数码管的亮度,它们之间的关系见教材的表8-8。 3数据个数扫描界线寄存器(地址0BH) 用来设置所要接的数码管个数,最多接8个,4掉电控制寄存器(地址0CH) 置“1”时,芯片正常工作;置“0”时,工作于掉电模式,显示器不显示,但数据保持不变。 5闪烁控制寄存器(地址0DH)
16、 共8位,某位置“1”时,该位对应的数码显示器处于闪烁状态,否则为正常显示。 6显示测试寄存器(地址0FH) 控制两种工作方式,当其D0位为“0”,选择工作于正常显示方式;D0位为“1”,选择工作于测试显示方式。,三、PS7219中串行数据传送,显示时必须分别向以上15个寄存器传送数据, 每一个寄存器都要送16位数据,数据的格式如表: 数据从PS7219 的DIN端输入,高位在前
17、低位在后,可以用一个子程序来完成。 传送数据的通信时序见图8-10。,无关位,四、显示程序举例 设连接如上图,要显示的8个数码以BCD码的形式存放在单片机的50H-53H存储单元,试编程显示。 主程序:ADDR DATA 30H;30H存地址DBUF DATA 31H;31H存数据LOAD EQU P2.0DO EQU P2.1CLK EQU P2.2 ORG &n
18、bsp;0000H AJMP MAIN ORG 0100H MAIN: ACALL DISPLAY ACALL MS300 AJMP MAIN,显示子程序:在显示子程序中应先送控制字DISPLAY:CLR LOADMOV ADDR,#09H ;设置译码方式MOV DBUF,#0FFHACALL SEND16MOV ADDR,#0AH ;设置亮度MOV  
19、;DBUF,#0FHACALL SEND16MOV ADDR,#0BH ;设置扫描界限MOV DBUF,#07HACALL SEND16MOV ADDR,#0CH ;设置掉电控制MOV DBUF,#01HACALL SEND16 MOV ADDR,#0FH;设置是否测试 MOV DBUF,#00HACALL SEND16 ACALL MS2,续上,MOVR7,#04H 控制字后送4个字节MOVR1,#50HMOVADDR,#00H 待显示数码送的01H-08HDIS1:INCADDR 取PS7219地址MOVA,R1ANLA,#0F0HSWAPAMOVDBUF,AACALLSEND16INCADDRMOVA,R1ANLA,#0FHMOVDBUF,AACALLSEND16INCR1DJNZR7,DIS1RET,