单片机实例分享,无线供电的LED旋转显示万年历
大家一定见过各种各样的万年历吧?下面我就带领大家手工打造一台采用无线供电方式、以LED旋转显示屏作为显示器的万年历。图7.1所示就是这款LED旋转显示万年历的实际效果。所谓LED旋转显示屏,是指在电路中只有一列发光二极管,通过电动机带动发光二极管转动,当这列发光二极管转到不同位置时,用单片机控制相应的发光二极管点亮和熄灭,由于人眼的视觉暂留现象,形成了视觉上的图形或文字。
图7.1 基于LED旋转显示屏的万年历
由于显示屏是靠转动的发光二极管的残留影像显示信息的,其特点是显示信息丰富,而整个电路所需的发光二极管的数量却很少(本电路共使用16只发光二极管),所以电路原理图非常简单,几乎和流水灯电路无异,很适合手工制作。但由于整个电路板处于高速旋转状态,所以我们首先要解决两问题:一是如何给运动的系统供电;二是如何保证显示信息稳定显示。
如何给运动的系统供电
给运动的系统供电,常用的供电方式有3种:电池供电、电刷供电、无线感应供电。电池供电方式简单方便、易于携带,但它会使系统重量增加,影响转速,而且它成本高、寿命短,因此只适用于摇摇棒等短时间使用的装置,长时间运行的装置就不合适了。比如能显示时间的LED旋转显示屏,每次电池用完,重换电池就够烦心了,换了电池还得重新调整日期、时间,那简直可以用“痛苦”二字来形容。第二种方式——电刷供电,这种供电方式简单有效,能传送较大电流强度的电能,但在业余制作时,很难找到合适的高质量的电刷,高速旋转时会产生较大的噪声。第三种方式——无线感应供电,这种方式为无接触方式供电,寿命长、无新增噪声,虽然传送电流强度有限,效率稍低,但完全可以满足单片机系统的需要,所以本电路采用无线供电方式。无线供电方式技术要求稍高一些,但能增加制作的挑战性和趣味性,因此,本文首先对无线供电电路的设计与电能传输效率进行一些介绍。
无线供电技术目前还在研究试验阶段,但其应用场合非常广泛,前景非常好,比如,已经出现了一些小功率无线充电器应用成品,只要手机或者电子产品具备无线接收装置,靠近无线充电器就可以充电了,除此之外,还有无线射频IC卡、通行证、缴费卡等。
一个LED旋转显示屏需要消耗多大的电能呢?我们来做一个简单的计算:假设我们采用16个高亮度LED,工作时每个LED耗电10mA,单片机的自身耗电较少,暂且忽略不计,则电路所耗电流的最大值为160mA,电压取5V,所以最大总功耗约0.8W。下面我们就按这个要求设计电路。
无线感应供电的基本原理与变压器的原理相同。它利用电磁感应现象,通过交变磁场把电源输出的能量传送到负载,即在相距很近的两个线圈中,一个线圈作为电能的发送端,另一个线圈作为电能的接收端。通过振荡电路给发送端线圈提供交变电流,在相距很近的接收端线圈中就可以感应出交变电动势,再对这个交变电动势整流、滤波即可对负载供电。图7.2所示为通过无线感应供电方式驱动发光二极管发光的演示。
图7.2 以无线感应供电方式驱动发光二极管发光
图7.3所示是一个简易的近距离无线供电系统原理图。其中原线圈L1及其控制电路构成了发射端,副线圈L2及整流滤波电路构成了接收端,R5为负载电阻。
电路中使用74HC4060产生多谐振荡波,此多谐振荡波通过大功率场效应管IRF530给发送端线圈L1提供交变电流。本电路之所以使用74HC4060组成多谐振荡电路,主要是为了测试方便,74HC4060构成的振荡电路不但频率稳定,而且有10种输出频率可供选择,可以逐一测试每种频率所对应的输出功率和电能传输效率。当选用11.0592MHz的晶体振荡器时,QD端输出为经过16分频的频率——691.2kHz。
图7.3 简易无线供电系统原理图
次级接收电路中的谐振电容C4很重要,加上谐振电容后传输距离大大增加,输出功率和电能传输效率也明显提高。
按图3所示电路及元件参数搭好电路后接通电源,对电路进行测试。当不加任何负载时(L2远离L1),VT1的漏极电流I1为45mA;当L2与L1紧耦合时,I1增加到110mA,此时负载电阻R5上的电压U2为6.5V的电压,折合功率为0.83W,U1实测电压为13V,电能传输效率为:
电路的输出功率基本能满足LED旋转显示屏的要求,对于小功率设备,电能传输效率应该说是相当不错了。
在无线供电电路的制作中,振荡电路可以采用任何一种形式的多谐振荡器,如三极管振荡电路、集成运放电路或者门电路构成的振荡电路,也可以采用74HC4060这种带振荡器的二进制异步计数器来实现,振荡频率在500kHz左右为宜。另外,比较重要的就是线圈的制作了,发射线圈用Φ0.5左右的电磁线(漆包线)在外径为1cm的骨架上绕48匝,然后固定好;接收线圈用Φ0.2左右的电磁线绕成内径为4mm左右的12匝空心线圈即可,关键是安装时不要使这两个线圈相碰。
最后,根据我的制作体会,给对此有兴趣的爱好者几点建议:
(1)L1匝数较多是为了有足够的感抗(感抗和电感量及交流频率有关),避免流过的电流过大而发热。其实L1也可以只绕10匝左右,但一定要配上大小合适的谐振电容,使其工作在谐振状态,这样可以获得更好的传输距离、输出功率和电能传输效率,包括L2的谐振电容也是如此。谐振电容的选择可以在示波器监视下进行,谐振电容可以用涤纶电容、聚乙烯电容等,建议不要用瓷介电容。
(2)传输能量时,波形不是很重要,但是失真太大就会使功率管工作在线性区,而非工作在开关状态,这样将使电能的传输效率大幅度下降。如果在功率管的前面增加一级射极跟随器,可以提高波形的质量,从而提高电能的传输效率。
(3)无线供电电路的工作频率不可太高,频率越高对VMOS管的要求也就越高,目前高频特性满足这种要求的VMOS管还不容易找到;频率越低,就要求L1的电感量越大。所以我们通常选择电路的工作频率在200kHz~1MHz为宜。
(4)L2感应的电压经整流、滤波后一定要有稳压电路,以保证单片机工作稳定。
如何保证显示信息稳定显示
要保证LED旋转显示屏显示正常和稳定,就要求单片机控制显示屏总是从电路板转到某一位置时开始播放所要显示的内容。通常的做法就是通过传感器来检测电路板的位置,并通过中断的方式通知单片机进行显示。传感器可以使用霍尔元件或者光电传感器,其中光电传感器要求工艺简单,安装方便。
综上所述,本万年历的电路原理图如图7.4所示。
图7.4 LED旋转显示屏电路原理图
电路说明
本电路采用无线感应供电方式给旋转部分供电,所以电路包括无线供电部分电路和旋转部分电路两部分。
无线供电部分采用图7.3所示电路。
旋转部分是由电动机带动,进行高速旋转,其电路非常简单,首先由接收端线圈产生感应电动势,经二极管VD19整流、电容C4滤波、稳压二极管VD20稳压后得到5V电源给整个电路供电,单片机的16个I/O口线分别控制16个发光二极管。为了方便修改程序,我在电路中安装了ISP下载接口。电动机可以选用5V长轴直流电机。
作为万年历,应该具备显示公历、农历、星期、时间以及环境温度的功能,并且在掉电的情况下,所有信息不丢失,时钟正常走时,这里我们使用时钟芯片DS1302和数字温度传感器DS18B20。
同时在电路中还增加了一体化红外遥控接收头,它用于通过遥控调整时间和其他参数。
需要说明的是,在电路中并没有具体标明单片机的型号,你可以选用最熟悉的单片机,只要I/O口够用就可以了,当然,在I/O口够用的情况下,尽量选用体积小、重量轻的单片机为佳。
另外,在无线供电电路板和旋转电路板之间安装一对红外光电传感器,将电路板的位置状态送到单片机的外部中断请求输入端,用以对显示内容进行定位。
电路组装与调试
本系统电路不太复杂,两块电路都可以在万用电路板上插装、焊接(有条件的话也可制作PCB)而成。制作时首先按照原理图在万用电路板上规划出合理的元件布局,然后按布局图将元件依次插装并焊接,最后把需要连接的引脚用电磁线和镀锡裸铜线连接起来。注意不要短路,线路连接关系不要出错。图7.5所示是装配好的无线供电电路及底座实物图。
图7.5 装配好的无线供电电路及底座
安装时需要将直流电机和供电电路板固定在一个盒子里,使电机的转轴伸出盒外,将发射线圈套在电机转轴上,并以电机转轴为中心。图7.6所示是装配好的旋转主板正、反面的实物图,发光二极管和限流电阻均使用贴片元器件,这样会使得像素更紧凑,显示更清晰。
图7.6 装配好的旋转主板正反面
单片机使用STC12C5616AD,28脚窄体DIP封装。LED与单片机引脚的连接均用电磁线相连,这样走线整齐、美观,还能减小整个电路板的体积,其他引脚的连接使用镀锡裸铜线连接。接收线圈固定在旋转主板的底面,然后随旋转主板一起插到电机转轴上,使接收线圈套在发射线圈的内部,构成变压器的形式。全部安装好以后,需要插到电机轴上,测试一下电路板是否平衡,如果不平衡,可以通过在适当位置加焊锡进行配重。
电路装配好以后,需要对硬件电路进行调试,方法是通过ISP下载线接口对主板供电,依次测试每个发光二极管是否正常发光,或者通过下载器向单片机烧入流水灯等简单程序,观察电路整体运行情况。
Tips
DS1302是美国DALLAS公司推出的一款高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器,具有主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
DALLAS半导体公司的数字化温度传感器DS18B20采用TO-92封装,体积小巧、接线方便,是世界上第一片支持“一线总线”接口的温度传感器。测量温度范围为-55~+125℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量,支持3~5.5V的电压范围,使系统设计更灵活、方便。DS18B20可以程序设定9~12位的分辨率,精度为±0.5℃。DS18B20的性能是新一代产品中最好的,性能价格比也非常出色,让我们可以构建适合自己的经济的测温系统。
程序设计
本万年历的单片机程序流程图如图7.7所示。
图7.7 程序流程图
由程序流程图可知,主程序主要是对外部中断的控制寄存器进行初始化设置。系统共用到两个外部中断源,外部中断0的中断请求信号来自红外光电传感器的红外接收二极管。每当电路板的红外接收二极管转到与之对应的红外发射二极管的位置时,就会向CPU发出中断请求信号,CPU响应中断,调用显示子函数,这样显示子函数总是在电路板转到同一个位置时被调用,保证显示的内容正常和稳定。外部中断1的中断请求信号来自一体化红外遥控接收头,当收到红外遥控信号时,就会转向中断服务程序,对红外遥控信号进行解码,并进行相应的按键操作。因为当接收到红外遥控信号时,对遥控编码中的“0”和“1”的识别完全是靠时间长短区分的,为保证红外信号解码及时和正确,外部中断1必须设置为高优先级。
显示程序在外部中断0的中断服务程序中。编写程序时需要注意的是,在对字符或汉字取模时要采用逐列式,正序和倒序都是可以的,在程序中都可以调整。显示程序其实就是依次取出字模表中的数据,按时间前后顺序均输出到同一列发光二极管上。比如要显示5个汉字,每个汉字16列,共扫描80列,可用如下程序。
unsigned int i;
for (i=0;i<80;i++)
{
P1=tab[2*i];
P2=tab[2*i+1];
delay(70);//延时时间的长短决定了字的宽度
}
P1=0xff;//扫描完所有列后要熄灭所有LED
P2=0xff;
如果想让显示的字符出现如图1所示的效果,上半部是正立的,下半部也是正立的,我们可以编写一个字节倒序的子函数,对取出的字模数据首先作倒序处理,然后,显示程序的i值是从80减小到的,参考程序如下。
unsigned int i;
for (i=80;i)0;i--)
{
P2=chg(tab[2*i]);//chg是对字模数据作倒序处理的子函数
P1=chg(tab[2*i+1]);
delay(70);//延时时间的长短决定了字的宽度
}
P1=0xff;//扫描完所有列后要熄灭所有LED
P2=0xff;
数字温度传感器DS18B20和时钟芯片DS1302的读写程序在这里不再详细列出,需要的读者可以到qq群657864614进行下载。但需要注意的是,温度传感器DS18B20的读写对时序要求非常严格,并且读写过程中一旦被打断,就会导致读写错误,所以DS18B20的读写程序也放在外部中断0的中断服务程序中,我们可以放在显示上半部分文字和显示下半部文字的程序之间,作为两段文字之间的空格。
所有硬件和软件完成之后,下面就可以坐下来慢慢欣赏自己的作品了。
■我的淘宝店铺:首页-数码达人小李-淘宝网,主打电脑周边产品,性价比高,发货快,服务好,品质过硬,总有一款适合你,感谢支持!
如何用单片机点亮一个LED灯(入门基础篇)
这几天主要为大家分享一些元件的基础知识以及在电路的应用,一开始没直接就写单片机之类的,对于单片机来说的,需要我们有一些基础,在应用中不但涉及到模拟电子技术也包括数字电子技术,对于从未接触这方面的人员来说,理解起来是有些难度的,为了能让大家都明白,我们还是先学习下它的基础应用。
今天我们使用的单片机芯片为STC89C52,他和俗称51单片机使用方法一样,就是内存大小不一样而已,在我国大部分人入门单片机是从51开始的,在国外用的最多的是Arduino,这也不是绝对的,考虑到大部分人群,我们今天就用51单片机来讲解。
一提到单片机,没有接触过的会产生一个疑问 ,什么是单片机?
STC89C52芯片
官方解释为:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
简单的理解他就是一个集成电路(内部有很多复杂电路),他能控制许多模块,单片机就像人的大脑,我们做什么是都是由大脑控制,因此单片机的发明使自动化智能化更近了一步。
如果问你如何让一个LED亮的话,可能你想到最直接的方法就是把LED的正极连在VCC,负极连在GND,如果电流太大,可以串联一个电阻起到限制电流的作用;在单片机中道理也是如此,通常我们把LED正极经过串联一个电阻直接连在电源正极,然后另一端接在单片机上。
由原理图可以看出,只要我们把P1^0这个端口接地就行了,因此我们所做的工作就是用单片机能够理解的语言把P1^0这一个端口接地,这就得需要编程,这里就不多介绍编程,回来专门写一篇文章关于编程的文章,这里把程序直接展示出来。
#include<reg52.h>
sbit LED=P1^0;
main()
{
while(1)
{
LED=0;
}
}
这个程序很简单,单片机会一直循环执行LED=0这个语句(在数电中可以简单理解为=0就是接电源负=1就是接电源正),意思就是让P1^0这个端口接地,这样就能使LED一直点亮。
用的贴片展示的效果
一开始学单片机的时候都会从点亮一个LED灯开始做起,就像我们学编程输出一个HELLO WORD一样,大家也不要小瞧LED灯,其实我们生活中很多地方都用到了,像流水灯,交通信号灯,广告牌,甚至连显示屏都会用到LED灯,如果你能够足够熟练操作LED,还是前途无量的。
单片机入手还是比较容易的,如果想熟练应用的话,还是有一定难度的,但是只要我们坚持下来,我相信你就能够熟练开发应用,我会每天发布一些这方面的文章,大家可以关注下,我祝大家能够取得成功!
相关问答
怎样利用 单片机 ,使用 LED 灯作通信指示灯,接收数据时以固定周期闪烁,无数据常亮?一般收发信号是有一个位来控制的,判断这个位,让led执行命令就行一般收发信号是有一个位来控制的,判断这个位,让led执行命令就行
单片机 的 显示 屏数字闪烁什么原因?单片机的显示屏数字闪烁可能是由以下原因导致的:1.单片机部件损坏:可能是由于某个部件损坏导致的问题,比如说脉冲发生器、电压比较器、电压调节电路等。2...
单片机 制作 led显示器 ,怎么让字滚动,思路是什么-ZOL问答可以参考一下#includereg52.h#defineucharunsignedchar#defineuintunsignedintsbityy=P2^0;sbitxx=P...
单片机 8个 LED 灯随机闪烁怎么做?方法:1:设定一个变量i,可以从0到3循环的变化2:检测一个经过消抖处理的按键,按一下,i+13:当i值为各个值时,执行相应的花样。流水灯参考程序#include...方...
单片机 如何控制一个 LED 灯闪烁频率不断加快?暂时想到两种解决方案:1.最简方案——利用延时函数:进入主函数后,初始化LED,设置一个延时初始值,然后进入while循环,里边只做四件事,打开LED,利用键盘返回...
LED显示屏 工作原理是什么? - YPmQHmEv 的回答 - 懂得LED显示屏的基本工作原理是动态扫描。显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫...
数字电压表的AD转换和 LED显示 怎么做?不用 单片机 的?万用表不用单片机,比较典型的方案是用三位半或四位半的AD做。三位半的常用7106或者7107,自带静态显示驱动电路,一个是用液晶显示,一个用LED显示。四位半的...
单片机 怎么定义 LED ?1.LED是一种电子元件,用于发光或指示。2.在单片机中,LED可以被定义为一种输出设备,通过控制其电流来实现发光或指示的功能。3.LED在单片机中的应用非常广泛...
51 单片机 怎样控制 LED 的光亮度?pwm,用定时器T1溢出做pwm周期,在每次T1开始计数时触发输出,软件边增1计数边检查溢出标志。如果软件计数满则清输出,否则直到溢出清输出、清软件计数满值。改变...
51 单片机 控制 led 交替闪烁原理?LED灯交替闪烁的原理就是用51单片机的一个引脚同时驱动两只LED,并在这个引脚上输出0.5赫兹以上的方波,就可以让发光管产生交替闪烁效果。具体电路如下:两只...