51单片机--LED类编程技巧

发布者:NanoScribe最新更新时间:2018-11-19 来源: eefocus关键字:51单片机  LED  编程技巧 手机看文章 扫描二维码
随时随地手机看文章

 首先点阵:(以最简单的8X8为例,16X16的以后再说)


1.jpg


8X8点阵


个人感觉点阵需要注意的地方有:


第一个就是驱动点阵的方式


我认为8X8点阵的驱动程序分为行扫描和列扫描两种。


比如行扫描就是用一层for循环:


先选中第一行,然后送入这一行的数据,再选择第二行,然后送入第二行数据,如此循环下去,直至显示完一个屏幕(即8行),同时记得要消隐和微延时(后面会说消隐和微延时),列扫描同理。如图是代码示例:


2.jpg


8X8点阵,无滚动效果


第二个就是滚动效果的实现。


思路是:


一:扫描函数不变,每扫描一个屏幕,所有数据移动一位;(代码实现简单)


二:数据不变,每次读取数据的起始位置移动一位。(代码实现有点难,反正我不会╮(╯▽╰)╭)


以第一种为例:


代码实现:实现滚动效果的基础是一个扫描函数和一个数据处理函数,扫描函数有两层for循环组成:第一层for循环控制图像每移动一次的时间间隔,然后第二层for循环显示整个屏幕。


如图扫描函数:

3.jpg

扫描函数


滚动的重点是数据循环函数的写法,我觉得数据处理分两种:(仅个人愚见,新手)


第一种:


如果显示的内容整个点阵足以显示(这样的情况一般没有),那么就不用另外写数据处理函数,直接用 intrins.h里面的 _cror_(*,*) 函数或者 _crol_(*,*)函数对数据进行循环处理就可以了.不用 <


第二种:


自然就是指显示的数据在一张屏幕上显示不了,从而导致需要滚动显示。


此时就要另外写一个数据处理函数,原理很简单,比如StreamData[80]这个数组里面存着数据,那么只需将数据中的每一个数据往前(或者往后)移一位就可以了,最后将StreamData[0]移至StreamData[79]的位置就大功告成了。


注:以上两种的扫描还是只扫描一个屏幕(当然最大就只能扫描一个屏幕嘛),每当扫描完一个屏幕,接着进行数据处理就行了。


如图为第二种的数据处理函数:

4.jpg


注:但是我这种方法比较麻烦,但是我也没有想到其他比较好的方法,所以如果读者有比较好的方法的话,希望可以分享一下。


(来一张萌图:)

5.jpg


出自《刀剑神域》 亚丝娜,抱枕上的是Kirito


对于LED灯的显示,点亮LED的原理我就不说了,大家都懂,我说几个小细节吧:(补上上面挖的坑)


1、微延时。


当对动态数码管进行操作时,每点亮一位数码管,在点亮下一个数码管之前要进行微延时,这样可以提高亮度,延时太久的话整体效果会大打折扣(俗称:晃眼),但是不延时的话,亮度会很低,所以到底延时多久就取决于处理速度啦,其实到头来还是取决于你的眼睛啦。


(不晃眼的延时就是好延时!)


2、消隐。(就是消除隐约的光,也就是重影)


消隐就是说在所有的灯写完一次数据进行下一次数据刷新的之前要先把所有的灯灭掉,不然的话就会出现重影。记得我刚学的时候就总是出现重影,然后就改延时时间(当时不会嘛,不知道消隐这回事),怎么改都不对,直到最后找回原来的视频、例程又看了一遍才知道要消隐。


下面是我刚开始学单片机时自己做的:

6.jpg


我自己做的心形灯,当时更新手,更菜,大家不要笑哈


(做那个灯的时候刚刚开始学,电阻接小了,导致太亮,眼都快瞎了....)


16X16点阵一般会用74HC595驱动,所以要涉及到其他的知识,所以这里就先不说了,下次再说。拜拜~☂


关键字:51单片机  LED  编程技巧 引用地址:51单片机--LED类编程技巧

上一篇:51单片机--LED类编程技巧续
下一篇:51单片机--矩阵键盘

推荐阅读最新更新时间:2024-03-16 16:17

LED产业还没成熟就被寄予厚望
      LED作为一种新型光源,节能、长寿命、无污染而受到大家的广泛关注。尤其中国奥运会成功运用大量LED技术,效果非凡,各地方政府纷纷扶持LED产业,建立了大量的LED示范单元,与此同时,大量的企业也涉足该领域,就连做电池起家,汽车成名的BYD公司再次提出LED世界第一的口号。LED真的就进入繁荣时期了么?     从没有哪个照明设备像LED这样还没有成熟就被寄予厚望,但是缓慢的发展,也使的LED产品过于概念化,缺乏客户基础。即便现在政府正在以LED路灯为突破口试图扶持LED的成长,可LED无论是民用还是商用的客户群依旧没有形成。在这个时候有一个危险的信号:LED厂商已经把压缩成本作为第一要务!很多公司将LED的电流做大
