datasheet

基于单片机旋转时钟的设计

2016-04-13来源: 21ic关键字:单片机  旋转时钟  STC12C5A60S2
1 前言

目前,时钟的种类是越来越多样,功能是越来越丰富了,但大多时钟还是传统上的时钟,即固定的表盘与指针,其形式与功能都比较单一,故难以吸引人。而一款旋转时钟不仅在创意上摆脱了传统时钟的设计而且也能迎合人们猎奇的心理,并且功能也可以多样化,不仅可以显示时间、日期,甚至连文字都能够显示。文章基于单片机设计了一款跟传统机械时钟一样具有秒针、分针、时针和表盘刻度的旋转时钟,并且具有准确显示即时时间和校准时间功能,且均可由红外遥控器方便完成。

2 总体设计思想及方案

文章拟采用16个发光二极管的亮灭来模拟时钟表盘,其旋转用一个直流电机转动来实现;时钟的1s源信号用DS1302时钟芯片产生;为了保证时钟盘面显示的稳定采用红外对管来实现;为了对旋转起来的电路板供电方便,采用无线供电;为了能够方便地调节旋转时钟的时间,拟采用红外遥控。故该系统的硬件模块主要由以下几部分组成:显示模块、无线供电模块、单片机最小系统模块、红外遥控模块、时钟模块、校准模块、电机驱动模块。其系统原理框图如图2.1所示。其中无线供电模块利用线圈耦合将能量传输给单片机系统,单片机系统就能正常工作了。电机带动单片机系统快速旋转;然后单片机再快速读取时钟模块的时间,并将这些时间信息送给显示模块;显示模块就能根据这些时间信息控制相应的发光二极管亮灭,再配合电机的旋转就能实现时钟的显示了。由于整个时钟是高速旋转的,所以对时间、位置等参数的设置采用红外遥控模块来实现比较方便。时钟模块就是为整个系统提供准确的时间,而校准模块是用来对时钟显示的起点进行检测。

3 单元模块电路分析与设计

3.1 单片机最小系统模块分析与设计

单片机最小系统模块是由单片机芯片(STC12C5A60S2)、时钟晶振电路和复位电路组成。其中复位电路能够实现按键复位和上电即复位的两个功能。时钟晶振电路使用12MHz的晶振,给单片机提供时钟信号。STC12C5A60S2芯片的31脚(/EA端)接高电平,使其从内部的程序存储器读取指令,为了防止31脚意外输出低电平而将单片机烧坏,需要在31脚外接一个10K的电阻。

3.2 无线供电模块分析与设计

无线供电模块由发送模块和接收模块组成。其中无线发送模块主要由三极管B772和9013以及初级线圈等组成。其中B772工作时发热会很厉害,所以要外加散热片。电路主要工作原理是根据法拉第电磁感应定律,先将直流电变成交流电,然后通过初级线圈将能量发送出去,次级线圈最终感应得电,在经过相应的电路从而完成对单片机供电。其中,直流电转交流电部分采用的是一个自激震荡电路。

无线接收模块原理主要如下:首先次级线圈用来接收发送模块的初级线圈发送出来的能量,因为发送模块采用的是直流变交流将能量传送出去,所以次级线圈最总感应到的是交流电,而单片机的供电要求是直流电,所以必须经过整流才能变成直流电,最后再经7805稳压芯片,用来输出稳定的5V电源,用来给单片机供电。

3.3 电机驱动模块分析与设计

电机驱动模块使用的电机是RF370电机,当其工作电压选在5V时它的转速在2500~3100转/分,电流也只需20mA,非常省电,并且转速能满足设计要求,旋转时噪音也小,所以很适合用来完成设计。电机是通过一个2脚插针连接到无线供电发送模块中的,此时5V电源给电机供电。由于电机工作的时候会储存能量,当停止工作的时候就会释放掉,为了避免电机释放的电流可能会烧坏其它电路,故需在电机两端并联一个限流二极管1N4148起保护电路作用。

3.4 时钟模块分析与设计

时钟模块就由时钟芯片DS1302与其外围硬件电路组成。DS1302芯片在2脚和3脚之间接一个32.768KHz的晶振,DS1302芯片内部经过分频就能得到1Hz的标准信号,为时钟提供精准的时间信号。8脚的Vcc1外接3V纽扣电池,当模块断电后,它能让DS1302继续工作来保存时间数据;1 脚的VCC2也是要外接电源5V,当双电源时VCC2作为主电源给模块供电;5脚(/RST)是复位/片选端,用来控制DS1302与外通信,接单片机 P3.5引脚;7脚(SCLK)是串行时钟输入端,为数据传输提供时钟,该脚与单片机的P3.7脚连接;6脚(I/ O)是串行数据输入/输出端(双向),为通信时数据传输引脚,与单片机的P3.6脚连接。

3.5 校准模块分析与设计

由于旋转时钟要让LED旋转起来要有圆形的效果,那么就要借助传感器或红外对管来帮助判断出起点位置,也能让时钟的盘面显示固定。本设计采用的是红外对管,其中红外发射管是焊接在无线供电发送模块中的,红外接收管与单片机的P3.3引脚相连,当接收管收到发射管信号时,电阻值会变得很小,此时P3.3处输出低电平;当没接收到信号时,接收管的阻值就变的很大,此时P3.3处就输出高电平,即产生了一个下降沿。P3.3脚是单片机外部中断1的输入引脚,如果将该中断设置为下降沿触发,则来了下降沿就立马触发中断,让单片机转去执行起点检测程序,以实现时钟能够正常准确显示。

3.6 显示模块分析与设计

显示模块就利用一排LED灯来实现显示时钟效果。在该设计中,借助16个LED灯与单片机的P1、P0引脚相连来完成,其中D1~D4是绿色LED 灯,D5~D16是红色LED灯。D1用来显示时钟圆盘边框,D2~D4用来显示表盘刻度,如果时间是12点、3点、6点、9点时就亮3个灯,如果是其他时刻时就亮两个灯。D5~D16是用来实现表盘指针的显示,让显示效果跟实际的时钟指针一样。由于时钟中,秒针最长,所以显示秒针时D5~D16要全部点亮;分针的长度居中,所以显示时就D8~D16要全部点亮;时针的长度最短,所以显示时就只点亮D11~D16。

3.7 红外遥控模块分析与设计

红外遥控模块由遥控器和接收模块组成,使用的遥控器采用的是NEC协议,许多家电的红外遥控就是采用这种协议。接收模块用到了红外一体化接收头 VS1838B,其中它的3引脚接电源5V,2脚接地,1脚把接收头解调后的信号传送到单片机的外部中断0引脚(即P3.2),利用中断未让单片机实现红外解码。

4 软件程序分析与设计

程序设计的主要思想是:先用一个定时器产生固定的时间中断,中断执行的主要任务是让一个变量(就取名为Count)自加1。这个变量Count很重要的,因为就是根据它的值来决定显示的。比如电机每旋转一圈,Count就从0加到180,一个表盘有60个刻度(即因秒和分都是60),那Count每加 15,单片机就要驱动LED显示相应的时刻点,一直加到180,那12个时刻度点就显示出来了。所以Count的最大值最好与60成倍数关系。

解决时钟指针的显示就只要读取DS1302的时间然后分别判断Count是否到达秒、分、时相应的Count值,如果到达了就分别显示出秒针、分针、时针。比如读取DS1302的秒值等于20,由于旋转一圈Count最大180,而一圈共60秒,因180/60=3,那么当Count从0加到180的过程中,当加到20*3=60时,此时单片机就要将秒针对应的LED点亮。分针显示原理与此类似,因为一个表盘上分也是有60个刻度。而时针的算法就有区别了,因为一个表盘上,时才有12个刻度。时的算法是这样的,(Hour*15)+(Minu/4)。因为表盘一圈,Count加到180,而表盘上时只有 12个点,所以180/12=15,再加上分的移动会影响时针的走动,之间的换算关系是:(Minu*3)/12,Minu*3是此时分对应的Count 值,而分走360度时只走30度,所以360/30=12。综合显示时所对应的Count值就是(Hour*15)+(Minu/4)。这样做的要求就是定时器的中断时间要密切配合电机旋转周期,并且电机的转速要稳定。

5 系统功能测试分析

实物焊接电路如图5.1和5.2所示。图5.1是电路板正面,这上面能看到的模块分别有单片机最小系统模块、显示模块、时钟模块、红外遥控接收模块和无线供电接收模块。图5.2是电路板反面,这上面有红外对管接收模块,无线供电接收线圈。2个螺丝是用来配重的。

b.jpg

功能测试效果如图5.3、5.4、5.5和5.6所示。其中图5.3是系统上电后显示的即时时间10:43:12;图5.4表示时钟正常走动9秒后的时间 10:43:21;图5.5是调整时针效果图,由刚才的10点调整到了1点;图5.6是调整分针效果图,由刚才的39分调整到50分。由测试结果可以看出,电子旋转时钟运行正常,时间显示准确、表盘显示稳定、调整时间功能亦能实现,所以设计功能达到了预期要求。

6 结束语

测试结果表明,文中设计的旋转时钟相比于市场上其他的方案,具有以下优点:①表盘(包括刻度和指针)显示稳定,不会出现颤动现象;②时间走动能够一直准确正常,不会出现运行一段时间后跑时错误,指针乱指等现象;③显示的亮度一致,不会出现显示亮度不匀称现象。当然,该设计也存在功能需要进一步提升的地方,比如可以加入显示日期和文字等,使表盘显示的内容增多,并且通过按键来切换显示模式等。

