细说多位数码管的驱动方法
- 格式:doc
- 大小:245.50 KB
- 文档页数:4
软件说明p1:字型控制口;p2:字位控制口;要显示的内容分别存放在30H,31H,32H单元。
先将每个存储单元中要显示的内容(二进制数)转换成2位BCD码,再用查表程序查出2位BCD码分别对应的控制数码管的控制信号,分时送p1,同时分别将对应的位选信号送p2。
循环显示3个单元内容。
30H,31H,32H:分别存放欲显示的内容;40H:转换成BCD码时的暂存单元;41H:转换成数码管控制信号的暂存单元;50H:字位控制信号暂存单元;r0:间址显示内容单元;r6:6位数码管是否循环完控制单元;由于显示子程序中每次显示一个存储单元内容,即显示2个数码管内容,故6/2=3,r6中设置循环次数为03H。
r7:循环系数。
主程序流程图图1 主程序流程图图2 BCD码转换子程序流程图图3 显示子程序流程图;主程序ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP,#60HMOV 30H,#24HMOV 31H,#30HMOV 32H,#0CHLOOP:MOV 50H,#01HMOV R0,#30HMOV R6,#03HMOV R7,#03HLOOP1:MOV A,@R0LCALL B_DLCALL DIPDJNZ R7,NEXT1LJMP LOOPNEXT1:INC R0LJMP LOOP1;BCD码转换子程序B_D:MOV B,#10DIV ABSWAP AADD A,BRET;显示子程序DIP:MOV 40H,AANL A,#0FH;显示第一位MOV DPTR,#TABMOVC A,@A+DPTRMOV 41H,AMOV A,#0FFH;一下两句是使显示的数据不相互串位MOV P1,AMOV A,50HMOV P2,AMOV A,41HMOV P1,ALCALL DEL1MSMOV A,50HRL AMOV 50H,AMOV A,40H;显示第二位ANL A,#0F0HSWAP AMOVC A,@A+DPTRMOV 41H,AMOV A,#0FFHMOV P1,AMOV A,50HMOV P2,AMOV A,41HMOV P1,ALCALL DEL1MSDJNZ R6,NEXT2MOV A,#01HSJMP DONENEXT2:MOV A,50HRL ADONE:MOV 50H,ARET;1ms延时子程序DEL1MS:MOV R1,#10L2:MOV R2,#50L1:DJNZ R2,L1DJNZ R1,L2RET;在ROM中建立数码管控制信号表格TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90HEND。
数码管动态扫描原理一、引言数码管是一种常见的数字显示设备,它由多个发光二极管组成,可以显示数字、字母、符号等信息。
数码管动态扫描技术是一种常用的驱动方法,它能够实现多个数码管在同一时刻显示不同的数字,从而节省了硬件资源和功耗。
本文将详细介绍数码管动态扫描原理。
二、数码管基础知识1. 数码管结构数码管由多个发光二极管组成,每个发光二极管代表一个数字或字符。
常用的数码管有共阳极和共阴极两种类型。
共阳极数码管是指所有发光二极管的阳极连接在一起,而共阴极数码管则是指所有发光二极管的阴极连接在一起。
2. 数字编码方式对于一个七段式数码管来说,每个数字都可以用七位二进制代码来表示。
常用的编码方式有BCD编码和ASCII编码等。
三、静态驱动与动态驱动1. 静态驱动静态驱动是指将每个数码管的控制信号直接连接到单片机的IO口上,并通过程序控制IO口输出高低电平来实现数码管的显示。
静态驱动的优点是驱动简单,控制精度高,但缺点是需要大量的IO口资源,不适用于多数码管显示。
2. 动态驱动动态驱动是指将多个数码管的控制信号通过共用的引脚来传输,并通过程序控制引脚输出高低电平来实现数码管的显示。
动态驱动的优点是可以减少硬件资源和功耗,适用于多数码管显示。
四、数码管动态扫描原理1. 原理概述数码管动态扫描原理是指在一定时间内,依次对多个数码管进行刷新并显示不同数字。
具体实现方式为:将每个数码管与一个引脚相连,并通过程序控制该引脚输出高低电平,在一定时间内循环切换各个引脚的状态,从而实现多个数码管之间的切换和显示。
2. 实现步骤(1)将所有数码管连接到单片机IO口;(2)定义一个循环计时器,在一定时间内循环切换各个IO口状态;(3)对于每一个计时器周期内需要显示的数字进行编码;(4)根据编码结果,在每个IO口上输出对应数字需要显示的控制信号;(5)循环刷新各个数码管,实现动态扫描。
五、动态扫描的优化1. 亮度控制由于数码管的发光强度与电流大小成正比,因此可以通过调节每个数码管的亮度来实现不同数字之间的明暗程度差异。
数码管驱动程序实例介绍数码管是一种常见的显示设备,通常用于显示数字和部分字母。
为了控制数码管的显示内容,我们需要编写一段驱动程序来控制数码管的工作。
本文将介绍一个数码管驱动程序的实例,包括硬件连接、代码编写和运行效果展示。
通过学习这个实例,你将了解到如何使用Arduino来驱动数码管进行数字显示。
硬件连接首先,我们需要准备以下硬件组件:•Arduino开发板•数码管(常见的有共阳极和共阴极两种类型)接下来,按照以下步骤进行硬件连接:1.将Arduino开发板与电脑连接,并打开Arduino IDE。
2.将数码管的引脚与Arduino开发板上的数字引脚相连。
具体连接方式取决于你使用的数码管类型,请参考相关资料或数据手册。
3.使用面包板或杜邦线等工具完成引脚连接。
代码编写完成硬件连接后,我们可以开始编写代码了。
以下是一个简单的数码管驱动程序示例:// 引入库#include <SevSeg.h>// 创建一个SevSeg对象并指定引脚SevSeg sevseg;void setup() {// 初始化数码管sevseg.begin(COMMON_CATHODE, 4, 3, 2, 1, 0, 6, 7, 5, 8);}void loop() {// 显示数字0-9for (int i = 0; i < 10; i++) {sevseg.setNumber(i);sevseg.refreshDisplay();delay(1000);}}代码解析:1.首先,我们引入了一个名为SevSeg的库,该库提供了控制数码管的函数和方法。
2.在setup()函数中,我们初始化了一个SevSeg对象,并指定了数码管的引脚连接方式。
这里使用的是共阳极数码管,如果你使用的是共阴极数码管,则需要将COMMON_CATHODE改为COMMON_ANODE。
3.在loop()函数中,我们通过一个循环来显示数字0-9。
数码管的使用方法一、工作原理数码管是一种半导体发光器件,其基本单元是发光二极管。
能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
二、电气特性单位数码管有十个管脚,其中有8根是用来点亮a,b,c,d,e,f,dp 共8个发光二极管(原理中有介绍),3,8两个管脚为公共COM脚,它们相连通且作用相同,可接任意一根。
为了更清楚介绍,贴图如下:三、驱动方式静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
数码管的使用方法一、工作原理数码管是一种半导体发光器件,其基本单元是发光二极管。
能显示4位数字的叫四位数码管,当然也有多位和只有一位的数码管,他们的电气原理相同。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
万联芯城-电子元器件采购网一直秉承着以良心做好良芯的服务理念,为广大客户提供一站式的电子元器件配单服务,客户行业涉及电子电工,智能工控,自动化,医疗安防等多个相关研发生产领域,所售电子元器件均为原厂渠道进货的原装现货库存。
只需提交BOM表,即可为您报价。
万联芯城同时为长电,顺络,先科ST等知名原厂的指定授权代理商,采购代理品牌电子元器件价格更有优势,欢迎广大客户咨询,点击进入万联芯城。
二、电气特性单位数码管有十个管脚,其中有8根是用来点亮a,b,c,d,e,f,dp 共8个发光二极管(原理中有介绍),3,8两个管脚为公共COM脚,它们相连通且作用相同,可接任意一根。
为了更清楚介绍,贴图如下:三、驱动方式静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
静态显示驱动静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个笔划都由一个I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高。
静态驱动的缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O 端口来驱动,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,在轮流显示过程中,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,这就是动态驱动。
动态驱动的优点是占用I/O线少,只需要X+Y个,X为数码管的笔划数,Y为数码管的个数。
动态驱动的缺点是占用CPU时间长,编程复杂,驱动功率较大。
在动态显示方式中,各数码管轮流工作,为了减轻闪烁现象,每个数码管刷新频率必须大于25 Hz,即相邻两次点亮的时间间隔要小于40 ms。
数码管越多,每个数码管的显示时间越短,同时还要考虑为CPU留出空闲时间。
在驱动电流一定的情况下,亮度越低,正因如此,要适当增大驱动电流。
对比:静态显示驱动:各显示器在显示过程中持续得到送显信号,与各显示器接口的I/O口线是专用的。
动态显示驱动:各显示器在显示过程中轮流得到送显信号,与各显示器接口的I/O口线是共用的。
静态显示驱动特点:无闪烁,无须扫描,节省CPU时间,编程简单,用元器件多,占I/O线多。
3位八段码管驱动电压-回复题目: 3位八段码管驱动电压导言:八段码管(7-segment display)是一种常见的数字显示设备,常用于电子时钟、计算器、电子秤等电子设备中用于显示数字。
驱动八段码管需要提供适当的电压和电流。
本文将一步一步回答关于3位八段码管的驱动电压的问题,解析其工作原理和应用。
一、什么是八段码管?八段码管是一种由7个发光二极管(LED)和1个小数点组成的数字显示器件。
每个发光二极管可以被独立地打开或关闭,从而显示出不同的数字或字母。
数字0-9和字母A-F都可以通过控制八段码管上的这些发光二极管来显示。
八段码管通常由3位、4位或更多位的组合而成。
3位八段码管是最基本和常见的一种,对于数字显示已经足够满足大多数普通应用的需求。
二、八段码管的工作原理是什么?八段码管通过控制各个发光二极管的状态来显示数字。
它是通过行列扫描方式工作的,即每次只有一个数码管的一行被选通,其他行被关闭。
行列扫描的频率通常在几十到几百赫兹之间,人眼无法察觉到扫描过程,看起来就像是所有的数码管同时亮起。
具体来说,八段码管有8个引脚,其中7个引脚对应7个发光二极管,另外一个引脚用于控制小数点。
通过控制这些引脚的高低电平,可以控制对应的发光二极管的亮灭状态。
三、八段码管的驱动电压是多少?八段码管的驱动电压要根据具体型号来确定。
一般而言,八段码管的正向工作电压(VF)在1.8V到2.5V之间,驱动电流(IF)在5mA到20mA 之间。
4、如何计算驱动电压限流电阻?在实际驱动八段码管时,通常需要限制通过每个发光二极管的电流,以保证其寿命和稳定性。
为此,可以使用电流限流电阻(RL)来控制通过发光二极管的电流。
计算方法如下:RL = (VCC - VF) / IF其中,VCC为电源电压,VF为发光二极管的正向工作电压,IF为发光二极管的驱动电流。
例如,如果VCC为5V,VF为1.8V,IF为10mA,则RL的计算如下:RL = (5 - 1.8) / 0.01 = 320Ω因此,需要使用320Ω的电阻来限制电流。
单片机串口连接两个74L S164驱动两个L E D数码管单片机应用设计课题:串口连接两个74LS164驱动2个LED数码管显示班级学号: 14110501xx 姓名: xx1设计要求1.1 设计内容设晶体为12MHz,将拨码开关数据串行输入到74LS164,并行输出到2个LED数码管进行相应的数码显示。
设计包括:系统设计分析、系统原理图设计、程序流程图设计、源程序设计、系统调试与仿真及调试结果分析、对本课程学习的感想与收获、对老师的意见与建议、期望成绩等。
1.2 学习目的该作业具有较强的实用性,许多同学已经认识到自己完全有能力设计一个实用的单片机应用系统,对单片机设计由感兴趣已经变为爱好了,为后面的实际应用系统设计奠定了较好的基础。
2 系统设计分析2.1 单片机最小系统+串口+74LS164+LED数码管单片机的最小系统是单片机能够工作的最小硬件组合,对于8051系列单片机,其电路的最小系统大致相同,主要包括电源、晶体振荡电路、复位电路等。
2.1.1 串口数据通信方式包括并行通信和串行通信两种。
并行通信就是多条数据线上同时传送,其优点:速度快,只适于近距离通信。
串行通信就是数据以为以为的顺序传送,其优点:线路简单,成本低,适合远距离通信。
串行通信方式包括:异步串行通信和同步串行通信。
异步方式,数据传送不连续,时间间隔任意。
同步方式,发送与接收同步。
数据传送方式:单工、半双工、全双工、多工。
常见的串行通讯有:RS-232、RS-485、CAN总线等。
串行口控制寄存器包括:串行口控制寄存器SCON(控制工作方式)、电源控制寄存器PCON(控制波特率)。
SM0、SM1选择工作方式,SM2用于多机通信,REN允许接收控制位,TB8/RB8发送/接收数据D8位,TI/RI为发送/接收中断标志位。
2.1.2 74LS164串行口工作于方式0,发送数据时,是把串行端口设置成“串入并出的”输出口。
将它设置为“串入并出”输出口时,需外接1片“串入并出”同步移位芯片74LS164或CD4094,本次设计,用74LS164。
细说多位数码管的驱动方法
我们在制作项目时,会遇到多位数码管的显示问题.如何尽量减少硬件的使用数量和加快全部显示一轮的时间,是需要精心规划与安排的. 例如:
做万年历,就有年月日,时分,星期等内容需要显示,数码管数量多达 13 位以上.如果再带上秒,温度,农历什么的,位数就更多了.
例如:
做多功能电力仪表,显示位数也往往多达十几位以上.
尽管有专门用于这种多位显示的专门芯片可供选择,但是,往往一只这种芯片成本可能比使用的单片机本身还要高!例如市场上的 CH451 等
,高达 6~8 元呢!
于是,可以考虑串行到并行的一些芯片,例如 HC164,HC595 等等,驱动也仅仅就二线制,但是,这么一来,外挂芯片也不少.
还有,可以使用一些 4 线到 7 线的驱动芯片,例如:CD4511,74LS247,CD4543 等等,它们除了节省一些源驱动引脚之外,使用数量恐怕也让人头痛!
类似于 HC373,HC374,HC573,HC574 的芯片,可以减少很多源驱动引脚,但是,芯片使用数量仍然太多!
还有一个附带问题,许多仪器仪表,往往是主印刷版与前面的显示/按键板是分离的,有些商品仪表,主板到前面板的引线就多达几十根,无论
如何,都会让人感觉又乱有多又不可靠,生产调试等都增加了困难.
说了那么多,我们就是希望:使用尽量少的硬件芯片,尽量少的过渡引线,尽量短的显示周期时间,尽量低的元器件费用!----当然,需要保证可靠性不能降低!
我们举例说明:
一个 2 * 4 位的仪器显示电路,有 8 位数码管,完全依靠单片机本身的端口来驱动,就有 2 种方案考虑:
图 1 的方法需要使用 22 个单片机端口.
图 2 方法需要使用 16 个单片机端口.
图 2 全部数码管显示一次的时间比图 1 长一半时间.
从仪器 2 个板子分离的情况来看,图 1 从主板到前面显示板的引线就相当多了!图 2 虽然少了一些,但是,加上供电,按键等,数量也不算少,很可能还会有发光管指示灯什么的,需要考虑的麻烦事就更多了!
从单片机端口的使用数量来看,它也大大影响到单片机的封装选择,引脚不是越大越好的,对焊接,成本,调试等都会有影响.
如果芯片带有 RS232 硬件功能,当然可以考虑使用串行驱动,虽然不过分影响单片机分时工作的速率,但是,上面提到过,串行芯片的数量也
是相当可观的.
数码管这种显示还要保证每秒不能少于 50 次以上,否则会有显示闪烁的感觉!
针对上面提及的问题,这里推荐一种比较好的方法:就是增加一只廉价的单片机,专门负责显示,主功能单片机与显示用途单片机仅仅 2 根引线就可以正常传送信号,这么一来,带来的后果是利大于弊!
我们这么做,还会最大限度地节省 2 个分离印刷板的引线,节省印刷板的布线难度,减少主单片机的引脚数量,加快系统的运行速率.对显示
用途的单片机的内部资源没有什么要求,完全可以使用最普通功能的单片机来担任显示任务!
这样就需要解决 2 个单片机之间的通信问题,这完全可以借鉴现成的一些 2 线制串行通信方式方法.也可以根据自己的情况自定义自己的
通信方法.
通常,主单片机只要保证每秒时间给显示单片机送入 4 次以上的数据,那么,对数码管显示的实时性来说就已经足够了!----当然,你就是增
加一倍二倍的传送次数,对主单片机来说,也是可以非常轻易做到了!因为,它犯不上去操心每秒显示 50 次以上的工作量了!
而对于显示单片机来说,则要求保证每秒时间内,完成全部数码管的 50 次以上的分时扫描显示.....
而对于显示单片机来说,则要求保证每秒时间内,完成全部数码管的 50 次以上的分时扫描显示.....
下面通过一个具体例子来说明.
图3 电路使用 SN8P2624 芯片,它与 EM78P447,PIC16C57 等芯片引脚排列兼容!而且价格低廉.
图3 电路除了预留 2 个端口作为数据通信之外,其余全部端口都用于数码管的显示.可以驱动 2*6 位数码管.笔段使用并行方式驱动,速度是最快的!
图4 电路除了预留 2 个端口作为数据通信之外,还预留一个端口用于检测 5V 掉电,其余全部端口都用于数码管的显示.可以驱动 2*5 位数码管.笔段使用并行方式驱动,速度是最快的!
如果仅仅驱动 2*4 位数码管,那么,其中一次驱动就可以成为 16 个状态指示灯的发光管驱动.非常适合大部分仪器仪表电路使用.
预留的通信接口都具有外部中断功能,可以很方便地使用中断方式来响应主单片机的数据传送.
由于这种单片机为 OTP 类型,一旦烧写后就不能更改了,因此,需要很好的考虑需要显示的各种各样的内容.同时,还要考虑主单片机传送数据时,到底是传送原始数据还是传送笔段数据.
如果传送原始数据,那么,可以减少数据的传送量.原始数据由显示芯片自行分解到笔段数据.但是有可能出现显示数据没有考虑到的显示内容而无法显示.
如果是传送笔段数据,则由主单片机预先进行 HEX 到 BIN 的转换,然后再进行传送.这种方案会增加数据的传送量.但是不用担心显示数据没有考虑到的显示内容无法显示.
因此,采用哪一种数据进行传送,需要精心考虑和预先安排好!
当然,一个 7 段数码管,能够显示的字符样式毕竟有限,只要把所有可能的字符都考虑周到,就无需担心会有不能显示的内容了.
因此,推荐传送数据直接使用原始数据,由显示单片机自行进行 HEX 到 BIN 的转换,因为显示用途的单片机实际没有什么更多的事情可
做.
如此一来,对于那些具有前后板结构的仪器仪表来说,2 个分离的板子的连接线就一律减少到仅仅剩下 2 条线路了.这个改进对许多厂家来说是具有实际意义的!
那么,增加一只单片机是否会对硬件成本有较大的影响呢? 没有的.它仅仅是把一个多引脚的单片机变成 2 个少引脚的单片机而已.而且,担任显示用途的单片机由于无需特殊功能,可以选择比主单片机更加廉价的型号.虽然不能说是完完全全划等号.可是,对于批量使用的企业来说,它又变成了一个通用部件,完完全全可以仅仅更换一个主板就获得另外一款品种.这是不是也很划算呢?
这是实际项目使用的面板,驱动 4*3位数码管和 5 个工作状态发光管指示灯.。