单片机原理及应用教程(C语言版)-第9章 单片机应用系统接口技术_第1页
单片机原理及应用教程(C语言版)-第9章 单片机应用系统接口技术_第2页
单片机原理及应用教程(C语言版)-第9章 单片机应用系统接口技术_第3页
单片机原理及应用教程(C语言版)-第9章 单片机应用系统接口技术_第4页
单片机原理及应用教程(C语言版)-第9章 单片机应用系统接口技术_第5页
已阅读5页,还剩140页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理及应用教程 (C语言版)第9章 单片机应用系统接口技术主 编:周国运中国水利水电出版社第9章 单片机应用系统接口技术目 录9.1 键盘接口技术9.2 LED显示器及接口技术9.3 LCD显示器及接口技术9.4 D/A转换器及接口技术9.5 A/D转换器及接口技术9.6 开关量输出接口技术本章要点在单片机应用系统中,键盘、显示器、模拟信号设备、开关信号设备等,都是重要的常用设备。本章主要讨论人机交互设备矩阵键盘、数码管显示器、LCD显示器及接口技术;以并行、串行方式接口的D/A、A/D数字与模拟量转换接口技术,以及常见的开关量输出接口技术。通过本章学习,为单片机应用开发打下基础。 9.

2、1 键盘接口主要内容9.1.1 键盘基本问题9.1.2 键盘结构及处理程序9.1.3 中断扫描方式 1、键的识别 当按键K未被按下时,P1.0输入为高电平;当K闭合时,P1.0输入为低电平。 9.1.1 键盘基本问题 图9-1 按键电路 10k9.1.1 键盘基本问题 2、键的抖动 由于机械触点的弹性作用,按键在闭合时不会马上稳定地接通,在断开时也不会一下子断开。在闭合及断开的瞬间均伴随有一连串的抖动,如图9-3所示 。抖动时间一般为510ms。抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅做一次处理,必须去除键抖动。9.1.1 键盘基本问题图9-2 按键时的抖动9.1.1 键盘基

3、本问题一独立式键盘独立式按键是指各按键相互独立地接通一条输入数据线。当任何一个键按下时,与之相连的输入数据线即可读入数据0,而没有按下时读入1。9.1.2 键盘结构及处理程序 优点:电路简单;缺点:键数较多时,要占用较多的I/O线。图9-3 独立式键盘键号0123456710k*8例9-1 设计一个独立式按键的键盘接口,并编写键扫描程序,电路原理图如图9-3所示,键号从上到下分别为07。C语言程序清单:#includevoid key()unsigned char k;P1=0 xff;/输入前P1口输出全1k=P1;/读取按键状态if(k=0 xff)return; /无键按下,返回dela

4、y10 xms(2);/有键按下,延时去抖9.1.2 键盘结构及处理程序 k=P1;if(k=0 xff)/确认键按下return;/抖动引起,返回while(P1!=0 xff);/等待键释放switch(k)/识别、执行按下的键case 0 xfe: /0号键按下时执行程序段break;case 0 xfd: /1号键按下时执行程序段break; case 0 x7f: /7号键按下时执行程序段break;9.1.2 键盘结构及处理程序 9.1.2 键盘结构及处理程序 一行列式键盘 为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,常将键盘排列成行列矩阵形式。在水平线(行线)与

5、垂直线(列线)的交叉处放置按键来连通。N条行线和M条列线,可组成NM个按键的键盘89C52P1.0P1.1P1.2P1.3 P1.4P1.5P1.6P1.7+5v01234567BAD98CEF10k4图9|444矩阵键盘接口9.1.2 键盘结构及处理程序 1、行扫描法工作原理 判别键盘中有无键按下。向行线输出全0,读入列线状态。如果有键按下,总有一列线被拉至低电平,从而使列输入不全为1。 查找按下键所在的行。依次给各行线送低电平,查列线状态。全为1,则所按下的键不在此行;否则按下的键必在此行。 查找按下键所在的列。在上面读入的列值从第0位开始逐位判断,找出为0的位号,即为按下键的列号。 按键

6、编码(编号、键号、键值):为了方便找到所按下按键及功能,对按键进行编码、即编号。键号 = 行首号 + 列号 = 行号4 + 列号键号要与键名相区分;一般编号与键号相同9.1.2 键盘结构及处理程序 2.键盘扫描子程序C语言程序清单:#includeunsigned char key(void) unsigned char row,col=0, k=0 xff;/定义行、列、返回值P1=0 xf0; /各行输出0 ,各列输出1if(P1=0 xf0)return k;/无键按下返回0 xffdelay10 xms(2);/延时20ms去抖动if(P1=0 xf0)return k;/无键按下返回

7、0 xff9.1.2 键盘结构及处理程序 判断是否有键按下判断是否有键按下for(row=0; row4; row+)/行扫描 P1=(1row); /扫描值送P1 k=P1&0 xf0; if(k!=0 xf0) /列线不全为1, while(k&(0 x10col)/查按键所在列 col+; /不是该列,列号+1 k=row*4+col;/计算键值 P1=0 xf0; while(P1!=0 xf0); /等待键释放 break; return k;/返回键值9.1.2 键盘结构及处理程序 3.行列反转法识别按键 判别键盘中有无键按下(方法 同行扫描法) 行列反转输出、输入各行输出0、各列

8、输出1,只输入列值(或输入的各行清0); 各列输出读入的列值、各行输出1,只输入行值(或输入的各列清0) 。 合并行、列值,得到所按下键的唯一的行列值,由行列值查表确定其键值。9.1.2 键盘结构及处理程序 行列不能独立操作4.行列反转法识别按键子程序C语言程序代码:#includeunsigned char key()char code keycode=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77;/ 16个按键的键值与行列组合值的对应关系9.1.

9、2 键盘结构及处理程序 unsigned char row, col, k=0 xff, i;/定义行、列、返回值、循环控制变量P1=0 xf0;if(P1=0 xf0)return k;/无键按下,返回-1delay15ms();/延时去抖if(P1=0 xf0)return k;/抖动引起,返回-1P1=0 xf0; /行输出全0col=P1&0 xf0; /读取列值P1=col|0 x0f;/输出读入的列值row=P1&0 x0f;/读取行值9.1.2 键盘结构及处理程序 /查找行列组合值在键盘表中位置row=row|col;/把读入的行列值合并for(i=0;i16;i+) /查表if

10、(row=keycodei) /找到,i即为键值 k=i;break; /对重复键,该方法 /处理为无键按下P1=0 xf0;while(P1&0 xf0)!=0 xf0);/等待键释放return k;/返回键值9.1.2 键盘结构及处理程序 9.1.3 中断扫描方式为了提高CPU的效率,可以采用中断扫描工作方式,即只有在键盘有键按下时才产生中断申请,CPU响应中断,进入中断服务程序进行键盘扫描,并做相应处理。也可以采用定时扫描方式,即系统每隔一定时间进行键盘扫描,并做相应处理。9.1.3 中断扫描方式74LS2110k*49.2 LED显示器接口技术主要内容9.2.1 LED显示器结构与原

11、理9.2.2 LED显示器接口及显示方式9.2.3 LED显示器与单片机的接口9.2.1 LED显示器结构原理 单片机中通常使用7段LED构成字型为“8”且加一个小数点的数码管,以显示数字、符号及小数。常见数码管如下图。数码管有共阴极和共阳极两种。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。当在某段发光二极管上施加一定的正向电压时,对应段点亮;不加电压则暗。对共阴极发光二极管,某段的阳极加上正电压,则对应的段点亮。对共阳极发光二极管,某段的阴极接低电位,则对应的段点亮。9.2.1 LED显示器结构原理 以共阴极显示器为例,当a、b、c三段送1时,数码管显示数字7

12、。(c)引脚配置外形图(b)共阳极(a)共阴极9.2.1 LED显示器结构原理9.2.1 LED显示器结构原理fbecagdh3FD7 D6 D5 D4 D3 D2 D1 D0 h g f e d c b a065B4F666D7D076Fbcbeagdbcagdfbcgfcagdfecagdbcafbcagdfbeca d共阴极数码管显示代码FF表9-1 共阴极和共阳极7段LED显示字型编码表显示字符012345678共阴极段码3F065B4F666D7D077F共阳极段码C0F9A4B0999282F880显示字符9ABCDEF-灭共阴极段码6F777C395E79714000共阳极段码9

13、08883C6A1868EBFFF表中为小数点不点亮的段码(最高位为小数点段)9.2.1 LED显示器结构原理9.2.2 LED显示方式及接口LED有静态显示和动态显示两种方式。1LED静态显示方式静态显示:当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。共阴极(公共端K)接地;共阳极(公共端A)接+5V电源。每个数码管的段选线(ah)分别与一个8位锁存器的输出口相连,各显示位相互独立。优点:亮度较高、编程容易、管理简单;缺点:占用I/O口线资源较多。2LED动态显示方式所有位的段选线:并联在一起,由一个8位I/O口控制;各位的公共端:分别由不同的I/O

14、线控制,实现各位的分时选通。图9-8为6位共阴极LED动态显示接口电路9.2.2 LED显示器接口及显示方式图9-7 6位LED动态显示接口电路9.2.2 LED显示器接口及显示方式段选(P0口)各位扫描显示:由于6位LED所有段选线皆由P0口控制,要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,在每一瞬间只使某一位显示字符。段选码、位选码控制:P0口输出相应字符段选码,P2口对该显示位送选通电平,保证该位显示相应字符,如此轮流。扫描延时:段选码、位选码每送一次后至少延时1ms,保证每位有一定亮度,因人眼的视觉暂留效应,看上去每个数码管总在亮。9.2.2 LED显示器接口及显示方

15、式9.2.3 显示器与单片机的接口下页图为89C52 控制的6位共阴极LED动态显示接口电路。P0口输出段选码,P2口输出位选码。74LS245:是双向8位缓冲器/驱动器。逐位轮流点亮各个LED,每一位保持2.5ms,在1520ms之内再一次点亮,重复不止。图9|8 数码管动态显示接口9.2.3 显示器与单片机的接口P0.0P0.7P2.0P2.5共阴极显示器74LS24574LS24589C52C语言程序清单:#includeunsigned char code LED =0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;

16、unsigned char buf6;/定义字型码和显示缓冲区void disp()unsigned char i, scan=0 xdf;for(i=0;i1 +0 x80; 9.2.3 显示器与单片机的接口9.3 LM016L液晶显示器及接口技术主要内容1、LM016L的主要特性2、LM016L的引脚信号3、LM016L的操作命令 4、LM016L的存储器5、LM016L的操作时序6、LM016L的基本操作函数7、LM016L的接口及应用液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其它显示器无法比拟的优点,近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD

17、 可分为段位型LCD、字符型LCD 和点阵型LCD。 本节以Protues仿真软件中LM016L为例,讲述字符型LCD的显示原理和接口技术。9.3 LCD显示器及接口技术9.3 LCD显示器及接口技术9.3.1 LM016L的主要特性类型:字符型,只能显示字母和数字显示容量:2行,每行16个字符和字符型1602LCD完全一样控制器:HD44780,字符屏多采用1602工作电压、电流:5v、2.0mA接口:方便,可总线方式、模拟方式RS:指令、数据寄存器选择信号。 1数据寄存器,D0D7输入数据 0指令寄存器,D0D7输入指令。VSS:电源地接入端VDD:5V电源正极接入端。VEE:对比度调整电

18、压接入端。9.3.2 LM016L的引脚信号R/W:读写控制信号,输入。 1从LCD读取状态信息(包括光标地址); 0向LCD写入指令(包括显示地址)或显示的数据E:使能信号,输入。10的下降沿执行指令。D0D7:双向8位数据线。A:背光电源正极接入端。K:背光电源负极接入端。 9.3 LCD显示器及接口技术9.3 LCD显示器及接口技术9.3.3 LM016L的操作命令指 令D7D6D5D4D3D2D1D0 清屏00000001光标复位0000001x设置光标、字符移动000001I/DS显示、光标、光标闪烁开/关00001DCB光标、字符移位控制0001S/CR/Lxx设置数据位数、行数、

19、点阵数001DLNFxx9.3 LCD显示器及接口技术LM016L的操作命令(续)指 令D7D6D5D4D3D2D1D0设置字符存储器地址01字符发生存储器地址 设置数据存储器地址1显示数据存储器地址 读忙标志或地址BF光标所处地址写数到CGRAM或DDRAM要写的数据内容从CGRAM或DDRAM读数读出的数据内容9.3 LCD显示器及接口技术 9.3.4 LM016L的存储器内置了DDRAM、CGROM和CGRAM1、显示数据存储器DDRAMDDRAM用来存储待显示的字符代码。使用7位,共80H个地址。LM016L仅2行,每行16个字符,其地址和屏幕的对应关系如下表所示。显示列011415D

20、DRAM地址第0行00H01H0EH0FH第1行40H41H4EH4FH9.3 LCD显示器及接口技术2、常用字符点阵码存储器CGROM CGROM是液晶模块内部的字符点阵码,共160个,有:数字、大小写的英文字母、常用的符号、日文假名等。每一个字符都有一个固定的代码,比如 “A”的代码是01000001B(41H)。LM016L仅识别ASCII码,所以要写入ASCII码作显示,如A。当把字符的ASCII码送入DDRAM相应地址时,就在LCD的相应位置显示该字符. 9.3 LCD显示器及接口技术3、自定义字符点阵码存储器CGRAM用于存放用户自定义字符的点阵码。该存储器共有6位地址,64个存储

21、单元(不同厂家的产品数量不同)。每个字符使用8个单元存放点阵码,所以该区域可以存放8个字符的点阵码。 CGRAM中的字符编码为07,和CGROM中的字符统一编码。当把该编码送入DDRAM某个地址时,就在LCD的相应位置显示出自定义的字符。9.3 LCD显示器及接口技术9.3.5 LM016L的操作时序读时序:9.3 LCD显示器及接口技术写时序:9.3 LCD显示器及接口技术9.3.6 LM016L的基本操作函数#include#define LCDDATA P2/数据线sbit RS =P30;/数据/指令选择线 sbit RW =P31;/读写控制线 sbit EN =P32;/使能控制线

22、 void LcdDelay(unsigned char x) /延时45xsunsigned char i;/时钟12MHzwhile(x-)for(i=0;i4;i+); void LcdWriteComm (unsigned char com)/写命令函数 RS=0;/选择写指令 RW=0;/选择写 LCDDATA=com;/写指令 LcdDelay(5);/延时200s EN=1;/准备使能命令 EN=0; /命令使能,执行写 void LcdWriteData (unsigned char dat)/写数据函数 RS=1;/选择写指令 RW=0;/选择写 LCDDATA=com;/写

23、数据 LcdDelay(5);/延时200s EN=1;/准备使能命令 EN=0; /使能,执行写 void LcdInit()/LM016L初始化函数 LcdWriteCommand(0 x38);/8位数据,双行,5*7字形 LcdWriteCommand(0 x0c); /开显示、关光标、不闪 LcdWriteCommand(0 x06);/写数据地址递增LcdWriteCommand(0 x01); /清屏 9.3.4 LM016L的操作函数9.3 LCD显示器及接口技术9.3.7 LM016L接口及应用例9-2 用LM016L作为时钟的显示器,其数据线D0D7、控制信号RS、WR、E

24、N分别接89C52单片机的P2口和P30P32引脚,对单片机编程,用T0定时产生时钟的时分秒,在LM016L上显示出时间信息。设单片机的晶振频率为12MHz。拟在LM016L的第0行显示时间,第1行显示字符串“I love Computer!”,以示范数据和字符的显示方法。 9.3 LCD显示器及接口技术C语言程序如下(1)包含的头文件和变量定义#include #define LCDDATA P2/LM016L数据线unsigned char string=I love Computer!; unsigned char disbuf=Time: 08:35:42 ;/时为7、8位,分为10、

25、11位,秒为13、14位unsigned char hou=08,min=35,sec=42,num=0;/时分秒变量和中断次数控制sbit RS =P30;/数据/指令选择线 sbit RW=P31;/读写控制线 sbit EN =P32;/使能控制线9.3 LCD显示器及接口技术(3)T0中断服务函数void int_t0() interrupt 1/T0中断函数unsigned char i;/每10ms中断1次TL0=55536%256; /给T0赋初值TH0=55536/256;num+;/中断次数加1if(num99)num=0;sec+;/秒加1if(sec59)sec=0;mi

26、n+; /分加1if(min59)min=0;hou+; /时加1if(hou23)hou=0;9.3 LCD显示器及接口技术disbuf7=hou/10+0 x30;/写入显示数组disbuf8=hou%10+0 x30; /转成ASCII码disbuf10=min/10+0 x30;disbuf11=min%10+0 x30;disbuf13=sec/10+0 x30;disbuf14=sec%10+0 x30;LcdWriteComm(0 x87);/设置显示位置,在第1行、第7列开始显示for(i=7;i15;i+)LcdWriteData(disbufi); 9.3 LCD显示器及接

27、口技术void main()/主函数unsigned char i;TMOD=0 x21;/设置T0模式1定时TL0=55536%256; /设置T0初值TH0=55536/256; /定时10msET0=1; /开T0中断EA=1; /开总中断TR0=1;/启动T0运行LcdInit(); /初始化LCD9.3 LCD显示器及接口技术LcdInit(); /初始化LcdDelay(100);LcdWriteComm (0 x80);/设置LCD显示位置for(i=0;i16;i+) /在第1行显示时间LcdWriteData(disbufi);LcdWriteCommand(0 xC0);/

28、设置显示位置for(i=0;i16;i+) /在第2行显示字符串LcdWriteData(stringi);while(1);/循环并随时处理T0中断 9.4 D/A转换器及接口技术主要内容9.4.1 并行接口D/A转换器DAC0832及接口技术9.4.2 串行接口D/A转换器TLC5615及接口技术9.4 D/A转换器及接口技术D/A转换器从输出信号类型上可分为电压输出型和电流输出型;从接口类型上可分为并行接口和串行接口;从输出精度上可分为8位、10位和12位等。本节我们主要学习并行接口电流输出型的D/A转换器DAC0832和串行接口电压输出型的TLC5615与89C52单片机的接口以及程序

29、设计方法。9.4.1 并行接口D/A转换器DAC0832及接口技术1DAC0832的结构原理(1)DAC0832的特性。具有两级输入数据寄存器的8位单片D/A转换器,它能直接与单片机89C52相连接,具有两级缓冲功能,可以在输出的同时,传送下一个数据,从而提高转换速度,能够在多个转换器同时工作时,实现多通道D/A的同步转换输出。主要的特性参数如下:分辨率为8位只需在满量程下调整其线性度可与所有的单片机或微处理器直接接口电流稳定时间为1s可双缓冲、单缓冲或直通数据输入功耗低,约为200mW逻辑电平输入与TTL兼容单电源供电(+5V+15V)9.4.1 并行接口D/A转换器DAC0832及接口技术

30、(2)DAC0832的功能结构与引脚信号DAC0832的结构如下图所示,由8位锁存器、8位DAC 寄存器和8位D/A转换器构成。图9-10 DAC0832结构9.4.1 并行接口D/A转换器DAC0832及接口技术DAC0832各引脚的功能:D0D7:数字量数据输入引脚ILE:数据锁存允许信号,高电平有效。CS:输入寄存器选择信号,低电平有效。WR1:输入寄存器的“写”选通信号,低电平有效。WR2:DAC寄存器的“写”选通信号,低电平有效。XFER:数据传送信号,低电平有效。VREF:基准电压输入引脚9.4.1 并行接口D/A转换器DAC0832及接口技术RFB:反馈信号输入线,片内已有反馈电

31、阻。IOUT1、IOUT2:转换的模拟电流输出引脚。二者和为常数,随DAC寄存器的数值线性变化。一般单极性输出时IOUT2接地。VCC:电源DGND:数字地AGND:模拟信号地9.4.1 并行接口D/A转换器DAC0832及接口技术2DAC0832与单片机的接口(1)单缓冲器方式接口DAC0832端口地址:因为P2.7必须为0、其它位为1,所以为0 x7fff9.4.1 并行接口D/A转换器DAC0832及接口技术C语言程序清单:#include unsignedcharxdata DAC0832 _at_ 0 x7fff;/定义设备变量DAC0832,端口地址为0 x7fff DAC0832

32、=data1;/输出数字量做转换 汇编语言程序清单:MOV DPTR,#7FFFHMOV A,#DATA1MOVX DPTR,A9.4.1 并行接口D/A转换器DAC0832及接口技术(2)双缓冲器两路同步输出方式接口下页图是一个二路同步输出的D/A转换接口电路。89C52的P2.5和P2.6分别选择两路D/A转换器的输入寄存器,控制输入锁存;P2.7连到两路D/A转换器的XFER端控制同步转换输出;WR与所有的WR1、WR2端相连,在执行MOVX指令时,89C52自动输出WR信号。9.4.1 并行接口D/A转换器DAC0832及接口技术图9-12 DAC0832双缓冲方式接口IOUT1IOU

33、T10 xdfff0 xbfff0 x7fff9.4.1 并行接口D/A转换器DAC0832及接口技术各个端口地址(1)DAC0832_1数据输入口地址因为P2.5必须为0、其它位为1,所以为0 xdfff。(2)DAC0832_2数据输入口地址因为P2.6必须为0、其它位为1,所以为0 xbfff。(3)两个DAC0832数据传输端口地址因为P2.7必须为0、其它位为1,所以为0 x7fff。9.4.1 并行接口D/A转换器DAC0832及接口技术C语言程序清单:#include /定义DAC0832的3个设备变量unsignedcharxdata DAC0832_1 _at_ 0 xdff

34、f;unsignedcharxdata DAC0832_2 _at_ 0 xbfff;unsignedcharxdata DAC_ALL _at_ 0 x7fff; /两路同步输出模拟量的方法 DAC0832_1=data1; /给DAC0832_1送数字量DAC0832_2=data2; /给DAC0832_2送数字量DAC_ALL=0;/使两个XFER有效同时输出模拟量9.4.1 并行接口D/A转换器DAC0832及接口技术阶梯波是在一定的时间内每隔一段时间输出的幅值递增一个恒定值。如右图所示,每隔1ms输出增长一个定值n,经10 ms后循环。用DAC0832的单缓冲方式就可以实现这样的波

35、形。图9-13 阶梯波波形(3)DAC0832应用锯齿波的产生n9.4.1 并行接口D/A转换器DAC0832及接口技术C语言程序清单:n取值:125,设n=20。按图9-11,DAC0832的端口地址为0 x7fff。#include /定义设备变量DAC0832unsignedcharxdata DAC0832 _at_ 0 x7fff;void main()unsigned char i,n=20;while(1) for(i=0;i10;i+)DAC0832=i*n;delayms(1);/延时1ms 9.4.1 并行接口D/A转换器DAC0832及接口技术9.4.2 串行接口D/A转

36、换器TLC5615及接口技术数/模转换器从接口上可分为两大类:并行接口和串行接口。并行接口:引脚多,体积大,占用I/O线多;串行接口:体积小,占用单片机的I/O线少。1TLC5615的结构原理 TLC5615是具有3线串行接口的数/模转换器。其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能。TLC5615的性价比较高。(1)TLC5615的特点10位CMOS模拟电压型输出5V单电源工作3线SPI串行接口最大输出电压是基准电压的2倍建立时间12.5s内部上电复位低功耗,最高为l.75 mW引脚与MAX515兼容9.4.2 串行接口D/A转换器TLC5615及接口技术(2)功能方框

37、图图9-15 TLC5615功能方框图9.4.2 串行接口D/A转换器TLC5615及接口技术(3)引脚功能说明DIN:串行数据输入SCLK:串行时钟输入CS:芯片选择,低电平有效DOUT:用于菊花链(daisy chaining)的串行数据输出,多个芯片级联AGND:模拟地REFIN:基准电压输入OUT:DAC模拟电压输出VDD:电源(4.55.5V)9.4.2 串行接口D/A转换器TLC5615及接口技术(4)TLC5615的输入/输出关系 TLC5615的输入/输出关系如表9-a所列。用公式表示为:Vo=2VRN/1023数字量输入模拟量输出1111 1111 112VREFIN1023

38、/10231000 0000 012VREFIN513/10231000 0000 002VREFIN512/10230111 1111 112VREFIN511/10230000 0000 012VREFIN1/10230000 0000 000 V表9-a D/A转换关系表9.4.2 串行接口D/A转换器TLC5615及接口技术因为TLC5615芯片内的输入锁存器为12位宽,所以要在10位数字的低位后面再填以数字XX。XX为不关心状态。串行传送的方向是先送出高位MSB,后送出低位LSB。10位数据XXMSB LSB 如果有级联电路,则应使用16位的传送格式,即在最高位MSB的前面再加上4个

39、虚位,被转换的10位数字在中间。4个虚位10位数据XX9.4.2 串行接口D/A转换器TLC5615及接口技术TLC5615操作时序图CS低,SCLK低时输出1位,SCLK变高5615读入数据位 9.4.2 串行接口D/A转换器TLC5615及接口技术2TLC5615与89C52的串行接口电路及程序在下图电路中,89C52单片机自P3.0P3.2口分别控制TLC5615的片选 CS、串行时钟输入SCLK和串行数据输入DIN。图9-16 TLC5615与89C51接口电路9.4.2 串行接口D/A转换器TLC5615及接口技术D/A转换程序如下:sbit CS=P30;sbit SCLK=P31

40、;sbit DIN=P32;void DAC(unsigned int adata)char i;adata=0;i-)SCLK=0; /时钟低电平DIN=adata&(1i); /按位将数据送入SCLK=1; /时钟高电平SCLK=0; /时钟低电平CS=1; /片选高电平9.4.2 串行接口D/A转换器TLC5615及接口技术9.5 A/D转换器及接口技术主要内容9.5.1 并行接口A/D转换器ADC0809及接口技术9.5.2 串行接口A/D转换器TLC2543及接口技术9.5.3 单片机内部集成的A/D转换器及应用A/D转换器从工作原理来分,可以分为计数比较型、逐次逼近型、双积分型等;

