《毕业设计(论文)旋转时钟的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)旋转时钟的设计.doc(31页珍藏版)》请在三一办公上搜索。
1、旋转时钟的设计摘要POV LED(POV即persistence of vision视觉暂留),它指的是,借助人的视觉暂留效果,通过少量LED灯的机械扫描方式来显示各种字符或者图像。其原理很简单,就是靠电动机带动一排LED灯绕电机轴高速旋转,与此同时单片机控制各个LED灯在旋转平面相应的位置上点亮,构成一幅点阵画,虽然它们不是同时点亮的,但由于人的视觉暂留效果,会误以为每个点都是同时点亮的。这就是我这篇论文研究的对象。研究的目的第一是为了巩固大学四年所学的关于模数电及单片机的知识,并加深对它们的印象;另外LED旋转显示器并没有被人们广泛认知,作为电子爱好者就应该把新鲜有趣的电子作品发扬光大。论
2、文中我详细地叙述了扫描显示的原理,介绍了各种扫描显示的电子作品。通过对这些类似作品的比较,再加入我自己的想法和创意,确立了我所要制作的旋转时钟的方案。接着具体说明了制作旋转时钟所需要的硬件设备的功能与特性,主要包括单片机STC89C52、时钟芯片DS1302以及红外遥控芯片TC9012。之后进行软件设计,画出各程序的流程图,并对重要程序代码作了解释。最后通过软硬件调试得出结论,证明了我所设计的旋转时钟方案是可行的。希望通过我的写作能让更多人了解并喜欢POV LED。关键词:视觉暂留;旋转时钟;扫描显示AbstractPOV LED (POV is short for persistence o
3、f vision), it refers to that with the help of the effect of human POV, a few of LEDs can display the characters or images by the method of mechanical scanning. Its principle is very simple:a row of LEDs rotate around a motors axis at high speed, while the MCU controls each one of the LEDs to lighten
4、 in the corresponding position of the rotating plane, forming a lattice picture, although not all the LEDs are lightening at the same time, because of the effect of POV, we will mistake all the LEDs for lightening at the same time. This is my object of this thesis. The first purpose of my research i
5、s to consolidate the knowledge we have learnt in college; secondly the rotating LED display has not been understood by many people, as a lover of electronic works should carry the fresh and interesting electronic works forward. In my thesis I had expounded the principle of the scanning display, and
6、introduced numbers of the similar electronic works. After comparing these productions, and adding my own thoughts and ideas, I had established the program of the rotating clock which I wanted to make. Then I specified the function and characteristics of the hardware which were needed for making the
7、rotating clock, including the STC89C52, the clock chip DS1302 as well as the infrared remote control chip TC9012. Then I designed the software, drew the scheme, and explained the important code. Finally, after debugging the software and the hardware, I had made the conclusion that my alternative of
8、rotating clock was feasible. I hope that more people will know and like POV LED after reading my thesis.Keywords:persistence of vision;rotating clock;scanning display目录前言1第1章 旋转时钟的原理及制作方案21.1 旋转时钟原理分析21.2 方案的确定3第2章 硬件设计52.1 指针板的硬件设计52.1.1 单片机端口分配52.1.2 指针板电源驱动方式62.1.3 时钟芯片DS130262.1.4 红外对管82.2 红外遥控设
9、备的硬件设计82.3 电源基板的硬件设计112.4 电机的选择122.5 电刷的制作122.6 元器件焊接时应注意的问题13第3章 软件设计143.1 LED扫描显示程序设计143.2 单片机读写DS1302程序设计163.3 单片机对红外遥控代码的译码程序设计18第4章 系统调试214.1 硬件调试214.2 软件调试21结论22致谢23参考文献24附录1 旋转时钟电路原理图25附录2 旋转时钟PCB图26附录3 旋转时钟程序代码27前言时下很流行一种用LED灯旋转扫描来显示各式各样画面的电子作品,即“POV LED”,它的核心部件还是单片机。用POV的原理来做显示屏,优势主要表现在:能以少
10、量LED灯实现传统方式下海量LED灯才能实现的显示屏。例如POV的16个LED可以轻松地显示16个汉字,而传统LED屏需要4096个LED。另外字样或图案的显示效果非常炫酷,可以脱离框架漂浮在半空中或者附在飞转的车轮上。目前国内外此类电子作品层出不穷,五花八门,各有其独特的创新与魅力。从空间角度来看可分为二维扫描显示和三维扫描显示:前者是一列LED灯以一端为圆心作360度旋转或者摆动成像;后者是一排或一面LED灯垂直旋转平面作空间旋转来显示字样或图案。旋转时钟是典型的二维扫描显示。另外在自行车车轮上设计安装这种电子作品更是一种时尚炫酷的潮流,不仅不需要电机,更可以实现不用电源来显示美丽鲜艳的图
11、案或者动画。试想一下,要是夜晚骑着这样的自行车,将会是一道多么美丽的风景,完全能为都市夜景锦上添花。另外还有摇摇棒,它不是360扫描而是摆动扫描,但原理都是一样的,通过人的手或者靠弹性机械结构来摇摆一排LED灯,就可以显示文字或者简单的图案,这种比较适合在演唱会上使用。国外的电子作品爱好者似乎更热衷于三维扫描显示,其实显示原理跟二维的一样,不过工程量比较大,体积也大了,机械结构更厚实。多数还是只用一排LED,通过电机的带动,使LED显示板垂直于旋转平面飞速旋转,形成一个虚拟的圆柱形空间,在圆柱的侧面就能显示各种图案、文字或者是时间。有些爱好者将一排LED灯做成弧形,旋转起来就成了球形,自然制作
12、地球仪最合适了。另外还有使用多排不同颜色的LED灯制作的显示器,显示的画面不仅细密而且五彩缤纷,当然工程量比较大,适于厂家去批量生产。我的毕业设计就是制作出一个类似这样的电子作品旋转时钟,当它工作时,电机带动一排高亮LED绕电机轴旋转,LED灯在单片机控制下进行一定规则的显示,从而形成时钟的时针、分针和时间刻度,并按每分每小时走动,模拟出一个炫彩的时钟。接下来我就详细叙述它的原理及制作过程。第1章 旋转时钟的原理及制作方案1.1 旋转时钟原理分析肯定有人会疑惑,就用图1.1(a)中这么一列发光二极管就能显示出一幅如图1.1(b)这么漂亮的时钟画面吗?其实原理很简单,就是利用了人眼的视觉暂留的错
13、觉。人的视觉有一种惰性,当看一幅画的时候,这幅画的信息就保存在眼睛里了,即使这幅画突然消失,但保存在眼睛里的信息还将保留一会儿(大约十分之一秒),大脑的感觉就好像这幅画还存在似的,只要在1秒钟内这幅画能间断重复地显示十次以上,即使它在闪烁,但人会觉得这幅画是在一直稳定地显示着,这就是视觉暂留。(a)静止状态下的旋转时钟 (b)工作中的旋转时钟图 1.1 旋转时钟实物图回到旋转时钟上,它也是利用了视觉暂留的原理。如图1.2(a)所示,最内侧的一个发光二极管和最外侧的一个发光二极管在点亮并绕电机轴高速旋转后就形成了如图1.2(b)所示的内框和外框。紧挨着外框的那个LED灯用来显示时间刻度,如图1.
14、2(b)所示。假设12点那个刻度为0,那么每个小时时针之间的角度为36012=30,于是当整一列发光二极管每旋转30,该LED灯就点亮一个瞬间以呈现出时间刻度。如果在小于0.1秒内这列LED灯能旋转完一圈,人眼就会误认为先后产生的12个刻度是同一时间显示出来的。显示秒针、分针和时针的方法跟显示时间刻度的原理一样。我们假设用10支发光二极管来显示秒针,10支里面靠内部的9支用来显示分针,再靠内的7支作为时针的显示灯,如图1.2(a)所示。举个例子,若要显示3点零5秒,在时间刻度的显示基础上,控制整列发光二极管在0时点亮9支LED灯以显示分针在12点位置上;紧接着整列发光二极管又转过30即到了1点
15、的位置,此时点亮10支LED灯,用以显示秒针在5秒的位置上;当发光二极管再转过60时,再点亮5支来显示时针指在3点的位置上,如图1.2(c)所示。因为发光二极管在不断高速旋转,在1秒内已经重复点亮12点位置上的9支、1点位置上的10支和3点位置上的7支LED灯10次以上,所以人眼就会产生图1.2(c)所示的画面。时钟画面是由一列发光二极管绕圆心按顺时针方向逐列高速扫描过去,每到一列单片机控制相应的LED灯点亮或者熄灭,要在0.1秒内扫描完一圈,然后再重复执行这样的扫描,人的眼睛看上去就形成了一幅时钟的画面。转速越高,LED灯越多,分辨率就越高,看上去就越逼真。(a)静止时 (b)小时刻度的呈现
16、 (c)指针的呈现图 1.2 旋转时钟原理图图1.2中的时钟指针是不走的,比较方便实现,而现实中时钟的指针是会走的,是每秒都在变的,这就要求显示指针用的数据需要随着时间的推移而不断更新。单片机本身具有计时功能,设定好的时间一到(比如1秒),就刷新接有LED灯I/O接口的数据,这样每秒钟的画面都在变化,指针就仿佛在“走”了。各个时刻并不一定用点来显示,还可以用数字来显示,接下来分析下发光二极管是如何显示数字时间的。如果一列LED灯在0.1秒内转一圈,那么我们最终看到的效果是这一列LED在一圈内各个位置的图像的叠加。图1.3是用77的点阵来显示数字3,在77的格子里亮用1表示,熄灭则为0,所以数字
17、“3”从上至下、从左至右编码为0100010、1000001、1000001、1001001、1001001、1001001、0110110。如果我们用单片机控制这一列发光二极管在相邻的7个等分时刻内显示7个不同的编码值,旋转一周后(小于0.1s)又重复输出这些代码,就会稳定地显示一个数字“3”。同理还可以显示英文字符或者汉字,LED灯足够多,分辨率足够大。图 1.3 数字3点阵图1.2 方案的确定网上旋转时钟的资料比较多,款式也各有不同,但大致由底座、电机、指针板三大块组成。底座主要用来固定电机,是基础,必须要牢固;而电机是用来带动指针板高速旋转,是出力的“苦工”;指针板是核心部分,上面有单
18、片机、LED灯以及各种外围元器件,各种时钟画面就是靠指针板显示出来的。通过对资料的整理总结出以下几种方案:最简单就是用七八支LED灯来显示12个刻度点、分针和时针,显示、计时都靠单片机完成,没有掉电保护和调时功能,LED灯与单片机等各元件都由装在指针板上的电池供电工作。这种方案虽然很简单,制作起来也较方便,但是由于电池装在指针板上,电池又相对较重,在高速旋转时一定要装对重才能保持指针板平衡,这样对电机的功率要求就比较大,而且浪费电源。另外这种方案也没有掉电保护和调时功能,即使用电脑通过软件来调时间也很难调准,而且一旦掉电后就又得重新调,基本上是无法显示正确时间的,时钟最重要的就是时间准确,所以
19、这种方案没有实际意义,只能做摆设,毕业设计当然要做得有意义一点,因此我不采取这种方案。最复杂的方案是除了指针版外还在底座上加了块基板,板上有电源插孔,通过变压器送电进来,还有芯片,包括红外解码、按键检测、声控信号检测;指针板主要包括单片机、时钟芯片、数十支高亮LED灯、温度传感器和蜂鸣器等。可以通过遥控或者直接用语言对基板下达指令,选择旋转时钟开起或者关闭、显示的模式如时钟模式、温度模式或者汉字模式,最重要的是可以当场调时了。指针板上还有一个蜂鸣器,在执行按键等控制命令时鸣叫以及闹钟鸣叫功能和整点鸣叫报时功能。温度传感器负责采集温度,并可以显示出来。另外有了时钟芯片后旋转时钟就不怕掉电了,时钟
20、芯片有后备电源,会同步时间,下次开起后不用调就能显示正确的时间。更巧妙的是指针板的电是通过电机轴用电刷的方式提供的,就不需要经常换电池了,而其指针板也轻了很多,电机功率可以取小一点。我所设计的旋转时钟是介于最简单和最复杂方案之间的。系统的总体结构框图如图1.4所示,单片机负责数据的处理并控制LED的显示;红外接收模块负责接收和处理红外遥控器发出的红外遥控信号,因为旋转时钟在旋转显示时,不方便用按键调时,所以引入红外遥控技术,使得作品更加实用;时钟模块负责记录时间数据,从而节省了单片机的资源, 提高其工作效率,并采用时钟芯片,可在系统掉电后正常计时,不需重新设定时钟时间, 这使得时钟的使用更加便
21、捷。以上模块都集成在指针板上。电源模块则装在底座上,经变压器送电给电机,再经稳压管通过电刷给指针板上各模块供电。图 1.4 旋转时钟总体结构框图第2章 硬件设计2.1 指针板的硬件设计指针板是旋转时钟的关键部分,负责显示功能,指针板上有一排超高亮的LED灯。它们就是显示部件了,亮点所在。为了制作方便,我把单片机、时钟芯片、发光二极管、一体化红外接收头等器件焊接在一块指针型的电路板上,这样可以使旋转的电路成为一个独立的系统,只需要外部送电进来就可以正常运作。电路板中心钻一个电机轴插孔,插孔为半圆并且半径与电机轴相等,电机轴插入其中带动指针板旋转。该电路板越轻越好,LED灯可用贴片式。LED灯数目
22、根据不同用处可选多选少,我设计的时钟需要能显示“12、3、6、9”这四个整点数字和秒针、分针、时针,这样我用7支LED灯显示数字,21支用来显示秒、分、时三针,另外再加一支内框一支外框灯,总共30支LED灯,也足够用来显示汉字和英文。在这个项目中,一共采用了30支LED。也就是说每一列上可以分辨的显示点有30个点。当然,这只是视觉上的显示效果。但为了节省单片机I/O管脚,并不是每支LED灯都由一个I/O管脚控制的。通过分析,我发现靠近内圈的那十几支LED,除了用做显示时钟指针外,并不适合用来显示字符。而在显示指针时,这部分LED的亮灭是同时发生的,这样就可以用一个I/O口来控制这组LED,让它
23、们是同时亮或者同时灭。为了满足驱动电流,我加了一支三极管来驱动。除了以上几点外,需要考虑的还有显示稳定问题:比如指针板旋转扫描一圈完成了数字“12”的显示,如果电机速度因为各种原因而不稳定,转下一圈所用的时间多于(或少于)上一圈的,那么数字“12”将会移到上一次显示位置的左侧(或右侧)。为了解决这个问题,在指针板上加装一个红外接收管,如图2.1所示。当接收到与之配对的红外发光二极管(红外发光二极管安装在电机外壳上,并与接收管对齐)发出的红外线后,就会反向导通,接到单片机外部中断,将会触发外部中断。指针板每旋转一周,就会产生这样一个中断信号,这个信号被称为“过零信号”。有了这个信号,单片机就可以
24、在指针板旋转过程中实时检测计算指针板的角度位置,并根据指针板所处的不同位置,点亮相应的LED,这样每转一圈就能消除一圈的误差,使得显示内容保持稳定。接下来我介绍一下指针板的供电方式和所用到的各个芯片的资料。图 2.1 用于同步的红外对管2.1.1 单片机端口分配旋转时钟的核心部件单片机主要用于对红外遥控代码的译码,读写DS1302的时间数据以及控制LED显示熄灭。对单片机的程序存储量和控制能力要求并不高,选择STC89C52单片机绰绰有余。本设计充分运用89C52的各个接口:首先是28支LED灯,由于有13支LED灯只用来显示时针,所以它们是同时点亮或者熄灭的,可以接在同一个I/O接口上,取P
25、2.7口。P0.0-P0.7和P2.0-P2.7这16个引脚分别于16支LED灯连接,可以用来显示不同的字符;其次X1、X2引脚接12MHz晶振;P3.2口接一体化红外接收头,作为高优先级的外部中断;P3.3口接红外接收管,作为低优先级外部中断;P1.5-P1.7分别接DS1302的SLCK、I/O及CE引脚。2.1.2 指针板电源驱动方式根据我收集到的资料,整理出以下三种供电方式:一、电池供电。这是最简单的方法,直接在指针板上安装两到三节7号电池就行了。采用这种方式不用担心电压波动,也没有接触不良的问题,能够十分稳定地给指针板供电。但是电池很不耐用,经常要换,既不经济又不环保,最大问题是太重
26、,一般电机带不动,需要选择较大功率电机,成本较大。二、自感应发电。这种方法是将一根导线中间部分绕在电机内部的转子上,电机旋转时该导线切割磁场,两头产生感应电动势,经过整流后作为指针板上的电源。这种方式设计很巧妙,无机械磨损。可惜提供的电流有限,只能适合LED 较少的旋转时钟,当LED 数量较多时,需要更大的电流,这种方式就不能满足了。另外这种方式要对电机本身进行改造,也有一定的难度。并不是所有的电机都适合这种改造,而且这种改造可能会给电机带来损害。三、电刷传导供电。就是在指针板上焊接一个滑环,套在电机轴上,但要与电机轴绝缘,电刷扣在滑环上,并接直流电正极。负极接在电机轴上。这种方法既能提供较大
27、的电流,又不会给指针板增重。缺点是有机械摩擦,会产生磨损,因此要求滑环和电刷材料要耐磨。另外,还得有足够的弹性,并且要耐锈,否则会导致接触不良。当然也会产生机械阻力,因此要求电机功率要较大一点,还会产生机械噪音。经过再三权衡,我还是选择了用电刷供电的方法,因为这种方法并不难实现,电刷对电机产生的机械阻力应该小于装电池所要克服的惯性力。2.1.3 时钟芯片DS1302大多数的单片机没有实时时钟部件,一旦系统掉电时钟就不能运行,下次再运行,时间就不准确了。即便使用备用电池,但要维持单片机系统的较大功耗也是坚持不了多久的。而我所做的旋转时钟用到的单片机主要是来准确显示时间的,因此实时时钟部件必不可少
28、,这里我用了MAXIM公司的DS1302时钟芯片作为实时时钟部件,保证时间的长久准确性。DS1302 有着很强的功能。包括时钟/日历寄存器和31 字节(8位)的数据暂存寄存器,数据通信仅通过一条串行输入输出口。实时时钟/日历提供包括秒、分、时、日期、月份和年份信息。闰年可自行调整,可选择AM/PM的12 小时制或24小时制。只通过三根线进行数据的控制和传递:CE(输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。);I/O(三线接口时的双向数据线);SCLK(串行时钟输入)。通过备用电源可以让芯
29、片在小于1MW的功率下运作。对时钟寄存器初始化可以设定当前时间,控制芯片的运行,时间是用BCD码保存的,RAM可以用来存取用户数据,在用了备用电池后RAM内的数据在系统掉电时能够保持不丢失。芯片采用了简单的I2C 三线通信方式,便于节省芯片资源和与之接口的MCU的引脚。芯片有着2.05.5V的宽供电电压范围,在5V供电时其接口与TTL电平兼容。并且有着很低的功耗,在2.0V供电时仅耗300nA 的电流。引脚X1 和X2 连接32.768kHz 晶体,与内部振荡器组成时钟。晶体的精度直接影响着芯片时间的准确与否。DS1302有两个电源引脚VCC1和VCC2,分别连接备用电池和电源VCC。VCC2
30、与主电源连接,VCC1接备用电池。当VCC2低于VCC1时,芯片由VCC1供电;当VCC2-VCC10.2V时,备用电池为芯片供电。在VCC2供电时芯片能够对接在VCC1的备用电池充电,并且是否充电和充电电流都可以由芯片内地址为08H的时钟寄存器进行控制。DS1302与单片机的硬件接线图如图2.2所示。图 2.2 DS1302硬件接线图在进行任何数据传输时,CE必须被制高电平(虽然CE被置为高电平,但内部时钟还是在晶振作用下不停地计时的),在每个SCLK上升沿时读入数据,下降沿时写出数据。每个字节的传输都是由控制字节(如表2.1所示)指定的,控制字节的最高位Bit7必须是“1”,否则读写将会被
31、禁止。bit6 为“0”则指定对时钟/日历寄存器进行读写操作,为“1”则对RAM区的数据进行读写操作,bit1-bit5 指定相关寄存器进行输入输出操作,最低位bit0 指定是输入还是输出,为“0”则为写,相反则为读,输入输出根据脉冲的上升沿和下降沿串行进行。表 2.1 DS1302控制字节765432101RAM/用来表示相关寄存器的地址RD/控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。数据
32、读写时序如图2.3所示。图 2.3 DS1302数据读写时序通过8个脉冲便可读取一个字节,从而实现串行输入与输出。最初通过8个时钟周期载入控制字节到移位寄存器。如果控制指令选择的是单字节模式,连续的8个时钟脉冲可以进行8位数据的读写操作。8个脉冲便可读写一个字节。载入控制字节后就可以对时钟/日历寄存器进行相应操作,时钟/日历寄存器如表2.2所示。表 2.2 时钟/日历寄存器读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2-BIT0范围81h80hCH16-59秒0-15秒00-5983h82h16-59分0-15分00-5985h84h12020-2315-19时0-15时1-
33、12/0-23/PM87h86h00016-31日0-15日1-3189h88h00010月月1-128Bh8Ah000001-7周1-78Dh8Ch015-99年0-15年00-998Fh8EhWP0秒寄存器(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)的位
34、7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。2.1.4 红外对管红外对管是一种常用的光电器件。所谓对管就是由一支红外线发射管和红外线接收管组成。根据发射与接收的红外线频率不同,红外对管有不同的型号。当发射管与接收管的发射与接收窗靠近对齐时,即红外线照射到接收管上,则接收管导通,其中导通特性与普通二极管相似,这样就组成了一个光电触发系统。一般来说,红外对管的有效距离为数米,如果想扩大感应距离可加装透镜。当然我用在旋转时钟上就不用考虑距离问题,两管的距离完全可以在几厘米之内。2.2 红外遥控设备的硬件
35、设计红外遥控器使用方便,功能多。目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。它由红外发射电路与红外接收电路组成。发射电路部分有两种设计方案:一、用专用的遥控芯片来自制一个;二、如果能将现成的家电遥控器上的按键解码出来,用作单片机系统的输入,则解决了常规矩阵键盘线路板过大、布线复杂、占用IO口过多的弊病。我所要设计的遥控器只是用来给旋转时钟调时,所以只需四个键,比较简单,就用TC9012这块比较经典的遥控芯片自制一个遥控器。TC9012是一块用于东芝系列红外遥控系统中的专用发射集成电路,采用CMOS工艺制造。它可外接32个按键,提供8种用户编码,
36、另外还具有3种双重按键功能。TC9012的管脚设置和外围应用线路都进行了高度优化,以配合PCB的布图和低成本的要求。结构框图如图2.4所示。图 2.4 TC9012结构框图KI0KI4这4位输入脚用于键盘扫描输入(平时为低电平,内置下拉电阻);KO0KO7是8位输出脚,用于键盘扫描输出;REM为带载波的遥控信号输出;LMP用于指示灯输出;SEL用于用户编码选择跳线(平时为高电平,内置下拉电阻)。TC9012的一帧数据中含有32位码,包含两次8位用户码,一次8位数据码和8位数据码反码及最后位的同步位。引导码由4.5ms的载波和4.5ms的载波关断波形所构成,以作为用户码、数据码以及他们的反码的先
37、导。同步位(SY)是标志最后一位编码是“0”或“1”的标识位,它只有0.56ms的有载波信号构成。发射码的格式如下图所示:图 2.5 TC9012 的发射码的格式用户码一共有8种,是利用“SEL”脚与“KO0KO7”中的任一脚相连接来进行选择的,可参考图2.6。其中S0,S1,S2由SEL与KO0KO7的连接来确定;S3固定为“1”;S4,S5,S6,S7固定为“0”。比如当KO6和SEL连接时,客户码就为00001110,转换为16进制即0EH。图 2.6 TC9012的用户码设置接下来讲解一下遥控器是如何输出不同的“0”、“1”代码的。当按红外遥控器上的按键后,就会有信号给遥控器上的TC9
38、012芯片,TC9012遥控器设置4个按键输入端KI0KI3和8个按键输出端KO0KO7,由此设置了一个4*8的键盘,共32键。键数据的编码方式如下:0,0,0,KO2KO0,KI1,KI0。这样芯片就能识别出按下的是哪个按键,然后编码调制成相应的二进制码,再通过红外二极管发射出去。TC9012芯片是以脉冲位置调制方式(PPM)来调制编码的,如图2.7所示。“1”和“0”的区分取决于脉冲之间的时间,例如以38KHz的频率发送0.56ms时间的脉冲集,再停发0.56ms,表示“0”;发送0.56ms,再停发1.68ms则表示“1”。再利用此载波信号去控制红外信号的发送,这样,这些代码就可以通过红
39、外光被传送出去,经远处的红外接收头,经单片机译码并执行相应程序,去控制指定对象。按键一直按着,将一帧码发完后发固定的重复码;当键松开时,等该帧码发完后进入低功耗模式。用户码和键数据码的发送均是低位在前,高位在后的。图 2.7 TC9012输出波形下图为参考的遥控发射电路图,由于只用于调时,所以省去了其他各按键,只剩下K1K4四个按键。图 2.8 红外遥控发射原理图制作该硬件部分要注意以下几点1、将电源滤波电容尽可能靠近IC;电源滤波电容只需要使用104的瓷片电容即可;2、尽可能避免电源和地线走线过长或过细;3、尽可能把晶振电路放置在离芯片较近的位置;4、建议在三极管的发射极使用2欧姆的限流电阻
40、;5、建议晶振旁边的两个谐振电容使用150pf以上,这样可以防止高频谐波。6、图中SEL脚和KO7相连,所以客户码选择为:0E0E。再看接收电路,接收部分直接采用了红外一体化接收头HS0038,如图2.9所示。主要功能是接收红外遥控器的代码信号,经放大、检波、整形, 得到TTL 电平的代码信号, 再送给单片机。它被焊接在指针板上,与指针板其他元器件构成一个系统,而输出管脚与单片机P3.2外部中断引脚相连。其中心频率为38.0KHz, 独立的PIN 二极管同前置放大器集成在同一封装上,封装由环氧树脂做成,可以作为一个特殊的红外滤光器, 能防止自然光的干扰。它的特性有: 光电检测和前置放大器集成在
41、同一封装内;内带PCM频率滤波器;提高了对电场干扰的防护性;输出电平兼容TTL与CMOS;对于自然光有较强的抗干扰性;输出表现稳定, 低功耗;持续数据传输率可达800bit/s。 (a)HS0038封装图 (b)内部结构框图图 2.9 一体化红外接收头由于HS0038输出的信号与接收到的红外编码信号是相反的,当接收到红外高电平信号时,HS0038的输出引脚将由高变为低。只要将该输出引脚与单片机外部中断口相连,就可在接收到红外信号后向单片机发出中断请求,之后再通过该中断口向单片机写入红外信号。2.3 电源基板的硬件设计电源基板主要负责为电机提供稳定的直流电,并通过电刷给指针板送电,是能源中心,如
42、图2.10所示。虽然结构简单,但也是必不可少的一个环节,必须要保证电源稳定可靠。直接由+12V的变压器通过插孔给电路板送电,经电容及电位器后接直流电机。再经7805降压稳压成+5V接到电刷上输出电压。图 2.10 电源基板硬件图电位器RP用于调节电机的转数,有3个引脚A、B、P,其中A、B两端(靠外侧的两根引脚)的阻值固定并且是最大的,等于电位器的标称值。中间引脚P与两端引脚之间的电阻值随着电位器旋钮的调节而改变。所以焊接时将两端的任意一脚与中间的P脚焊接在一起。另外要注意电位器功率的选取。根据电机工作电流的不同,电位器的功率一般取2W以上。为了给指针板供上稳定的+5V电压,采用了L7805稳
43、压管。它有四种封装结构,如图2.11所示。L7805能输出电压5V、电流1.5A大小的直流电,有内部电流限流,热停机和安全区等保护,使其基本上坚不可摧。如果能提供足够的散热条件,就可以输出超过1A的电流。虽然L7800系列稳压管主要设计成固定电压的稳压器,但这些器件也可以通过外部元件的配合获取可调的电压和电流。图 2.11 稳压管L7800系列封装图2.4 电机的选择电机主要分交流电机、直流电机、伺服电机、步进电机等几种。直流电机的控制简单,适合在小功率情况下应用。旋转时钟对电机功率要求不高,所以选择直流电机来带动电路板旋转。电机实样如图2.12所示。由视觉暂留原理知电机旋转一圈的时间必须小于
44、0.1秒,所以电机的转速要大于600rpm(rpm是电机转速单位,1rpm=1分钟转动一圈),可选用转速约为1000rpm的电机,如果买不到1000rpm的电机也可以选择更高转速的电机,可以通过降低电机工作电压来使其减速,最简单的办法就是使用大功率电位器。如果直流电机找不到合适的,也可以考虑使用计算机的散热风扇,这个散热风扇最大优点就是运行时噪声低。图 2.12 电机实物图除了电机外还需要一个支架将电机固定起来。由于电机在带动指针板转动过程中速度比较快,指针板又有一定重量,而且配重也不一定做得很好,转起来更是会是电机晃动,所以必须要稳重的支架来牢牢固定住电机。2.5 电刷的制作首先找一截小金属
45、管,充当滑环用,要求表面光滑耐磨,内径略大于电机轴的直径,长度要比电机轴稍短一点。然后将此滑环固定在指针板背面。接着在电机轴上包裹几圈胶布(要露出轴的顶部),直到半径与滑环内径差不多大小,然后用打火机均匀加热烘烤胶布,令其收缩,牢牢包裹住电机轴。将裹有胶布的电机轴插入滑环内(滑环一定要与电机外壳绝缘),并且紧密接触。再找一根弹性很好又耐磨的金属导体来做电刷,并在底座上钻上两根螺钉,导体中间部分压在滑环上,两端则扣在两根螺钉下面,导体的弹力使得它与滑环紧密接触。最后把指针板安装在电机轴上,电机轴与指针板地线之间用焊锡焊死。在焊接时,注意调节指针板的重心,并确保滑环(电源线)与电机轴(地线)之间不
46、要搭焊短路。把电机外壳接到电源负端(注:电机外壳与电机轴是短路导电的),电刷接到电源正端。指针板就可以通电工作了。这时如果让电机转动起来,电刷与滑环作相对摩擦运动,仍旧可以源源不断地把电源共给指针板。完整的电刷如图2.13所示。图 2.13 电刷侧面效果2.6 元器件焊接时应注意的问题要使旋转时钟能按原理正常运作,除了硬件设计要合理外,各元器件的焊接环节也要足够重视,须要注意以下一些问题:一、电烙铁长期使用后,头部会生成一层氧化物,造成吃锡困难,要先用工具除去氧化物,经加热后插入松香中即可继续使用。新买回来的烙铁,必须先上锡后才能使用。二、在制作过程中,宜选用低熔点的焊锡丝和没有腐蚀性的助焊剂
47、,如松香。千万不能采用工业焊锡或酸性焊油。最好采用含有松香的焊锡丝,使用起来非常方便。三、电子元件在空气中由于氧化的作用,引脚上会附有一层氧化膜和一些污垢,焊前可用小刀刮掉氧化膜,并立刻涂上一层焊锡,然后再进行焊接。四、焊接时应使烙铁温度高于焊锡熔点,但不能过高,以烙铁头碰到松香刚冒烟为宜;焊接时间太短,焊点温度过低,焊点粗糙,易造成虚焊。反之,焊接时间过长,焊点焊锡容易流淌,并且可能造成电子元件和集成电路的损坏。五、焊接点上焊锡不能太少,太少了焊接不牢,而太多易造成外观一大堆而内部未接通。焊锡应刚好将焊接点上元件引脚全部浸没,轮廓隐约可见即可。六、注意烙铁和焊接点的位置。用烙铁头上的搪锡面去
48、接触焊接点,这样传热焊接面积大,焊接速度快。七、焊接结束后,必须检查有无虚焊、漏焊以及由于焊锡流淌而造成的元件短路。虚焊较难发现,可用镊子夹住元件引脚轻轻拉动,如发现摇摆应补焊。第3章 软件设计旋转时钟软件设计主要是针对单片机的程序设计,可分为LED扫描显示程序设计、单片机读写DS1302时钟芯片程序设计、单片机对红外遥控代码的译码程序设计三大块。程序设计的过程大致可以分为以下几个步骤:(1) 编制说明要解决问题的程序框图。(2) 确定数据结构、算法、工作单元、变量设定。(3) 根据所用计算机的指令系统,按照程序框图用汇编语言或C语言编制出源程序。(4) 将编制的程序在计算机上调试,直至实现预定的功能。