单片机原理及应用(C语言版)9资料_第1页
单片机原理及应用(C语言版)9资料_第2页
单片机原理及应用(C语言版)9资料_第3页
单片机原理及应用(C语言版)9资料_第4页
单片机原理及应用(C语言版)9资料_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理(yunl)及应用 (C语言版)第9章 单片机系统配置及接口主 编:周国运本章(bn zhn)制作:鲁庆宾中国水利水电出版社共一百一十九页第9章 单片机系统配置及接口(ji ku)目 录9.1 键盘接口9.2 LED显示(xinsh)接口9.3 A/D转换接口9.4 D/A转换接口9.5 开关器件接口共一百一十九页本章要点单片机主要应用于测控系统中,应用系统通常需要人的干预。本章主要讲述(jingsh)键盘、显示器、A/D转换器、D/A转换器、开关器件等的工作原理及接口电路。共一百一十九页第9章 单片机系统配置及接口(ji ku)图9-1 单片机应用(yngyng)系统配置框图共一百

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

3、键的一次闭合仅做一次处理,必须去除键抖动。9.1.1 键盘(jinpn)基本问题共一百一十九页9.1.1 键盘基本(jbn)问题共一百一十九页图9-3 按键(n jin)时的抖动9.1.1 键盘基本(jbn)问题共一百一十九页一独立式键盘独立式按键是指各按键相互独立地接通一条输入数据线。当任何一个(y )键按下时,与之相连的输入数据线即可读入数据0,而没有按下时读入1。9.1.2 键盘(jinpn)结构及处理程序 优点:电路简单;缺点:键数较多时,要占用较多的I/O线。图9-4 独立式键盘共一百一十九页例9-1 设计一个独立式按键的键盘接口,并编写键扫描程序,电路(dinl)原理图如图9-4所

4、示,键号从上到下分别为07。C语言程序清单:#includevoid key()unsigned char k;P1=0 xff;/输入时P1口置全1k=P1;/读取按键状态if(k=0 xff) /无键按下,返回return;delay20ms();/有键按下,延时去抖9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页k=P1;if(k=0 xff) /确认键按下return; /抖动引起,返回while(P1!=0 xff); /等待(dngdi)键释放switch(k)case:0 xfe /0号键按下时执行程序段break;case:0 xfd /1号键按下时执行程序段bre

5、ak;9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页 /26号键程序省略case:0 x7f /7号键按下时执行程序段break;汇编语言程序清单:KEY:MOVP1,#0FFH ;P1口为输入口MOVA,P1 ;读取按键状态CPLA ;取正逻辑(lu j)JZEKEY ;无键按下,返回9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页 LCALL DELAY20MS ;有键按下,去抖 MOV A,P1 CPL A JZ EKEY ;抖动引起(ynq),返回 MOV B,A ;存键值KEY1:MOV A,P1 ;以下等待键释放 CPL A JNZ KEY1 ;未释放,等

6、待 MOV A,B ;取键值送A JB ACC.0,PKEY0 ;K0按下转PKEY0 JB ACC.1,PKEY1 ;K1按下转PKEY1 9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页 JBACC.7,PKEY7 ;K7按下转PKEY7EKEY: RETPKEY1:LCALLK0 ;K0命令(mng lng)处理程序 RETPKEY2:LCALLK1 ;K1命令处理程序 RET PKEY4:LCALLK7 ;K7命令处理程序 RET9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页 二行列式键盘 为了(wi le)减少键盘与单片机接口时所占用I/O线的数目,在键数较

7、多时,通常都将键盘排列成行列矩阵形式。每一水平线(行线)与垂直线(列线)的交叉处通过一个按键来连通。图9-5 44矩阵键盘(jinpn)接口 利用这种结构只需N条行线和M条列线,即可组成具有NM个按键的键盘。9.1.2 键盘结构及处理程序 共一百一十九页图9|544矩阵键盘接口9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页 1.行扫描法工作原理 判别键盘中有无键按下。向行线输出全0,读入列线状态。如果有键按下,总有一列线被拉至低电平,从而使列输入不全为1。 查找按下键所在位置。依次给行线送低电平,查列线状态。全为1,则所按下的键不在此行;否则所按下的键必在此行且是在与零电平列线相

8、交的交点上的那个键。 对按键位置进行(jnxng)编码。找到所按下按键的行列位置后,对按键进行编码,即求得按键键值。9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页2.键盘扫描识别(shbi)子程序C语言程序清单:#includechar key() char row,col, k =-1; /定义行、列、返回值P1=0 xf0;if(P1&0 xf0)=0 xf0)return k; /无键按下,返回delay20ms(); /延时去抖if(P1&0 xf0)=0 xf0)return k; /抖动引起,返回9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页for(ro

9、w=0;row4;row+)/行扫描 P1=(1row); /扫描值送P1 k=P1&0 xf0; if(k!=0 xf0) /列线不全为1, while(k&(1(col+4)/所按键在该列 col+; /查找为0列号 k=row*4+col;/计算键值 P1=0 xf0; while(P1&0 xf0)!=0 xf0); /等待(dngdi)键释放 break; return k;/返回键值9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页汇编语言(hu bin y yn)程序清单(返回键值:在累加器A中):KEY:LCALL KS ;判断是否有键按下JZ EKEY ;无键按下,

10、返回LCALL DELAY20MS ;延时去抖LCALL KSJZ EKEY ;抖动引起,返回SKEY:MOV R0,#0 ; 行扫描计数器R0 清0MOV R1,#0 ; 列计数器R1 清0MOV R3,#0FEH ;R3为行扫描字暂存SKEY1:MOV P1,R3 ;输出行扫描字9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页MOVA,P1 ;读列值MOVR1,A ;暂存列值CPLAANLA,#0F0HJNZSKEY2 ;键在该列,转SKEY2INCR0 ;行计数器加1SETBCMOVA,R3RLCAMOVR3,A ;进行下一行(yxng)扫描CJNER0,#4,SKEY1 ;

11、4未完成, 转SKEY1 EKEY:MOVA,#0FFH;无键返回0FFH RET9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页SKEY2:MOVA,R1JNBACC.4,SKEY3JNBACC.5,SKEY4JNBACC.6,SKEY5JNBACC.7,SKEY6SKEY3:MOVR2,#0;存0列号SJMPDKEYSKEY4:MOVR2,#1;存1列号SJMPDKEYSKEY5:MOVR2,#2;存2列号SJMPDKEY9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页SKEY6:MOVR2,#3 ;存3列号 SJMPDKEYDKEY: MOVA,R0 ; 行号送A

12、 MOVB,#4 MULAB ADDA,R2 ;行号4+列号=键值 PUSHACCLK: LCALLKS ;等待(dngdi)键释放 JNZLK POPACC RET9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页;是否(sh fu)有键按下子程序,有返回非0,无返回0KS:MOVP1,#0F0HMOVA,P1CPLAANLA,#0F0HRET9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页 3.行列反转法工作原理 判别键盘中有无键按下。(方法同行扫描法) 输入变输出,再读。将上一步读取到的列线输入值从列线输出,读取行线值。 定位(dngwi)求键值。根据上一步输出的列

13、线值和读取到的行线值就可以确定所按下键所在的位置,从而查表确定键值。9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页4.行列反转(fn zhun)法识别子程序C语言程序代码:#includechar 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.2 键盘(jinpn)结构及处理程序 共一百一十九页char row,col,k=-1,i;/定义(dn

14、gy)行、列、返回值、循环控制变量P1=0 xf0;if(P1&0 xf0)=0 xf0)return k; /无键按下,返回-1delay20ms(); /延时去抖if(P1&0 xf0)=0 xf0)return k; /抖动引起,返回-1P1=0 xf0;col=P1&0 xf0; /行输出全0,读取列值P1=col|0 x0f;row=P1&0 x0f; /列值输出,读取行值9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页/查找行列组合值在键盘表中位置for(i=0;i16;i+)if(row|col)=keycodei) /找到,i即为键值, /否则,返回-1 key=i

15、; /对重复键,该方法(fngf)break; /处理为无键按下P1=0 xf0;while(P1&0 xf0)!=0 xf0); /等待键释放return k; /返回键值9.1.2 键盘(jinpn)结构及处理程序 共一百一十九页9.1.3 中断扫描(somio)方式为了提高CPU的效率,可以采用中断(zhngdun)扫描工作方式,即只有在键盘有键按下时才产生中断申请,CPU响应中断,进入中断服务程序进行键盘扫描,并做相应处理。也可以采用定时扫描方式,即系统每隔一定时间进行键盘扫描,并做相应处理。共一百一十九页9.1.3 中断扫描(somio)方式图9-6 中断方式键盘(jinpn)接口共

16、一百一十九页9.2 LED显示(xinsh)接口主要内容(nirng)9.2.1 LED显示器结构原理9.2.2 LED显示器接口及显示方式9.2.3 LED显示器与89C52接口及显示子程序共一百一十九页9.2.1 LED显示器结构(jigu)原理 单片机中通常使用(shyng)7段LED构成字型为“8”且加一个小数点的数码管,以显示数字、符号及小数,常见数码管如下图。共一百一十九页显示器有共阴极和共阳极两种。发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的称为共阴极显示器。一位显示器由8个发光二极管组成,其中,7个发光二极管构成字型“8”的各个(gg)笔划,另一个为小数点。当在某

17、段发光二极管上施加一定的正向电压时,该段笔划即亮;不加电压则暗。9.2.1 LED显示器结构(jigu)原理共一百一十九页 以共阴极(ynj)显示器为例,当a、b、c三段送1时,数码管显示数字7。(c)引脚配置(pizh)外形图(b)共阳极(a)共阴极9.2.1 LED显示器结构原理共一百一十九页表9-1 共阴极(ynj)和共阳极7段LED显示字型编码表显示字符012345678共阴极段码3F065B4F666D7D077F共阳极段码C0F9A4B0999282F880显示字符9ABCDEF-灭共阴极段码6F777C395E79714000共阳极段码908883C6A1868EBFFF 以上(

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

19、简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(或共阳)极公共端K分别由相应(xingyng)的I/O线控制,实现各位的分时选通。图9-8为6位共阴极LED动态显示接口电路。9.2.2 LED显示器接口(ji ku)及显示方式共一百一十九页图9-8 6位LED动态显示接口(ji ku)电路9.2.2 LED显示器接口(ji ku)及显示方式共一百一十九页各位扫描显示:由于6位LED所有段选线皆由P1口控制(kngzh),要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,在每一瞬间只使某一位显示字符。段选码、位选码控制:P1口输出相应字符段选码,P2口

20、在该显示位送入选通电平,保证该位显示相应字符,如此轮流。扫描延时:段选码、位选码每送入一次后延时1ms,保证每位有一定亮度,因人眼的视觉暂留效果,看上去每个数码管总在亮。9.2.2 LED显示器接口(ji ku)及显示方式共一百一十九页9.2.3 显示器与89C52接口(ji ku)及显示子程序下页图为89C52 P1口和P2口控制的6位共阴极(ynj)LED动态显示接口电路。P1口输出段选码,P2口输出位选码,位选码占用输出口的线数决定于显示器位数。74LS245是双向8位缓冲器,在此分别作为段选和位选驱动器。逐位轮流点亮各个LED,每一位保持1ms,在1020ms之内再一次点亮,重复不止。

21、这样,利用人的视觉暂留,好像6位LED同时点亮一样。共一百一十九页图9|9 数码管动态显示接口(ji ku)9.2.3 显示器与89C52接口(ji ku)及显示子程序共一百一十九页C语言程序清单:#includeunsigned char code LED=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char buf6;/定义(dngy)字型码和显示缓冲区void disp()unsigned char i;for(i=0;ii);/位码送P2口delay1ms();/延时1ms9.2.3 显示器与

22、89C52接口(ji ku)及显示子程序共一百一十九页汇编语言程序清单:DISP: MOV R0,#DISPBUF ; R0指向显示(xinsh)缓冲区 MOV R2,#0DFH ;位码送R2 MOV R3,#6 ;6位显示 MOV DPTR,#TAB ;DPTR指向段码表LOOP:MOV P2,R2 ;位码送P2口 MOV A,R0 ;取显示数据 MOVC A,A+DPTR ;取出字型码 MOV P1,A ;送出显示 LCALL DELAY1MS ;延时1ms INC R0 ;数据缓冲区地址加1 MOV A,R2 RR A ;位码右移一位 MOV R2,A9.2.3 显示器与89C52接口(

23、ji ku)及显示子程序共一百一十九页DJNZ R3,LOOP ;扫描到最左边(zu bian)显示位?RETTAB:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH9.2.3 显示器与89C52接口(ji ku)及显示子程序共一百一十九页9.3 A/D转换(zhunhun)接口主要内容9.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口9.3.2 逐次逼近型并行输出A/D转换器及接口9.3.3 单片机内部集成的A/D转换器共一百一十九页模/数(A/D)转换的方式:有很多种,例如,计数比较型、逐次逼近型、双积分型等。选择A/D转换器件主要是从

24、速度(sd)、精度和价格上考虑。A/D转换器的输出方式:有串行、并行方式,并且有些增强型的单片机在片内也集成有A/D转换器。9.3 A/D转换(zhunhun)接口共一百一十九页9.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口TLC2543是TI公司(n s)生产的串行A/D转换器,它具有输入通道多、精度高、速度高、使用灵活和体积小的优点。TLC2543为CMOS 型12位开关电容逐次逼近A/D转换器。片内含有一个14通道多路器,可从11个模拟输入或3个内部自测电压中选择一个。共一百一十九页TLC2543与微处理器的接线用SPI接口只有4根连线,其外围电路也大大减少。TLC

25、2543的特性如下:12位A/D转换器(可8位、12位和16位输出)。在工作温度范围内转换时间为l0s。11通道输入。3种内建的自检(z jin)模式。片内采样/保持电路。最大1/4 096的线性误差。9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页内置系统时钟。转换结束标志位。单/双极性输出。输入/输出的顺序可编程(高位或低位在前)。可支持(zhch)软件关机。输出数据长度可编程。9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页1TLC2543的片内结构及引脚功能TLC2543片内由通道选择器、数据(地址和命令字)输

26、入寄存器、采样(ci yn)/保持电路、12位的模/数转换器、输出寄存器、并行到串行转换器以及控制逻辑电路7个部分组成。TLC2543片内结构如图9-11所示。9.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口共一百一十九页图9-11 TLC2543片内结构(jigu)框图9.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口共一百一十九页TLC2543的引脚意义如下:AIN0AIN10 模拟(mn)输入通道。CS片选端。DIN 串行数据输入。DOUT转换结束数据输出。EOC转换结束信号。GND地。SCLK(I/O CLOCK)输入/输出同步时钟。REF+、 R

27、EF- 转换参考电压。VCC 设备的电源。9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页2TLC2543的命令字TLC2543的每次转换都必须给其写入命令字,以便确定下一次转换用哪个通道,下次(xi c)转换结果用多少位输出,转换结果输出是低位在前还是高位在前。命令字的输入采用高位在前。命令字如下:通道选择输出数据长度输出数据顺序数据极性D7D6D5D4D3D2D1D0 输入(shr)到输入(shr)寄存器中的8位编程数据选择器件输入(shr)通道和输出数据的长度及格式。其选择格式如下表。9.3.1 多通道串行输出A/D芯片TLC2543及接口共一百一十

28、九页表9-2 输入(shr)寄存器命令字格式功能选择输入数据字节地址位LlL0LSBFBIPD7D6D5D4D3D2D1D0输入通道AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7AIN8AIN9AIN10000000001110000111100000110011001010101010109.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口共一百一十九页功能选择输入数据字节地址位L1L0LSBFDIPD7D6D5D4D3D2D1D0选择测试电压(Vref+Vref-)/2Vref-Vref+1 0 1 11 1 0 01 1 0 1软件断电1 1 1 0输出

29、数据位数8位12位16位0 1X 01 1输出数据格式MSB前导LSB前导01输入输出关系单极性-二进制双极性-2的补码01注:X表示(biosh)无关项。9.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口共一百一十九页 3TLC2543与89C52的SPI接口(ji ku)及程序图9-12 TLC2543和89C52的接口(ji ku)电路9.3.1 多通道串行输出A/D芯片TLC2543及接口共一百一十九页TLC2543提供(tgng)SPI接口。对于89C52,须用软件合成SPI操作来和TLC2543接口。TLC2543的I/O CLOCK、DIN和两端由单片机的P1.

30、0、P1.1和P1.3提供。TLC2543转换结果的输出(DOUT)数据由P1.2接收。89C52将用户的命令字通过P1.1输入到TLC2543的输入寄存器中,等待20s开始读数据,同时写入下一次的命令字。9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页TLC2543与89C52的8位数据传送程序TLC2543与89C52进行(jnxng)1次8位数据传送,选用AIN0(即采集1次),高位在前。C语言程序清单:#include#includesbit CS=P13;sbit CLK=P10;sbit DIN=P11;sbit DOUT=P12;/定义函数,

