永发信息网

4位数码管怎么用?有哪些注意事项

答案:4  悬赏:40  手机版
解决时间 2021-10-22 16:59
4位数码管怎么用?有哪些注意事项
最佳答案
数码管是由多个发光二极管组成的一种显示器件,按字段多少可以分为七段管、八段管、米字管等;按工作方式分又可分为共阳数码管和共阴数码管;按位数分又可分为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端口,而且功耗更低。
希望我的回答对你有所帮助,谢谢!
全部回答
设计时序电路,输入时钟经过一个分频器,产生2kHz的扫描信号作为时钟,驱动计数器工作。选用模值为6的计数器,通过一个6路的数据分配器,产生段码,依次控制6个LED的亮灭,使得某一时刻有且仅有一个LED点亮,同时产生对应的,将点亮的LED数码管赋值显示为相应的数码予以显示。由于扫描频率较高,6位LED数码管序列将显示持续稳定的0至5的数码。
就是相同标号的引脚连接在一起,但是位选引脚必须增大功率,才能点亮数码管,只是需要在位选(S0-S3)分别加上拉电阻和射极输出器,或者加三极管反相输出。共阳数码管的两种接法,前者输出没有取反,后者输出取反。共阴数码管与其类似,只是三极管箭头换一下,+5V换成-5V,当然,上拉电阻不能变,这是由51单片机内部结构决定的。希望我的回答可以帮助到你。
首先定义接口,比如:#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();//调用按键函数一口气从上面写到下面,给你参考,希望对你有帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
喝啤酒浑身红
动产与不动产的划分
男友不能为了我删除暧昧过的女孩微信,说他们
公安县人民医院地址在什么地方,想过去办事
历史上的今天发生了哪些大事
降龙木一般放在家里的什么位置最好,能镇宅辟
室外热力管道敷设方式有哪些?有没有网友清楚
有人晓得沅江哪里好玩吧?
左边肚子腹部痛,什么原因?怎么解决。左边肚子
LED灯什么品牌比较好?参考价多少?
指印户外防水插座价格是多少钱?
沈阳到海南旅游现在机票多少钱啊,大概1月11号
十月份三十年未见的同学聚会穿什么衣服合适
重庆铝方通吊顶哪家做得好?有谁知道的求告知
我家装 饮用水管灰色的 能用吗
推荐资讯
温州中海建筑幕墙装饰有限公司怎么样?
去欧洲留学哪个国家好?
房子采光不好怎样装修颜色怎么搭配?哪家公司
上海一共有几个国家和国际认可的赛车场?在什
女的对男的欲擒故纵说明什么,能不能说明女的
日照出入境检验检疫局(连云港路)地址在什么地
众泰汽车直营店地址在什么地方,想过去办事,
什么是美国FDA认证
玻璃门怎么挑选?有谁说一下?
在窗边明亮的位置,适合摆放哪些植物呢?有哪
地骨皮与翻白草泡水喝能减肥吗
大连到山东烟台怎么买船票?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?