版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机的显示技术-数码管一、 任务书:二、 基础知识:在各种电子仪器或装置中显示部分属于人机对话部分,也是电子装置设计技术内容之一,常用的显示装置有发光二极管、数码管、液晶显示器等。一般在不需要显示字母或汉字的场合经常使用数码管作为显示原件。数码管显示的优点是技术较简单、硬件成本低和显示效果好(主要指亮度)。数码管的显示原理:常用的数码管为7段(7个笔画)或8段(7个笔画加一个小数点)。一个显示笔画均是一个或多个(较大的数码管,但仍为一个显示单元,需要的驱动能力不相同)LED作为发光原件。数码管的分类:按尺寸大小分(以一位数码管为例):字高框高LED数字高框高LED数英寸mmmm段英寸mmmm段0.28710110.410.1618.7110.37.819110.431118.8110.32811110.512.719110.369.114110.5213.217.5110.399.913110.5614.21911字高框高LED数字高框高LED数英寸mmmm段英寸mmmm段0.61525111.84556310.820.3227.711250.85442125.433212.356.869.7421.230.640.821375.6110621.538.144214101.612262注意:一般体积较大的数码管的一个段可能不是一个LED构成,而且组成一个字符段与小数点的LED数也不尽相同。以某公司产品红色数码管为例确定段电压时可采用1.2-1.5*LED数为工作电压。如4英寸的一个段的工作电压约为1・2-1・5*6=7-9V。各公司数码管内一段的LED数不尽相同。所以当不能确定时可以通过查阅生产企业的技术资料或通过试验得到合理的工作电压。按内部接线分:共阴极、共阳极;按颜色分:发光原件(LED)分为红色、高亮红、黄绿色、黄色、蓝色等。以红色较常见。按字符内容分:8字型、米字型和专用数码管等。但无论外表怎样改变其发光机理是相同的,只是改变发光单元的形状和位置而形成不同的产品。当你的需要特殊而且用量较大时也可以专门定做你所要的产品,但成本较高。
按组合方式分:分一位、两位、三位、四位。一位 两位 三位EHBH1四位
两位数码管段与内部接线图两位数码管段与内部接线图数码管的检测:其一是判断是共阴极还是共阳极,其二是判断一位数码管的各断是否良好。以一位数码管为例:判断共阴极还是共阳极的简单办法是用万用表的 档位,红表头接触数码管的公共极,黑表头接触另外任何一个段的引脚,该段亮则说明这个数码管是共阳极。如果不亮,然后将红黑表头换位该段亮则说明该数码管是共阴极。判断各段是否正常的办法与判断共阴极和共阳极的办法相同,将公共端确定后用红(黑)表笔轮流接触所有的段的引脚各段均亮说明正常,哪个段不亮说明哪个段不正常。但此方法只能检验较小的数码管,尺寸较大的数码管的一个段可能不是一个LED时万用表的 就不能用来点亮数码管的段,此时需要使用稳压电源并调到合适的电压进行检验,所谓合适的电压就是从小调节输出电压使数码管的段的亮度达到最大值然后再调小的最大值电压的大约80-90%即可。注意:在最亮的时间一定要短,否则可能烧坏数码管。为了保险起见可让LED的亮度相对较低,即用亮度换寿命。、数码管的种类及其引脚注意:LED公共端一般为3、8,1、5,1、8等。不要认为LED引脚排列都完全相同。1、一位七段数码管引脚图:
共阳y共阴共阳y共阴ykkikikikBCDEFGDPABCDEFGDPJL1 1:1.J1.j■ccJccJc5cj764219105 764219105数码管使用条件(仅使用与各段均为一个LED的数码管):a、 段及小数点上加限流电阻(注意:由于体积较大的数码管的段和小数点的LED数量不相同。因此,所需要加的限流电阻的阻值也不相同)b、 使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定c、 使用电流:静态:总电流80mA(每段10mA);动态:平均电流4-5mA峰值电流100mA数码管使用注意事项说明:数码管表面不要用手触摸,不要用手去弄引角;焊接温度:260度;焊接时间:5S表面有保护膜的产品,可以在使用前撕下来。2、四位七段数码管:内部第四个数码管共用a-dp,、数码管静态显示方式数码管静态显示方式是当LED数码管显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。LED数码管显示器工作于静态显示方式时,若为共阴数码管,各位的共阴极接地;若为共阳极数码管,则接正电压,电压根据LED数码管的具体要求定。每位的段选线分别与一个8位锁存器的输出口相连,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变。正因为如此,静态显示器的亮度较高。这种显示方式编程容易,管理也较简单。静态显示典型方案:•编码器•串口•I/OIIIIIII•编码器 •编码器♦串口 •串口*I/O *I/OIIIIIII •编码器•串口•I/OIIIIIII•编码器 •编码器♦串口 •串口*I/O *I/OIIIIIII IIIIIII*7600-GO0-600-电电总
♦♦♦图1:静态显示典型应用方案方案描述:下面分别对数码管的字段控制和数码管的位(com)连接方法进行描述。数码管的字段控制常用的方法有编码器输出方式(如CD4511)、串行口输出方式、单片机通用I/O接口输出方式。当显示状态为静态显示方式时,在数据输出后的一段时间内显示状态不会发生变化,在此应当采用锁存器将状态保持住,直到显示状态发生改变为止。例如CD4511就是带有锁存器的编码器。为了能让数码管保持一定的亮度,一般的I/O口或锁存器不能达到预定的要求,所以在此应当加上字段的驱动电路。驱动电路可以采用专用的集成电路或是功率三极管。数码管的位连接常用方法:对于共阳数码管接正电源,对于共阴的数码管接地。如果是多位数码管显示方式,字段控制采用的是串口输出字段码方式,为了防止闪烁,在数码管的公共极采用开关控制方式。当字段码输出时,暂时中断数码管公共端的开关,当数据发送完成以后,由于锁存器保存数码管字段信息,这时关闭数码管公共极开关,数码管开始接通,并显示字段信息。(3)、数码管动态显示方式在多位LED数码管显示器显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(或共阳)极公共端分别由相应的I/O线控制,实现各位的分时选通方法。这就构成了动态显示方式。段选码、位选码每送入一次后延时1ms,因人眼的视觉暂留时间为0.1s(100ms),所以每位显示的间隔不能超过20ms,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。动态显示典型方案:♦编码器*I/O串口、I/O、编码器一位选图2:动态显示典型应用方案方案描述:下面分别对数码管的字段控制和数码管的位(com)扫描方法进行描述。数码管的字段控制常用方法有编码器方式和I/O控制方式。在动态扫描显方式下,由于每一位数码管供电的时间是比较短(1mm)的,为了让数码管达到预期的显示亮度,在此对字段的驱动要求在功率和效率上比较静态显示时都要高。一般采用大功率 三极管(TIP127、8050或专用集成电路(ULN2003)进行驱动。数码管的位扫描常用串口扫描、I/O扫描或是74ls138编码器扫描方法。在以后的实验中,我们会有实例进行说明。(4)、LED数码管显示驱动技术仅依靠单片机I/O口的驱动能力是不能够驱动数码管正常工作的。因此,需要选择的驱动原件设计出合适的驱动电路使得数码管正常工作,对于静态显示方式和动态显示方式,驱动方法有明显的不同。静态显示方式的驱动,由于数码管的公共极接地或接正电压,所以只考虑段的驱动就可以。对于动态显示方式,由于一位数据的显示是由段和位选信号共同配合完成的,因此必须同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。段的驱动能力是由显示器的亮度决定的,通过发光二极管的电流越大,其亮度也越高。对于静态显示器,当某位点亮时,此位中点亮的段通过恒定电流,而对于动态显示器,此电流却是以一定脉冲方式出现的,其峰值电流不能真实地反映二极管的发光亮度,而必须以与脉冲占空比有关的平均值电流来考虑。理论上分析表明,同样的驱动器,当其驱动静态显示器时,其亮度为驱动动态显示器的N倍,N近似为显示位数。所以要使动态显示器达到静态显示器的亮度,必须将驱动器的驱动能力提高N倍。段的驱动能力确定之后,位的驱动能力也随之确定。当然必须考虑极端的情况,即位中各段均点亮,则位的驱动电流为各段驱动电流之和,此电流应为峰值电流。、相关知识
⑴、NPN三极管8050T8050是一个NPN的电路,应用于音频驱动和转换电路。在本教材中,应用于大功率电流驱动开关电路。其相关参数如下:、温度范围:-55°C~125°CTOC\o"1-5"\h\z、Vcbo-发射极到基极电压 30V、Vceo-发射极到集电极电流 25V、V?bo-集电极到基集电流 6V、Ic-发射极电流 1.5A做为开关使用,在此关心的参数有温度、Vceo和Ic是否能达到设计要求就可以。⑵、3-8译码器74ls138,74ls238①、3-8译码器管脚说明图3:3-8译码器的逻辑图74LS23874ls138和74ls238做为3线-8线译码器,在使能允许的条件下,可将地址端(A0、A1、A2)的二进制编码在一个对应的输出端以低电平(①、3-8译码器管脚说明图3:3-8译码器的逻辑图74LS238表1:管脚定义表管脚符号功能1、2、3A0、A1、A2地址输入4、5/E1、/E2使能输入(低电平使能)6E3使能输入(高电平使能)8GND地15、14、13、12、11、10、9、7Y0、Y1、Y2、Y3、Y4、Y5、Y6、Y7、译码输出(741S138低有效,741S238高有效)16电源②、3-8解码器的真值表表2:74ls238使用真值表INPUTOUTPUT/E1/E2乌AA1A2YoY1Y2y3y4y5y6y7HXXXXXLLLLLLLLXHXXXXLLLLLLLLXXLXXXLLLLLLLLLLHLLLHLLLLLLLLLHHLLLH
INPUTOUTPUT/Ei/E2E3AoAiAYoYiY2Y3Y4Y5丫6Y7HX'XXXXLLLLLLLLXHXXXXLLLLLLLLXXLXXXLLLLLLLLLLHLLLLHHHHHHHLLHHLLHLLLHLHLHLLLHHHLHLLLHLLHHLLLHHLHHLLLHLHHHLLLHHHHHL表1和表2分别描述了74LS238和74LS138的管脚控制、输出信息以及输出信息的真值表。对于74LS238和74LS138的区别只在输出时的差别,其它参数是一致的。、其它译码器I、 2-4译码器74ls139,两位地址,四位输出。控制真值表如下:II、 4-16译码器74ls154,四位地址,十六位输出。控制真值表如下:、译码器扩展方法⑶、字段编码器CD4511CD4511做为一个段码专用集成电路,集成驱动、锁存和编码功能。将一组8421BCD码编辑成通用的七段码通过高电平输出。在电路应用中,只需将共阴极数码管的对应管脚连接到CD4511上就可以了。图4CD4511管脚定义和数码管标识定义图表4:CD4511使用真值表INPUTOUTPUTLE/BI/LTDCBAabcdefgdisplayXX0XXXXB-X01XXXX011000011111100011000101100001011001011011012011001111110013
011010001100114011010110110115011011000111116011011111100007011100011111118011100111100119⑷、大电流驱动集成电路ULN2003A(ULN2800系列)ULN2003A电路是美国TexasInstruments公司和Sprague公司开发的高压、大电流达林顿晶体管阵列电路,由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路,发射极电流可以达到0.5A,输出电压可以达到50V,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。(5)、总线驱动集成电路74LS24474LS244(5)、总线驱动集成电路74LS24474LS244是一个集成缓冲、驱动于一体的集成电路,可应用于时钟驱动、地址驱动、PC机板的总线收发总线。①、管脚图和真值表SN74LS244SN74LS244也可以是低电平,Z-高阻状态注:L—低电平,H—也可以是低电平,Z-高阻状态②、主要电气参数符号说明最小值典型值最大值单位Vcc工作电压4.755.05.25VTa工作温度02570°CIoh输出电流-高电平-15mAIol输出电流-低电平24mAIOH、IOl图例说明(6)、移位寄存器74HC59574HC595具有8位串入并出的移位寄存器和一个8位输出锁存器,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在输出的同时,传送下一组移位数据,而不影响以前的输出状态。①、管脚图和真值表QB[11QB[11vccQC[2150qd[314jSERQe[413]OE°F[512]RCLK处[611]SRCLK□h[710]SRCLRGND[89i甜RCLKSRCLKDIP74HC595管脚图表:74HC595真值表输入功能SERSRCLK/SRCLRRCLKOEXXXXH禁止QA~QH输出XXXXL允许QA~QH输出XXLXX移位寄存器清零L1HXX移位寄存器的第一位变底,其它位和锁存器的输出保持不变。HtHXX移位寄存器的第一位变高,其它位和锁存器的输出保持不变。XIHXX不改变移位寄存器数据状态XXXtX移位寄存器数据放入锁存器中XXX_1X不改变锁存器输出状态
②、主要电气参数工作电压:4.75V5.25V;输出电流:70mA;工作温度:0°C70°C。⑻、大功率驱动三极管TIP42C、封装和引脚说明、主要电气参数I、 温度范围:-55C~125CTOC\o"1-5"\h\zII、Vcbo-发射极到基极电压 100VIII、 Vceo-发射极到集电极电流 100VvIV、Vebo-集电极到基集电流 5VV、Ic-发射极电流 6A三、实验目的掌握单片机多位LED数码管静态、动态显示方法和驱动应用。四、实现功能⑴、通过两个BCD转7段编码器芯片(CD4511)分别驱动两位共阴极数码管,实现静态的显示方式。P1.0P1.3、P1.4P1.7分别为两个CD4511输出数据的BCD码,通过按键提示改变数码管显示数据。⑵、通过两个串转并数据移位芯片(74LS164),分别驱动两位共阳数码管实现静态显示方式。显示数据通过串口发送给两个74ls164,通过按键提示,改变数码管显示数据。⑶、用P1口做为LED数码管段码输出,集成电路74LS244做为段码输出的驱动电路;P2.0P2.2驱动74ls238做为多位数码管的位选控制芯片,驱动四位数码管动态扫描显示数据,通过按键方式改变显示数据。⑷、通过P2口驱动七个功率三极管8050,做为段码输出的驱动电路,串口输出移位信号做为位选控制信号,驱动两片串转并芯片(741S164),ULN2003做为位选的驱动电路。在这里每片ULN2003任选两两位做为两个数码管的驱动位,一共四位数码管。通过按键输入信号,改变数码管的显示数据。五、实验(一)⑴、实验说明(实验的描述)在一些项目中,为了节约单片机I/O和程序资源的开支,单片机系统采用数码管静态显示方式。单片机只需向I/O口输出显示数据的BCD码,显示部分经过锁存器将数据的显示方式保持在一定的状态下,单片机就可以进行其它工作,而无需处理显示功能,除非是更换显示数据。CD4511复位电路Pl89C51B£D锁存器日CD-段码转换电路O振荡电路按键电路电源图1:方案设计图在这个实验中采用CD4511是因为这个芯片是一个BCD码转段码的专用芯片,将四位的BCD码转换并输出标准的段码信息,给共阴数码管做为显示数据,另外片内集成了锁存器和驱动器(详细参数请参照附件中的CD4511说明)。这不仅节约了程序的数码管段信息的编写,也节约的I/O口的资源,是一个比较理想的静态显示应用芯片,CD4511的具体使用方法,可根据其真值表进行操件。实验一电路中,按键电路做为信息输入,两位静态显示的数码管做为数据的显示器。当上电时,单片机初始化,显示数据为0,当有单片机检测到按键信号时,显示器的数据进行更换,显示方式是从0到99依次递增显示,当显示到99时,如果再有一次按键,则显示为0,依次类推进行循环显示。在数码管显示排列中,U7数码管显示数据的个位信息,U10显示数据的十位信息。⑵、实验工具硬件:电脑、电源DC5V、仿真器、烧写器、演示板、示波器软件:Keil51编译器,Protel99SE、仿真器软件、烧写器软件⑶、元器件列表名称规格数量名称规格数量瓷片电容1041电阻10K233PF230014电解电容100UF/16V1复位开关四脚110UF/16VCD4511DIP2发光二极管红,05189C51DIP1电源座1数码管共阴,0.82电阻2K1晶振12M,直插1⑷、原理图原理图说明:实验一原理图是为实现单片机通过BCD码转段码芯片实现数码管静态显示功能而设计的。采用DC5V供电,发光二极管D2做为电源指示,R3做为D2的限流分压电阻,电容C3和电解电容C7做为电源滤波电容,电阻R2和按键S1组成按键电路,信号由P3.2输入,电容C8、电容C9和晶振Y2组成单片机外围晶振电路,电容C10和电容R6组成单片机的复位电路,CD4511(U6、U9)和数码管(U7、U10)以及限流电阻组成静态显示电路,数码管公共极共阴极接地,P1.0P1.3向CD4511(U6)输出BCD码,P1.4P1.7向CD4511(U9)输出BCD码。CD4511集锁存、驱动功能于一体,是一个BCD[码转段码的专用芯片。图3:实验一原理图⑸、软件流程图流程1:实验一程序流程图⑹、源程序代码(汇编);方案选用P1.0〜P1.3和P1.4〜P1.7分别做为两个CD4511的BCD码输入口,每一个CD4511驱动一个共阴的数码;管做为静态显示。;P3.2做为按键输入端,每次按键,程序处理显示由0~99之间循环进行显示,P1.0〜P1.3和P1.4〜P1.7分别输出低;位和高位数据。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;FLAG0BIT20.0FLAG1BIT20.1FLAG0BIT20.0FLAG1BIT20.1FALG2BIT20.2;定义一位识别标志位;定义一个专用作显示的寄存器;定义一个专用作显示的寄存器;主程序入口DISPLAYEQU21HDISPLAYTEMPEQU22HORG0000HSTART:AJMPMAINMAIN:
;初始化程序,显示数据为00MOVA,#0MOVDISPLAYA ;初始化显示寄存器为0MOVDISPLAYTEMP,AMOVP1,A ;将0输出给CD4511,显示数据为0;检测是否有按键,如果有按键,将显示寄存器的数据变换成BCD码输出。MAIN_LOOP1:JBK1,MAIN_LOOP1ACALLDELAY12msJBK1,MAIN_LOOP1;是按键SETBK1 ;查看是否有按键;JBK1,MAIN_LOOP1ACALLDELAY12msJBK1,MAIN_LOOP1;是按键;再看是否为低电平,如果是则确认为按键,如果不是,则确认不是按键,则变换数据进行显示INCDISPLAYTEMPMOVA,DISPLAYTEMPINCDISPLAYA ;显示数据加1MOVA,#0MOVR0,A ;用R0存十位数。MOVA,DISPLAYDISP_GET:CJNEA,#10,DISP_OPERDISP_OPER:JCCYDISP_OUT ;如果处理后的数据A小于10,则为个位数,送显SUBBA,#10 ;如果大于10,则再减,直到小于10为止INCR0 ;取十位数AJMPDISP_GETDISP_OUT: ;R0存十位数,A存个位数MOVDISPLAYA ;将个位数存入显示寄存器中MOVA,R0CLRC ;清除C寄存器RLCA ;将A数据向左移4位,到高位显示区,低四位为0RLCARLCARLCAORLA,DISPLAY;整合高位和低位显示数据MOVP1,A;通过P1口送出BCD码,给CD4511AJMPMAINDELAY12ms:MOVR1,#0FH;延时子程序,延时时间赋值LOOP12:MOVR2,#0FFHLOOP120:DJNZR2,LOOP120DJNZR1,LOOP12RETENDC语言程序/******************************************************************************//*此程序是单片机静态显示的处理程序。/*针对P1口高四位和低四位分别接一片CD4511而设计的。/******************************************************************************/#include"reg52.h”sbitKEY=P3A2;〃定义按键的输入脚#defineucharunsignedchar#defineuintunsignedint/******************************************************************************//*延时程序,每个函数延时1ms/*输入参数为:t/******************************************************************************/
Delay1ms(uchart)(uintCount0,Count1;for(Count0=0;Count0<t;Count0++)(for(Count1=0;Count1<60;Count1++)(;}}}main()(P0=0xff; //I/O初始化P1=0xff;P2=0xff;P3=0xff;〃定义一个和显示对应寄存器〃初始化为〃定义一个和显示对应寄存器〃初始化为0〃初始化两位数码管显示数据为0DisplayBuf=0;P1=DisplayBuf;while(1)(if(!KEY)( 〃如果有按键输入Delay1ms(10); 〃延时10msif(!KEY){ 〃确认按键if(DisplayBuf++>99) 〃如果显示的数据超过99,超出两位数码管的显示范围DisplayBuf=0;Temp=DisplayBuf;Temp%=10; 〃取显示寄存器的个位数Temp&=0x0f; 〃清除高四位的数据DisplayBuf/=10; 〃取显示寄存器的十位数DisplayBuf<<=4; 〃将十位数向左移四位,对于第二个数码管进行输出。Temp&=0xf0; 〃清除底四位的数据DisplayBuf|=Temp; 〃将显示寄存器的十位BCD码和个位的BCD码组合P1=DisplayBuf; 〃同时送出给两位数码管}}}}⑺、实验步骤、依次接收仿真器、仿真板、电源、打开电源并打开仿真软件、调入调试程序、运行程序,观察数码管显示是否为0。、如果有按键操作,数码管数据由0~99依次轮流进行显示。⑻、实验总结⑼、实验体会六、实验(二)⑴、实验说明(实验的描述)本实验为了实现多位数码管静态显示方式而设计的方案。本方案采用串口级连的通信方式和集成串入并出移位寄存器和锁存器专用芯片,通过串口输出多位数码管的段码信息,并通过控制输出段码信息。本方案数码管驱动数目可以达到300位以上。方案框图如下:+电源+电源74HC595具有8位串入并出的移位寄存器和一个8位输出锁存器,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在输出的同时,传送下一组移位数据,而不影响以前的输出状态。所以这种芯片是实现本方案功能的最佳芯片。74HC595级连的方式做为段码输出电路,采用四个共阳,0.6寸的数码管做为显示器,数码管的共阳极接电源正极。段码信息通过串口输出给74HC595级连电路,通过移位到达每一个输出管脚。74HC595内部集成一个8位串入并出的移位寄存器和一个8位输出锁存器,而移位寄存器和输出锁存器的控制是各自独立的,可以在显示不改变的同时进行移位,这样可以保证显示不闪烁。在74HC595和数码管之间没有加驱动器,是因为采用的数码的功率比较小,74HC595的驱动能力能够满足数码管的需要,每位输出电流为20mA。单片机系统串口设置成工作方式0,输出8位数据,即数码管的段码信息。单片机系统用来实现以下功能:当上电时,初始化显示为0000,如果有按键操作,依次循环显示:1234,4321,2367,4567,7689,3267,8546,4574,1296等信息。这是一个静态显示的典型应用方案,LED数码管可以扩充到上百位。⑵、实验工具硬件:电脑、电源DC5V、仿真器、烧写器、演示板、示波器软件:Keil51编译器,Protel99SE、仿真器软件、烧写器软件⑶、元器件列表名称规格数量名称规格Mr曰.数量瓷片电容1041电阻2K133P210K2电解电容100UF/16V14.7K110UF/16V110032发光二极管红,051复位开关1电源座189C51DIP1三极管T8050,直插174LS163DIP4数码管共阳,0.84晶振12M,直插1
⑷、原理图⑷、原理图图4:实验二原理图原理图说明:实验二原理图是为实现单片机通过串口向数码管输出显示信息静态显示功能而设计的电路。采用DC5V供电,发光二极管D2做为电源指示,R3做为D2的限流分压电阻,电容C3和电解电容C7做为电源滤波电容,电阻R2和按键S1组成按键电路,信号由P3.2输入,电容C8、电容C9和晶振Y2组成单片机外围晶振电路,电容C10和电容R6组成单片机的复位电路,74HC595(U1、U2、U5、U7)和数码管(U3、U4、U6、U9)以及电阻组成静态显示电路。数码管的字段信息采用串口方式发送,通过于74LS164进行移位输出。数码管都采用共阳公共极都接正电源,如图中所示。在此采用P2.0操作74HC595的RCLK端,控制将移位结果输入到锁存器中,P2.1连接74HC595的移位状态清除端,在通过串口输入数据移位之前,应当清除所有74HC595的移位状态。⑸、软件流程图
流程2:实验一程序流程图⑹、源程序代码(汇编);方案选用4个74HC595级连的方式控制四位数码管,由串口输出字形码的静态显示方式。;P3.2做为按键输入端,每次按键,程序处理显示由0~99之间循环进行显示,P1.0为移位寄存器;向锁存器送入数据的控制位RCLK;P1.1做为移位寄存器清零的控制位/SRCLK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEYBITP3.2RCLK_595BITP1.0;定义移位寄存器向锁存器送入数据的控制位SRCLK_CLR_595BITP1.1;定义移位寄存器清零的控制位DISPHIGHBIT20H;定义数码管显示寄存器的高位HHxxH为有效DISPLOWBIT21H;定义数码管显示寄存器的低位xxLLL为有效DISPTEMPBIT22HORG0000H;主程序入口START:AJMPMAINMAIN:;SCON7 6 5 4 3 2 1 0MOVSCON,#00H ;SM0SM1SM2RENTB8RB8TIRI;设置串口中断工作方式0;IE7 6 5 4 3 2 1 0MOVIE,#90H EA ESET1EX1ET0EX0;设置允许总中断和串口中断;初始化显示寄存器和数码管显示数据以及I/O口MOVA,#0MOVDISPHIGH,AMOVDISPLOW,AMOVA,#4MOVR0,A ;通过串口向外输出四个数据SEND_INIT_DATA: ;送出初始化数据DJNZR0,MAIN_LOOPMOVDPTR,#DISP_TABLE ;表格地址送数据指针MOVA,#0MOVCA,@A+DPTR ;从字形码DISPUTABLE中获取串口输出字形数据MOVSBUF,A ;通过串口输出。DECR0AJMPSEND_INIT_DATAMAIN_LOOP:MAIN_LOOP1:;等待按键SETBKEY ;查看是否有按键JBK1,MAIN_LOOP1则确认不是按键ACALLDELAY12ms;延时12ms,防抖动则确认不是按键JBK1,MAIN_LOOP1 ;再看是否为低电平,如果是则确认为按键,如果不是,;处理按键INCDISPTEMP ;将高位显示的寄存器数据加1MOVA,DISPTEMPINCDISPLOW,A ;将低位显示的寄存器数据加2MOVDISPHIGH,AMOVA,DISPHIGH ;检查是否超出99显示范围CJNEA,#100,MAIN_DISP_OUTJNCMAIN_DISP_OUTMOV A,#0 ;如果大于99,则清零。MOV DISPHIGH,AMOV DISPLOW,AMAIN_DISP_OUT:MOV A,#0MOV R0,A ;存取高位数据MOVA,DISPHIGHDISP_GET:CJNEA,#10,DISP_OPER;如果不等于10DISP_OPER:JCCYDISP_OUT;如果处理后的数据A小于10,则为个位数,送显SUBBA,#10 ;如果大于10,则再减,直到小于10为止INCR0 ;取十位数AJMPDISP_GETDISP_OUT: ;R0存十位数,A存个位数MOVR4,A ;将个位数寄存下来
MOVA,R4;XXLLMOVC A,@A+DPTR;指向表格地址MOVSBUF,A;通过串口输出第一个数据的个位数段码MOVA,R0MOVCA,@A+DPTR;指向表格地址MOVSBUF,A;通过串口输出第一个数据的十位数段码MOVA,R4;取高位数的个位数的BCD码HHXXMOVC A,@A+DPTR;指向表格地址MOVSBUF,A;通过串口输出第一个数据的个位数段码MOVA,R0MOVCA,@A+DPTR;指向表格地址MOVSBUF,A;通过串口输出第一个数据的十位数段码AJMPMAIN_LOOP;将数据输出后,重新进入等待按键状态DELAY12ms:MOVR1,#0FH 涎时子程序,延时时间赋值LOOP12:MOVR2,#0FFHLOOP120:DJNZR2,LOOP120DJNZR1,LOOP12RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;串口输出控制74HC595的字形码;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DISP_TABLE:DBC0H;字型码表0DBF9H;1DBA4H;2DBB0H;3DB99H;4DB92H;5DB82H;6DBF8H;7DB80H;8DB90H;9DB91H;FEND;程序结束DPTR,#DISP_TABLE;表格地址送数据指针MOVMAINRUN:3/******************************************************************************//*此程序是单片机静态显示的处理程序。/*针对串口输出段码信息,采用带锁存器和移位寄存器分开的串入并出芯片74HC595。/******************************************************************************/#include"reg52.h"sbitsbitsbitsbitsbitsbitKEY=P3A2;REG_WRITE=P1.0;CLR_595=P1.1;〃定义数码管电源控制开关〃定义164清除位#defineucharunsignedchar#defineuintunsignedint〃定义段码ucharLEDSegCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uintLEDDispCode[9]={1234,1321,2367,1567,1689,3267,1546,1574,1296};/******************************************************************************//*延时程序,每个函数延时1ms/*输入参数为:t/******************************************************************************/Delay1ms(uchart)(uintCount0,Count1;for(Count0=0;Count0<t;Count0++)(for(Count1=0;Count1<60;Count1++)(;}}}main()(P0=0xff; //I/O初始化P1=0xff;P2=0xff;P3=0xff;〃串口中断初始化-定义为0方式SCON=0x0; 〃设置串口中断方式0IE=0x90 〃允许单片机总中断和串口中断0ucharCount,CountTemp;//定义两个计数器ucharDisplayBuf;〃定义一个和显示对应寄存器CLR_595=1; 〃使595CLR端置高DisplayBuf=LEDSegCode[0];〃初始化方案四位数码管为0for(Count=0;Count<4;Count++)(//通过串口输出四个0的段码,分别送给四个数码管,送到595移位寄存器中SBUF=DisplayBuf;}REG_WRITE=1; 〃将移位寄存器的数据写入锁存器Delay1ms(1);REG_WRITE=0;CountTemp=0;while(1)(if(!KEY)( 〃如果有按键输入Delay1ms(10); 〃延时10msif(!KEY){ 〃确认按键LED_POWER=0; 〃断开数码管电源,防止出现显示闪烁CLR_595=0; 〃给74ls164输出一个2ms的低电平脉冲,清除输出状态Delay1ms(1);CLR_595=1;DisplayBuf=LEDSegCode[Count];//取出要显示的数据for(Count=0;Count<4;Count++){//通过串口输出四个0段码,分别送给四个数码管SBUF=DisplayBuf%10; 〃分别取出个位、十位、百位、千位数交送到串口输出。DisplayBuf/=10;}if(CountTemp++>9)CountTemp=0;//如果9个数据都显示完了,再重复从第一个数据开始显示REG_WRITE=1; 〃将移位寄存器的数据写入锁存器Delay1ms(1);REG_WRITE=0;}}}}⑺、实验步骤⑺、实验步骤
、依次接收仿真器、仿真板、电源、打开电源并打开仿真软件、调入调试程序、运行程序,观察数码管显示是否为0。、有按键输入,数码管数据按1234,4321,2367,4567,7689,3267,8546,4574,1296依次轮流显示。⑻、实验总结⑼、实验体会七、实验(三)⑴、实验说明(实验的描述)实验三通过单片机I/O对多位数码管进行位扫描的显示方式而设计的典型应用方案。方案如图所方案中电路为了保证数码管有足够的亮度,采用总线驱动集成电路74LS244做为段码的驱动器。74LS244每位可以吸收3454mA电流,而数码管每段的电流为20mA,74LS244足以做数码管的字段驱动器;采用大功率三极管T8050做为数码管公共极的驱动,对于数码管峰值电流为140mA,而T8050的输出电流可以达到1500mA,是数码管峰值电流的十倍以上,所以也满足数码管公共极的驱动需要。方案采用四个单位共阳极,0.8的数码管做为显示器。一个复位按键电路,按键信号由P3.2口输入。P2.0P2.6做为段码的输出,P1.0P1.2做为74LS238地址位的输出口,扫描每一位数码管。对于74LS238输出口可以接八个单位的数码管,在此方案中只接四位,对应74LS238的输出口分别为:Y0、Y1、Y2、Y3,而Y4、Y5、Y6、Y7悬空。方案的功能是刚上电时,四位数码管显示数据为0。检测是否有按键,如果没有,则保持以前的状态显示,如果有按键,则更换显示数据。显示的数据依次为1234,4321,2367,4567,7689,3267,8546,4574,1296。⑵、实验工具
硬件:电脑、电源DC5V、仿真器、烧写器、演示板、示波器软件:Keil51编译器,Protel99SE、仿真器软件、烧写器软件sn.tZ」LKlii_Ljsn.tZ」LKlii_Lj二: LHTi_CE3LHLi_feJLi FlATHLTMl.Fl2fla风彳PHFl5FIEPOaFl7MlB7L89C51臾LFJJTl.TOF2-IF25~rTF27XIX2SJ3XTKXDTXD而心:-4.7KJMLED』]JU.__d4.7KLED』]LHTi_CB3.__d4.7KILED_B3HIJ k—1⑶、元器件列表名称规格数量名称规格数量瓷片电容1041电阻2K133P210K2电解电容100UF/16V14.7K410UF/16V12007发光二极管红,051复位开关1电源座189C51DIP1三极管T8050,直插4ULN2003ADIP1数码管共阳,0.84晶振12M,直插174LS238DIP1⑷、原理图图5:实验三原理图原理图说明:实验三原理图是为实现单片机控制数码管动态驱动显示功能而设计的电路。采用DC5V供电,发光二极管D2做为电源指示,R3做为D2的限流分压电阻,电容C3和电解电容C7做为电源滤波电容,电阻R2和按键S1组成按键电路,信号由P3.2输入,电容C8、电容C9和晶振Y2组成单片机外围晶振电路,电容C10和电容R6组成单片机的复位电路,U1(74LS244)做为字段的驱动集成电路,Q1、Q2、Q3和Q4做为共阳极数码管的位扫描控制电路和驱动电路。P2.0P2.6做为段码的输出口,P1.0P1.2做为74LS238的地址输出位,控制扫描四位数码管显示,在此只接74LS238的底四位。在此处用74LS238的原因是74LS238输出的有效电平为高电平,刚好符合数码管显示扫描控制的功能!⑸、软件流程图流程1流程1:实验一程序流程图⑹、源程序代码/******************************************************************************//*此程序是单片机动态显示的处理程序。/*⑹、源程序代码/******************************************************************************//*此程序是单片机动态显示的处理程序。/*针对P2.0P2.6输出段码信息,P1.0P1.2向74ls238输出扫描地址而设计的。/******************************************************************************/#include"reg52.h”sbitKEY=P3AsbitKEY=P3A2;〃定义按键的输入脚#defineucharunsignedchar#defineuintunsignedint//定义段码ucharLEDScanCode[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};ucharLEDSegCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uintLEDDispCode[9]={1234,1321,2367,1567,1689,3267,1546,1574,1296};/******************************************************************************//*延时程序,每个函数延时1ms/*输入参数为:t/******************************************************************************/Delay1ms(uchart){uintCount0,Count1;for(Count0=0;Count0<t;Count0++)(for(Count1=0;Count1<60;Count1++)(;}}}main()(P0=0xff; //I/O初始化P1=0xff;P2=0xff;P3=0xff;ucharCount,CountTemp,CountTemp2; 〃定义一个计数器ucharDisplayBuf[4],DisplayTemp; 〃定义一个和显示对应寄存器for(Count=0;Count<4;Count++)(DisplayBuf[Count]=LEDSegCode[0];〃初始化方案四位数码管为0}Count=0; 〃从第一个数码管开始显示和扫描CountTemp=0;//从LEDDispCode[]M一个要显示的数据进行显示while(1)(if(!KEY)( 〃如果有按键输入Delay1ms(10); 〃延时10msif(!KEY){ 〃确认按键DisplayTemp=LEDDispCode[CountTemp]; 〃将要显示的数据取出,分别放在四个寄存中for(CountTemp2=0;CountTemp2<4;CountTemp2++){〃通过串口输出四个0段码,分别送给四个数码管DisplayBuf[CountTemp2]=DisplayTemp%10; 〃分别取出个位、十位、百位、千位数交送到串口输出。DisplayTemp/=10;}if(CountTemp++>9)CountTemp=0;//如果9个数据都显示完了,再重复从第一个数据开始显示}}P2=DisplayBuf[Count]; 〃将字段码输出P1=LEDScanCode[Count];//输出扫描地址Delay1ms();//延时1ms时间,这个比较重要。if(Count++>=4)Count=0;//只针对四位数码管进行扫描}}⑺、实验步骤、依次接收仿真器、仿真板、电源、打开电源并打开仿真软件、调入调试程序、运行程序,观察数码管显示是否为0。、有按键输入,数码管数据按1234,4321,2367,4567,7689,3267,8546,4574,1296依次轮流显示。⑻、常见问题
⑼、实验总结八、实验(四)⑴、实验说明(实验的描述)实验四是针对多位(可达300位以上)不同大小(0.368英寸)的数码管单片机串口扫描的显示方式而设计的典型应用方案。单片机单片机图4:单片机扫描多位数码管方案设计图如方案图所示,电路为了保证数码管有足够的亮度,采用达林顿管集成电路ULN2003做为数码管段驱动器,ULN2003每位驱动脚驱动电流可以达500mA,耐压可达50V,如果按每位的每段电流为10mA,这样可以驱动50个数码管。采用大功率三极管TIP42C做为共阳极数码管公共极驱动驱动,驱动电流为6A,耐压可达100V,如果按数码管的峰值电流为70mA计算,可以驱动85个数码管。总计行列计算:50x85=4250个数码管。方案采用串口移位芯片74HC595芯片,通过串口输出段码信息,数据分别送到每行的数码管中。采用74LS154,通过地址可以扫描驱动每列的数码管。此方案的显示设定为两行三列共六位数码管。段控制做为行,共两行,位控制做为列,共三列。方案的功能是刚上电时,设置串口工作方式为0,四位数码管显示数据为0。检测是否有按键,如果没有,则保持以前的状态显示,如果有按键,则更换显示数据。显示的数据依次为1234,4321,2367,4567,7689,3267,8546,4574,1296。⑵、实验工具硬件:电脑、电源DC5V、仿真器、烧写器、演示板、示波器软件:Keil51编译器,Protel99SE、仿真器软件、烧写器软件⑶、元器件列表
名称规格数量名称规格数量瓷片电容1042电阻2K133P210K2电解电容100UF/16V14.7K710UF/16V130074700UF/50V174HC595DIP2发光二极管红,中51复位开关1电源座189C51DIP1三极管TIP42C,直插3ULN2003ADIP2数码管共阳,0.86晶振12M,直插17805174LS154DIP1⑷、原理图JI==Cf!===Cf!insjtcixch^R(IXtMmSC3XCM05CMrgmV£(TO W1OIJT1.&2mn2&.1caminsjtcixch^R(IXtMmSC3XCM05CMrgmV£(TO W1OIJT1.&2mn2&.1cammnAme■■mnAW7mji?("L心甥ULN2003LH7DIn'll'IH'li'In'llLH7DD7TIPLIEOTIP42CsnCMsjtcixOlsji(ix0203Jtcix05CHIOCmiOIJT1.&2mn2&.1camea\ri4me.■■■-a\nAW7mji?("W甥LHnJrlDlLgTi3irCLHlCrllMLHTi-|lD7VC£BT4HCS9FULN2003TTPLIE]FIATFlLTPQLFI2Fl3MlPHFl5M5Fid-M也Fl7MLF2Q1'■■TflP2LF22Tl.PJ.IFJ-Ir岳FJ6F2?XIX2srsnJtXDTKD丽.■uj:rMIXLKlf^_QOTIPLmTIP42CtliTLlour.wv图6:实验四原理图原理图说明:实验四原理图是为实现单片机串口通过串入并出芯片 74HC595输出段码信息,通过74LS145输出动态扫描功能而设计的电路。此电路为多位数码管显示的小型应用电路。采用由稳压电源集成电路7805和电容共同组成一个稳压电源为整个电路供电并输出DC5V电压,采用DC9V-12V供电,在7805前端,采用电容C7和C8做为前端的滤波稳压的电路,C8一般采用容量比较大和耐压较高的电容,目前是防止输出电源不稳定而设计的;在7805后端,采用C9和C10电容做为7805后端的稳压和滤波,在此参数要求不是很高。发光二极管D2做为电源指示,R7做为D2的限流分压电阻,电阻R6和按键S2组成按键电路,信号由P3.2输入,电容C3、电容C13和24M晶振Y2组成单片机外围晶振电路,电容C14和电容R8组成单片机的复位电路。单片机串口接74HC595电路做为段码输出,74HC595具有移位寄存器和锁存器相互独立控制的功能,在移位时,不会影响显示,数码管就不会出现显示抖动的现象。为了保证数码管的亮度,在此采用专用集成电路ULN2003做为数码管字段的电流驱动电路,驱动电流可达500mA,耐压可达50V。在每位数码管的公共极增加了大功率驱动电路TIP42C,驱动电流可达6A,耐压可达100V。P2.1P2.4做为74LS154地址输入口,P2.0做为74LS154的输出控制位,74LS154是一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度执法资格试题含完整答案详解【各地真题】
- 2024-2025学年度安徽林业职业技术学院妇产护理期末模考模拟试题及参考答案详解【模拟题】
- 心肌梗死患者的用药护理
- 2024-2025学年度冶金工业技能鉴定经典例题带答案详解(精练)
- 2024-2025学年度电梯考试测试卷(达标题)附答案详解
- 2024-2025学年度云南能源职业技术学院单招《物理》考前冲刺测试卷含答案详解(基础题)
- 2024-2025学年农村信用社招聘考试能力检测试卷带答案详解(典型题)
- 2024-2025学年度中医执业医师模拟题库附参考答案详解(B卷)
- 2024-2025学年医师定期考核考试综合练习及完整答案详解【夺冠】
- 2024-2025学年度电工考前冲刺练习试题及参考答案详解(巩固)
- 2026年南阳科技职业学院单招职业技能考试题库附答案
- 2026年合肥信息技术职业学院单招职业技能测试题库附答案详解
- 档案信息化管理课件
- 时装摄影课件
- 车载HUD产业发展趋势报告(2025)-CAICV智能车载光显示任务组
- 跨界合作营销模式在汽车行业中的应用可行性研究报告2025
- 培训老师美术上课流程
- 热力公司供热培训课件
- 2024常州市高级职业技术学校工作人员招聘考试试题及答案
- UI设计用户体验实战案例
- DB41∕T 2230-2022 全自动水文缆道远程测流规程
评论
0/150
提交评论