【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB) | 您所在的位置:网站首页 › 闹钟原理图和pcb设计 › 【51单片机】基于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 可行性分析我方团队三人各有所长,xxx擅长程序设计和编写,有些较为丰富的经验,参加过多次比赛,成绩优异,xxx在电路设计方面很有经验,主要负责电路方面的主体任务,xxx则在各个方面协助两位组员,并且主要负责报告的撰写整合,采购原件等任务。分工合作,通过硬件和编程结合,和实际的手工操作,就可以实现多功能数字电子表功能。在按键不超过三个的条件下,要实现多个功能,可以采用按键结合共同作用来实现多个功能。 1.4 工程进度及预算 1.4.1 工程进度1.4.2 研发成本及利润分析预计每个售价60元,获得利润30元 总利润:10000*60-324030=275970元 第二章 设计说明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的定时器完成秒表和倒计时功能。 第二章 设计说明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的定时器完成秒表和倒计时功能。 图2-1 电子表电路设计原理图2.3 关键硬件模块设计原理2.3.1 振荡电路在电子表的设计中,振荡电路是必不可少的。它用于产生一个标准频率,也就是时间标准信号,然后通过分频器产生时间脉冲。其频率精度与稳定性决定了多功能电子表时间的准确度。为了使电路更容易起震,频率更稳定,并联两个22pF的瓷片电容。如图2-2。 我们采用的是12M石英晶振。 图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Ω。 图2-3 显示器电路2.3.3 按键 三个按键分别接到P2.0,P2.1,P2.2口,并联,用户通过按键来实现相应功能,如图2-4。
图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
图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。
图2-6 蜂鸣器电路 2.3.6 电源电路
图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 定时器0void 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 定时器1void 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
3-1 电路Proteus仿真图 2.6 流程图 主程序流程图:
4-1 主程序流程图 注:I/O口初始化将P0、P2设置为强推挽输出。 定时器初始化设置定时器1为方式1,定时器0为方式2。 定时器1的流程图:
4-2 定时器1的流程图 定时器0流程图:
4-3 定时器1的流程图 2.7 PCB图 见图5-1
5-1 智能PCB 第三章 安装调试3.1 产品 3.1.1 实物图
3-1 定时器1的流程图 3.1.2 材料清单3.2 安装使用 3.2.1相关参数调试环境:温度20℃、相对湿度50%。 工作电压:直流4.99。 工作电流:27.2mA。 功耗:0.136W。 调试仪器:示波器、直流稳压电源。 3.2.2 按键电子表通过按键来实现不同的功能,一共有三个按键,见图3-2。
图3-2 按键实物图 3.2.3 显示采用4位数码管作为显示器,接通电源初始显示小时与分钟,其中在时和分交界处有个闪烁的点表示秒钟的走动,我们设计的电子表精确到秒,最高可显示年。在断电后,由电容充当备用电源为设备供电。如图3-3。
图3-3 电子表显示 3.2.4 PCB丝印层为了方便电路的安装和维修等,可以用丝印层,在印刷板的上下两表面印刷上所需要的标志图案和文字代号。如图3-4
图3-4 PCB丝印层 3.3 样机调试 调试过程如下: (1)按下示波器启动按钮。如图3-5。
图3-5 示波器开启示意图 在图3-6图中位置接入表笔接口。
图3-6 示波器表笔接入图 (2)测试电源,红表笔接左上方处,黑表笔接右下方处。
图3-7 电源纹波测试接线图 在调试记录表的电源项记录与示波器对应的画圈处的数值。
图3-8 示波器电源纹波数据图
(3)测量晶振频率,两表笔接两箭头处(红、黑表笔可反接)
图3-9 晶振测试接线图 (4)测量复位脉冲,把示波器设置为直流、单次触发。红表笔接左侧箭头处,黑表笔接右侧箭头处。
图3-10 复位测试接线图 在调试表的复位项记录与示波器对应的画圈处的数值。
图3-11 示波器复位数据图 3.4调试参数3.4.1 电源纹波(局部)纹波是出现在输出端子间的一种与输入频率和开关频率同步的成分,用峰-峰值表示。将电压类型改为交流,测量局部电源纹波将带宽改为20MHZ,电压设为20mv,时间选择设为ns,然后进入measure菜单,调出测量值,选择频率,峰峰值。最后测得结果如图3-10,峰-峰值为40.8mV左右。
图3-12 电源纹波(局部) 3.4.2电源纹波(整体)测量整体电源纹波将带宽改为20MHZ,电压设为20mv,时间选择设为ms,然后进入measure菜单,调出测量值,选择频率,峰峰值。最后测得结果如图3-11,峰-峰值为43.2mV左右。
图3-13 电源纹波(整体) 3.4.3 晶振频率晶振频率是晶体振荡器的固有频率,不能改变的。测量工具仍然用示波器,选择电压2.00V,时间设为ns,测得结果如图3-12,是三角波,峰-峰值为2.56V。
图3-14 晶振频率 3.4.4 复位脉冲复位脉冲是在电源开启瞬间,电源通过R向C充电,在RC点产生电脉冲信号,通过二极管输出。用示波器测量电源复位脉冲,选择2.00V电压,时间为ms,测量时先断开电源,测出在充电那一瞬间产生的电脉冲信号,如图3-13。产生最大峰值4.88V。
图3-15 复位脉冲 3.4.5 数据指标表3-2 数据指标 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |