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

您所在的位置:网站首页 闹钟原理图和pcb设计 【51单片机】基于51单片机的多功能数字电子表(内含源码、PCB)

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

2023-07-15 14:34| 来源: 网络整理| 查看: 265

第一章 项目计划

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 定时器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

 

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 办公设备维修网 版权所有 豫ICP备15022753号-3