资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第七章 单片机的典型外围接口技术,作为单片机应用系统,键盘和显示器作为最常用的输入、输出接口往往是不可缺少的外围部件;另外计算机只能接受和处理数字信号,因此对于大量的模拟信号的处理,往往需要,A/D,、,D/A,接口,本章将初步介绍这方面的一些知识,。,教学内容,:键盘接口、键盘分类:独立联接式和矩阵式,编码键盘,和 非编码键盘,键盘接口电路和工作原理,,LED,显示器接,口,静态显示电路和动态显示电路及工作原理,并行,DAC,接口,和简单编程,并行,ADC,接口和接口程序。,教学重点,:简单键盘、,LED,显示接口电路及工作原理,并行,DAC,,,ADC,与,80C51,单片机接口方法。,教学要求,:掌握简单键盘、,LED,显示接口电路及工作原理;,掌握并行,DAC,,,ADC,与,80C51,单片机接口方法;,了解串,DAC,、,ADC,的接口,键盘处理程序任务,1),键输入,检查键盘是否有键被按下,消除按键抖动。确定被按键的键号,获取键号。,硬件电路消除抖动或软件消除抖动。,2),键译码,键号为键盘位置码,根据键号查表得出被按键的键值。键值:数字键,0,9,、字符键,0AH,0FH,、功能键,10H, 。,延时等待,10ms,仍有按键信号?,Y,有按键信号?,N,Y,N,键盘处理,按键释放?,N,Y,3,),键处理,根据键值转移到不同程序段。,若键值属于数字、字符键,则调用显示数字和字符的子程序。,若键值属于功能键,则进行多分支转移,执行各个功能程序段。,抖动时间,10ms,开关动作时间,100ms,“ 1 ”,“ 0 ”,10ms,I/O,接,口,+5v,+5v,消除抖动电路,开关,单片机,键盘状态的监测方法:,中断方式还是查询方式,7. 1,键盘接口,1,。键盘的工作原理:,有,独立连接式,和,矩阵式,两类键盘。,(,1,)独立连接式键盘:,这是一类最简单的键盘,每个键独立地连接一根数据输入线。如,P222,图,7,1,所示。当没有任何键被按下时,所有输入线都为高电平,若某键被按下,该线被拉成低电平。,其优点是结构简单、使用方便;但占口线太多。,(,2,)矩阵式键盘:,如,P223,图,7,2 a,所示。它包括:键盘开关矩阵;输出(行线)锁存器;输入(列线)缓冲器。,2,。矩阵式键盘的工作过程:,逐行扫描(使某行为,0,,其余为高);,读入列缓冲器状态,若为全,1,,则该行无键按下,继续另一行;若有列线为,0,,,则该行该列的键被按下;,若已判断有某键被按下,则转该键的键处理子程序。,键盘扫描程序框图见,P223,图,7,2 b,,,扫描方式有:程控、定时、中断扫描。,独立式键盘电路,矩阵式键盘,0,1,+5v,C,0,C,1,R,0,R,1,键盘,I/O,接口,1.,键盘扫描方式,(1).,扫描法,列线输出,行线输入。,列线逐行输出,0,,某行有按键,行线输入有,0,,若无按键,行线输入全部为,1,。,(2).,反转法,行列线交换输入、输出,两步获取按键键号。,P1.0,P1.1,P1.7,+5v,每个按键单独占有一根,I/O,接口引线。,单键管理程序,key: setb p1.0,jb p1.0, key2 ;,有键按下,P1.0=0,key1: 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 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,图,7,3,所示。,由于,80C51,的,I/O,口具有输出锁存与输入缓冲的功能,可用来组,成键盘电路。图中用,P1,口,组成,44,的,16,键键盘,列线接低,4,位并通过与门和,/INT0,相连;行线串联一个二极管接高,4,位,串联二极管是为了防止多键同时按下时使输出口短路。,ORG 0000H,AT0:ACALL KS1,JNZ AT1,AJMP DIS,AT1:ACALL DIS,ACALL KS1,JNZ AT2,AJMP DIS,AT2: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 AT3,AT4:MOV B,#04H,AT5:JNB ACC.4,AT6,INC R3,RR A,DJNZ B,AT5,AJMP AT7,AT6:ACALL DIS,ACALL KS1,JNZ AT6,AT7:RET,KS1:MOV P1,#0F0H,MOV A,P1,ORL A,#0FH,CPL A,RET,DIS:,RET,2,。利用,I/O,口和译码器的接口,如,P224,图,7,4,所示。,利用,138,译码器可由三根口线产生,8,根列线,节省,I/O,口线。,3,。利用串行口的键盘电路,如,P224,图,7,5,所示。,7,.,2,显示器接口,7,.,2,.,1 LED,显示器的工作原理,1,。发光二极管的控制,P225,图,7,6,,只有当,U1,U2,2,.,8V,亮,2,。七段,LED,的控制,它是由若干发光二极管组合而成的,8,字形显示,块,由,a,、,b,、,c,、,d,、,e,、,f,、,g,七段及小数点,h,组成,有共阳极和共阴极,两种结构形式。 如,P225,图,7,7,所示。共阴极形的字形与字段的关系,如,P226,表,7,1,所示。共阴极,LED,的公共端接地。,(,a,) 外型结构;(,b,) 共阴极;(,c,)共阳极,数码管字型编码表,显示字符,字型,共 阳 极,共 阴 极,dp,g,f,e,d,c,b,a,字型码,dp,G,f,e,d,c,b,a,字型码,0,0,1,1,0,0,0,0,0,0,C0H,0,0,1,1,1,1,1,1,3FH,1,1,1,1,1,1,1,0,0,1,F9H,0,0,0,0,0,1,1,0,06H,2,2,1,0,1,0,0,1,0,0,A4H,0,1,0,1,1,0,1,1,5BH,3,3,1,0,1,1,0,0,0,0,B0H,0,1,0,0,1,1,1,1,4FH,4,4,1,0,0,1,1,0,0,1,99H,0,1,1,0,0,1,1,0,66H,5,5,1,0,0,1,0,0,1,0,92H,0,1,1,0,1,1,0,1,6DH,6,6,1,0,0,0,0,0,1,0,82H,0,1,1,1,1,1,0,1,7DH,7,7,1,1,1,1,1,0,0,0,F8H,0,0,0,0,0,1,1,1,07H,8,8,1,0,0,0,0,0,0,0,80H,0,1,1,1,1,1,1,1,7FH,9,9,1,0,0,1,0,0,0,0,90H,0,1,1,0,1,1,1,1,6FH,A,A,1,0,0,0,1,0,0,0,88H,0,1,1,1,0,1,1,1,77H,B,B,1,0,0,0,0,0,1,1,83H,0,1,1,1,1,1,0,0,7CH,C,C,1,1,0,0,0,1,1,0,C6H,0,0,1,1,1,0,0,1,39H,显示字符,字型,共 阳 极,共 阴 极,dp,g,f,e,d,c,b,a,字型码,dp,G,f,e,d,c,b,a,字型码,D,D,1,0,1,0,0,0,0,1,A1H,0,1,0,1,1,1,1,0,5EH,E,E,1,0,0,0,0,1,1,0,86H,0,1,1,1,1,0,0,1,79H,F,F,1,0,0,0,1,1,1,0,8EH,0,1,1,1,0,0,0,1,71H,H,H,1,0,0,0,1,0,0,1,89H,0,1,1,1,0,1,1,0,76H,L,L,1,1,0,0,0,1,1,1,C7H,0,0,1,1,1,0,0,0,38H,P,P,1,0,0,0,1,1,0,0,8CH,0,1,1,1,0,0,1,1,73H,R,R,1,1,0,0,1,1,1,0,CEH,0,0,1,1,0,0,0,1,31H,U,U,1,1,0,0,0,0,0,1,C1H,0,0,1,1,1,1,1,0,3EH,Y,Y,1,0,0,1,0,0,0,1,91H,0,1,1,0,1,1,1,0,6EH,1,0,1,1,1,1,1,1,BFH,0,1,0,0,0,0,0,0,40H,.,.,0,1,1,1,1,1,1,1,7FH,1,0,0,0,0,0,0,0,80H,熄灭,灭,1,1,1,1,1,1,1,1,FFH,0,0,0,0,0,0,0,0,00H,7,.,2,.,2,显示器的分类与接口,显示电路通常分为,静态显示,和,动态显示,两类。,a b h,COM,a,f b,g,e,c,d h,a b h,COM,a b h,COM,每个,LED,需要一个,8,位并行口,COM,h,COM,D,7,D,1,D,0,D,0,D,1,D,2,h,b,b,h,COM,a,f b,g,e,c,d h,a,a,b,a,多位,LED,共用一个,8,位字段口,各位,LED,公共端用字位口控制,扫描输出显示不同字形。,(,1,)静态显示电路,: 静态显示要求每个,8,字形的显示块都要有段码锁存器(如,P227,图,7,8,及,图,7,9,所示)。,图,7,8,采用软件译段码,,273,锁存;,图,7,9,采用硬件译码,,247,译码驱动。,(,2,)动态显示电路,:它和静态显示相比,可以节省显示驱动器,但,要求,CPU,定时对显示器进行刷新,要占用较多的,CPU,工作时间。,其显示电路如,P229,图,7,11,所示,包括显示块、字形锁存器和字,位锁存器。工作过程是:先将显示字形代码送字形锁存器锁存,然,后把要显示的位置送字位锁存器锁存,从而使该位点亮。为防止闪,烁,显示时间为,1,2ms,,且每隔,20ms,以内要刷新一次。,例,1,(,P230,),:通过,P1,口及,138,译码器的接口电路。这是一个动态显示的例子。接口电路见,P231,图,7,13,。,工作过程,: 首先,使,P1,口的低,4,位输出字形代码;,P1,口的高,3,位输出一个位扫描字(与,138,译码配合),显示某一位,并保持,1ms,。各位显示一遍之后,关显示。尔后,使,P1,口的高,4,位转为输入方式,,P1,口的低,4,位输出键扫描信号,有键按下时,转入键译码和处理程序。,其中,要注意在适当的时候进行显示器刷新,以使显示不灭掉。,其它的有关显示与键盘的接口方法将在后续课程中进一步讲解。,7. 3 DAC,数,/,模转换接口,一、,D/A,转换器的性能指标,1.,分辨率,(,Resolution,),分辨率是指,D/A,转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。如果数字量的位数为,n,则称,D/A,转换器分辨率为,n,位,或称为模拟量满量程的,1/2,n,.,如,8,位,D/A,转换器,转换后的电压满量程是,5V,则分辨率为,8,位或,5V/2,8,=20mV.,2.,转换精度,(,Conversion Accuracy,),指满量程时,DAC,的实际模拟输出值和理论值的接近程度,。,转换精度为,1/2,个最低有效位,(,常用,1/2 LSB,表示,),如,8,位,D/A,转换器的,精度为,:,(1/2)(1/256)= 1/512,3.,偏移量误差,(,Offset Error,),偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。,4.,线性度,(,Linearity,),线性度是指,DAC,的实际转换特性曲线和理想直线之间的最大偏移差。,5.,建立时间,建立时间是描述,D/A,转换速度快慢的一个参数,指从输入数字量变化到输出达到终值误差,1/2LSB(,最低有效位,),时所需的时间,通常以建立时间来表明转换速度,.,二、,D/A,转换原理,n,位数字量与模拟量的关系式:,V,O,= V,REF,/ 2,n,D(V,REF,-,参考电压,),三、,集成,D/A,转换器,DAC0832,DAC0832,是,8,位双缓冲器结构的,D/A,转换器。,单电源供电,在,+5+15V,范围内均可正常工作。基准电压的范围为,10V,电流建立时间为,1s,CMOS,工艺,低功耗,20mW,。,DAC0832,共有,20,条引脚,双列直插式封装。引脚连接和命名如图所示。,DAC0832,内部结构框图,D7D0,:转换数据输入端, :片选信号,输入,低电平有效。,ILE,:数据锁存允许信号,输入,高电平有效。 :写信号,1,输入,低电平有效。 :写信号,2,输入,低电平有效。 :数据传送控制信号,输入,低电平有效。,I,OUT1,:,电流输出,1,当,DAC,寄存器中各位为全,“,1,”,时,电流最大,;,为全,“,0,”,时,电流为,0,。,I,OUT2,:,电流输出,2,电路中保证,I,OUT1,+I,OUT2,=,常数,),R,fb,:反馈电阻端,片内集成的电阻为,15k,。,V,ref,:,参考电压,可正可负,范围为,-10+10V,。,DGND,:,数字量,地。,AGND,:,模拟量地。,四、,MCS-51,和,D/A,的接口,1.DAC0832,输出电压与输入数字量的关系,输入数字量,B,b,7,b,6,b,5,b,4,b,3,b,2,b,1,b,0,单极性,V,out,(理想值) 双,极性,V,out,(理想值),+V,REF,时,+ V,REF,时,1 1 1 1 1 1 1 1,-V,REF,(,255/256,),|,V,REF,(,127/128,),1 1 0 0 0 0 0 0,-V,REF,(,192/256,),V,REF,(,64/128,),1 0 0 0 0 0 0 0,-V,REF,(,128/256,),0,0 1 1 1 1 1 1 1,-V,REF,(,127/256,),-V,REF,(,1/128,),0 0 1 1 1 1 1 1,-V,REF,(,63/256,),-V,REF,(,64/128,),0 0 0 0 0 0 0 0,-V,REF,(,0/256,),-V,REF,(,127/128,),2.DAC0832,的,3,种单缓冲连接方式,(a)DAC,寄存器直通方式,DAC,寄存器控制脚:,输入寄存器控制脚,:,ILE,例,1,:,D/A,转换程序,用,DAC 0832,输出,0,5V,锯齿波,电路为直通方式,。,设,V,REF,= - 5V,,,DAC 0832,地址为,7FFFH(CS,接,P2.7),,脉冲周期要求为,100ms,。,DACS,:,MOVDPTR,,,#7FFFH,;,0832 I/O,地址,MOVA,,,#0,;开始输出,0V,DACL,:,MOVXDPTR,,,A,;输出模拟量,INCA,;升压,ACALLDELAY,;延时,100ms/256,AJMPDACL,;连续输出,DELAY,:,;延时子程序,100ms,几点说明,:,(1),程序每循环,1,次,A,加,1,可见锯齿波的上升沿是由,256,个小阶梯构成的。,(2),可通过循环程序段的机器周期数,计算出锯齿波的周期,并可根据需要通过延,时的办法来改变波形周期。,(3),通过,A,加,1,可得到正向的锯齿波,;,如要得到负向的锯齿波,只要将,A,加,1,改为,A,减,1,指令即可实现。,(4),程序中,A,的变化范围为,0255,所得到的锯齿波为满幅度。,例,2,:,产生矩形波、方波,ORG 0000H,MAIN: 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),改变上限值或下限值便可改变矩形波的幅值:单极性输出时为,0-5V,或,0+5V;,双极性输出时为,-5+5V,。,例,3.,产生三角波,利用,DAC0832,产生三角波的参考程序如下:,MOV A,00H ;,取下限值,MOV DPTR,7FFFH ;,指向,0832,口地址,SS1:MOVX DPTR,A ;,输出,NOP ;,延时,NOP,NOP,SS2: INC A ;,转换值增量,JNZ SS1 ;,未到峰值,则继续,SS3: DEC A ;,已到峰值,则取后沿,MOVX DPTR,A ;,输出,NOP ;,延时,NOP,NOP,JNZ SS3 ;,未到谷值,则继续,SJMP SS2 ;,已到谷值,则反复,几点说明,:,(1),本程序所产生的三角波谷值为,0,峰值为,+5V(,或,-5V),。若改变下限值和上限值,那么三角波的谷值和峰值也随之改变。,(2),改变延时时间可改变三角波的斜率。,(3),若在谷值和峰值处延时较长时间的话,则输出梯形波,延时时间的长短取决于梯形波上下边的宽度。,(b),输入寄存器直通方式,(c),两个寄存器同时选通及锁存方式,3. DAC0832,的双极性输出接口,DAC0832,的双极性输出接口,运算放大器,A2,的作用是把运算放大器,A1,的单极性输出变为双极性输出。例如,当,V,ref,=+5V,时,A1,的电压输出范围为,0-5V,。当,V,OUT1,=0V,时,V,OUT2,=-5V;,当,V,OUT1,=-2.5V,时,V,OUT2,=0V;,当,V,OUT1,=-5V,时,V,OUT2,=+5V,。,V,OUT2,的输出范围为,-5V+5V,。,V,OUT2,与参考电压,V,ref,的关系为,:,数字码,8031,和两片,DAC0832,的接口(双缓冲方式),同样地,也有并行扩展与串行扩展,D/A,,有关并行扩展的方法我们将在其它课程中作介绍。,P242,245,介绍了利用,MAX518,芯片串行扩展,D/A,的方法。,MAX518,的引脚及内部结构如,P242,图,7,26,所示。一片,MAX518,可扩展,2,路的,8,位,D/A,。它与,80C51,单片机的接口电路见,P244,图,7,28,。有关的模拟,I,2,C,总线的编程可参考,P244245,(,各程序需补充某些语句),MAX518,编程(,P206,),设置一路,DAC0,输出的程序如下:,OUT0: MOV A, #ADDR ; #ADDR=#58H,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,R2,R1,R0,RST,PD,/,/,A0,设置两路,DAC,输出的程序及后面的三个子程序,在,每一句,ACALL WRBYT,下面,也都要加入下面两语句:,L: ACALL CHACK,JB F0, L ;,确证收到,ACK,信号,7. 4 ADC,模,/,数转换接口,一、,A/D,转换器的性能指标,1.,分辨率,(,Resolution,),分辨率是指,A/D,转换器能分辨的最小输入模拟增量,取决于输入数字量的二进制位数。如果数字量的位数为,n,则称,A/D,转换器分辨率为,n,位,或称为模拟量满量程的,1/2,n,.,如,8,位,D/A,转换器,转换后的电压满量程是,5V,则分辨率为,8,位或,5V/2,8,=20mV.,2.,转换精度,(,Conversion Accuracy,),指转换值和理论值的之间的误差,。,转换精度为,1/2,个最低有效位,(,常用,1/2 LSB,表示,),也就是量化误差。如,8,位,A/D,转换器的,精度(即相对量化误差)为,:,(1/2)(1/256)= 1/512,;绝对量化误差,满量程电压,相对量化误差,5V,(1/512)= 9.8mV,3.,转换器转换时间,:,把输入的模拟量,转换为,n,位数字量所需要的时间。,转换时间大约在几微秒到几百微秒之间。,二、,A/D,转换器芯片,ADC0809,1.ADC0809,的内部逻辑结构,ADC0809,的内部逻辑结构图,ADC 0809/0808,为,8,路输入通道、,8,位逐次逼近式,A/D,转换器,可分时转换,8,路模拟信号。,由一个,8,位逐次逼近式,A/D,转换器、,8,路模拟转换开关、,3-8,地址锁存译码器和三态输出数据锁存器组成,ADC0809,通道选择表,ADC0809,的引脚图,(1) IN7,IN0,:模拟量输入通道。,ADC0809,对输入模拟量的要求主要有:信号单极性,电压范围,0,5 V,,若信号过小还需进行放大。另外,在,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,:数据输出线。其为三态缓冲输出形式,可以和单片机的数据线直接相连。,(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 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,;取转换结果,AD,0,7,ALE,INT0,WR,P2 .7,RD,D,0,7,ADD,ABC,CLK,EOC,ALE,START,OE,1,1,1,1,1,MCS-51,ADC0809,8,3,IN,0,7,注意,:,此处的,A,与,A/D,转换无关,可为任意值,4.,转换数据的传送,A/D,转换后得到的是数字量的数据,这些数据应传送给单片机进行处理。数据传送的关键问题是如何确认,A/D,转换完成,因为只有确认数据转换完成后,才能进行传送。为此,可采用下述三种方式。,1),定时传送方式,对于一种,A/D,转换器来说,转换时间作为一项技术指标是已知的和固定的。例如,ADC0809,转换时间为,128 s,,相当于,6 MHz,的,MCS-51,单片机,R 64,个机器周期。可据此设计一个延时子程序,,A/D,转换启动后即调用这个延时子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。,2),查询方式,A/D,转换芯片有表明转换完成的状态信号,例如,ADC0809,的,EOC,端。因此,可以用查询方式,软件测试,EOC,的状态,即可确知转换是否完成,然后进行数据传送。,3),中断方式,把表明转换完成的状态信号(,EOC,)作为中断请求信号,以中断方式进行数据传送。,在图中,,EOC,信号经过反相器后送到单片机的,INT0,,因此可以采用查询该引脚或中断的方式进行转换后数据的传送。,不管使用上述哪种方式,一旦确认转换完成,即可通过指令进行数据传送。,首先送出口地址,并以作选通信号,当信号有效时,,OE,信号即有效,把转换数据送上数据总线,供单片机接收,即:,MOV DPTR,,,#7FF8H,;选中通道,0,MOVX A,,,DPTR,;信号有效,输出转换后的数据到,A,ADC0809,与单片机的连接方法,及程序见课本,P208-P211,三、应用举例,根据电路图,设计一个,8,路模拟量输入的巡回检测系统,采样数据依次存放在片内,RAM 78H7FH,单元中,其数据采样的初始化程序和中断服务程序如下。(,中断法,),初始化程序:,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,,,DPTR,;读,A/D,转换结果,MOV R0,,,A,;存数,INC DPTR,;更新通道,INC R0,;更新暂存单元,RETI,;返回,END,上述程序是用中断方式来完成转换后数据的传送的,也可以用,查询的方式,实现之,源程序如下: (,查询法),ORG 0000H,;主程序入口地址,AJMP MAIN,;跳转主程序,ORG 1000H,MAIN,:,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,INC R0,INC DPTR,DJNZ R2, L0,$,:,SJMP $,注:,延时等待法 将,JB P3.3, L1,指令改成,ACALL DMS130US,即可。,(,DMS130US,是延时,130US,的程序),ADC,也有并行扩展与串行扩展,A/D,,有关并行扩展的方法我们 将在其它课程中作介绍。,P252,254,介绍了利用,MAX187,、,PCF8591,等芯片串行扩展,A/D,的方法。,MAX187,是一个具有,SPI,总线的,12,位模,/,数转换器。 它的引脚及内部结构如,P253,图,7,37,所示。它与,80C51,单片机的接口电路见,P254,图,7,39,。 而,PCF8591,是一个具有,I,2,C,总线的,4,路模,/,数、,1,路数,/,模,8,位转换器,。它的,16P,引脚及内部结构如,P256,图,7,40,所示。它与,80C51,单片机的接口电路见,P258,图,7,41,。,以上利用,SPI,及,I,2,C,总线扩展串行,A/D,的方法,只要参考相应芯片的控制字及前面串行扩展存储器的编程方法,配合书中的说明不难完成其软件编程。,第八章,80C51,单片机的应用系统实例,8. 1,油井压力、流速数据采集系统,在石油开采过程中,需要确切地了解油井内部的原油压力和流速,这对于有效地提高油井的产量有十分重要的意义。本系统可以随油井钻头深入井下,实地采集并存储第一手的压力和流速数据。返回地面后,把数据送入计算机内,为分析油井状况提供准确的原始资料,。,1,。,设计目标,:,本系统使用,89C51,作为控制芯片,对来自压力及流速传感器的信号进行采集,并把采集到的数据存放在数据存储器中。系统可以工作在标定和实际测量两种工作状态下。标定状态是为了修正系统误差而在测量前进行一组标准压力和流速数据的测量。具有可与通用计算机联接的串行通信接口。在等待状态时,系统工作在低功耗方式。系统具有工作状态显示系统,可以显示标定、测量、通信、等待等不同的工作状态,。,2,。,设计描述,:,为取得特定油井深度下的原油压力及流速数据,本系统的工作时序必须与钻头进入油井的时间和所到达的深度相符合。钻头进入油井后的确定时间内,系统处于等待状态;当钻头达到预定的深度以后,系统自动开启并开始采集第一次数据;随后进入等待状态,等待下一次的数据采集。这样的采集进行六次,然后系统便停止工作,处于低功耗状态;待钻头重新回到地面后,再与计算机联接,把采集到的数据输入计算机进行进一步的处理。由于系统在工作前可以进行标定,所以处理后的数据能比较准确地反映油井内原油的压力和流速的真实情况,3,。,硬件系统组成,:,压力、流速数据采集系统由主机板、信号电路板及通信接口板三部分组成,图,8-1,系统总体框图,图,8-2,主机板电路原理图,图,8-3,信号电路板电路原理图,图,8-4,通信接口板电路原理图,4,。软件的描述,主程序的流程见图,8-5,。由流程图可以看出,整个程序分为数据采集程序和流速标定程序两部分。系统上电或复位之后,经系统初始化,首先判断,P3.2(INT0),的状态,:,若为,1,,转入数据采集程序;若为,0,,则转入流速标定程序,图,8-5,主程序的流程图,8.2,单片机控制的家用电加热锅炉电路,这里介绍一种单片机控制的家用电加热锅炉电路,它能够显示温度和时间,可根据家人起居习惯来设定运行和停止的时间间隔和次数,从而可以节约电能消耗。,本电路设计是单片机系统的综合应用。它包含了,LCD,显示接口,键盘组成的人机交互接口,,I2C,总线接口的时钟芯片和,E2PROM,存储器芯片,单总线接口的温度传感器芯片,和输出负载接口电路,工作原理,:,如图,8-6,所示。,本电路采用,8,位单片机(,U1:AT8052,)作为主控制芯片,晶振采用,12MHz,图,8-6,家用电加热锅炉电路工作原理图,补充:,VCD,: 洗衣机的控制。,End,
展开阅读全文