4位数码管怎么用?有哪些注意事项
答案:4 悬赏:40 手机版
解决时间 2021-10-22 16:59
- 提问者网友:最爱你的唇
- 2021-10-21 17:24
4位数码管怎么用?有哪些注意事项
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-10-21 18:42
数码管是由多个发光二极管组成的一种显示器件,按字段多少可以分为七段管、八段管、米字管等;按工作方式分又可分为共阳数码管和共阴数码管;按位数分又可分为1位、2位、3位、4位等;按颜色分还有红色、绿色、蓝色等,按大小还可分为0.28寸、0.30寸、0.36寸等。
驱动方式
1、静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
希望我的回答对你有所帮助,谢谢!
驱动方式
1、静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
希望我的回答对你有所帮助,谢谢!
全部回答
- 1楼网友:你可爱的野爹
- 2021-10-21 21:27
设计时序电路,输入时钟经过一个分频器,产生2kHz的扫描信号作为时钟,驱动计数器工作。选用模值为6的计数器,通过一个6路的数据分配器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。
- 2楼网友:拜訪者
- 2021-10-21 20:43
就是相同标号的引脚连接在一起,但是位选引脚必须增大功率,才能点亮数码管,只是需要在位选(S0-S3)分别加上拉电阻和射极输出器,或者加三极管反相输出。共阳数码管的两种接法,前者输出没有取反,后者输出取反。共阴数码管与其类似,只是三极管箭头换一下,+5V换成-5V,当然,上拉电阻不能变,这是由51单片机内部结构决定的。希望我的回答可以帮助到你。
- 3楼网友:北城痞子
- 2021-10-21 19:31
首先定义接口,比如:#include“reg
51.h”sbitS1=P1^0;sbitS2=P1^1;sbitS3=P1^2;sbitS4=P1^3;//按键对应的单片机IOsbitSMG_ENP1^4;//数码管选通sbitSMG_SET()SMG_EN=0//数码管公共使能sbitSMG_CLR()SMG_EN=1//数码管公共失能defineGPIO_PORTP2//数码管8位数据口//以上是按键及数码管对应的单片机IO,下面来写驱动程序,首先需要定义一个字符码unsignedcharascll[]={xx0,xx1,xx2,xx3,xx4,xx5,xx6,xx7,xx8,xx9};//此数组的值需要根据数码管与单片机数据口的实际对应关系来写,数组0-9偏移量分别对应数码管显示0-9的数值码希望你能明白这一点。voidDelay(unsignedlongw)while(w--);//下面先来写一个驱动函数voidDisPlay(unsignedchardat)SMG_SET();//数码管选通GPIO_PORT=dat;//将数据Dat送给数码管显示//按键扫描函数,按键对应的是P1最低4位unsignedcharkey()unsignedchartemp;P1=0xff;if((P1&0x0f)!=0x0f)//如果P1口低4为不为f则表明有按键按下,下面判断是哪个按键Delay(1000);//延时约20ms用来消抖,必须的if((P1&0x0f)!=0x0f)//消抖后在判断一次如果低4位不为f就表示确实有按键按下temp=GPIO_RORT&0x0f;//将IO上的按键值读给变量tempswitch(temp)//判断是哪个键被按下case0x0e://表示是S1被按下1110DisPlay
(1);//显示1break;case0x0d://表示是S2被按下1101DisPlay
(2);//显示2break;case0x0b://表示是S3被按下1011DisPlay
(3);//显示3break;case0x
07://表示是S4被按下0111DisPlay
(4);//显示4break;while((P1&0x0f)!=0x0f);//如果按键还一直被按着,则等待用户松开按键Delay(1000);//延时20ms消抖voidmain()while
(1)key();//调用按键函数一口气从上面写到下面,给你参考,希望对你有帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