关键字:单片机  旋转时钟  STC12C5A60S2

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2016041325688.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于单片机的CAN总线通信程序
下一篇:掌握单片机的精髓-定时器

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F1系列单片机USB外设相关寄存器的定义

Keil MDK网站上下载的Keil.STM32F1xx_DFP.2.2.0.pack包中的stm32f10x.h头文件里面没有USB_TypeDef的定义,只有寄存器位的定义,是不完整的头文件。没有USB的数据结构就会给访问USB寄存器带来一定的困难。虽然可以参照STM32参考手册中的USB register map自己编写出USB_TypeDef结构体,但是这样比较麻烦。不过,STM32CubeMX工具生成的STM32F103工程中的头文件stm32f103xe.h中就有完整的USB数据结构,该头文件的版本是V4.2.0,日期为31-March-2017,作者仍然是Keil里面的MCD Application Team,这比Ke
发表于 2019-07-19

STM32开发笔记38: 单片机内部Flash的读写

单片机型号:STM32F070F6P6本文介绍应用C语言进行单片机内部Flash的读写技巧,将从查看文档开始,到最终完成完整的程序。单片机型号:STM32F070F6P6步骤如下:1、查看文档《STM32F030x4/x6/x8/xC and STM32F070x6/xB advanced ARM®-based 32-bit MCUs》确认其Flash的内部结构。2、查看文档确认STM32F070F6P6内部存储器地址分配。从下表中得到的主要信息是Main Flash memory的起始地址是0x08000000,长度是32KB,到0x08017FFF结束(结束值可不关心)。3、继续查看Main Flash memory的内部结构
发表于 2019-07-16
STM32开发笔记38: 单片机内部Flash的读写

模拟量数据的采集过程解析

单片机的ADC接口属于模数转换接口,将外部的模拟量信号转化为数字信号,单片机属于数字器件,需将模拟信号转化为数字信号才能够为单片机处理。目前市场的很多单片机都自带ADC转换接口,若无ADC转换接口,可以使用ADC数模转换芯片外扩。ADC模块是将模拟信号转化位数字信号,数字信号用0和1表示,ADC模块有参考电压,假设给的参考电压是5V,ADC是12位的(几位表示用二进制几位数存储模拟量转化后的数字量,12位的ADC则可储存数字量范围为:(二进制)000000000000~111111111111,转换为十进制数字范围为0~2^12即0~4095。也就是说把参考电压分为2^12份即4096份,最小分辨率为VREF/4096。也就是说
发表于 2019-07-13
模拟量数据的采集过程解析

单片机入门学习八 STM32单片机学习五 时钟系统

单片机学习除了了解该篇 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础 中的基础外,我们还需要有时钟的概念,本篇将记录 stm32的时钟系统。1、STM32时钟介绍 下面这幅图时stm32的时钟系统框图 1)蓝底框表示 时钟源,即: ①HSI是高速内部时钟,RC振荡器,频率为8MHz。 ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③LSI是低速内部时钟,RC振荡器,频率为40kHz。(WDG看门狗 使用该时钟源) ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。(RTC
发表于 2019-07-12
单片机入门学习八 STM32单片机学习五 时钟系统

单片机入门学习十三 STM32单片机学习十 通用定时器

本篇重点记录的是STM32F1的通用定时器。 STM32F103ZE有8个定时器,其中2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5),2个基本定时器(TIM6、TIM7)。下表是对这8个定时器的详细描述。定时器种类 位数 计数器模式 产生DMA请求 捕获/比较通道 互补输出 特殊应用场景高级定时器(TIM1,TIM8) 16 向上、向下、向上/下 可以 4 有 带死区控制盒紧急刹车,可应用于PWM电机控制通用定时器(TIM2~TIM5) 16 向上、向下、向上/下 可以 4 无 通用。定时计数,PWM输出,输入捕获,输出比较基本定时器(TIM6,TIM7) 16 向上、向下
发表于 2019-07-12
单片机入门学习十三 STM32单片机学习十 通用定时器

51单片机与蓝牙模块连接

不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。此次学习用到模块是HC-06蓝牙模块,如下图:该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚和不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是带引脚的,但是模块本身是坏的;第二次买的是不带引脚的,但是由于自身的焊功有限,导致模块损坏,无法使用;第三次是朋友送的蓝牙4.0,由于某些原因无法使用,在此也特别感谢朋友送我蓝牙;第四次购买,就是上图所示的蓝牙,才最终完成了试验。总结
发表于 2019-07-11
51单片机与蓝牙模块连接

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved