纷纭教育
您的当前位置:首页基于单片机的LED旋转时钟设计与制作

基于单片机的LED旋转时钟设计与制作

来源:纷纭教育


《旋转LED时钟设计》

题 目: 基于单片机的旋转LED时钟设计 学 院: 机电工程学院 专 业: 08电子科学与技术 学 号: 081292074 姓 名: 邱 文

2011 年 12 月 20 日

摘要:现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。近年来,随着电子产品的发展,人们对时钟的要求越来越高,而在对要求高之余,又要讲究有创意,新奇,所以在这个基础上设计一款既能满足人们的要求,又要有创意的时钟装置是很有必要的,贴片LED旋转屏时钟在可以计时的基础上,又能够满足人们对事物要有创意的需求。

我们组本次设计采用的是POV LED(POV即persistence of vision视觉暂留)技术,它指的是,借助人的视觉暂留效果,通过少量LED灯的机械扫描方式来显示各种字符或者图像。其原理很简单,就是靠电动机带动一排LED灯绕电机轴高速旋转,与此同时单片机控制各个LED灯在旋转平面相应的位置上点亮,构成一幅点阵画,虽然它们不是同时点亮的,但由于人的视觉暂留效果,会误以为每个点都是同时点亮的。其具体应用是电影的拍摄和放映。原因是由视神经的反应速度造成的,其时值是二十四分之一秒。是动画、电影等视觉媒体形成和传播的根据。

关键字:单片机、LED、时钟、视觉暂留、红外接收、扫描显示

1、设计任务与要求 1.1 设计任务

设计一个旋转LED指针显示时钟。 1.2 技术指标

能准确显示即时的时间,旋转盘面平稳,显示的数字稳定,时钟误差小。 2、方案比较与论证

单片机、LED等电路必须安装在高速旋转的电动机上面,无法采用电线进行供电,使系统供电变得极为麻烦,常见的方法有3种。

方案一:用无线输电的方法,无触点,长寿命;

方案二:用电动机电刷的方法,简单有效;请注意:这样寿命很短,必要时请自行在电路板上加焊一层耐磨导电层,如果电刷触点不够光洁以及接触压力大,几小时就可以将线路板上的铜皮磨穿。

方案三:直接用电池给主板供电,电池装在主板上随主板转动,成本高,寿命短,影响转速。

综合以上3种方案的优缺点,我们选择了用无线输电的方法,通过电磁感应原理将电能以无线的方式传输给高速旋转面板上的单片机,而DS1302芯片则用普通纽扣电池供电即可。

根据电磁感应原理,变化的电场产生磁场,变化的磁场产生电场。运用磁性材料就可以将交变磁场转为电能输送到负载,但是用电磁耦合的方式有很大的缺点,没有高磁导率的磁芯作为介质,磁力线会严重发散到空气中,导致转递效率下降,特别在两个线圈远离的时候,下降的非常厉害。所以只能近距离供电,不适合大功率,远距离的无线供电。

3、系统硬件设计 3.1 系统的总体设计 3.2 功能模块的设计

图一 旋转时钟总体结构框图

3.2.1旋转指针板的设计

指针板是旋转时钟的关键部分,负责显示功能,指针板上有一排超高亮的LED灯。它们就是显示部件了,亮点所在。为了制作方便,我们把单片机、时钟芯片、发光二极管、一体化红外接收头等器件焊接在一块指针型的电路板上,这样可以使旋转的电路成为一个的系统,只需要外部送电进来就可以正常运作。电路板中心钻一个电机轴插孔,插孔为半圆并且半径与电机轴相等,电机轴插入其中带动指针板旋转。该电路板越轻越好,LED灯可用贴片式。LED灯数目根据不同用处可选多选少,我们设计的时钟需要能显示“12、3、6、9”这四个整点数字和秒针、分针、时针,这样我们用6支LED灯显示数字,18支用来显示秒、分、时三针,另外再加一支内框一支外框灯,总共25支LED灯,也足够用来显示汉字和英文。在这个项目中,一共采用了25支LED。也就是说每一列上可以分辨的显示点有25个点。当然,这只是视觉上的显示效果。但为了节省单片机I/O管脚,并不是每支LED灯都由一个I/O管脚控制的。通过分析,发现靠近内圈的那十几支LED,除了用做显示时钟指针外,并不适合用来显示字符。而在显示指针时,这部分LED的亮灭是同时发生的,这样就可以用一个I/O口来控制这组LED,让它们是同时亮或者同时灭。除了以上几点外,需要考虑的还有显示稳定问题:比如指针板旋转扫描一圈完成了数字“12”的显示,如果电机速度因为各种原因而不稳定,转下一圈所用的时间多于(或少于)上一圈的,那么数字“12”将会移到上一次显示位置的左侧(或右侧)。为了解决这个问题,在指针板上加装一个红外接收管,如图二所示。当接收到与之配对的红外发光二极管(红外发光二极管安装在电机外壳上,并与接收管对齐)发出的红外线后,就会反向导通,接到单片机外部中断,将会触发外部中断。指针板每旋转一周,就会产生这样一个中断信号,这个信号被称为“过零信号”。有了这个信号,单片机就可以在指针板旋转过程中实时检测计算指针板的角度位置,并根据指针板所处的不同位置,点亮相应的LED,这样每转一圈就能消除一圈的误差,使得显示内容保持稳定。

图二 用于同步的红外对管

3.2.2 时钟芯片DS1302

大多数的单片机没有实时时钟部件,一旦系统掉电时钟就不能运行,下次再运行,时间就不准确了。即便使用备用电池,但要维持单片机系统的较大功耗也是坚持不了多久的。而我所做的旋转时钟用到的单片机主要是来准确显示时间的,因此实时时钟部件必不可少,这里我用了MAXIM公司的DS1302时钟芯片作为实时时钟部件,保证时间的长久准确性。

DS1302 有着很强的功能。包括时钟/日历寄存器和31 字节(8位)的数据暂存寄存器,数据通信仅通过一条串行输入输出口。实时时钟/日历提供包括秒、分、时、日期、月份和年份信息。闰年可自行调整,可选择AM/PM的12 小时制或24小时制。只通过三根线进行数据的控制和传递:CE(输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。);I/O(三线接口时的双向数据线);SCLK(串行时钟输入)。通过备用电源可以让芯片在小于1MW的功率下运作。对时钟寄存器初始化可以设定当前时间,控制芯片的运行,时间是用BCD码保存的,RAM可以用来存取用户数据,在用了备用电池后RAM内的数据在系统掉电时能够保持不丢失。芯片采用了简单的I2C 三线通信方式,便于节省芯片资源和与之接口的MCU的引脚。芯片有着2.0~5.5V的宽供电电压范围,在5V供电时其接口与TTL电平兼容。并且有着很低的功耗,在2.0V供电时仅耗300nA 的电流。引脚X1 和X2 连接32.768kHz 晶体,与内部振荡器组成时钟。晶体的精度直接影响着芯片时间的准确与否。DS1302有两个电源引脚VCC1和VCC2,分别连接备用电池和电源VCC。VCC2与主电源连接,VCC1接备用电池。当VCC2低于VCC1时,芯片由VCC1供电;当VCC2-VCC1≥0.2V时,备用电池为芯片供电。在VCC2供电时芯片能够对接在VCC1的备用电池充电,并且是否充电和充电电流都可以由芯片内地址为08H的时钟寄存 器进行控制。DS1302与单片机的硬件接线图如图

三所示。

图三 DS1302硬件接线图

在进行任何数据传输时,CE必须被制高电平(虽然CE被置为高电平,但内部时钟还是在晶振作用下不停地计时的),在每个SCLK上升沿时读入数据,下降沿时写出数据。每个字节的传输都是由控制字节(如表1所示)指定的,控制字节的最高位Bit7必须是“1”,否则读写将会被禁止。bit6 为“0”则指定对时钟/日历寄存器进行读写操作,为“1”则对RAM区的数据进行读写操作,bit1-bit5 指定相关寄存器进行输入输出操作,最低位bit0 指定是输入还是

输出,为“0”则为写,相反则为读,输入输出根据脉冲的上升沿和下降沿串行进行。

7 6 5 4 3 2 1 0 1 RAM/CK 用来表示相关寄存器的地址 RD/WR 表1 DS1302控制字节

控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据读写时序如图四所示。

图四 DS1302数据读写时序

通过8个脉冲便可读取一个字节,从而实现串行输入与输出。最初通过8个时钟周期载入控制字节到移位寄存器。如果控制指令选择的是单字节模式,连续的8个时钟脉冲可以进行8位数据的读写操作。8个脉冲便可读写一个字节。载入控制字节后就可以对时钟/日历寄存器进行相应操作,时钟/日历寄存器如下表所示。 读寄存器 81h 83h 写寄存器 80h 82h BITBIT7 6 CH 12 85h 84h 0 BIT5 BIT4 BIT3 BIT2-BIT0 0-15秒 0-15分 范围 00-59 00-59 1-12/ 0-23 1-31 1-12 1-7 16-59秒 16-59分 20-23 AM/P24 87h h 8Bh 86h 88h 8Ah 0 0 0 0 0 0 M 0 0 0 15-19时 16-31日 10月 0 0 0-15时 0-15日 月 1-7周 8Dh 8Ch 0 15-99年 0-15年 00-99 8Fh 8Eh WP 0 — 秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该位置1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式下,位5为1时,表示PM。在24小时模式时,位5是第二个10小时位(20-23时)。控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。

