收藏 分享(赏)

单片机原理及应用(C语言版)9.ppt

上传人:kpmy5893 文档编号:8268826 上传时间:2019-06-17 格式:PPT 页数:118 大小:2.42MB
下载 相关 举报
单片机原理及应用(C语言版)9.ppt_第1页
第1页 / 共118页
单片机原理及应用(C语言版)9.ppt_第2页
第2页 / 共118页
单片机原理及应用(C语言版)9.ppt_第3页
第3页 / 共118页
单片机原理及应用(C语言版)9.ppt_第4页
第4页 / 共118页
单片机原理及应用(C语言版)9.ppt_第5页
第5页 / 共118页
点击查看更多>>
资源描述

1、单片机原理及应用 (C语言版) 第9章 单片机系统配置及接口,第9章 单片机系统配置及接口,目 录9.1 键盘接口9.2 LED显示接口9.3 A/D转换接口9.4 D/A转换接口9.5 开关器件接口,本章要点单片机主要应用于测控系统中,应用系统通常需要人的干预。本章主要讲述键盘、显示器、A/D转换器、D/A转换器、开关器件等的工作原理及接口电路。,第9章 单片机系统配置及接口,图9-1 单片机应用系统配置框图,9.1 键盘接口,主要内容9.1.1 键盘基本问题9.1.2 键盘结构及处理程序9.1.3 中断扫描方式,1、键的识别当按键K未被按下时,P1.0输入为高电平;当K闭合时,P1.0输入

2、为低电平。,9.1.1 键盘基本问题,图9-2 按键电路,2、键的抖动由于机械触点的弹性作用,按键在闭合时不会马上稳定地接通,在断开时也不会一下子断开。在闭合及断开的瞬间均伴随有一连串的抖动,如图9-3所示 。抖动时间一般为510ms。抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅做一次处理,必须去除键抖动。,9.1.1 键盘基本问题,9.1.1 键盘基本问题,图9-3 按键时的抖动,9.1.1 键盘基本问题,一独立式键盘独立式按键是指各按键相互独立地接通一条输入数据线。当任何一个键按下时,与之相连的输入数据线即可读入数据0,而没有按下时读入1。,9.1.2 键盘结构及处理程序,优

3、点:电路简单; 缺点:键数较多时,要占用较多的I/O线。,图9-4 独立式键盘,例9-1 设计一个独立式按键的键盘接口,并编写键扫描程序,电路原理图如图9-4所示,键号从上到下分别为07。C语言程序清单: #include void key() unsigned char k;P1=0xff; /输入时P1口置全1k=P1; /读取按键状态if(k=0xff) /无键按下,返回return;delay20ms(); /有键按下,延时去抖,9.1.2 键盘结构及处理程序,k=P1;if(k=0xff) /确认键按下return; /抖动引起,返回while(P1!=0xff); /等待键释放sw

4、itch(k)case:0xfe /0号键按下时执行程序段break;case:0xfd /1号键按下时执行程序段break;,9.1.2 键盘结构及处理程序, /26号键程序省略case:0x7f /7号键按下时执行程序段break; 汇编语言程序清单: KEY: MOV P1,#0FFH ;P1口为输入口MOV A,P1 ;读取按键状态CPL A ;取正逻辑JZ EKEY ;无键按下,返回,9.1.2 键盘结构及处理程序,LCALL DELAY20MS ;有键按下,去抖MOV A,P1CPL AJZ EKEY ;抖动引起,返回MOV B,A ;存键值 KEY1:MOV A,P1 ;以下等待

5、键释放CPL AJNZ KEY1 ;未释放,等待MOV A,B ;取键值送AJB ACC.0,PKEY0 ;K0按下转PKEY0JB ACC.1,PKEY1 ;K1按下转PKEY1,9.1.2 键盘结构及处理程序,JB ACC.7,PKEY7 ;K7按下转PKEY7 EKEY: RET PKEY1:LCALL K0 ;K0命令处理程序RET PKEY2:LCALL K1 ;K1命令处理程序RET PKEY4:LCALL K7 ;K7命令处理程序RET,9.1.2 键盘结构及处理程序,二行列式键盘为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式。每一水

6、平线(行线)与垂直线(列线)的交叉处通过一个按键来连通。,图9-5 44矩阵键盘接口,利用这种结构只需N条行线和M条列线, 即可组成具有NM个按键的键盘。,9.1.2 键盘结构及处理程序,图 9 | 54 4 矩 阵 键 盘 接 口,9.1.2 键盘结构及处理程序,1.行扫描法工作原理判别键盘中有无键按下。向行线输出全0,读入列线状态。如果有键按下,总有一列线被拉至低电平,从而使列输入不全为1。查找按下键所在位置。依次给行线送低电平,查列线状态。全为1,则所按下的键不在此行;否则所按下的键必在此行且是在与零电平列线相交的交点上的那个键。对按键位置进行编码。找到所按下按键的行列位置后,对按键进行

7、编码,即求得按键键值。,9.1.2 键盘结构及处理程序,2.键盘扫描识别子程序C语言程序清单: #include char key() char row,col, k =-1; /定义行、列、返回值P1=0xf0;if(P1 /抖动引起,返回,9.1.2 键盘结构及处理程序,for(row=0;row4;row+) /行扫描 P1=(1row); /扫描值送P1k=P1 /返回键值 ,9.1.2 键盘结构及处理程序,汇编语言程序清单(返回键值:在累加器A中): KEY:LCALL KS ;判断是否有键按下JZ EKEY ;无键按下,返回LCALL DELAY20MS ;延时去抖LCALL KS

8、JZ EKEY ;抖动引起,返回 SKEY:MOV R0,#0 ; 行扫描计数器R0 清0MOV R1,#0 ; 列计数器R1 清0MOV R3,#0FEH ;R3为行扫描字暂存 SKEY1:MOV P1,R3 ;输出行扫描字,9.1.2 键盘结构及处理程序,MOV A,P1 ;读列值MOV R1,A ;暂存列值CPL AANL A,#0F0HJNZ SKEY2 ;键在该列,转SKEY2INC R0 ;行计数器加1SETB CMOV A,R3RLC AMOV R3,A ;进行下一行扫描CJNE R0,#4,SKEY1 ;4未完成, 转SKEY1EKEY: MOV A,#0FFH ;无键返回0F

9、FH RET,9.1.2 键盘结构及处理程序,SKEY2: MOV A,R1JNB ACC.4,SKEY3JNB ACC.5,SKEY4JNB ACC.6,SKEY5JNB ACC.7,SKEY6 SKEY3: MOV R2,#0 ;存0列号SJMP DKEY SKEY4: MOV R2,#1 ;存1列号SJMP DKEY SKEY5: MOV R2,#2 ;存2列号SJMP DKEY,SKEY6:MOV R2,#3 ;存3列号SJMP DKEY DKEY: MOV A,R0 ; 行号送AMOV B,#4MUL AB ADD A,R2 ;行号4+列号=键值PUSH ACC LK: LCALL

10、KS ;等待键释放JNZ LKPOP ACCRET,9.1.2 键盘结构及处理程序,;是否有键按下子程序,有返回非0,无返回0 KS: MOV P1,#0F0HMOV A,P1CPL AANL A,#0F0HRET,9.1.2 键盘结构及处理程序,3.行列反转法工作原理 判别键盘中有无键按下。(方法同行扫描法)输入变输出,再读。将上一步读取到的列线输入值从列线输出,读取行线值。定位求键值。根据上一步输出的列线值和读取到的行线值就可以确定所按下键所在的位置,从而查表确定键值。,9.1.2 键盘结构及处理程序,4.行列反转法识别子程序C语言程序代码: #include char key() cha

11、r code keycode= 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 /键盘表,定义16个按键的行列组合值,9.1.2 键盘结构及处理程序,char row,col,k=-1,i; /定义行、列、返回值、循环控制变量P1=0xf0;if(P1 /列值输出,读取行值,9.1.2 键盘结构及处理程序,/查找行列组合值在键盘表中位置for(i=0;i16;i+)if(row|col)=keycodei) /找到,i即为键值, /否则,返回-1 key=i; /对重复键,该方法br

12、eak; /处理为无键按下P1=0xf0;while(P1 /返回键值 ,9.1.2 键盘结构及处理程序,9.1.3 中断扫描方式,为了提高CPU的效率,可以采用中断扫描工作方式,即只有在键盘有键按下时才产生中断申请,CPU响应中断,进入中断服务程序进行键盘扫描,并做相应处理。也可以采用定时扫描方式,即系统每隔一定时间进行键盘扫描,并做相应处理。,9.1.3 中断扫描方式,图9-6 中断方式键盘接口,9.2 LED显示接口,主要内容9.2.1 LED显示器结构原理 9.2.2 LED显示器接口及显示方式 9.2.3 LED显示器与89C52接口及显示子程序,9.2.1 LED显示器结构原理,单

13、片机中通常使用7段LED构成字型为“8”且加一个小数点的数码管,以显示数字、符号及小数,常见数码管如下图。,显示器有共阴极和共阳极两种。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个笔划,另一个为小数点。当在某段发光二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。,9.2.1 LED显示器结构原理,以共阴极显示器为例,当a、b、c三段送1时,数码管显示数字7。,(c)引脚配置外形图,(b)共阳极,(a)共阴极,9.2.1 LED显示器结构原理,表9-1 共阴极和共阳极7段LED显示字

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

15、,由一个8位I/O口控制。而共阴(或共阳)极公共端K分别由相应的I/O线控制,实现各位的分时选通。图9-8为6位共阴极LED动态显示接口电路。,9.2.2 LED显示器接口及显示方式,图9-8 6位LED动态显示接口电路,9.2.2 LED显示器接口及显示方式,各位扫描显示:由于6位LED所有段选线皆由P1口控制,要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,在每一瞬间只使某一位显示字符。段选码、位选码控制:P1口输出相应字符段选码,P2口在该显示位送入选通电平,保证该位显示相应字符,如此轮流。扫描延时:段选码、位选码每送入一次后延时1ms,保证每位有一定亮度,因人眼的视觉暂留

16、效果,看上去每个数码管总在亮。,9.2.2 LED显示器接口及显示方式,9.2.3 显示器与89C52接口及显示子程序,下页图为89C52 P1口和P2口控制的6位共阴极LED动态显示接口电路。P1口输出段选码,P2口输出位选码,位选码占用输出口的线数决定于显示器位数。74LS245是双向8位缓冲器,在此分别作为段选和位选驱动器。逐位轮流点亮各个LED,每一位保持1ms,在1020ms之内再一次点亮,重复不止。这样,利用人的视觉暂留,好像6位LED同时点亮一样。,图9 | 9 数码管动态显示接口,9.2.3 显示器与89C52接口及显示子程序,C语言程序清单: #include unsigne

17、d char code LED=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; unsigned char buf6; /定义字型码和显示缓冲区 void disp() unsigned char i;for(i=0;ii); /位码送P2口delay1ms(); /延时1ms ,9.2.3 显示器与89C52接口及显示子程序,汇编语言程序清单: DISP: MOV R0,#DISPBUF ; R0指向显示缓冲区 MOV R2,#0DFH ;位码送R2MOV R3,#6 ;6位显示MOV DPTR,#TAB ;DPTR指向段码表LOOP:M

18、OV P2,R2 ;位码送P2口MOV A,R0 ;取显示数据MOVC A,A+DPTR ;取出字型码MOV P1,A ;送出显示LCALL DELAY1MS ;延时1msINC R0 ;数据缓冲区地址加1MOV A,R2RR A ;位码右移一位MOV R2,A,9.2.3 显示器与89C52接口及显示子程序,DJNZ R3,LOOP ;扫描到最左边显示位?RET TAB: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH,9.2.3 显示器与89C52接口及显示子程序,9.3 A/D转换接口,主要内容9.3.1 多通道串行输出A/D芯片TLC2543及

19、接口 9.3.2 逐次逼近型并行输出A/D转换器及接口 9.3.3 单片机内部集成的A/D转换器,模/数(A/D)转换的方式:有很多种,例如,计数比较型、逐次逼近型、双积分型等。选择A/D转换器件主要是从速度、精度和价格上考虑。A/D转换器的输出方式:有串行、并行方式,并且有些增强型的单片机在片内也集成有A/D转换器。,9.3 A/D转换接口,9.3.1 多通道串行输出A/D芯片TLC2543及接口,TLC2543是TI公司生产的串行A/D转换器,它具有输入通道多、精度高、速度高、使用灵活和体积小的优点。TLC2543为CMOS 型12位开关电容逐次逼近A/D转换器。片内含有一个14通道多路器

20、,可从11个模拟输入或3个内部自测电压中选择一个。,TLC2543与微处理器的接线用SPI接口只有4根连线,其外围电路也大大减少。TLC2543的特性如下: 12位A/D转换器(可8位、12位和16位输出)。 在工作温度范围内转换时间为l0s。 11通道输入。 3种内建的自检模式。 片内采样/保持电路。 最大1/4 096的线性误差。,9.3.1 多通道串行输出A/D芯片TLC2543及接口,内置系统时钟。 转换结束标志位。 单/双极性输出。 输入/输出的顺序可编程(高位或低位在前)。 可支持软件关机。 输出数据长度可编程。,9.3.1 多通道串行输出A/D芯片TLC2543及接口,1TLC2

21、543的片内结构及引脚功能TLC2543片内由通道选择器、数据(地址和命令字)输入寄存器、采样/保持电路、12位的模/数转换器、输出寄存器、并行到串行转换器以及控制逻辑电路7个部分组成。TLC2543片内结构如图9-11所示。,9.3.1 多通道串行输出A/D芯片TLC2543及接口,图9-11 TLC2543片内结构框图,9.3.1 多通道串行输出A/D芯片TLC2543及接口,TLC2543的引脚意义如下: AIN0AIN10 模拟输入通道。 CS片选端。 DIN 串行数据输入。 DOUT转换结束数据输出。 EOC转换结束信号。 GND地。 SCLK(I/O CLOCK)输入/输出同步时钟

22、。 REF+、 REF- 转换参考电压。 VCC 设备的电源。,9.3.1 多通道串行输出A/D芯片TLC2543及接口,2TLC2543的命令字TLC2543的每次转换都必须给其写入命令字,以便确定下一次转换用哪个通道,下次转换结果用多少位输出,转换结果输出是低位在前还是高位在前。命令字的输入采用高位在前。命令字如下:,输入到输入寄存器中的8位编程数据选择器件输入通道和输出数据的长度及格式。其选择格式如下表。,9.3.1 多通道串行输出A/D芯片TLC2543及接口,表9-2 输入寄存器命令字格式,9.3.1 多通道串行输出A/D芯片TLC2543及接口,注:X表示无关项。,9.3.1 多通

23、道串行输出A/D芯片TLC2543及接口,3TLC2543与89C52的SPI接口及程序,图9-12 TLC2543和89C52的接口电路,9.3.1 多通道串行输出A/D芯片TLC2543及接口,TLC2543提供SPI接口。对于89C52,须用软件合成SPI操作来和TLC2543接口。TLC2543的I/O CLOCK、DIN和两端由单片机的P1.0、P1.1和P1.3提供。TLC2543转换结果的输出(DOUT)数据由P1.2接收。89C52将用户的命令字通过P1.1输入到TLC2543的输入寄存器中,等待20s开始读数据,同时写入下一次的命令字。,9.3.1 多通道串行输出A/D芯片T

24、LC2543及接口,TLC2543与89C52的8位数据传送程序 TLC2543与89C52进行1次8位数据传送,选用AIN0(即采集1次),高位在前。C语言程序清单: #include #include sbit CS =P13; sbit CLK =P10; sbit DIN =P11; sbit DOUT =P12; /定义函数,输入参数为命令字,输出转换结果,9.3.1 多通道串行输出A/D芯片TLC2543及接口,unsigned char TLC2543(unsigned char command) unsigned char i,result=0;CS=0; /片选有效for(i

25、=0;ii); /命令字按位送出result=1;result|=DOUT; /按位接收转换结果CLK=1; /产生一个时钟_nop_(); /高电平有一定宽度CLK=0;return result; /返回转换结果 ,9.3.1 多通道串行输出A/D芯片TLC2543及接口,汇编语言程序清单: TLC2543: MOV R4,#04H ;控制字,AIN0,8位MOV A,R4CLR P1.3 ;片选有效,选中2543 MSB: MOV R5,#08H ;传送8位 LOOP: MOV P1,#04H ;P1.2为输入MOV C,P1.2 ;读结果到C中RLC A ;带进位循环左移MOV P1.

26、1,C ;将控制字(ACC中)的一位经DIN送入,9.3.1 多通道串行输出A/D芯片TLC2543及接口,SETB P1.0 ;产生一个时钟NOPCLR P1.0DJNZ R5,LOOPMOV R2,A ;将转换的数据存入R2RET执行上述子程序,经8次循环,执行“RLC A”指令8次,最后命令字00000100经P1.1、DIN进入TLC2543的输入寄存器,8位A/D转换数据.读入累加器。,9.3.1 多通道串行输出A/D芯片TLC2543及接口,9.3.2 逐次逼近型并行输出A/D转换器及接口,1ADC0809的片内结构及引脚功能ADC0809是CMOS工艺,采用逐次逼近法的8位A/D

27、转换芯片。多路开关有8路模拟量输入端,最多允许8路模拟量分时输入,共用一个A/D转换器进行转换。图9-13为ADC0809的内部逻辑结构图。它由8路模拟开关、8位A/D转换器、三态输出锁存器以及地址锁存译码器等组成。,图9-13 ADC0809内部逻辑结构结构,9.3.2 逐次逼近型并行输出A/D转换器及接口,引脚功能说明如下: IN0IN7:8个通道的模拟输入端。 D0D7:8位数字量输出端。 START:启动信号。 ALE:地址锁存信号。 EOC:转换结束信号。 OE:输出允许控制端。 CLOCK:时钟信号。 VREF+和VREF-:A/D转换器的参考电压。 VCC 电源电压。,9.3.2

28、 逐次逼近型并行输出A/D转换器及接口,8位模拟开关地址输入通道的关系见表9-3。模拟开关的作用和8选1的CD4051作用相同。,表9-3 8位模拟开关功能表,9.3.2 逐次逼近型并行输出A/D转换器及接口,2ADC0809与89C52接口ADC0809芯片的转换速度在最高时钟频率下为100s左右。ADC0809与89C52连接可采用查询方式,也可采用中断方式。图9-14为中断方式连接电路图。由于ADC0809片内有三态输出锁存器,因此可直接与89C52接口。,9.3.2 逐次逼近型并行输出A/D转换器及接口,图9-14 ADC0809与89C52的连接,9.3.2 逐次逼近型并行输出A/D

29、转换器及接口,这里将ADC0809作为外部扩展并行I/O口,采用线选法寻址。ADC0809的ADDA、ADDB和ADDC端由P0.0、P0.1、P0.2送出,ADC0809的地址由P2.7控制,其他地址位与此无关,设为1,于是ADC0809地址为为7FFFH。在图9-14所示的接口电路中,ADC0809与片外RAM统一编址。,9.3.2 逐次逼近型并行输出A/D转换器及接口,启动ADC0809的工作过程是:先送数据(通道地址)到ADC0809,由ALE信号锁存,同时START有效,启动A/D转换。A/D转换完毕,EOC端发出一正脉冲,申请中断。在中断服务程序中,使OE端有效,8位数据便读入到C

30、PU中。,9.3.2 逐次逼近型并行输出A/D转换器及接口,38路巡回检测系统例9-2 某粮库或某冷冻厂需对8点(8个冷冻室或8个粮仓)进行温度巡回检测。要求设计一个单片机巡回检测系统,使其能对各冷冻室或各粮仓的温度巡回检测并加以处理。设被测温度范围为-30+50,温度检测精度要求不大于l。温度传感器可选用热电阻、热敏电阻、PN结或集成温度传感器AD590和SL134等芯片。,9.3.2 逐次逼近型并行输出A/D转换器及接口,C语言程序清单: #include #include /绝对地址定位 #define DAC0809 XBYTE0x7fff /定义C0809地址 unsigned ch

31、ar xdata buffer8; /数据存放定义 unsigned char i=0; void main() IT1=1; /边沿触发EA=1;EX1=1;DAC0809=i; /启动0通道转换while(1); ,9.3.2 逐次逼近型并行输出A/D转换器及接口,void int1_srv() interrupt 2 bufferi=DAC0809; /读数存放if(+i!=8) /最后一个通道没结束DAC0809=i; /启动下一个通道转换 ,9.3.2 逐次逼近型并行输出A/D转换器及接口,汇编语言主程序: MAIN: MOV R0,#0A0H ;数据暂存区首地址MOV R2,#8

32、;8路计数初值MOV R3,#0 ;R3存放通道号SETB IT1 ;边沿触发SETB EA ;开中断SETB EX1MOV DPTR,#7FFFH ;指向0809MOV A,R3 MOVX DPTR,A ;送通道号,启动转换SJMP $,9.3.2 逐次逼近型并行输出A/D转换器及接口,中断服务程序:MOVX A,DPTR ;读数MOVX R0,A ;存数INC R0 ;更新存放单元INC R3 ;更新通道DJNZ R2,DONERETI DONE:MOV A,R3MOVX DPTR,ARETI,9.3.2 逐次逼近型并行输出A/D转换器及接口,9.3.3 单片机内部集成的A/D转换器,目前

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