31、输入参数为命令字,输出转换结果9.3.1 多通道串行输出(shch)A/D芯片TLC2543及接口共一百一十九页unsigned char TLC2543(unsigned char command)unsigned char i,result=0;CS=0;/片选有效for(i=0;ii);/命令字按位送出result=1;result|=DOUT;/按位接收转换结果CLK=1;/产生一个(y )时钟_nop_();/高电平有一定宽度CLK=0;return result;/返回转换结果9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页汇编语言程序清单:T

32、LC2543:MOVR4,#04H;控制字,AIN0,8位MOVA,R4CLRP1.3;片选有效,选中2543MSB:MOVR5,#08H;传送(chun sn)8位LOOP:MOVP1,#04H;P1.2为输入MOVC,P1.2;读结果到C中RLCA;带进位循环左移MOVP1.1,C;将控制字(ACC中)的一位经DIN送入9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页SETB P1.0;产生一个时钟NOPCLR P1.0DJNZ R5,LOOPMOV R2,A;将转换(zhunhun)的数据存入R2RET执行上述子程序,经8次循环,执行“RLC A”指

33、令8次,最后命令字00000100经P1.1、DIN进入TLC2543的输入寄存器,8位A/D转换数据.读入累加器。9.3.1 多通道串行输出A/D芯片(xn pin)TLC2543及接口共一百一十九页9.3.2 逐次逼近型并行输出(shch)A/D转换器及接口1ADC0809的片内结构及引脚功能ADC0809是CMOS工艺,采用逐次逼近法的8位A/D转换芯片。多路开关有8路模拟量输入端,最多允许8路模拟量分时输入,共用一个A/D转换器进行转换。图9-13为ADC0809的内部逻辑结构图。它由8路模拟开关、8位A/D转换器、三态输出锁存器以及(yj)地址锁存译码器等组成。共一百一十九页图9-1

34、3 ADC0809内部(nib)逻辑结构结构9.3.2 逐次逼近(bjn)型并行输出A/D转换器及接口共一百一十九页引脚功能说明如下:IN0IN7:8个通道的模拟输入端。D0D7:8位数字量输出端。START:启动信号。ALE:地址锁存信号。EOC:转换结束信号。OE:输出允许控制端。CLOCK:时钟信号。VREF+和VREF-:A/D转换器的参考电压(diny)。VCC 电源电压。9.3.2 逐次逼近型并行输出(shch)A/D转换器及接口共一百一十九页 8位模拟(mn)开关地址输入通道的关系见表9-3。模拟开关的作用和8选1的CD4051作用相同。表9-3 8位模拟(mn)开关功能表ADD

35、CADDBADDA输入通道号000IN0001IN1010IN2111IN79.3.2 逐次逼近型并行输出A/D转换器及接口共一百一十九页2ADC0809与89C52接口ADC0809芯片的转换速度在最高时钟频率下为100s左右。ADC0809与89C52连接可采用查询方式(fngsh),也可采用中断方式。图9-14为中断方式连接电路图。由于ADC0809片内有三态输出锁存器,因此可直接与89C52接口。9.3.2 逐次逼近(bjn)型并行输出A/D转换器及接口共一百一十九页图9-14 ADC0809与89C52的连接(linji)9.3.2 逐次逼近型并行输出(shch)A/D转换器及接口共

36、一百一十九页这里将ADC0809作为外部扩展并行(bngxng)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 逐次(zh c)逼近型并行输出A/D转换器及接口共一百一十九页启动ADC0809的工作过程是:先送数据(通道地址)到ADC0809,由ALE信号锁存,同时START有效,启动A/D转换(zhunhun)。A/D转换(zhunhun)完毕,EOC端发

37、出一正脉冲,申请中断。在中断服务程序中,使OE端有效,8位数据便读入到CPU中。9.3.2 逐次(zh c)逼近型并行输出A/D转换器及接口共一百一十九页38路巡回检测系统例9-2 某粮库或某冷冻厂需对8点(8个冷冻室或8个粮仓(lin cn))进行温度巡回检测。要求设计一个单片机巡回检测系统,使其能对各冷冻室或各粮仓(lin cn)的温度巡回检测并加以处理。设被测温度范围为-30+50,温度检测精度要求不大于l。温度传感器可选用热电阻、热敏电阻、PN结或集成温度传感器AD590和SL134等芯片。9.3.2 逐次逼近(bjn)型并行输出A/D转换器及接口共一百一十九页C语言程序清单:#inc

