版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章80C51单片机接口技术教学目的(1)掌握独立式键盘、矩阵式键盘等非编码键盘的工作原理及运用方法;(2)掌握LED数码显示器静态显示方式、动态显示方式的硬件结构及编程原理;(3)了解字符型LCD的工作原理。熟悉LCD1602与单片机的接口,能编写显示程序;(4)熟悉A/D0809转换器与单片机的接口,能运用ADC0809编写实用的数据采集程序;(5)理解D/A转换器的主要指标及D/A转换器的电路结构和工作原理,掌握DAC0832的使用方法。学习重点和难点(1)矩阵键盘程序扫描的工作原理及编程方法;(2)LED数码显示器动态显示方式的编程原理;(3)LCD1602与80C51的接口及编程要点;(4)ADC0809及DAC0832与80C51的接口及编程要点。7.1键盘接口技术
键盘是由若干按键组成的,它是单片机最简单的输入设备,操作员通过键盘输入数据或命令,实现简单的人机对话。对键盘的识别可分为两类:一类是由专用的硬件电路来识别,它产生相应的编码,并送往CPU,这类方式称为编码键盘,它使用起来方便,但硬件开销较大,在单片机系统中一般不采用;另一类靠软件来识别,称为非编码键盘,它结构简单,价格低廉,使用灵活,但需要编制相应的键盘管理程序,单片机中普遍采用这种方式。本节着重讨论非编码键盘接口技术。对于非编码键盘主要解决键的识别与消除按键抖动问题。单片机接口技术是研究单片机如何与外部设备进行最佳耦合与匹配,实现双方高效、可靠地交换信息的一门技术,体现软件、硬件结合,是单片机应用系统的关键。单片机的主要外围设备有键盘、LED/LCD显示器、ADC转换器、DAC转换器等部件。本章将介绍这些部件如何与单片机相连接,以及驱动程序如何编制。7.1.1键的特性按键就是一个简单的开关。当键按下,相当于开关闭合;当按键松开,相当于开关断开。由于机械触点的弹性及电压突变等原因,在触点闭合与断开的瞬间会出现电压抖动过程。如图7-1所示。为保证按键识别的准确性,在电压抖动的情况下不能进行状态的输入,抖动可能造成一次按键多次处理问题。为此,需要进行去抖动处理,去抖动有硬件和软件两种方法。硬件方法就是加去抖电路,从根本上避免抖动的产生。软件的方法则是采用时间延迟以躲过抖动,待信号稳定后再进行扫描。
1、键的消抖(1)双稳态电路消除抖动键的抖动时间一般为5~10m。当按键较少时,可采用如图7-2所示的硬件去抖电路。图7-2所示电路中两个“与非”门构成一个RS触发器。当按键未按下时,OUT1输出为1;当键按下时,输出为0。这一点通过分析RS触发器的工作过程很容验证。图7-1按键抖动信号波形图7-2双稳态触发电路设开关SW首先处于a位置,此时R-S触发器的输出端OUT1为高电平,与非门2的输出OUT2=1*1=0,此输出引入到与非门1的一个输入端,将与非门1锁住,使其固定输出为1。如果这时按动开关SW,即使SW在a位置因弹性而瞬间抖动,在a处形成一连串抖动的波形,即a的输入端出现一连串的0和1,由于B输入端在开关SW未到达b时始终为0,所以无论A点电平如何变化,OUT1恒为1。当SW到达b时,一旦出现D端为0,R-S触发器将出现状态翻转,此时OUT2端为1,导致OUT1端=1*1=0,OUT1又引回到门2的输入端,锁死门2,让其输出恒为1,即使b处电压波形出现一连串的抖动,即D输入端的电平出现一连串的0和1,也不会影响OUT2的输出,因此OUT1也恒为0。如果将R-S触发器看作一个网络,只看输入与输出的波形,将会发现输出是消除了抖动的输入。同样,在松开按键的过程中,只要一接通a,在a接通过程中,即使产生弹性抖动而瞬间离开a,只要开关不与b发生接触,双稳态电路的输出也将不会改变。(2)滤波消除抖动电路如图7-3(a)、(b)所示,也是两种比较简单、实用和可靠的电路,注意RC常数应选择在5~10ms之间比较合适,这种电路的另一个优点是增强了抗干扰能力。
(3)软件消抖
如果按键较多,硬件消抖将无法胜任,因此常采用软件的方法进行消抖。在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认该键电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,从而消除了抖动的影响。图7-3采用滤波电路消除抖动2、键的识别按键工作处于两种状态:按下与释放。一般按下为接通,释放为断开,这两种状态要被单片机识别,通常将这两种状态转换为与之对应的低电平和高电平,这可以通过如图7-4所示的电路来实现,单片机通过对按键信号电平的低与高来判别按键是否被按下或释放。一般情况下,将按键信号直接接入单片机的I/O口,可用JBbit,rel或JNBbit,rel等指令对接入P口的按键的高低电平状态进行识别。由于键的按下和释放是随机的,如何捕捉按键的状态变化是需要考虑的问题,主要有以下两种方法。
(1)外部中断捕捉
电路如图7-5所示,4个按键的信号接AT89C51的P1.0~P1.3端口,该4根线通过74LS21“与”门相与后与AT89C51的中断INT0端口相连。无键按下时,P1.0~P1.3端口全为高电平。当有任意键按下,INT0由高变低,向单片机发出中断请求。若单片机开放外部中断0,则产生相应中断,执行中断服务程序,扫描键盘。图7-5用外部中断捕捉按键的示意图(2)定时查询一般情况下,单片机应用系统的用户按一次键(从按下到释放)或释放一次按键(从释放到再按下)最快也需要50ms以上,在此期间CPU只要有一次查询键盘,则该次的按键和释放就不会丢失。因此,可以编制这样的键盘程序,即每间隔不大于50ms的时间(典型值为20ms)单片机就去查询一次键盘,查询各键按下与释放的状态,就能正确地识别用户对键盘的操作。查询键盘的间隔时间为定时,可用定时器中断来实现,也可用软件定时来实现,同时也可结合LED动态扫描显示时间来实现。采用软件定时查询键盘,此方法的优点是电路简某省市硬件、抗干扰能力强、应用灵活,缺点是占用单片机较多的时间资源。一般情况下推荐使用该方法。
7.1.2独立键盘接口技术
1、独立式按键结构
独立式按键是指直接利用I/O口线构成的单个按键电路。每个独立式按键单独占用一根I/O口线,每根I/O口线的工作状态不会影响到其他I/O口线的工作状态,独立式按键电路如图7-6所示。
独立式按键电路配置灵活、软件结构简单,但每个按键都占用一根I/O口线,在按键数量较多,I/O口线浪费比较大,故只在按键数量不多时采用这种方法。图7-6独立式键盘电路
解:参考程序如下:KEYSCAN:MOVP1,#0FFH;设置P1口为输入方式MOVA,P1;读入键的状态 MOVB,A;存键的状态到BLCALLDELAY10MS;延时10MS MOVA,P1;再读键的状态 CJNEA,B,PASS;两次结果不一致,则为抖动引起,转 MOVDPTR,#KEYTABLE;跳转表首地址送DPTRADDA,BADDA,B;3*A-->A,修正变址值 JNCCY_0 INCDPH
2、独立式按键的软件结构下面通过例题来说明独立式按键是如何编程的。
【例7-1】:独立式按键键盘电路如图7-6所示,试编写键盘扫描程序,OP0~OP7分别为每个按键的功能程序。
CY_0:JMP@A+DPTR;转向形成键值入口地址表PASS:RETKEYTABLE:LJMPOP0LJMPOP1LJMPOP2LJMPOP3LJMPOP4LJMPOP5LJMPOP6
LJMPOP7OP0:....RETOP1:....RET.........OP7:....RETDELAY10MS:....RET
以上程序是一个简化了的键盘扫描程序,要学会编程方法。当按键功能较少时,也可采用顺序查询的方式。下面是一个初学者比较容的键盘处理子程序,可每隔20~50ms调用一次。
【例7-2】:电路如图7-6所示,采用顺序查询方式来编写键盘扫描子程序。解:参考程序如下:
KEY_DOWN_BITEQU00HKEYSCAN:MOVA,P1 CJNEA,#0FFH,LOOP1;有键按下,则转向查键 CLRKEY_DOWN_BIT RETLOOP1:JNBKEY_DOWN_BIT,LOOP2;有“键已按下标志”,则返回 RETLOOP2:SETBKEY_DOWN_BIT;无“键已按下标志”,则置标志后查键 JBP1.0,LOOP3;第“0”个键未按下,则继续往下查 LJMPOP0;是第“0”个键,则转为该服务子程序LOOP3:JBP1.1,LOOP4 LJMPOP1;是第“1”个键,则转为该服务子程序LOOP4:JBP1.2,LOOP5 LJMPOP2;是第“2”个键,则转为该服务子程序LOOP5:JBP1.3,LOOP6 LJMPOP3;是第“3”个键,则转为该服务子程序
LOOP6:JBP1.4,LOOP7 LJMPOP4;是第“4”个键,则转为该服务子程序LOOP7:JBP1.5,LOOP8 LJMPOP5;是第“5”个键,则转为该服务子程序LOOP8:JBP1.6,LOOP9 LJMPOP6;是第“6”个键,则转为该服务子程序LOOP9:JBP1.7,LOOP10 LJMPOP7;是第“7”个键,则转为该服务子程序LOOP10:CLRKEY_DOWN_BIT;8个键查完,都未按下,则视为干扰。 RETOP0:……;”0”键对应的处理程序OP1:……OP2:……OP3:……OP4:……OP5:……OP6:……OP7:……RET……程序中“KEY_DOWN_BIT”是一个位地址,该位为键已按下的标志,设立该标志是为了实现每次按键只处理一次的目的,只有当所有的按键都释放时才清除该标志,单片机才查键,由于该程序每隔20~50ms才被调用一次,所以自然实现了消抖,各键服务子程序由用户根据实际需要编写。
7.1.3编码键盘接口技术独立式按键电路每一个按键开关占用一根I/O口线,当按键数较多时,需要占用较多的口线,因此在按键较多的情况下通常采用行列式(矩阵式)键盘电路。行列式也称矩阵式,其键盘电路如图7-7所示。
图7-7矩阵式键盘电路
工作原理分析:行线P3.0~P3.3是输入线,单片机通过其电平的高低来判别键是否被按下。具体步骤如下:
(1)判断键盘上有无键按下。其方法是P3.7~P3.4列电平全输出为“0”电平,读行线P3.3~P3.0电平状态,若行电平全为“1”,则键盘无键按下,若不全为“1”电平,则有键按下。(2)去键抖动的影响。方法是:在判断有键按下之后,软件延时一段时间(一般为10ms左右)后,再判断键盘状态,如果仍为有键按下状态,则认为有一个确定的键被按下,否则是键抖动,进行按键抖动处理。(3)扫描键盘,得到按下键的键号。按照行列式键盘的工作原理,键值=行号(0~3)*4+列号(0~3)。如“3”键,其行号=0,列号=3,键值=0*4+3=3;又如“C”键,其键值=3(行)*4+0(列)=12。【例7-3】:电路如图7-7所示的4*4矩阵键盘,试编写按下任一键(0~f键),并将其键号送LED显示的程序。解:其参考程序如下:LINEEQU30HROWEQU31HVALEQU32HORG00HSTART:MOVDPTR,#TABLE;段码表首地址MOVP2,#00H ;数码管显示初始化LSCAN:MOVP3,#0F0H;列线置高电平,行线置高电平L1:JNBP3.0,L2 ;逐行扫描LCALLDELAYJNBP3.0,L2MOVLINE,#00H;存行号LJMPRSCAN仿真链接L2:JNB P3.1,L3LCALLDELAYJNB P3.1,L3MOV LINE,#01H ;存行号LJMPRSCAN
L3:JNB P3.2,L4LCALLDELAYJNB P3.2,L4MOV LINE,#02H ;存行号LJMPRSCANL4:JNB P3.3,L1LCALLDELAYJNB P3.3,L1MOV LINE,#03H ;存行号RSCAN:MOVP3,#0FH ;行线列线电平互换C1:JNBP3.4,C2 ;逐列扫描MOVROW,#00H ;存列号
LJMPCALCUC2:JNBP3.5,C3MOVROW,#01H ;存列号
LJMPCALCUC3:JNBP3.6,C4MOVROW,#02H ;存列号
LJMPCALCUC4:JNBP3.7,C1MOVROW,#03H ;存列号 CALCU:MOVA,LINE ;根据行号和列号计算键值
MOVB,#04HMULABADDA,ROWMOVVAL,A ;存键值
MOVC ;要据键值查段码
MOVP2,A ;输出段码显示
LJMPLSCANDELAY:MOVR6,#20D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HEND7.1.4键盘扩展技术在例7-3中8根口线只能扩展16个按键,要扩展更多的按键,只有创新,探索更好的方法,现介绍一种采用的方法,同样用8根口线,可使按键增加到28个,硬件电路如图7-8所示。按键扫描工作原理如下:
(1)读按键前先向P1口写数据,即扫描值,使该端口始终有一位清0,其它位均为1。(2)将P1口的数据读入ACC,如没有键按下,则读入的值和扫描值相同,此时PSW的P标志(奇偶标志)=1(A中有奇数个1),程序按无键按下处理。如有键按下,则读入的数据必然有2位为0,则P标志为0,程序将按键临时存入B,延时取抖后再读P1值送A,如A=B,则按有键按下处理,否则按无键按下处理。(3)每完成一次键盘扫描无论有无键按下,扫描值都循环左移一位再写入P1口,循环判断所有的输入键。
图7-88根I/O口线扩展28个按键
【例7-4】:电路如图7-8所示,利用8根I/O口线扩展28个按键,将任一按键(1~28)的键号送两位LED显示,试编写程序。解:根据以上介绍的键盘扫描原理,可编写参考程序如下:
KEY_CODEEQU20HORG0000HAJMPSTEPORG0050HSTEP:MOVP3,#3FHMOVP2,#3FHMOVR5,#11111110B;键扫描主程序仿真链接MAIN1:MOVP1,R5;扫描值送P1口MOVA,P1;读端口数据至ACCJBP,MAIN2;奇偶标志是否为1MOVB,A;为0,键值暂存BACALLDELAY;延时取抖MOVA,P1;再读端口数据至ACJNEA,B,MAIN2;键值是否与第一次相等AJMPLOOK1;相等,确实有键按下
MAIN2:LCALLDISPLAY;MOVA,R5;当前扫描值送ARLA;左移一位MOVR5,AMOVP1,A;送回扫描值寄存器AJMPMAIN1;转主程序入口LOOK1:CJNEA,#0FCH,LOOK2MOVKEY_CODE,#01;1键按下,转处理AJMPMAIN2LOOK2:CJNEA,#0FAH,LOOK3MOVKEY_CODE,#02;2键按下,转处理AJMPMAIN2LOOK3:CJNEA,#0F6H,LOOK4MOVKEY_CODE,#03;3键按下,转处理AJMPMAIN2LOOK4:CJNEA,#0EEH,LOOK5MOVKEY_CODE,#04;4键按下,转处理AJMPMAIN2LOOK5:CJNEA,#0DEH,LOOK6MOVKEY_CODE,#05;5键按下,转处理AJMPMAIN2LOOK6:CJNEA,#0BEH,LOOK7MOVKEY_CODE,#06;6键按下,转处理AJMPMAIN2LOOK7:CJNEA,#07EH,LOOK8MOVKEY_CODE,#07;7键按下,转处理AJMPMAIN2LOOK8:CJNEA,#0F9H,LOOK9MOVKEY_CODE,#08;8键按下,转处理AJMPMAIN2LOOK9:CJNEA,#0F5H,LOOK10MOVKEY_CODE,#09;9键按下,转处理AJMPMAIN2LOOK10:CJNEA,#0EDH,LOOK11MOVKEY_CODE,#10;10键按下,转处理AJMPMAIN2LOOK11:CJNEA,#0DDH,LOOK12MOVKEY_CODE,#11;11键按下,转处理AJMPMAIN2LOOK12:CJNEA,#0BDH,LOOK13MOVKEY_CODE,#12;12键按下,转处理AJMPMAIN2LOOK13:CJNEA,#07DH,LOOK14MOVKEY_CODE,#13;13键按下,转处理AJMPMAIN2LOOK14:CJNEA,#0F3H,LOOK15MOVKEY_CODE,#14;14键按下,转处理AJMPMAIN2LOOK15:CJNEA,#0EBH,LOOK16MOVKEY_CODE,#15;15键按下,转处理AJMPMAIN2LOOK16:CJNEA,#0DBH,LOOK17MOVKEY_CODE,#16;16键按下,转处理AJMPMAIN2LOOK17:CJNEA,#0BBH,LOOK18MOVKEY_CODE,#17;17键按下,转处理AJMPMAIN2LOOK18:CJNEA,#07BH,LOOK19MOVKEY_CODE,#18;18键按下,转处理AJMPMAIN2LOOK19:CJNEA,#0E7H,LOOK20MOVKEY_CODE,#19;19键按下,转处理AJMPMAIN2LOOK20:CJNEA,#0D7H,LOOK21MOVKEY_CODE,#20;20键按下,转处理AJMPMAIN2LOOK21:CJNEA,#0B7H,LOOK22MOVKEY_CODE,#21;21键按下,转处理AJMPMAIN2LOOK22:CJNEA,#077H,LOOK23MOVKEY_CODE,#22;22键按下,转处理AJMPMAIN2LOOK23:CJNEA,#0CFH,LOOK24MOVKEY_CODE,#23;23键按下,转处理AJMPMAIN2LOOK24:CJNEA,#0AFH,LOOK25MOVKEY_CODE,#24;24键按下,转处理AJMPMAIN2LOOK25:CJNEA,#06FH,LOOK26MOVKEY_CODE,#25;25键按下,转处理AJMPMAIN2
LOOK26:CJNEA,#09FH,LOOK27MOVKEY_CODE,#26;26键按下,转处理AJMPMAIN2LOOK27:CJNEA,#05FH,LOOK28MOVKEY_CODE,#27;27键按下,转处理AJMPMAIN2LOOK28:CJNEA,#03FH,LOOK29MOVKEY_CODE,#28;28键按下,转处理LOOK29:AJMPMAIN2
DELAY:MOVR6,#1FH;延时处理DELAY1:MOVR7,#1FH
DJNZR7,$DJNZR6,DELAY1RETDISPLAY:MOVA,KEY_CODEMOVB,#10DIVABMOVDPTR,#TABLEMOVCMOVP3,AMOVA,BMOVCMOVP2,ARETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND
7.2数码显示接口技术显示器按其显示方式可分为:●LED数码管显示(LightEmitingDecode发光二极管);●LED点阵显示屏;●LCD显示(LiquidCrystalDisplay液晶显示屏);●CRT显示(CathodeRayTube,阴极射线管)。在单片机应用系统中最常用的显示器是LED和LCD,这两种显示器可显示数字、字符及系统的状态。这一节主要介绍LED显示器。LED显示器即发光二极管显示器(LightEmittingDiode,LED)具有显示醒目、成本低、配置灵活、接口简单等特点,单片机应用系统中常用它来显示系统的工作状态和采集的信息或输入数值等。LED显示器按其发光管排布结构的不同,可分为LED数码管显示器和LED点阵显示器。LED数码管主要用来显示数字及少数字母和符号,LED点阵显示器可以显示数字、字母、汉字和图形甚至图像。LED点阵显示器虽然显示灵活,但其占用的单片机系统的系统软件、硬件资源远远大于LED数码管。因此除专门应用大屏幕LED点阵显示屏外,几乎所有的单片机系统都采用了LED数码管显示。本节主要介绍LED数码管显示器接口技术,并在下节对LED点阵显示器作一定介绍。7.2.1数码显示原理
LED数码管显示器,由8只发光二极管组成。7只发光二极管排成“8”字形的7个段,另外一段构成小数点,各段标记如图7-9所示。当发光二极管导通时,相应的点或线段发光,将这些二极管排成一定图形,控制不同组合的二极管导通,就可以显示出不同的字形。通过不同的组合,可用来显示数字0~9、字母A~F及小数点“.”等。图7-9LED显示器结构
表7-1字符码各位的含义D7D6D5D4D3D2D1D0Dpgfedcba
(a)共阴极接法(b)共阳极接法
图7-10数码管各笔画与单片机的口线的连接
1、数码管段码的编码
8段正好是一个字节,这种编码需单片机数据总线的D0..D7分别和数码管的a、b、c、…dp对应相连,电路如图7-10(a)、(b)所示,字符码各位的含义如表7-1所示。2、数码管的显示代码表LED数码管的a~g七个发光二极管。加正电压的发光,加零电压的不能发光,不同亮暗的组合就能形成不同的字型,这种组合称为字型码。共阴极和共阳极的字型码是不同的,如表7-2所示。
表7-2七段LED的段选码显示字符共阳极段选码共阴极段选码显示字符共阳极段选码共阴极段选码0C0H3FHCC6H39H1F9H06HDA1H5EH2A4H58HE86H79H3B0H4FHF8EH71H499H66HP8CH73H592H6DHUC1H3EH682H7DHY91H6EH7F8H07HH89H76H880H7FHLC7H38H990H6FH“灭”FFH00HA88H77HB83H7CH两位数码管显示“2a”的参考程序如下:LED_PORT1EQU0FEFFHLED_PORT2EQU0FDFFHORG0000HLJMPBEGINORG0030HSEGTABLE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82HDB0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH7.2.2静态显示技术所谓静态显示,是指显示器显示某一字符时,相应的发光二极管恒定的导通或截止。静态显示有并行输出和串行输出两种方式。
【例7-5】:电路如图7-11所示为并行输出的两位共阳LED的静态显示接口电路。让两位数码管显示“2a”,试编写其显示程序。
解:并行显示方式的每个十进制位都需要有一个8位输出口控制,如图7-11所示,两片74LS373的口地址分别由P2.0、P2.1和WR决定,所以两片74LS373的口地址分别为0FEFFH、0FDFFH。
图7-11并行输出的静态显示电路
仿真链接
BEGIN:MOVA,#2MOVDPTR,#SEGTABLEMOVCMOVDPTR,#LED_PORT1MOVX@DPTR,AMOVA,#0AHMOVDPTR,#SEGTABLEMOVCMOVDPTR,#LED_PORT2MOVX@DPTR,AEND对于静态显示方式,LED显示器由接口芯片直接驱动,采用较小的驱动电流就可以得到较高的亮度。但是并行输出显示的LED位数多时需要并行I/O接口芯片的数量较多,采用串行输出可某省市单片机的资源,电路如图7-12所示为串行输出两位共阳LED显示器接口电路。串并转换器采用74LS164(或74HC595),低电平时允许10mA电流,无需添加其他驱动电路。
【例7-6】:电路如图7-12所示是串行输出的静态显示电路,试编写程序:将RAM30H~31H的显示缓冲区取出要显示的数码,送到两位LED显示。图7-12串行输出的静态显示电路仿真链接解:这里使用了P3.0和P3.1当作普通的I/O口使用,当然也可使用P1.0、P1.1,其显示程序如下:参考程序:DBUF0EQU30H;置显示缓冲区首址TEMPEQU40H;置暂存待显示数码的段码存储区首址DINBITP3.0;置串行输出口CLKBITP3.1;置时钟输出口ORG0000HLJMPMAINORG0030HMAIN:LCALLINITIAL_DATA;初始化要显示的字符LCALLBCD2SEGCODE;将字符转换成要显示的7段码LCLALDISPLAY;调用显示子程序SJMP$INITIAL_DATA:MOV30H,#1H;存入显示数据 MOV31H,#5H RET BCD2SEGCODE: MOVR0,#DBUF0 MOVR1,#TEMP MOVR2,#2DP10: MOVDPTR,#SEGTAB;表头地址 MOV MOVC;查表指令 MOV@R1,A INCR1 INCR0 DJNZR2,DP10 RETDISPLAY:MOVR0,#TEMP;段码地址指针MOVR1,#2;段码字节数DP12:MOVR2,#8;循环次数MOV;取段码DP13:RLCA;段码左移MOVDIN,C;输出一位段码CLRCLK;发送位移脉冲一位SETBCLKDJNZR2,DP13INCR0DJNZR1,DP12RET
SEGTAB:DB3FH,06H,5BH,4FH,66H;0,1,2,3,4DB6DH,7DH,07H,7FH,6FH;5,6,7,8,9END在实际应用中,当没有用到串行通讯时,利用串口工作在移位寄存器方式下,同样基于电路图7-12所示,其显示程序更为简洁,速度更快。其参考子程序如下:DISPLAY:MOVSCON,#00;串口工作在方式0,移位寄存器方式MOVR0,#TEMP;段码地址指针MOVR1,#2;段码字节数DP12:MOVMOVSUBF,AJBCTI,$INCR0DJNZR1,DP12RET7.2.3动态显示技术
当显示器的位数较多时,可采用动态显示。所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时间只有一位显示器在工作(点亮),但由于人眼的视觉暂留效应和发光二极管熄灭时的余晖,我们看到的却是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮时间长短和间隔时间有关,调整电流和时间参数,即可实现亮度较高较稳定的显示。动态显示的特点:优点:当显示位数较多时,采用动态显示方式某省市I/O口,硬件电路也较静态显示简单。缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。
【例7-7】:采用六位数码管动态扫描显示123456,硬件结构如图7-13所示,试编写动态显示子程序。图7-136位LED动态显示电路仿真链接解:参考程序:
LEDBUFEQU30H;显示码缓存区ORG0000HLJMPSTARTORG0030HSTART:MOVLEDBUF,#1MOVLEDBUF+1,#2MOVLEDBUF+2,#3MOVLEDBUF+3,#4MOVLEDBUF+4,#5MOVLEDBUF+5,#6LOOP1:LCALLDISPLAYLEDSJMPLOOP1DELAY: ;延时子程序MOVR7,#0FFHDELAYLOOP:DJNZR7,DELAYLOOPDJNZR6,DELAYLOOPRETLEDMAP: DB3FH,06H,5BH,4FH;八段数码管显示码DB66H,6DH,7DH,07HDB7FH,6FH,77H,7CHDB39H,5EH,79H,71HDISPLAYLED:MOVR0,#LEDBUFMOVR1,#6;共6个八段管MOVR2,#01111111B;位初值LOOP:MOVA,#0MOVP0,A;关所有八段管MOVMOVDPTR,#LEDMAPMOVCMOVP0,AMOVA,R2MOVP3,A;显示一位八段管MOVR6,#01HLCALLDELAYMOVA,R2;显示下一位RRAMOVR2,AINCR0DJNZR1,LOOPRETEND7.3液晶显示接口技术液晶显示器LCD以其微功耗、体积小、显示内容丰富、超薄轻巧、没有电磁辐射、寿命长等优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。7.3.1液晶显示器简介1、LCD显示器的结构和原理液晶显示器的结构如图7-14所示。不同类型的液晶显示器件其组成可能会有所不同,但是所有液晶显示器件都可以认为是由两片光刻有透明导电电极的基板,夹持一个液晶层,封接成一个扁平盒,有时在外表面还可能贴装上偏光片等构成。7-14液晶显示器的结构图
玻璃基板是一种表面极其平整的浮法生产薄玻璃片,表面蒸镀有一层In2O3或SnO2透明导电层,即ITO膜层,经光刻加工制成透明导电图形,这些图形由像素图形和外引线图形组成。因此,外引线不能进行传统的锡焊,只能通过导电橡胶条或导电胶带等进行连接,如果划伤、割断或腐蚀,则会造成器件报废。液晶材料是液晶显示器件的主体。不同器件所用液晶材料不同,液晶材料大都是由几种乃至十几种单体液晶材料混合而成每种液晶材料都有自己固定的清亮点TL和结晶点TS。因此也要求每种液晶显示器件必须使用和保存在TS~TL之间的一定围内,如果使用或保存低,结晶会破坏液晶显示器件的定向层;而高,液晶会失去液晶态,也就失去了液晶显示器件的功能。
液晶显示的原理是液晶在电场的作用下,液晶分子的排列方式发生了改变,从而使其光学性质发生了变化。
2、LCD显示器分类
从显示的形式上通常可分笔段型、字符型和点阵图形型。各显示器的特点如下:(1)笔段型:笔段型LCD是以长条状显示像素组成一位显示。在形状上总是围绕数字“8”的结构变化,广泛用于电子表、数字仪表中。(2)字符型:字符型液晶显示模块是专门用来显示字母、数字、符号等的点阵型液晶显示模块。在电极图形设计上它是由若干个5×8或5×11点阵组成,每一个点阵显示一个字符。这类模块广泛应用于寻呼机、手机、电子记事本等类电子设备中。(3)点阵图形型:点阵图形型是在一平板上排列多行和多列,形成矩阵形式的晶格点,点的大小可根据显示的清晰度来设计。这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中。7.3.2LCD1602液晶显示器与单片机接口字符型液晶显示模块是专门用于现实字母、数字、符号等点阵式LCD,这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。下面以1602字符型液晶显示器为例,介绍其用法,实物如图7-15所示。7-151602字符型液晶显示器实物表7-3LCD1602的引脚功能表1、LCD1602管脚定义
1602LCD采用标准14脚(无背光)或16脚(带背光)接口,各引脚功能如表7-3所示。含义如下:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高。若对比度过高会产生“鬼影”,使用时可以通过一只10K的可调电位器来调整对比度。RS为寄存器选择端,RS为高电平时选择数据寄存器,为低电平时选择指令寄存器。R/W为读写信号,高电平时进行读操作,低电平时执行写操作。E为使能端,当E端由高电平跳变成低电平时,液晶显示模块执行命令。D0~D7为双向数据线。2、LCD1602的指令说明及时序1602液晶显示模块的控制器有11条控制指令,如表7-4所示。1602液晶模块的读写操作、屏幕和光标的操作是通过指令编程来实现的。指令说明如下:表7—41602液晶显示模块控制器的11条控制指令指令1:清显示,指令码为01h,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置。I/D:光标的某著名企业方向,高电平右移,低电平左移;S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平关显示;C:控制光标的开与关,高电平表示有光标,低电平表示无光标;B:表示光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位。S/C:高电平时某著名企业显示的文字,低电平时某著名企业光标。指令6:功能设置命令。DL:高电平时为4位总线,低电平为8为总线;N:低电平时为单行显示,高电平为双行显示;F:低电平时显示5*7的点阵字符,高电平时显示5*10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址。BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据;低电平表示不忙。指令10:写数据。指令11:读数据。3、LCD1602的RAM地址映射及标准字库表液晶显示模块是慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志是否为低电平(即不忙),否则该指令失效。显示字符时,要先输入显示字符地址,即告诉模块在那里显示字符,如表7-5所示为1602的显示地址。位置12345678910111213141516第一行000102030405060708090A0B0C0D0E0F第二行404142434445464748494A4B4C4D4E4F表7-5LCD1602显示地址
例如,第二行第一个字符的地址是40H,那么是否可以直接写入到40H、光标定位在第二行第一个字符的位置就行呢?这是不行的,因为写入显示地址时要求最高位D7=1(见表7-4所示的指令8),所以实际写入的数据位应为01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶显示模块进行初始化时,要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令之前,都要判液晶显示模块是否处于忙状态。1602液晶显示模块的字符发生器(CGROM)中已存储了160个点阵字符图形,如表7-6所示,每个字符都有一个固定的代码(该字符ASCII码)。如大写字母A的代码41H,显示时,模块把地址41H中的点阵字符图形显示出来,我们就能看到字母A。表7-6CGROM和CGRAM中字符代码与字符图形对应关系4、LCD1602的一般初始化(复位)过程1602液晶显示模块初始化(复位)过程如下:
延时15ms;
写指令38H(不检测忙信号);延时15ms;
写指令38H(不检测忙信号);延时15ms;
写指令38H(不检测忙信号);以后每次写指令、读/写数据操作均需要检测忙信号;写指令38H:显示模式设置;写指令08H:显示关闭;写指令01H:显示清屏;写指令06H:显示光标某著名企业设置;写指令0CH:显示开及光标设置。5、LCD1602和单片机的接口电路LCD1602显示模块可以和单片机AT89S51接口直接相连,连接电路如图7-16所示。图7-16LCD1602和单片机89S51的接口电路【例7-8】:电路如图7-16所示,在LCD的第一行显示“AT89S51DEMO”,第二行显示“”,试编写程序。解:参考程序为:EBITP2.2RWBITP2.1RSBITP2.0LCDPORTEQUP0CMD_BYTEEQU30HDAT_BYTEEQU31HORG0000HAJMPMAINORG0050HMAIN:MOVSP,#60HLCALLINITLCDLCALLDISPMSG1LCALLDISPMSG2SJMP$仿真链接******************;LCD1602要用到的一些子程序*************************************;写命令(入口参数CMD_BYTE)********************WRITE_CMD: CLR RS CLR RW MOV A,CMD_BYTE MOV LCDPORT,A SETB E NOP NOP CLR E LCALL DELAY RET******************;写显示数据(入口参数DAT_BYTE)******************WRITE_DAT: SETB RS CLR RW MOV A,DAT_BYTE MOV LCDPORT,A SETB E NOP NOP CLR E LCALL DELAY RET******************;LCD显示初始化***************INITLCD:MOV CMD_BYTE,#30HLCALL WRITE_CMDMOV CMD_BYTE,#30HLCALL WRITE_CMDMOV CMD_BYTE,#30HLCALL WRITE_CMDMOV CMD_BYTE,#38H;设定工作方式LCALL WRITE_CMDMOV CMD_BYTE,#0CH;显示状态设置LCALL WRITE_CMDMOV CMD_BYTE,#01H;清屏LCALLWRITE_CMDMOV CMD_BYTE,#06H;输入方式设置LCALLWRITE_CMDRET**************;在第一行显示表格1的内容******************DISPMSG1: MOV CMD_BYTE,#80H;设置DDRAM的地址 LCALL WRITE_CMD MOV R7,#10H MOV R6,#00H MOV DPTR,#TAB1DISPMSG1_1: MOV A,R6 MOVC MOV DAT_BYTE,A LCALL WRITE_DAT INC R6 DJNZ R7,DISPMSG1_1 RET****************;在第二行显示表格1的内容***********************DISPMSG2: MOV CMD_BYTE,#0C0H;设置DDRAM的地址 LCALL WRITE_CMD MOV R7,#10H MOV R6,#00H MOV DPTR,#TAB2DISPMSG2_1: MOV A,R6 MOVC MOV DAT_BYTE,A LCALL WRITE_DAT INC R6 DJNZ R7,DISPMSG2_1 RET*******************;延时子程序***********************DELAY:MOVR5,#0A0HDELAY1:NOPDJNZR5,DELAY1RETORG0200H*******************;要显示的内容*********************TAB1:DB"AT89S51DEMO"TAB2:DB""END7.4D/A转换器与单片机接口技术测控系统是单片机应用的重要领域。在测控系统中,除数字量之外还会遇到另一种物理量,即模拟量。例如:、速度、电压、电流、压力等,它们都是连续变化的物理量。单片机系统中凡是遇到有模拟量的地方,就要进行模拟量向数字量、数字量向模拟量的转换,也就要涉及到单片机的数/模(D/A)和模/数(A/D)转换的接口技术。
A/D转换器的作用是将模拟的某著名企业号转换成数字信号。在将物理量转换成数字量之前,必须先将物理量转换成电模拟量,这种转换是靠传感器完成的。传感器的种类繁多,如感器,压力传感器、光传感器、气敏传感器等。
D/A转换器的作用是将数字信号转换成模拟的某著名企业号。
模拟量——连续变化的物理量。数字量——时间和数值上都离散的量。ADC、DAC相互转换如图7-17所示。图7-17DAC、ADC示意图一个典型的单片机过程控制系统示意图如图7-18所示。各部分的作用如下:
(1)传感器:将各种现场的物理量测量出来并转换成某著名企业号(模拟电压或电流)。常用的传感器有:(2)放大器:把传感器输出的信号放大到ADC的量程范围。(3)低通滤波器:用于降低噪声、滤去高频干扰,以增加信噪比。(4)多路开关:把多个现场信号分时地接通到A/D转换。(5)采样保持器:地采样连续信号,并在A/D转换期间保持不变。图7-18一个典型的过程控制系统示意图7.4.1D/A转换器的工作原理
D/A转换即数/模转换,是将数字量转换成与其成比例的模拟量。D/A转换器的核心电路是解码网络,解码网络主要形式有两种:一种是权电阻解码网络,另一种是T型电阻网络。
1、权电阻解码网络D/A转换原理
基本思想是:先把每一位数字代码根据其权值转换成相应的模拟分量,然后将各模拟分量相加,得到的总和就是与数字量对应的模拟量。一个二进制数的每一位的权值,产生一个与二进制数的权成正比的电压,只要将代表每一个二进制位权的电压叠加起来就等于该二进制数所对应的模拟电压信号。如图7-19所示是一个输入4位二进制数的D/A转换电路,Vr是基准电压,D0~D3是4位二进制数,控制4位切换开关,开关分别接4个加权电阻,权电阻值分别按8:4:2:1比例分配。权电阻解码网络的输出接至运算放大器的反相输入端,Rf为反馈电阻。运算放大器用以放大模拟电压信号。图7-19权电阻解码网络D/A转换电路
D/A转换过程如下:位切换开关受被转换的二进制数D0~D3控制。当二进制数的某位为“1”时,位切换开关闭合,基准电压加在相应的权电阻上,由此产生与之对应的电流输入运算放大器,这个电流称为权电流。此时运算放大器输出电压就是这些输入的、与二进制权对应的权电流作用的结果。如D3=1,就会产生一个电流I8=Vr/R。相应的,D2=1会产生电流I4=Vr/2R=I8/2;D1=1产生电流I2=Vr/4R=I8/4;D0=1产生电流I4=Vr/8R=I8/8。因此输入运算放大器的总电流为:
I=I8+I4+I2+I1=I8(D3/20+D2/21+D1/22+D0/23)=VR/23R(D3*23
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学英语教资面试结构化经典例题试卷含答案
- 2026小学教资面试结构化经典例题含解析
- 2026初中语文教资面试试讲高频题含解析
- 2026小学英语教资面试试讲高频题库含解析
- 酸性气体吸收工安全演练竞赛考核试卷含答案
- 光纤筛选工标准化测试考核试卷含答案
- 琴弦制作工安全宣传知识考核试卷含答案
- 药物制剂工持续改进测试考核试卷含答案
- 道路客运售票员班组协作测试考核试卷含答案
- 呼吸治疗师道德考核试卷含答案
- 2026年国家工作人员学法用法考试题库及答案
- 2026年传感器原理及应用期末考试试题含答案
- 测绘人员保密协议的范本6篇
- 《二手车鉴定评估实务》课件-项目3:二手车价值评估与计算
- T/EAMA 17-2023绿色设计产品评价技术规范 挤包绝缘电力电缆
- 比选文件范本
- CSCO小细胞肺癌诊疗指南(2026版)
- 腰椎骨折压缩性护理查房
- 2026 年秋季开学 学会倾听尊重身边每个人
- IQC电子物料抽样检验标准手册
- 贵州省建筑工程类中级专业技术职务任职资格“以考代评”专业知识练习题试及答案
评论
0/150
提交评论