34、TA 特殊功能寄存器。A/D转换结果特殊功能寄存器,地址为0C6H,复位值为00000000B,模拟/数字转换结果计算公式如下:结果=256 * Vin /VCC。(3)ADC_CONTR 特殊功能寄存器。A/D转换控制特殊功能寄存器,地址为0C5H,复位值为xxx00000B。格式如图9-16所示。,图9-16 ADC_CONTR 特殊功能寄存器,9.3.3 单片机内部集成的A/D转换器,相关位说明如下:1)ADC_FLAG:模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1。2)ADC_START:模拟/数字转换(ADC)启动控制位,设置为“1”时,开始转换。3)CHS2/

35、CHS1/CHS0:模拟输入通道选择,如表9-4所示。,9.3.3 单片机内部集成的A/D转换器,表9-4 模拟输入通道选择,9.3.3 单片机内部集成的A/D转换器,3A/D转换程序用P1.0为模拟量输入端进行A/D转换,程序如下: #include sfr P1_ADC_EN=0x97; /A/D转换功能允许寄存器 sfr ADC_CONTR=0xC5; /A/D转换控制寄存器 sfr ADC_DATA=0xC6; /A/D转换结果寄存器,9.3.3 单片机内部集成的A/D转换器,/延时函数 void delay(unsigned char delay_time) unsigned int