41、从接口方式来分,可以分为并行接口、串行接口、单片机片内集成等;从转换精度来分,可以分为8位、10位、12位等。这里,我们主要学习逐次逼近型并行接口A/D转换器ADC0809、串行接口A/D转换器TLC2543、STC89LE516AD/X2片内集成A/D转换器与89C52单片机的接口以及程序设计方法。9.5 A/D转换器及接口技术9.5.1 并行接口A/D转换器ADC0809及接口技术1ADC0809的片内结构及引脚功能ADC0809是CMOS工艺,采用逐次逼近法的8位A/D转换芯片。多路开关有8路模拟量输入端,最多允许8路模拟量分时输入,共用一个A/D转换器进行转换。图9-17为ADC080

42、9的内部逻辑结构图。它由8路模拟开关、8位A/D转换器、三态输出锁存器以及地址锁存译码器等组成。图9-17 ADC0809内部逻辑结构结构9.5.1 并行接口A/D转换器ADC0809及接口技术8位A/D转换器8位三态输出锁存器8路模拟量开关地址锁存译码器IN0IN7ADDAADDBADDCALESTARTCLKEOCD0VccGNDVREF+VREF-OED7引脚功能说明如下:IN0IN7:8个通道的模拟输入信号D0D7:8位数字量输出信号START:启动信号ALE:地址锁存信号EOC:转换结束信号OE:输出允许控制信号CLOCK:时钟信号VCC 电源电压VREF+和VREF-:A/D转换器

43、的参考电压应为模拟信号的最大范围值。如为10、0,5、0,+5、-5等9.5.1 并行接口A/D转换器ADC0809及接口技术 8位模拟开关地址输入通道的关系见表9-4。模拟开关的作用和8选1的CD4051作用相同。表9-4 8位模拟开关功能表ADDCADDBADDA输入通道号000IN0001IN1010IN2111IN79.5.1 并行接口A/D转换器ADC0809及接口技术2ADC0809与89C52接口ADC0809芯片的转换时间在最高时钟频率下为100s左右。ADC0809与89C52连接可采用查询方式,也可采用中断方式。图9-19为中断方式连接电路图。由于ADC0809片内有三态输

44、出锁存器,因此可直接与89C52接口。9.5.1 并行接口A/D转换器ADC0809及接口技术图9-19 ADC0809与89C52的连接9.5.1 并行接口A/D转换器ADC0809及接口技术这里将ADC0809作为外部扩展并行I/O口,采用线选法寻址。ADC0809的ADDA、ADDB和ADDC端由P0.0、P0.1、P0.2送出ADC0809的地址由P2.7控制,其他地址位与此无关,设为1,于是ADC0809地址为0 x7fff,其读、写地址均为0 x7fff。在图9-19所示的接口电路中,ADC0809与片外RAM统一编址。9.5.1 并行接口A/D转换器ADC0809及接口技术启动A

45、DC0809的工作过程是:执行向端口总线写命令,将通道地址从总线P0口,以数据身份送给0809的ADDA、ADDB、ADDC,由ALE信号锁存通道地址,同时START有效,启动A/D转换。读取转换结果:A/D转换完毕,EOC端发出一正脉冲,用其做请求中断、或对其状态查询;然后执行从端口读命令,使OE端有效,将8位数据读入到单片机中。9.5.1 并行接口A/D转换器ADC0809及接口技术38路巡回检测系统例9-2 某粮库或某冷冻厂需对8个温度测量点(8个冷冻室或8个粮仓)进行温度巡回检测。要求设计一个单片机巡回检测系统,使其能对各冷冻室或各粮仓的温度巡回检测并加以处理。设被测温度范围为-30+

46、50,温度检测精度要求不大于l。温度传感器可选用热电阻、热敏电阻、PN结或集成温度传感器AD590和SL134等芯片。使用0809做A/D转换器,采用图9-19的单片机电路。9.5.1 并行接口A/D转换器ADC0809及接口技术C语言程序清单:#includeunsigned char xdata ADC0809 _at_ 0 x7fff;/定义设备变量ADC0809unsigned char data buffer8; /存放数据unsigned char data i=0;void main()IT1=1;/边沿触发EX1=1; EA=1;ADC0809=i;/启动0通道转换while(

47、1);9.5.1 并行接口A/D转换器ADC0809及接口技术void int1_srv() interrupt 2bufferi=ADC0809; /读数存放if(+i 8) /最后一个通道没结束ADC0809=i; /启动下一个通道转换9.5.1 并行接口A/D转换器ADC0809及接口技术9.5.2 串行接口A/D转换器TLC2543及接口技术本节主要内容: TLC2543的特点 TLC2543的功能结构和引脚信号 TLC2543的编程命令字 TLC2543的接口方式 TLC2543的操作时序 TLC2543的应用编程9.5.2 串行接口A/D转换器TLC2543及接口技术TLC2543

48、是TI公司生产的12位、逐次逼近式、CMOS工艺的串行接口A/D转换器。它具有输入通道多、速度高、测量范围宽、体积小、接口方便等特点。由于这些特点,受到了系统开发工程师的青睐,得到越来越多的应用。本节主要讨论:TLC 2543的特性、结构与引脚信号、命令字、时序、接口与控制编程。1、TLC2543的主要特性1)12位A/D转换器,可8位、12位和16位输出2)转换时间:l0s,高速3)11通道模拟量输入4)3种内建的自检模式5)片内采样/保持电路6)最大线性误差:1个数字量7)内置系统时钟8)有转换结束信号9.5.2 TLC2543及接口 9)单/双极性输出10)数据输出顺序可编 程,高位或低

49、位在前11)支持软件关机12)输出数据长度可编程控制13)SPI串行接口2、TLC2543的内部结构及引脚信号9.5.2 TLC2543及接口主要是7个部分AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7AIN8AIN9AIN1014通道模拟多路器自测电压12119876543213采样/保持命令寄存器12位A/D转换器(开关电容)输出数据寄存器 控制逻辑并/串转换器DINSCLKCS1718154141312121619REF+REF-DOUTEOC1234567TLC2543的引脚信号9.5.2 TLC2543及接口接口信号参考电压模拟输入信号模入信号分4组TLC2543的

50、引脚信号:20引脚AIN0AIN10:模拟信号输入CS:片选信号DIN:串行数据输入DOUT:串行数据输出EOC:转换结束信号SCLK(I/O CLOCK):输入/输出同步时钟REF+、 REF- :转换参考电压输入VCC :电源GND:地9.5.2 TLC2543及接口3、TLC2543的命令字TLC2543的每次转换都必须写入命令字,确定下次转换:选用的通道、输出数据位数、输出数据位序、数据极性。 输入的命令字高位在前。命令字格式如下:D7 D6 D5 D4D3 D2D1D0模拟通道选择输出长度顺序极性9.5.2 TLC2543及接口数据极性:0为单极性,1为双极性 (补码)数据顺序:0高

51、位在前,1低位在前数据长度:0 1为8位,1 0或0 0为12位,1 1为16位 9.5.2 TLC2543及接口 D7 D6 D5 D4选择通道0 0 0 0AIN00 0 0 1AIN10 0 1 0AIN21 0 1 0AIN101 0 1 1(VREF+ - VREF- )/21 1 0 0VREF-1 1 0 1VREF+1 1 1 0软件断电外部模拟信号内部信号 4、TLC2543的接口时序9.5.2 TLC2543及接口1次完整操作低电平发送高电平接收传送完后开始转换无效数据有效 上次数据转换中为低对芯片操作期间应低电平 5、TLC2543与89C52的接口及编程图9-24 TL

52、C2543和89C52的接口电路9.5.2 TLC2543及接口TLC2543CLKDINDOUTCSGND89C52VCCP1.0P1.1P1.2P1.3+5VVCCGNDEOCP1.4根据TLC2543的接口时序,可以总结得出以下对TLC2543的操作过程与方法:(1)使CS变低,一个操作过程开始(2)使CLK变低,从DIN发送1位命令(从高到低发送命令字);(3)使CLK变高,从DOUT读取一位数据(4)重复(2)、(3),直到接收完数据,使CS变高;(5)EOC状态:一帧数据传输完后启动转换; 转换中为低,转换结束位高;可延时等待(10s)、可查询EOC状态、或用EOC做中断请求。重复

53、以上过程,实现A/D转换。9.5.2 TLC2543及接口设TLC2543以8位方式作模数转换、选用AIN0通道、数据的高位在前、单极性信号。编写一函数,控制TLC2543实现模数转换。其命令字为:0000 01 0 0 b=0 x04(1)C语言程序:#includesbit CLK= P10;/输出(对单片机)sbit DIN= P11;/输出(对单片机)sbit DOUT=P12;/输入(对单片机)sbit CS= P13; /输出(对单片机)SbitEOC= P14; /输入(对单片机)9.5.2 TLC2543及接口 6、TLC2543的应用编程unsigned int TLC254