3.2.3电源基板的硬件设计

电源基板主要负责为电机提供稳定的直流电,并通过无线供电技术给指针板送电,是能源中心,如图五所示。虽然结构简单,但也是必不可少的一个环节,必须要保证电源稳定可靠。

图五 电源基板硬件

4、系统软件设计

4.1 程序总体流程图见右图所示。

4.2 各个功能模块流程图 4.2.1单片机读写DS1302程序设计

图 七 读写单字节程序流程图

4.2.2单片机对红外遥控代码的译码程序设计 5.硬件调试

发光二极管的调试。焊接好25支LED灯及电阻后,给板上电,分别使每个LED的阴极接地。发现25支LED灯都能正常点亮和熄灭。

红外对管的调试。给发射管接限流电阻并上电后,去对准焊在板子上的红外接收管,用电压表测试其阴极,为低电平;移开发射管后为高电平。红外对管工作正常。

红外遥控器的调试。调试时使用USB-ISP线一步步监控单片机接收到的红外信号是否符合设计要求。

电源驱动调试。电刷制作完成后,将LED灯都接地,并给电机和单片机都上电。指针板开始旋转,并且LED灯都能点亮,供电成功。

电机转速调试。调试时可试着从低到高给电机供电,使其速度慢慢提高,同时观察整个系统是不是稳定地旋转,如果速度很低就晃动得厉害就需要考虑平衡问题,哪边轻可以在哪边加配重。

图八遥控代码识别流程图

6.2软件调试

基本上排除了应用系统的硬件故障后,就可以进入软件的综合调试阶段,这个阶段的主要任务是排除软件错误,也解决硬件遗留的问题。本系统程序是用汇编语言编写的,主要分为三大块:LED扫描显示程序、单片机读写DS1302程序、单片机对红外遥控代码的译码程序。软件调试可以一个模块一个模块地进行。

在进行软件调试时要充分利用调试软件中单步、断点、设置观察项等调试手段,主要针对程序跳转错误、程序错误、动态错误、输入输出错误和加电复位电路错误等方面着重调试。 6、 结 论

通过这段时间的设计,终于完成了基于单片机的贴片LED旋转屏指针时钟的设计,虽然我们在做的时候遇到一些困难,无线供电的问题我们查了很久,但经过一翻很大的努力也完全达到设计要求的,从心底里说,还是挺高兴的,毕竟这次设计所要求的东西都做了出来.

在本次设计的过程中,我们发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我们长进了很多,单片机的设计重点就在于软件程序的设计,需要有很巧妙的编程方法,在编程时,由于粗心大意马虎,有些语句看似没问题,可就是不出效果,经仔细揣摩修改后,程序才正常运行。学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高。

从这次的设计中,我们真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,理论指导实践,在实践中对理论知识加以理解。还要有思考能力和不耻下问的精神,个人能力固然重要,集体的力量更是伟大的。

设计的这个基于单片机的贴片LED旋转屏数字钟功能还不是很全,以后可以考虑改进一下,使它的功能更加完善,强大。

[参考文献]

[1]吴锤红.MCS-51微机原理与接口技术[M].厦门大学出版社,2009. [2] 匿名.旋转时钟[J].电子制作,2008(6):47-49.

[3] 胡建平,黎孟雄.动画原理及其在C语言中的应用[J].连云港师范高等专学 校学报,2003(2):72-74.

[4 孙雪梅,范久臣.实时时钟芯片在单片机系统中的应用[J].沈阳教育学院学报,2005(7):132-134

[5] 李伟,闫君杰.红外遥控器系统的设计研究[J]河南机电高等专科学校学报,2009(17):11-13.

[6] 朱斌,谭勇.基于红外遥控的智能时钟设计与实现[J].机电产品开发与创新.2008(1)

[7] 杨欣,王玉凤等主编.51单片机应用从零开始[M].北京清华大学出版社,2008.

[8] 李朝青.单片机原理及接口技术[M].北京航空航天大学出版社,1998.

附录 总电路原理图

因篇幅问题不能全部显示,请点此查看更多更全内容