0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于STC12C5A60S2 51单片机+DS1302的多功能数字电子表设计方案(内含源码、PCB)

基于STC12C5A60S2 51单片机+DS1302的多功能数字电子表设计方案(内含源码、PCB)

来源: toutiao
2020-08-06
类别:工业控制
eye 83
文章创建人 拍明

原标题:基于51单片机的多功能数字电子表设计方案(内含源码、PCB)

  第一章 项目计划

  1.1 项目分析

  1.1.1 项目名称

  多功能数字电子表

  1.1.2 项目的发展趋势

  随着现代电子技术的发展,人们对钟表的精确度的要求也越来越高。机械钟虽然不会被淘汰,但它所表现出来的作用有所限制,它未来的发展也不会无穷无尽。在满足现代人生活节奏的同时,电子表不单为时间而生,它将有很大的发展空间,比如现在流行的电话手表,一个电子表还可以用来跑步计数,查看天气,温度检测等等。电子表的发展也随着时代的发展一起前进,正好迎合了我们的项目多功能数字电子表。在不久的将来,通过人类的不断进步,电子表的功能将逐渐增加,比如导航,视频通话等都有可能实现。

  1.1.3 市场需求

  过去几年市场对电子表的需求越来越大每年销量增长加快,其中精度高,功能多样的电子表的需求更是猛增。使用电子表的人群主要是学生,上班族。他们需要价格较低,功能丰富的电子表,因此我们团队设计研发一种低价的多功能电子表来满足市场需求。

  1.2 方案设计

  1.2.1 项目功能

  多功能数字电子表将实现以下功能:

  1.时间功能。显示当前时间,精确到秒,并且当时间有误时,用户可以手动校准。

  2.日期功能。日期是年、月、日。用户可通过按键来切换查看当前日期,也可以实现手动设置进行校准。

  3.闹钟功能。用户可通过按键设置闹钟。

  4.秒表功能。用户可进行启动、暂停(继续)、清零操作,精确到0.01秒。

  5.倒计时功能。用户设置初始时间按下启动键电子表开始倒计时,当时时间归零时,响铃提醒用户。

  1.2.2项目材料及计划

  该设计中单片机采用STC12C5A60S2和低功耗实时时钟芯片DS1302搭配上按

  键来实现基本功能。STC12C5A60S2单片机集高速、低功耗、超强抗干扰于一身。选择具有涓细电流充电能力的低功耗实时时钟电路DS1302对时间进行计时,它可以精确到秒,还具备闰年补偿等多种功能,而且该芯片的使用寿命长,误差小,还具有时间校准等功能。显示这方面我们打算用数码管显示,但根据最后的需要可能有变,目前有液晶和数码管显示这两种方案,液晶比普通数码管相比硬件连接更复杂,价格更贵,对系统的要求较高。此外,我们还将用到的材料是蜂鸣器,用于闹铃和倒计时的响铃提醒。按键可用于切换显示、时间校准、闹钟的设定等功能。

  除了以上的器件外,在项目设计过程中我们还会用到其他一些电子元件,比如电容,电阻,三极管等等。

  1.3 可行性分析

  我方团队三人各有所长,李林航擅长程序设计和编写,有些较为丰富的经验,参加过多次比赛,成绩优异,彭建峰在电路设计方面很有经验,主要负责电路方面的主体任务,梁斌则在各个方面协助两位组员,并且主要负责报告的撰写整合,采购原件等任务。分工合作,通过硬件和编程结合,和实际的手工操作,就可以实现多功能数字电子表功能。在按键不超过三个的条件下,要实现多个功能,可以采用按键结合共同作用来实现多个功能。

  第二章 设计说明

  2.1 功能指标

  2.1.1 显示器

  选用共阴极4位数码管作为显示器。

  2.1.2 按键

  设计三个按键,通过按键操作来实现切换和设置功能,可分别显示时、分、秒、年份、月份、天数、秒表、倒计时、闹钟。考虑到功能多,按键少,所以我们采用了组合键操作来减少按键数量节约设计空间和成本。

  2.1.3 蜂鸣器

  选用蜂鸣器作为闹钟和倒计时的响铃提醒,采用单片机推挽式输出和9013来控制其正常工作。

  2.1.4 单片机

  选用STC12C5A60S2单片机,它是高速、低功耗、超强抗干扰的新一代8051单片机。并且它的功能性强,价格合理,用起来也比较方便主要具有以下几个特点: 4KB可改编程序Flash储存器。、全静态工作、128*8字节内部RAM、32个外部双向输入/输出(I/O)口、中断优先级有四种状态可定义、2个16位可编程定时计数器、低功耗和掉电模式。配合DS1302时钟芯片,用C语言编写程序来完成项目的软件需求。

  2.2 设计原理及原理图

  我们多功能电子表原理图如图2-1所示,包括的元器件有:4位数码管、STC12C5A60S2单片机、电阻、DS1302时钟芯片、振荡器、ISP下载器、蜂鸣器、瓷片电容,按键以及三极管。用三线制SPI串行通信协议控制DS1302相应的寄存器修改和读取它的时间数据(BCD码),再通过转码函数将其数据转换成十进制数后控制数码管显示。通过按键切换读取或更改对应的时间,再通过设置STC12C5A60S2的定时器完成秒表和倒计时功能。

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-1 电子表电路设计原理图

  2.3 关键硬件模块设计原理

  2.3.1 振荡电路

  在电子表的设计中,振荡电路是必不可少的。它用于产生一个标准频率,也就是时间标准信号,然后通过分频器产生时间脉冲。其频率精度与稳定性决定了多功能电子表时间的准确度。为了使电路更容易起震,频率更稳定,并联两个22pF的瓷片电容。如图2-2。

  我们采用的是12M石英晶振。

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-2 振荡电路

  2.3.2 显示器

  采用4位共阴极数码管作为显示器,段选端接P0口,位选端接P2口高四位。数码管直接由P0口电流驱动,串联1k电阻控制电流大小,P2口直接连接数码管的选择位即可,如图2-3。

  I/O口输出电压约为5V, 红色发光二极管导通压降约为1.8-2.2V,数码管工作总电流不超过20mA,可以计算出限流电阻为(5V-1.8V)/(20mA/8)=1.28kΩ, (5V-2.2V)/(20mA/8)=1.12kΩ。所以电阻阻值在1.12k-1.28kΩ之间均可。但为了留有冗余本方案设计的限流电阻为1.3kΩ。

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-3 显示器电路

  2.3.3 按键

  三个按键分别接到P2.0,P2.1,P2.2口,并联,用户通过按键来实现相应功能,如图2-4。

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-4 按键电路

  当童锁打开时,只有K1可以工作,用来切换显示,K2和K3不能工作。

  当童锁关闭时,按键K1切换设置的位置,按键K2和K3进行加减操作,具体功能如下:

  1、按K1切换显示时、分、秒、年、月、日。K2进行减操作,K3进行加操作。

  2、按K1切换设置闹钟,K2进行减操作,K3进行加操作,K2,K3一起按进行开/关闹钟。

  3、按K1切换设置秒表,K2开始/暂停,K3清零。

  4、按K1切换设置倒计时,K2进行减操作,K3进行加操作。

  2.3.4 DS1302时钟芯片

  该芯片可提供秒、分、时、日、月、年,并且具有闰年补偿功能。如图2-5

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-5 时钟芯片电路

  X1和X2接32.768kHz的晶振,使得芯片能正常工作。RET控制移位寄存器或复位。

  VCC2接输入电源,VCC1接大电容的正极,在主电源失效时保持时间和日期数据。该芯片工作于VCC1和VCC2中较大者。当VCC2比VCC1高0.2V时,VCC2给DS1302供电,当VCC1比VCC2高时,VCC1给DS1302供电,GND接地,DS1302连接单片机外接4.7k上拉电阻来确保芯片可以正常工作。

  SCLK用来同步串行接口上的数据动作。I/O表示输入与推挽输出,I/O管脚是三线接口的双向数据管脚,为了使其正常工作。CE是输入,当CE信号在读写时要保持高电平。为了使它们连接单片机能够正常工作,我们依次外接了一个47k的上拉电阻。

  2.3.5 蜂鸣器

  采用蜂鸣器作为闹铃。蜂鸣器结构简单,控制方便。占用单片机I/O口P2.3,用NPN型三极管9013控制蜂鸣器。三极管基极连接单片机I/O口,发射极接地,当P2.3引脚为高电平时,三极管导通,使得蜂鸣器正常工作,如图2-6。

  

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-6 蜂鸣器电路

  2.3.6 电源电路

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  图2-7 电源电路

  采用了大容量电解电容旁边并联一只小电容的电路结构作用有三:一是作为本集成电路的蓄能电容;二是滤除该器件产生的高频噪声,切断其通过供电回路进行传播的通路;三是防止电源携带的噪声对电路构成干扰。

  2.4 软件设计

  2.4.1 main程序

  void main(void)

  {

  P2M0 = 0xff;

  P2M1 = 0x00; //P2强推挽输出

  P0M0 = 0xff;

  P0M1 = 0x00; //P0强推挽输出

  //****************定时器初始化*******************

  TMOD= 0x12; //设置定时器1为方式1,定时器0为方式2

  TH1 = -10; //2.5ms中断一次

  TL1 = -250;

  TH0 = -250; //0.25ms中断一次

  TL0 = -250;

  TR1 = 1; //打开定时器1

  ET1 = 1; //打开定时器1中断

  ET0 = 1; //打开定时器0中断

  EA = 1; //开总中断

  display(); //读取DS1302的时间信息并数码管显示

  while(1)

  {

  if(cKey)

  {

  DisposeKEY(); //按键扫描

  }

  if (hour > 23 || second > 59 || minute > 59)

  {

  Ds1302Init();

  }

  }

  }

  }

  2.4.2 定时器0

  void IntT0() interrupt 1

  {

  if (DJS == 1) //倒计时模式

  {

  uchar j,k;

  j++;

  if(j == 40) //中断40次0.01s

  {

  j = 0;

  if (k == 0)

  {

  k = 100;

  if (DL == 0)

  {

  if (DH == 0)

  {

  DD = 1; //倒计时结束标志位

  TR0 = 0; //关闭定时器0

  return;

  }

  DH--;

  DL = 60;

  }

  DL--;

  }

  k--;

  }

  }

  else //秒表模式

  {

  uchar i;

  i++;

  if(i == 40) //中断40次0.01s

  {

  i = 0;

  mL++;

  if(mL == 100) //中断4000次1s

  {

  mL = 0;

  mH++;

  if(mH == 60) //中断240000次一分钟

  {

  mH = 0;

  }

  }

  }

  }

  }

  2.4.3 定时器1

  void IntT1() interrupt 3

  {

  TH1 = -10; //2.5ms中断一次

  TL1 = -250;

  //*************************中断次数计数******************

  nTimer++;

  if(nTimer == 200)

  {

  SMG = ~SMG; //0.5s数码管亮/灭一次

  nTimer = 0;

  }

  //*************************显示刷新******************

  P0 = 0; //先清显示再换位选

  if ((Nhour == hour && Nminute == minute && kk == 1)||(DD == 1))

  {

  P2 = acLEDCS[cScanIndex]|0x0f; //送位选数据

  }

  else

  {

  P2 = acLEDCS[cScanIndex]|0x07; //送位选数据

  }

  P0 = acLED[cScanIndex++]; //送显示数据,位选指针移位

  cScanIndex &= 3; //位选指针回位

  DisposeKEY();

  //*************************扫描按键******************

  if(nDelayKey==0)

  {

  cKey = P2 & 0x07; // 取键值P10、P11、P12

  if(cKey != 0x07)nDelayKey=100; // 设置延迟时间削颤

  else

  {

  bStill=0;

  cLongDelay=0;

  } // 松键

  }

  else // 利用DelayKey按键消颤

  {

  nDelayKey--;

  if(nDelayKey==0)

  {

  cKeyCode = P2 &0x07; // 取键值P10、P11、P12

  if(cKey != cKeyCode)

  {

  cKeyCode = 0;

  }

  }

  }

  }

  2.5 Proteus仿真图

  当童锁打开时,只有K1可以工作,用来切换显示,K2和K3不能工作。

  当童锁关闭时,按键K1切换设置的位置,按键K2和K3进行加减操作,如图3-1

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  3-1 电路Proteus仿真图

  2.6 流程图

  主程序流程图:

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  4-1 主程序流程图

  注:I/O口初始化将P0、P2设置为强推挽输出。

  定时器初始化设置定时器1为方式1,定时器0为方式2。

  定时器1的流程图:

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  定时器0流程图:

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

  2.7 PCB图 见图5-1

  

【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案