54、3(unsigned char com)unsigned char i, n; unsigned int result=0; n=com&0 x0c+4;/计算输出位数DOUT=1; EOC=1;CS=0;while(EOC=0);/等待转换结束for(i=0;in;i+) CLK=0; /时钟变低DIN=com/128;/送出命令字的高位com=1;/com = 1; result= 1; /接收数据左移1位CLK=1;/时钟变高result |= DOUT; /接收1位,放最低位 CLK=0; CLK=1; CS=1;return result;/返回转换结果9.5.2 TLC2543及接

55、口9.5.3 单片机片内A/D转换器及应用目前,很多单片机片内集成有A/D转换器,下面以STC89LE516AD/X2为例,说明A/D转换的使用方法。1STC单片机片内A/D转换器特点STC89LE516AD/X2的模拟量输入在P1口,有8位精度的高速A/D转换器,P1.0-P1.7共8路,为电压输入型,可做按键扫描、电池电压检测、频谱检测等。2特殊功能寄存器(1)功能(引脚)配置寄存器P1_ADC_ENP1.x作为A/D转换输入通道允许特殊功能寄存器,地址为97H,复位值为00000000B。格式如下图所示。E_P17E_P16E_P15E_P14E_P13E_P12E_P11E_P109.

56、5.3 单片机片内A/D转换器及应用(2)转换结果寄存器ADC_DATA地址:0C6H,复位值:00000000B,转换值=255 * Vin /VCC(3)转换控制寄存器ADC_CONTR地址:0C5H,复位值:xxx00000B。格式如下所示FLAGSTARTCHS2CHS1CHS09.5.3 单片机片内A/D转换器及应用相关位说明如下:1)ADC_FLAG:模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1。2)ADC_START:模拟/数字转换(ADC)启动控制位,设置为“1”时,开始转换。3)CHS2/CHS1/CHS0:模拟输入通道选择,如表9-6所示。9.5.3

57、单片机片内A/D转换器及应用模拟输入通道选择CHS2CHS1CHS0模拟输入通道选择000选择P1.0作为模拟输入001选择P1.1作为模拟输入010选择P1.2作为模拟输入011选择P1.3作为模拟输入100选择P1.4作为模拟输入101选择P1.5作为模拟输入110选择P1.6作为模拟输入111选择P1.7作为模拟输入9.5.3 单片机片内A/D转换器及应用3A/D转换程序用P1.0为模拟量输入端进行A/D转换,程序如下:#include sfr P1_ADC_EN=0 x97;/定义A/D功能引脚配置寄存器sfr ADC_CONTR=0 xC5;/定义A/D转换控制寄存器sfr ADC_

58、DATA=0 xC6;/定义A/D转换结果寄存器9.5.3 单片机片内A/D转换器及应用/延时函数void delay10 xms(unsigned char x) /延时10 xms函数/设振荡频率为12MHzunsigned int i; while(x-) /延时x个10msfor(i=0;i830;i+);/试验得出8309.5.3 单片机片内A/D转换器及应用unsignedcharADC (unsigned char chan)/AD转换函数delay10 xms(1);/使输入电压达到稳定ADC_CONTR=0 x08+chan;/选择通道,启动转换while(ADC_CONTR

59、&0 x10)=0);/等待转换结束return ADC_DATA;/返回转换结果9.5.3 单片机片内A/D转换器及应用9.6 开关量输出接口技术主要内容9.6.1 继电器接口技术9.6.2 光电耦合器件接口技术9.6.3 直流电机控制接口技术9.6.4 步进电机控制接口技术9.6 开关量输出接口技术在单片机控制系统中,单片机总要对被控对象实现控制操作。其特点是弱电控制强电,即小信号输出实现大功率控制。常见的被控对象有电机、电磁开关等。控制信号是以数字信号的形式通过I/O口送给被控对象的。为防止被控对象中的大功率设备对数字信号造成干扰,常使用光电耦合器件在单片机与被控对象间进行隔离,使用继电

60、器实现开关量对大功率器件的控制。 9.6.1 继电器接口技术(1)单片机与继电器的接口图9-27 继电器接口只要让继电器的吸合线圈通过一定的电流,线圈产生的磁力就会带动衔铁移动,从而带动开关点的接通和断开,由此控制电路的通或断。由于继电器的强电触点与吸合线圈之间是隔离的,所以继电器控制输出电路不需要专门设计隔离电路。图中二极管的作用是把继电器吸合线圈的反电动势吸收掉,从而保护晶体管。9.6.2 继电器接口技术(2)单片机与固态继电器接口图9-28 固体继电器内部结构9.6.2 继电器接口技术固态继电器是一种四端器件:两端输入,两端输出,它们之间用光耦合器隔离。是一种新型的无触点电子继电器,其输

温馨提示

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

评论

0/150

提交评论