36、 i;while(delay_time-)for(i=0;i10000;i+); ,9.3.3 单片机内部集成的A/D转换器,unsigned char ADC() /AD转换函数 delay(1); /使输入电压达到稳定ADC_CONTR=0x08; /P1.0为模拟量输入端,启动A/D转换while(ADC_CONTR /返回转换结果 ,9.3.3 单片机内部集成的A/D转换器,9.4 D/A转换接口,主要内容9.4.1 位并行D/A转换器DAC0832接口技术9.4.2 串行输入D/A转换器TLC5615接口技术,9.4.1 并行D/A转换器DAC0832接口技术,1DAC0832的结构

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

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

39、OUT2:电流输出线。IOUT1与IOUT2的和为常数,DAC寄存器的内容线性变化。一般在单极性输出时,IOUT2接地。 VCC:工作电源。 DGND:数字地。 AGND:模拟信号地。,9.4.1 8位并行D/A转换器DAC0832接口技术,2DAC0832与单片机的接口(1)单缓冲器方式接口。,图9-18 DAC0832单缓冲方式接口,9.4.1 8位并行D/A转换器DAC0832接口技术,将ILE接+5V,寄存器选择信号及数据传送信号都与地址选择线相连(图中为P2.7),两级寄存器的写信号都由89C52的WR端控制。当地址线选通DAC0832后,只要输出控制信号,DAC0832就能一步完成

40、数字量的输入锁存和D/A转换输出。,9.4.1 8位并行D/A转换器DAC0832接口技术,C语言程序清单: /*-头文件声明及端口地址定义-*/ #include #define DAC0832 XBYTE0x7FFF/*-在需要输出时, data1为输出模拟量的数字值-*/ DAC0832=data1;汇编语言程序清单: MOV DPTR,#7FFFH MOV A,#DATA1 MOVX DPTR,A,9.4.1 8位并行D/A转换器DAC0832接口技术,(2)双缓冲器同步方式接口。图9-19是一个二路同步输出的D/A转换接口电路。89C52的P2.5和P2.6分别选择两路D/A转换器的

41、输入寄存器,控制输入锁存;P2.7连到两路D/A转换器的XFER端控制同步转换输出;WR与所有的WR1、WR2端相连,在执行MOVX指令时,89C52自动输出WR信号。,9.4.1 8位并行D/A转换器DAC0832接口技术,图9-19 DAC0832双缓冲方式接口,9.4.1 8位并行D/A转换器DAC0832接口技术,C语言程序清单: #include /* 定义两片0832输入寄存器端口地址和 / / 同步输出地址 */ #define DAC0832_1 XBYTE0xDFFF #define DAC0832_2 XBYTE0xBFFF #define DAC_ALL XBYTE0x7

42、FFF /* 在需要模拟量同步输出时 */ DAC0832_1=data1; /第一片0832输出数字值 DAC0832_2=data2; /第二片0832输出数字值 DAC_ALL=0; /0无意义,使XFER同时有效,9.4.1 8位并行D/A转换器DAC0832接口技术,(3)DAC0832应用阶梯波的产生。阶梯波是在一定的时间内每隔一段时间输出的幅值递增一个恒定值。如图9-20所示,每隔1ms输出增长一个定值,经10 ms后循环。用DAC0832的单缓冲方式就可以实现这样的波形。,图9-20 阶梯波波形,9.4.1 8位并行D/A转换器DAC0832接口技术,C语言程序清单:/为了使输

43、出波形有一定高度,设n,取值125 #include #define DAC0832 XBYTE0x7FFF void main() unsigned char i,n=20;while(1)for(i=0;i10;i+) DAC0832=i*n; delay(1); /延时1ms ,9.4.1 8位并行D/A转换器DAC0832接口技术,9.4.2 串行D/A转换器TLC5615接口技术,数/模转换器从接口上可分为两大类:并行接口和串行接口。并行接口:引脚多,体积大,占用I/O线多;串行接口:体积小,占用单片机的I/O线少。1TLC5615的结构原理TLC5615是具有3线串行接口的数/模转

44、换器。其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能。TLC5615的性价比较高。,(1)TLC5615的特点。 10位CMOS电压输出。 5V单电源工作。 与微处理器3线串行接口(SPI)。 最大输出电压是基准电压的2倍。 建立时间12.5s。 内部上电复位。 低功耗,最高为l.75 mW。 引脚与MAX515兼容。,9.4.2 串行输入D/A转换器TLC5615接口技术,(2)功能方框图。,图9-21 TLC5615功能方框图,9.4.2 串行输入D/A转换器TLC5615接口技术,(3)引脚功能说明: DIN:串行数据输入。 SCLK:串行时钟输入。 CS:芯片选择,低

45、电平有效。 DOUT:用于菊花链(daisy chaining)的串行数据输出。 AGND:模拟地。 REFIN:基准电压输入。 OUT:DAC模拟电压输出。 VDD。正电源(4.55.5V)。,9.4.2 串行输入D/A转换器TLC5615接口技术,(4)TLC5615的输入/输出关系。图9-23所示的D/A输入/输出关系如表9-5所列。,表9-5 D/A转换关系表,9.4.2 串行输入D/A转换器TLC5615接口技术,因为TLC5615芯片内的输入锁存器为12位宽,所以要在10位数字的低位后面再填以数字XX。XX为不关心状态。串行传送的方向是先送出高位MSB,后送出低位LSB。,如果有级

46、联电路,则应使用16位的传送格式,即在最高位MSB的前面再加上4个虚位,被转换的10位数字在中间。,9.4.2 串行输入D/A转换器TLC5615接口技术,2TLC5615与89C52的串行接口电路及程序 在下图电路中,89C52单片机自P3.0P3.2口分别控制TLC5615的片选 CS、串行时钟输入SCLK和串行数据输入DIN。,图9-23 TLC5615与89C51接口电路,9.4.2 串行输入D/A转换器TLC5615接口技术,D/A转换程序如下: sbit CS=P30; sbit SCLK=P31; sbit DIN=P32; void DAC(unsigned int adata

47、) char i;adata=2; /10位数据升位为12 /位,低2位无效CS=0; /片选有效,9.4.2 串行输入D/A转换器TLC5615接口技术,for(i=11;i=0;i-)SCLK=0; /时钟低电平DIN=adata /片选高电平 ,9.4.2 串行输入D/A转换器TLC5615接口技术,9.5 开关器件接口,在单片机控制系统中,单片机总要对被控对象实现控制操作。后向通道是计算机实现控制运算处理后,对被控对象的输出通道接口。后向通道的特点是弱电控制强电,即小信号输出实现大功率控制。常见的被控对象有电机、电磁开关等。数字信号形态的开关量、二进制数字量和频率量可直接用于开关量、数字量系统及频率调制系统的控制。,1继电器及接口(1)单片机与继电器的接口。,图9-24 继电器接口,9.5 开关器件接口,只要让继电器的吸合线圈通过一定的电流,线圈产生的磁力就会带动衔铁移动,从而带动开关点的接通和断开,由此控制电路的通或断。由于继电器的强电触点与吸合线圈之间是隔离的,所以继电器控制输出电路不需要专门设计隔离电路。图中二极管的作用是把继电器吸合线圈的反电动势吸收掉,从而保护晶体管。,9.5 开关器件接口,(2)单片机与固态继电器接口。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报