38、lude#include/绝对地址定位#define DAC0809 XBYTE0 x7fff/定义C0809地址unsigned char xdata buffer8;/数据存放(cnfng)定义unsigned char i=0;void main()IT1=1;/边沿触发EA=1;EX1=1;DAC0809=i;/启动0通道转换while(1);9.3.2 逐次逼近型并行(bngxng)输出A/D转换器及接口共一百一十九页void int1_srv() interrupt 2bufferi=DAC0809; /读数存放if(+i!=8) /最后一个通道(tngdo)没结束DAC0809=

39、i; /启动下一个通道转换9.3.2 逐次逼近型并行输出(shch)A/D转换器及接口共一百一十九页汇编语言主程序:MAIN: MOV R0,#0A0H ;数据暂存区首地址 MOVR2,#8 ;8路计数初值 MOVR3,#0 ;R3存放通道号 SETBIT1 ;边沿(binyn)触发 SETBEA ;开中断 SETBEX1 MOV DPTR,#7FFFH;指向0809 MOV A,R3 MOVX DPTR,A ;送通道号,启动转换 SJMP $9.3.2 逐次逼近型并行(bngxng)输出A/D转换器及接口共一百一十九页中断服务程序:MOVX A,DPTR ;读数MOVX R0,A ;存数IN

40、C R0 ;更新(gngxn)存放单元INC R3 ;更新通道DJNZ R2,DONERETIDONE:MOV A,R3MOVX DPTR,ARETI9.3.2 逐次逼近型并行(bngxng)输出A/D转换器及接口共一百一十九页9.3.3 单片机内部(nib)集成的A/D转换器目前,很多单片机片内集成有A/D转换器,下面以STC89LE516AD/X2为例,说明A/D转换的使用方法(fngf)。1STC89LE516AD/X2片内A/D转换器特点STC89LE516AD/X2的模拟量输入在P1口,有8位精度的高速A/D转换器,P1.0-P1.7共8路,为电压输入型,可做按键扫描、电池电压检测、

41、频谱检测等。共一百一十九页2特殊功能寄存器(1)P1_ADC_EN特殊功能寄存器。P1.x作为(zuwi)A/D转换输入通道允许特殊功能寄存器,地址为97H,复位值为00000000B。格式如图9-15所示。E_P17E_P16E_P15E_P14E_P13E_P12E_P11E_P10图9-15 P1_ADC_EN 特殊(tsh)功能寄存器9.3.3 单片机内部集成的A/D转换器共一百一十九页(2)ADC_DATA 特殊功能(gngnng)寄存器。A/D转换结果特殊功能寄存器,地址为0C6H,复位值为00000000B,模拟/数字转换结果计算公式如下:结果=256 * Vin /VCC。(3

42、)ADC_CONTR 特殊功能寄存器。A/D转换控制特殊功能寄存器,地址为0C5H,复位值为xxx00000B。格式如图9-16所示。ADC_CONTR(C5H)FLAGSTARTCHS2CHS1CHS0图9-16 ADC_CONTR 特殊(tsh)功能寄存器9.3.3 单片机内部集成的A/D转换器共一百一十九页相关位说明如下(rxi):1)ADC_FLAG:模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1。2)ADC_START:模拟/数字转换(ADC)启动控制位,设置为“1”时,开始转换。3)CHS2/CHS1/CHS0:模拟输入通道选择,如表9-4所示。9.3.3 单片

43、机内部(nib)集成的A/D转换器共一百一十九页表9-4 模拟输入(shr)通道选择CHS2CHS1CHS0模拟输入通道选择000选择P1.0作为A/D输入来用001选择P1.1作为A/D输入来用010选择P1.2作为A/D输入来用011选择P1.3作为A/D输入来用100选择P1.4作为A/D输入来用101选择P1.5作为A/D输入来用110选择P1.6作为A/D输入来用111选择P1.7作为A/D输入来用9.3.3 单片机内部(nib)集成的A/D转换器共一百一十九页3A/D转换(zhunhun)程序用P1.0为模拟量输入端进行A/D转换,程序如下:#include sfr P1_ADC_

44、EN=0 x97;/A/D转换功能允许寄存器sfr ADC_CONTR=0 xC5;/A/D转换控制寄存器sfr ADC_DATA=0 xC6;/A/D转换结果寄存器9.3.3 单片机内部(nib)集成的A/D转换器共一百一十九页/延时函数(hnsh)voiddelay(unsigned chardelay_time)unsigned inti;while(delay_time-)for(i=0;i10000;i+);9.3.3 单片机内部(nib)集成的A/D转换器共一百一十九页unsignedcharADC() /AD转换函数delay(1); /使输入(shr)电压达到稳定ADC_CON

45、TR=0 x08; /P1.0为模拟量输入端,启动A/D转换while(ADC_CONTR&0 x10)=0); /等待转换结束return ADC_DATA; /返回转换结果9.3.3 单片机内部(nib)集成的A/D转换器共一百一十九页9.4 D/A转换(zhunhun)接口主要(zhyo)内容9.4.1 位并行D/A转换器DAC0832接口技术9.4.2 串行输入D/A转换器TLC5615接口技术共一百一十九页9.4.1 并行(bngxng)D/A转换器DAC0832接口技术1DAC0832的结构原理(1)DAC0832的特性。具有两级输入数据寄存器的8位单片D/A转换器,它能直接(zh

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

47、存器、8位DAC 寄存器和8位D/A转换器构成。图9-17 DAC0832结构(jigu)9.4.1 8位并行D/A转换器DAC0832接口技术共一百一十九页DAC0832各引脚的功能说明如下:D0D7:数字量数据输入线。ILE:数据锁存允许(ynx)信号,高电平有效。CS:输入寄存器选择信号,低电平有效。WR1:输入寄存器的“写”选通信号,低电平有效。WR2:DAC寄存器的“写”选通信号,低电平有效。XFER:数据传送信号,低电平有效。VREF:基准电压输入线。9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技术共一百一十九页RFB:反馈(fnku)信号输入线,片内已有反馈

48、(fnku)电阻。IOUT1和IOUT2:电流输出线。IOUT1与IOUT2的和为常数,DAC寄存器的内容线性变化。一般在单极性输出时,IOUT2接地。VCC:工作电源。DGND:数字地。AGND:模拟信号地。9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技术共一百一十九页2DAC0832与单片机的接口(ji ku)(1)单缓冲器方式接口。图9-18 DAC0832单缓冲方式(fngsh)接口9.4.1 8位并行D/A转换器DAC0832接口技术共一百一十九页将ILE接+5V,寄存器选择信号及数据传送信号都与地址(dzh)选择线相连(图中为P2.7),两级寄存器的写信号都由

49、89C52的WR端控制。当地址线选通DAC0832后,只要输出控制信号,DAC0832就能一步完成数字量的输入锁存和D/A转换输出。9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技术共一百一十九页C语言程序清单:/*-头文件声明及端口地址定义-*/#include #define DAC0832 XBYTE0 x7FFF/*-在需要输出时, data1为输出模拟量的数字(shz)值-*/DAC0832=data1;汇编语言程序清单:MOV DPTR,#7FFFHMOV A,#DATA1MOVX DPTR,A9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技

50、术共一百一十九页(2)双缓冲器同步方式(fngsh)接口。图9-19是一个二路同步输出的D/A转换接口电路。89C52的P2.5和P2.6分别选择两路D/A转换器的输入寄存器,控制输入锁存;P2.7连到两路D/A转换器的XFER端控制同步转换输出;WR与所有的WR1、WR2端相连,在执行MOVX指令时,89C52自动输出WR信号。9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技术共一百一十九页图9-19 DAC0832双缓冲方式(fngsh)接口9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技术共一百一十九页C语言程序清单:#include/* 定义两片

51、0832输入寄存器端口地址和 / 同步(tngb)输出地址 */#define DAC0832_1XBYTE0 xDFFF#define DAC0832_2XBYTE0 xBFFF#define DAC_ALLXBYTE0 x7FFF/* 在需要模拟量同步输出时 */DAC0832_1=data1; /第一片0832输出数字值DAC0832_2=data2; /第二片0832输出数字值DAC_ALL=0;/0无意义,使XFER同时有效9.4.1 8位并行(bngxng)D/A转换器DAC0832接口技术共一百一十九页(3)DAC0832应用阶梯波的产生。阶梯波是在一定的时间内每隔一段时间输出的幅值递增一个恒定值。如图9-20所示,每隔1ms输出增长一个定值,经10 ms后循环(xnhun)。用DAC0832的单缓冲方式就可以实现这样的波形。图9-20 阶梯(jit)波波形9.4.1 8位并行D/A转换器DAC08

温馨提示

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

评论

0/150

提交评论