[电源管理]
欧司朗负责FMER“集成微光子技术”项目 聚焦LED前视照明
自适应前视照明,也就是由摄像头控制、能即时作出反应的无眩光车头灯,凭借它的诸多智能功能,未来将会为车友们带来更多福祉。这项复杂功能的核心在于微电子元件和光电子元件的集成,是德国联邦教育和研究部 (FMER) 在“德国光子学”(Photonics Research Germany) 计划中所赞助研究项目的重点之一。作为此项目的协调者以及汽车行业 LED 照明领域的市场领导者,欧司朗以专业技术为项目保驾护航。   此联合项目是 FMER“集成微光子技术”倡议的一部分,旨在开发具备辅助交通安全功能的新型节能 LED 车头灯的技术框架。这可为更具驾乘人员安全性的自适应前视照明系统 (AFS) 提供基础,例如,可适应车速的无眩光远光灯和近
[电源管理]
欧司朗负责FMER“集成微光子技术”项目 聚焦<font color='red'>LED</font>前视照明
51单片机2个外部中断的应用
;51单片机的P1口上接有8只LED。 ;在外部中断0输入引脚P3.2接有一只按钮开关K1。 ;在外部中断1输入引脚P3.3接有一只按钮开关K2。 ;要求K1和K2都未按下时,P1口的8只LED呈流水灯显示, ;仅K1(P3.2)按下时,左右4只LED交替闪烁。 ;仅按下K2(P3.3)时,P1口的8只LED全部闪亮。 ;两个外中断的优先级相同。 ;============================================= ;用 PROTSUE 仿真界面如下: ;下列程序,可以满足要求. ORG 0000H SJMP MAIN ORG 0003H SJMP X0_INT ORG 0
[单片机]
<font color='red'>51单片机</font>2个外部中断的应用
LED封装巨头积极布局 价格战进入白热化
春雨/摄   日前,台湾绿扬光电投资1亿美元的大功率LED封装项目正式落户南昌高新区。至此,除先进电外,台湾八大LED封装巨头均已在内地开设工厂。业内人士认为,随着实力雄厚的台资企业在内地的积极布局,原本处于中低端、同质化生产严重且在大打价格战的大陆LED封装企业将迎来更大挑战,可以预见行业洗牌时代即将来临。    台资企业市场份额大   2010年我国LED封装总产值270亿元,同比增长35%,预计今年也将延续20%~30%的增长速度。虽然LED封装市场发展快速,但市场份额却被外企和台企等巨头把控。   据了解,目前国内有1500家封装企业,年销售额在1亿元以上的第一阵营
[电源管理]
台<font color='red'>LED</font>封装巨头积极布局 价格战进入白热化
使用51单片机并行口驱动LED数码管显示电路及程序
介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路结构原理图和软件程序流程,同时给出了采用51汇编语言编写程序。 1 硬件电路多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位寄存器,LED采用L05F型共阴极数码管。 显示时,其显示数据
[单片机]
使用<font color='red'>51单片机</font>并行口驱动<font color='red'>LED</font>数码管显示电路及程序
使用NCP1014带PFC的离线8w LED反激式电源
用NCP1014作控制器的离线(offline)8WLED驱动电源电路如图1所示。这种LED驱动电路的AC输入电压从90v AC到265v AC,输出8W,驱动Gree公司的一个xLAMP MC-E.可以用作便携式台灯、橱柜灯或走廊灯等。MC-E在一个封装内含有4个表面贴装LED.每个LED的额定电流是700mA.通过LED串的实际电流是630mA。 图1中.R1为可熔保险电阻,C1、L1和C2组成EMI滤波器,D1~D4为桥式整流器,U1(NCP1O14)、变压器T1、整流二极管D7、电容C8/C9等组成DC-DC反激式变换器。电流传感电阻Rsense(R6、R7和R8)、晶体管Q1、光电耦合器U2、电容C6等组成反馈
[电源管理]
使用NCP1014带PFC的离线8w <font color='red'>LED</font>反激式电源
利用驱动芯片快速提升LED显示屏画质电路设计
 解决方案:   • 将同一个时间内输出电流的脉冲平均打散   • PCB最好是4层板以上,走线部份越短越好   • VLED与VCC分开为不同电源   • VLED及VCC对地端加上一个大的稳压电容   现今LED显示屏运用越来越广,凡举金融证券、体育、交通讯息、广告传递等都可以看到它的足迹,也因为最近几年LED成本下降及亮度的提升再加上LED显示屏更具有耗电少、寿命长、视角大及响应速度快等优势。   而且可以根据不同地点及需求订制相对应的尺寸,在市场上快速崛起成新一代的传播媒体宠儿,其条件更是其他大型显示设备无法比拟的。本文将进一步一一说明如何不变更电路设计,利用驱动芯片的快速响应优势来实现高画质的LE
[电源管理]
利用驱动芯片快速提升<font color='red'>LED</font>显示屏画质电路设计
使用STM32寄存器点亮LED
事先声明哦,我也是最近才开始学32的,不过我会尽可能详细的讲解这些小知识点 我们口中常说的LED灯其实是指LED发光二极管,关于这一点涉及到的知识点,我已经在51单片机教程中提及(同点亮LED灯),故而不再详述。 刚开始接触STM32的时候,觉得他的操作明显区别于51,比如我们点亮一个LED灯,直接控制相应的IO口即可;但32不一样,我们需要先设置时钟控制寄存器 RCC_APB2ENR|=1 4; //一共32位 然后设置它的工作方式,输出速度。 GPIOC_CRL&=~(0x0f (4*i)); //控制第i+1个led GPIOC_CRL|=(3 (4*i)); //3可以表示为0011,然后在它的前面补零,凑
[单片机]
使用STM32寄存器点亮<font color='red'>LED</font>灯
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved