《单片机应用技术中级教程7.ppt》由会员分享,可在线阅读,更多相关《单片机应用技术中级教程7.ppt(64页珍藏版)》请在课桌文档上搜索。
1、第七章 单片机的典型外围接口技术,作为单片机应用系统,键盘和显示器作为最常用的输入、输出接口往往是不可缺少的外围部件;另外计算机只能接受和处理数字信号,因此对于大量的模拟信号的处理,往往需要A/D、D/A接口,本章将初步介绍这方面的一些知识。,教学内容:键盘接口、键盘分类:独立联接式和矩阵式,编码键盘 和 非编码键盘,键盘接口电路和工作原理,LED显示器接 口,静态显示电路和动态显示电路及工作原理,并行 DAC接口 和简单编程,并行ADC接口和接口程序。教学重点:简单键盘、LED显示接口电路及工作原理,并行DAC,ADC与80C51单片机接口方法。教学要求:掌握简单键盘、LED显示接口电路及工
2、作原理;掌握并行DAC,ADC与80C51单片机接口方法;了解串DAC、ADC的接口,键盘处理程序任务1)键输入检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。硬件电路消除抖动或软件消除抖动。,2)键译码键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键09、字符键0AH0FH、功能键10H。,3)键处理根据键值转移到不同程序段。若键值属于数字、字符键,则调用显示数字和字符的子程序。若键值属于功能键,则进行多分支转移,执行各个功能程序段。,键盘状态的监测方法:中断方式还是查询方式,7.1 键盘接口,1。键盘的工作原理:有独立连接式和矩阵式两类键盘。(1)独立连接式键
3、盘:这是一类最简单的键盘,每个键独立地连接一根数据输入线。如 P222图71 所示。当没有任何键被按下时,所有输入线都为高电平,若某键被按下,该线被拉成低电平。其优点是结构简单、使用方便;但占口线太多。,(2)矩阵式键盘:如 P223图72 a 所示。它包括:键盘开关矩阵;输出(行线)锁存器;输入(列线)缓冲器。,2。矩阵式键盘的工作过程:逐行扫描(使某行为0,其余为高);读入列缓冲器状态,若为全1,则该行无键按下,继续另一行;若有列线为0,则该行该列的键被按下;若已判断有某键被按下,则转该键的键处理子程序。,键盘扫描程序框图见P223图72 b,扫描方式有:程控、定时、中断扫描。,独立式键盘
4、电路,矩阵式键盘,1.键盘扫描方式(1).扫描法列线输出,行线输入。列线逐行输出0,某行有按键,行线输入有0,若无按键,行线输入全部为1。(2).反转法行列线交换输入、输出,两步获取按键键号。,每个按键单独占有一根I/O接口引线。,单键管理程序key:setb p1.0 jb p1.0,key2;有键按下P1.0=0key1:acall dis;延时,防止抖动 setb p1.0 jb p1.0,key2;键是否释放消除了连击功能 jnb p1.0,key1 key2:ret,ORG 0000H AT0:SETB P1.0 SETB P1.1 JB P1.0,AT2 ACALL DIS JB
5、P1.0,AT4 MOV 30H,#00H AT1:JB P1.0,AT4 ACALL DIS AJMP AT1 AT2:JB P1.1,AT4 ACALL DIS JB P1.1,AT4 MOV 30H,#01H AT3:JB P1.1,AT4 ACALL DIS AJMP AT3 AT4:RET DIS:,7.1.2 键盘的接口电路 1。直接使用I/O口的键盘电路 如 P224图73 所示。由于80C51的I/O口具有输出锁存与输入缓冲的功能,可用来组成键盘电路。图中用P1口组成44的16键键盘,列线接低4位并通过与门和/INT0相连;行线串联一个二极管接高4位,串联二极管是为了防止多键同
6、时按下时使输出口短路。,ORG 0000HAT0:ACALL KS1 JNZ AT1 AJMP DISAT1:ACALL DIS ACALL KS1 JNZ AT2 AJMP DISAT2:MOV R2,#0FEH MOV R3,#00H,AT3:MOV P1,R2 MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,AT4 MOV A,R2 JNB ACC.3,AT7 RL A MOV R2,A MOV A,R3 ADD A,#04H,MOV R3,A AJMP AT3AT4:MOV B,#04HAT5:JNB ACC.4,AT6 INC R3 RR A DJNZ B,AT5
7、 AJMP AT7AT6:ACALL DIS ACALL KS1 JNZ AT6,AT7:RETKS1:MOV P1,#0F0H MOV A,P1 ORL A,#0FH CPL A RETDIS:RET,2。利用I/O口和译码器的接口 如 P224图74 所示。利用138译码器可由三根口线产生8根列线,节省I/O口线。,3。利用串行口的键盘电路 如 P224图75 所示。,7.2 显示器接口 7.2.1 LED显示器的工作原理 1。发光二极管的控制 P225图76,只有当U1U2 2.8V 亮,2。七段LED的控制 它是由若干发光二极管组合而成的8字形显示块,由a、b、c、d、e、f、g七段及
8、小数点h 组成,有共阳极和共阴极两种结构形式。如 P225图77 所示。共阴极形的字形与字段的关系如P226表71所示。共阴极LED的公共端接地。,(a)外型结构;(b)共阴极;(c)共阳极,数码管字型编码表,7.2.2 显示器的分类与接口 显示电路通常分为静态显示和动态显示两类。,每个LED需要一个8位并行口,多位LED共用一个8位字段口,各位LED公共端用字位口控制,扫描输出显示不同字形。,(1)静态显示电路:静态显示要求每个8字形的显示块都要有段码锁存器(如 P227图78 及 图79 所示)。图78采用软件译段码,273 锁存;图79采用硬件译码,247 译码驱动。,(2)动态显示电路
9、:它和静态显示相比,可以节省显示驱动器,但要求CPU定时对显示器进行刷新,要占用较多的CPU工作时间。其显示电路如 P229图711所示,包括显示块、字形锁存器和字位锁存器。工作过程是:先将显示字形代码送字形锁存器锁存,然后把要显示的位置送字位锁存器锁存,从而使该位点亮。为防止闪烁,显示时间为12ms,且每隔20ms以内要刷新一次。,例1(P230):通过P1口及138译码器的接口电路。这是一个动态显示的例子。接口电路见 P231图713。,工作过程:首先,使P1口的低4位输出字形代码;P1口的高3位输出一个位扫描字(与138译码配合),显示某一位,并保持1ms。各位显示一遍之后,关显示。尔后
10、,使P1口的高4位转为输入方式,P1口的低4位输出键扫描信号,有键按下时,转入键译码和处理程序。其中,要注意在适当的时候进行显示器刷新,以使显示不灭掉。,其它的有关显示与键盘的接口方法将在后续课程中进一步讲解。,7.3 DAC 数/模转换接口,一、D/A转换器的性能指标,1.分辨率(Resolution)分辨率是指D/A转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。如果数字量的位数为n,则称D/A转换器分辨率为 n位或称为模拟量满量程的1/2n.如8位D/A转换器,转换后的电压满量程是5V,则分辨率为8位或5V/28=20mV.2.转换精度(Conversion Accurac
11、y)指满量程时DAC的实际模拟输出值和理论值的接近程度。转换精度为1/2个最低有效位(常用1/2 LSB表示),如8位D/A转换器的精度为:(1/2)(1/256)=1/5123.偏移量误差(Offset Error)偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。4.线性度(Linearity)线性度是指DAC的实际转换特性曲线和理想直线之间的最大偏移差。5.建立时间 建立时间是描述D/A转换速度快慢的一个参数,指从输入数字量变化到输出达到终值误差1/2LSB(最低有效位)时所需的时间,通常以建立时间来表明转换速度.,二、D/A转换原理 n位数字量与模拟量的关系式:VO=VREF/2
12、n D(VREF-参考电压),三、集成D/A转换器DAC0832 DAC0832 是8位双缓冲器结构的D/A转换器。单电源供电,在+5+15V范围内均可正常工作。基准电压的范围为10V,电流建立时间为1s,CMOS工艺,低功耗20mW。DAC0832共有20条引脚,双列直插式封装。引脚连接和命名如图所示。,DAC0832内部结构框图,D7D0:转换数据输入端,:片选信号,输入,低电平有效。ILE:数据锁存允许信号,输入,高电平有效。:写信号1,输入,低电平有效。:写信号2,输入,低电平有效。:数据传送控制信号,输入,低电平有效。IOUT1:电流输出1,当DAC寄存器中各位为全“1”时,电流最大
13、;为全“0”时,电流为0。IOUT2:电流输出2,电路中保证IOUT1+IOUT2=常数)Rfb:反馈电阻端,片内集成的电阻为15k。Vref:参考电压,可正可负,范围为-10+10V。DGND:数字量地。AGND:模拟量地。,四、MCS-51和D/A的接口,1.DAC0832输出电压与输入数字量的关系,2.DAC0832的3种单缓冲连接方式,(a)DAC寄存器直通方式,DAC寄存器控制脚:输入寄存器控制脚:,ILE,例1:D/A转换程序,用DAC 0832输出05V锯齿波,电路为直通方式。设VREF=-5V,DAC 0832地址为7FFFH(CS接P2.7),脉冲周期要求为100ms。,DA
14、CS:MOVDPTR,#7FFFH;0832 I/O地址MOVA,#0;开始输出0VDACL:MOVXDPTR,A;输出模拟量INCA;升压ACALLDELAY;延时100ms/256AJMPDACL;连续输出DELAY:;延时子程序,几点说明:(1)程序每循环1次,A加1,可见锯齿波的上升沿是由256个小阶梯构成的。(2)可通过循环程序段的机器周期数,计算出锯齿波的周期,并可根据需要通过延 时的办法来改变波形周期。(3)通过A加1,可得到正向的锯齿波;如要得到负向的锯齿波,只要将A加1改为A 减1指令即可实现。(4)程序中A的变化范围为0255,所得到的锯齿波为满幅度。,例2:产生矩形波、方
15、波 ORG 0000HMAIN:MOV DPTR,7FFFH;指向0832口地址 SS1:MOV A,00H;取下限值 MOVX DPTR,A;输出 ACALL DMS1;调用延时程序 MOV A,#0FFH;取上限值 MOVX DPTR,A;输出 ACALL DMS2;调用延时程序 SJMP SS1 END,几点说明:(1)以上程序产生的是矩形波,其低电平的宽度由延时子程序DMS1所延时的时间来决定,高电平的宽度则由子程序DMS2所延时的时间来决定。(2)改变延时子程序DMS1和DMS2的延时时间,就可改变矩形波上下沿的宽度。若DMS1=DMS2(两者延时一样),则输出的是方波。(3)改变上
16、限值或下限值便可改变矩形波的幅值:单极性输出时为0-5V或0+5V;双极性输出时为-5+5V。,例3.产生三角波利用DAC0832产生三角波的参考程序如下:MOV A,00H;取下限值 MOV DPTR,7FFFH;指向0832口地址SS1:MOVX DPTR,A;输出 NOP;延时 NOP NOPSS2:INC A;转换值增量 JNZ SS1;未到峰值,则继续SS3:DEC A;已到峰值,则取后沿 MOVX DPTR,A;输出 NOP;延时 NOP NOP JNZ SS3;未到谷值,则继续 SJMP SS2;已到谷值,则反复,几点说明:(1)本程序所产生的三角波谷值为0,峰值为+5V(或-5
17、V)。若改变下限值和上限值,那么三角波的谷值和峰值也随之改变。(2)改变延时时间可改变三角波的斜率。(3)若在谷值和峰值处延时较长时间的话,则输出梯形波,延时时间的长短取决于梯形波上下边的宽度。,(b)输入寄存器直通方式,(c)两个寄存器同时选通及锁存方式,3.DAC0832的双极性输出接口,DAC0832的双极性输出接口,运算放大器A2的作用是把运算放大器A1的单极性输出变为双极性输出。例如,当Vref=+5V时,A1的电压输出范围为0-5V。当VOUT1=0V时,VOUT2=-5V;当VOUT1=-2.5V时,VOUT2=0V;当VOUT1=-5V时,VOUT2=+5V。VOUT2的输出范
18、围为-5V+5V。VOUT2与参考电压Vref的关系为:,数字码,8031和两片DAC0832的接口(双缓冲方式),同样地,也有并行扩展与串行扩展D/A,有关并行扩展的方法我们将在其它课程中作介绍。P242245介绍了利用MAX518芯片串行扩展D/A的方法。MAX518的引脚及内部结构如P242图726所示。一片MAX518可扩展2路的8位D/A。它与80C51单片机的接口电路见 P244 图728。有关的模拟I2C总线的编程可参考P244245,(各程序需补充某些语句),MAX518 编程(P206),设置一路DAC0 输出的程序如下:OUT0:MOV A,#ADDR;#ADDR=#58H
19、 ACALL START ACALL WRBYT L1:ACALL CHACK JB F0,L1;确证收到ACK信号 MOV A,#DAC0;#DAC0=#00H ACALL WRBYT L2:ACALL CHACK JB F0,L2;确证收到ACK信号 MOV A,B;取要发送的数(在B中)ACALL WRBYT L3:ACALL CHACK JB F0,L3;确证收到ACK信号,ACALL STOP RET,设置两路DAC输出的程序及后面的三个子程序,在 每一句 ACALL WRBYT 下面,也都要加入下面两语句:L:ACALL CHACK JB F0,L;确证收到ACK信号,7.4 AD
20、C 模/数转换接口,一、A/D转换器的性能指标,1.分辨率(Resolution)分辨率是指A/D转换器能分辨的最小输入模拟增量,取决于输入数字量的二进制位数。如果数字量的位数为n,则称A/D转换器分辨率为 n位或称为模拟量满量程的1/2n.如8位D/A转换器,转换后的电压满量程是5V,则分辨率为8位或5V/28=20mV.,2.转换精度(Conversion Accuracy)指转换值和理论值的之间的误差。转换精度为1/2个最低有效位(常用1/2 LSB表示),也就是量化误差。如8位A/D转换器的精度(即相对量化误差)为:(1/2)(1/256)=1/512;绝对量化误差满量程电压相对量化误
21、差5V(1/512)=9.8mV3.转换器转换时间:把输入的模拟量转换为n位数字量所需要的时间。转换时间大约在几微秒到几百微秒之间。,二、A/D转换器芯片ADC0809,1.ADC0809的内部逻辑结构,ADC0809的内部逻辑结构图,ADC 0809/0808为8路输入通道、8位逐次逼近式A/D转换器,可分时转换8路模拟信号。,由一个8位逐次逼近式A/D转换器、8路模拟转换开关、3-8地址锁存译码器和三态输出数据锁存器组成,ADC0809通道选择表,ADC0809的引脚图,(1)IN7IN0:模拟量输入通道。ADC0809对输入模拟量的要求主要有:信号单极性,电压范围05 V,若信号过小还需
22、进行放大。另外,在A/D转换过程中,模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,在输入前应增加采样保持电路。(2)A、B、C:地址线。A为低位地址,C为高位地址,用于对模拟通道进行选择。上图中为ADDA、ADDB和ADDC,其地址状态与通道相对应的关系见上表。(3)ALE:地址锁存允许信号。在对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。,2.ADC0809的引脚说明,(4)START:转换启动信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换;在A/D转换期间,START应保持低电平。(5)D7D0:数据输出线。其为三态缓冲输出形式,可以
23、和单片机的数据线直接相连。(6)OE:输出允许信号。其用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高电阻;OE=1,输出转换得到的数据。(7)CLK:时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500kHz的时钟信号。,(8)EOC:转换结束状态信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。转换时间约128 s。(9)VCC:+5 V电源。(10)Vref:参考电源。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5
24、V(Vref(+)=+5 V,Vref(-)=0 V),3.ADC 0809与单片机连接,ADC0809的8个通道IN0IN7的地址为:7FF8H7FFFH(如下图)A/D转换程序:MOV DPTR,#07FF8H;ADC口地址 MOV A,#00;转换IN0 MOVX DPTR,A;启动A/D转换 LCALL DELAY;等待转换结束 MOVX A,DPTR;取转换结果,注意:此处的A与A/D转换无关,可为任意值,4.转换数据的传送 A/D转换后得到的是数字量的数据,这些数据应传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换完成,因为只有确认数据转换完成后,才能进行传送。为此,可
25、采用下述三种方式。1)定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如,ADC0809转换时间为128 s,相当于6 MHz的MCS-51单片机R 64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用这个延时子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。,2)查询方式 A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此,可以用查询方式,软件测试EOC的状态,即可确知转换是否完成,然后进行数据传送。3)中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。在图中,EOC信号
26、经过反相器后送到单片机的INT0,因此可以采用查询该引脚或中断的方式进行转换后数据的传送。不管使用上述哪种方式,一旦确认转换完成,即可通过指令进行数据传送。,首先送出口地址,并以作选通信号,当信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接收,即:MOV DPTR,#7FF8H;选中通道0 MOVX A,DPTR;信号有效,输出转换后的数据到A ADC0809与单片机的连接方法,及程序见课本P208-P211,三、应用举例 根据电路图,设计一个8路模拟量输入的巡回检测系统,采样数据依次存放在片内RAM 78H7FH单元中,其数据采样的初始化程序和中断服务程序如下。(中断法)初始化
27、程序:ORG 0000H;主程序入口地址 AJMP MAIN;跳转主程序 ORG 0013H;中断入口地址 AJMP INT1;跳转中断服务程序,主程序 MAIN:MOVR0,#78H;数据暂存区首址 MOV R2,#08H;8路计数初值 SETB IT1;边沿触发 SETB EA;开中断 SETB EX1;允许中断 MOV DPTR,#7FF8H;指向0809 IN0通道 地址 MOV A,#00H;此指令可省,A可为 任意值,LOOP:MOVX DPTR,A;启动A/D转换 HERE:SJMP HERE;等待中断 DJNZ R2,LOOP;巡回未完继续中断服务程序:INT1:MOVX A,
28、DPTR;读A/D转换结果 MOV R0,A;存数 INC DPTR;更新通道 INC R0;更新暂存单元 RETI;返回 END,上述程序是用中断方式来完成转换后数据的传送的,也可以用查询的方式实现之,源程序如下:(查询法)ORG 0000H;主程序入口地址 AJMP MAIN;跳转主程序 ORG 1000HMAIN:MOV R0,#78H MOV R2,#08H MOV DPTR,#7FF8H MOV A,#00H,L0:MOVX DPTR,A L1:JB P3.3,L1;查询是否为0(或 ACALL DMS130US)MOVX A,DPTR;为0,则转换结束,读出数据 MOV R0,A
29、INC R0 INC DPTR DJNZ R2,L0$:SJMP$注:延时等待法 将 JB P3.3,L1 指令改成 ACALL DMS130US即可。(DMS130US 是延时130US的程序),ADC也有并行扩展与串行扩展A/D,有关并行扩展的方法我们 将在其它课程中作介绍。P252254 介绍了利用 MAX187、PCF8591 等芯片串行扩展A/D的方法。MAX187是一个具有SPI总线的12位模/数转换器。它的引脚及内部结构如P253图737所示。它与80C51单片机的接口电路见 P254 图739。而PCF8591是一个具有I2C总线的4路模/数、1路数/模8位转换器。它的16P引
30、脚及内部结构如 P256 图740 所示。它与80C51单片机的接口电路见 P258 图741。,以上利用SPI及I2C总线扩展串行A/D的方法,只要参考相应芯片的控制字及前面串行扩展存储器的编程方法,配合书中的说明不难完成其软件编程。,第八章 80C51单片机的应用系统实例,8.1油井压力、流速数据采集系统 在石油开采过程中,需要确切地了解油井内部的原油压力和流速,这对于有效地提高油井的产量有十分重要的意义。本系统可以随油井钻头深入井下,实地采集并存储第一手的压力和流速数据。返回地面后,把数据送入计算机内,为分析油井状况提供准确的原始资料。,1。设计目标:本系统使用89C51作为控制芯片,对
31、来自压力及流速传感器的信号进行采集,并把采集到的数据存放在数据存储器中。系统可以工作在标定和实际测量两种工作状态下。标定状态是为了修正系统误差而在测量前进行一组标准压力和流速数据的测量。具有可与通用计算机联接的串行通信接口。在等待状态时,系统工作在低功耗方式。系统具有工作状态显示系统,可以显示标定、测量、通信、等待等不同的工作状态。,2。设计描述:为取得特定油井深度下的原油压力及流速数据,本系统的工作时序必须与钻头进入油井的时间和所到达的深度相符合。钻头进入油井后的确定时间内,系统处于等待状态;当钻头达到预定的深度以后,系统自动开启并开始采集第一次数据;随后进入等待状态,等待下一次的数据采集。
32、这样的采集进行六次,然后系统便停止工作,处于低功耗状态;待钻头重新回到地面后,再与计算机联接,把采集到的数据输入计算机进行进一步的处理。由于系统在工作前可以进行标定,所以处理后的数据能比较准确地反映油井内原油的压力和流速的真实情况,3。硬件系统组成:压力、流速数据采集系统由主机板、信号电路板及通信接口板三部分组成,图8-1 系统总体框图,图8-2 主机板电路原理图,图8-3 信号电路板电路原理图,图8-4 通信接口板电路原理图,4。软件的描述,主程序的流程见图8-5。由流程图可以看出,整个程序分为数据采集程序和流速标定程序两部分。系统上电或复位之后,经系统初始化,首先判断P3.2(INT0)的
33、状态:若为1,转入数据采集程序;若为0,则转入流速标定程序,图8-5主程序的流程图,8.2 单片机控制的家用电加热锅炉电路 这里介绍一种单片机控制的家用电加热锅炉电路,它能够显示温度和时间,可根据家人起居习惯来设定运行和停止的时间间隔和次数,从而可以节约电能消耗。本电路设计是单片机系统的综合应用。它包含了LCD显示接口,键盘组成的人机交互接口,I2C总线接口的时钟芯片和E2PROM存储器芯片,单总线接口的温度传感器芯片,和输出负载接口电路,工作原理:如图8-6所示。本电路采用8位单片机(U1:AT8052)作为主控制芯片,晶振采用12MHz,图8-6 家用电加热锅炉电路工作原理图,补充:VCD:洗衣机的控制。,End,