数字计时器.docx
《数字计时器.docx》由会员分享,可在线阅读,更多相关《数字计时器.docx(16页珍藏版)》请在冰豆网上搜索。
![数字计时器.docx](https://file1.bdocx.com/fileroot1/2022-12/27/ff624145-6ce8-4231-99ae-dd05f92d9924/ff624145-6ce8-4231-99ae-dd05f92d99241.gif)
数字计时器
数字电子钟设计报告
第一章、生产实习的相关介绍………………………………………………2
1.设计的目的………………………………………………………………2
2.设计要求……………………………………………………………………2
3.设计的作用…………………………………………………………………2
4.数字钟简介………………………………………………………………3
第二章、设计方案及相关元件介绍……………………………………………3
1.AT89S52最小系统………………………………………………………3
2.相关匹配硬件………………………………………………………………6
第三章、系统硬件设……………………………………………………………8
1.主控局部(单片机MCS-51)………………………………………………8
2.计时局部〔实时时钟芯片DS1302〕…………………………………9
3.显示局部〔共阴极数码管〕……………………………………………9
4.调时局部〔按键〕…………………………………………………………9
第四章、系统软件设计…………………………………………………………10
1.流程图………………………………………………………………………10
2.C语言程序…………………………………………………………11
第五章、附录……………………………………………………………………15
1.系统总原理图………………………………………………………15
2.元件清单………………………………………………………………16
3.Proteus仿真图………………………………………………………16
4.PCB板图………………………………………………………………16
参考文献………………………………………………………………………17
第一章、生产实习的相关介绍
1设计的目的:
1、让学生掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安
装、测试方法;
2、进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能
力;
3、提高电路布局﹑布线及检查和排除故障的能力;
4、培养书写综合实验报告的能力:
2设计的要求:
1、设计原理图一份
2、制作PCB板一块
3、编制程序,与硬件连机调试
4、焊接元件
5、完成产品组装
6、完成设计报告一份
3设计的作用:
1、培养逻辑思维能力。
2、掌握单片机的应用,并进展设计和综合分析应用。
3、培养自我学习能力和团体合作能力。
4、提高自己的动手能力及培养自己的耐心及细心。
5、巩固、加深和扩大51,52系列单片机应用的知识面,提高综合及灵活运
用所学知识解决工业控制的能力;
6、学会怎么使用DS1302,并且要知道它的组成与构造。
7、学会查阅书籍,并且要能够熟练编写程序、仿真、绘画流程图、原理图
及BCP图。
8、对课题设计方案的分析、选择、比拟、熟悉用51单片机做系统开发、研
制的过程,软硬件设计的方法、容及步骤。
4.数字钟简介
1、电子钟是人们日常生活中常用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。
多功能数字钟采用数字电路实现对“时〞、“分〞、“秒〞数字显示的计时装置。
具有时间显示、走时准确、显示直观、精度、稳定等优点。
电路装置十分小巧,安装使用也方便。
同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广阔消费的喜爱。
该电子钟使用AT89S52为核心,采用七段共阴数码管显示,动态显示技术。
产用外部接5V电源供电,部添加了一个4.8V左右的电池以防突然断电后还能保持原先数据不变。
该产品简单易于操作,可以实现以下功能:
时间显示,包括小时、分钟、秒。
具有在正常工作情况下突然断电后还可以保存原来的时间数据,而不用在有
电来的时候又要从先调时的麻烦。
2、设计要求
〔1〕上电以后自动进入计时状态。
〔2〕设计键盘调整时间,完成年月日、星期、时间的设计。
〔3〕采用AT89S52为核心控制芯片,用采七段共阴数码管显示。
第二章、设计方案及相关元件介绍
使用串行接口时钟芯片DS1302设计时钟电路。
该设计方案以MCS-52单片机为主控芯片,以串行时钟芯片DS1302为核心计时芯片,然后再通过反向器驱动数码管组〔数码管组由六个数码管连在一起组成〕组成数字时钟电路。
更重要的是,DS1302时钟芯片的参加大大提高了数字钟时间的准确性,而且该电路在断电后不丧失时间和数据信息时也使得该方案的研究与提升更具有开发的意义。
1、AT89S52最小系统
AT89S52是一款非常适合单片机初学者学习的单片机,它是美国Atmel公司生产的低功耗、高性能CMOS8位单片机,片含4KB可系统编程的Flash只读程序存储器,器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,即可在线编程〔ISP〕,也可以用传统方法进展编程可灵活应用于各种控制领域。
功能特性概述:
40个引脚,8KBFlash片程序存储器,128B的随机存取数据存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器。
一个6向量2级中断结构,全双工串行口及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.
图1.AT80C52单片机
引脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进展校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1〞时,其管脚被部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进展存取时,P2口输出地址的高八位。
在给出地址“1〞时,它利用部上拉优势,当对外部八位地址数据存储器进展读写时,P2口输出其特殊功能存放器的容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1〞后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流〔ILL〕这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD〔串行输入口〕
P3.1TXD〔串行输出口〕
P3.2/INT0〔外部中断0〕
P3.3/INT1〔外部中断1〕
P3.4T0〔记时器0外部输入〕
P3.5T1〔记时器1外部输入〕
P3.6/WR〔外部数据存储器写选通〕
P3.7/RD〔外部数据存储器读选通〕
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,那么在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有部程序存储器。
注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源〔VPP〕。
XTAL1:
反向振荡放大器的输入及部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
图2.外接晶体时钟振荡电路
2.相关匹配硬件
1DS1302简介:
DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时
时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进展
同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM
数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与
31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~
5.5V。
采用双电源供电〔主电源和备用电源〕,可设置备用电源充电
方式,提供了对后背电源进展涓细电流充电的能力。
DS1302的外部
引脚分配如图1所示及部结构如图2所示。
DS1302用于数据记录,
特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该
数据的时间同时记录,因此广泛应用于测量系统中。
图3.DS1302的外部引脚分配
DS1302的部结构
各引脚的功能为:
Vcc1:
主电源;Vcc2:
备份电源。
当Vcc2>Vcc1+0.2V时,
由Vcc2向DS1302供电,当Vcc2SCLK:
串行时钟,输入,控制数据的输入与输出;
I/O:
三线接口时的双向数据线;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两
个功能:
第一,CE开场控制字访问移位存放器的控制逻辑;其次,
第三章、系统硬件设计
电路原理说明
本次设计的硬件电路由主控局部(单片机MCS-51)、计时局部〔实时时钟芯片DS1302〕、显示局部〔数码管〕、调时局部〔按键〕4个局部组成。
各局部之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。
现就各局部的硬件电路设计作出如下论述:
〔原理图见附录〕
1.主控局部(单片机MCS-51)
MCS-51单片机作为主控芯片,控制整个电路的运行。
其外围电路主要有两局部:
复位电路和晶体振荡器。
复位电路的功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降〔电池电压缺乏〕等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
晶体振荡电路:
MCS-51单片机中有一个用于构成部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。
这个反向放大器与作为反应元件的片外石英晶体或瓷谐振器一起构成自激振荡器。
外接石英晶体(或瓷谐振器)及电容C1、C2接在放大器的反应回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的上下、振荡器工作的稳定性、起振的难易程度及温度稳定性。
如果使用石英晶体,电容应该使用30pF
10pF
晶体振荡电路:
MCS-51单片机中有一个用于构成部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。
这个反向放大器与作为反应元件的片外石英晶体或瓷谐振器一起构成自激振荡器。
外接石英晶体(或瓷谐振器)及电容C1、C2接在放大器的反应回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的上下、振荡器工作的稳定性、起振的难易程度及温度稳定性。
如果使用石英晶体,电容应该使用30pF
10pF。
2.计时局部〔实时时钟芯片DS1302〕
时钟芯片DS1302与外围电路的连接:
与MCS-51单片机的接口是由3条线来完成的,MCS-51单片机的P1.0与时钟芯片的数据传输端I/O相连,P1.1用来作为DS1302输入时钟SCLK控制端,P1.7控制DS1302的复位输入端RST。
DS1302的X1和X2管脚外接标DS1302的复位引脚通过把
输入驱动置高电平来启动所有的数据传送。
输入有两种功能:
首先,
接通控制逻辑,允许地址/命令序列送入移位存放器;其次,
提供了终止单字节或多字节数据的传送手段。
当
为高电平时,所有的数据传送被初始化,允许对DS1302进展操作。
如果在传送过程中置
为低电平,那么会终止此次数据传送,并且I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,
必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
3.显示局部〔共阴极数码管〕
八段数码显示管有两种,一种是共阳数码管,其部是由八个阳极相连接的发光二极管组成;另一种是共阴数码管,其部是由八个阴极相连接的发光二极管组成。
二者原理不同但功能一样。
本设计的时间显示选用6个共阴八段数码管LED,其外形和部结构如图10所示:
4.调时局部〔按键〕
按键电路由K1,K2,K3三个按键和P1.2,P1.3,P1.4连接构成。
第一个按键按下一次调整时,第二次按下调整分,第三次按下调整秒,第四次按下复位。
第二个按键实现加一功能,第三个按键实现减一功能。
通过程序可是设置初始显示时间。
数字电子钟的逻辑框图如图3-4所示。
它由555集成芯片构成的振荡电路、分频器、计数器、显示器和校时电路组成。
555集成芯片构成的振荡电路产生的信号经过分频器作为秒脉冲,秒脉冲送入计数器,计数结果通过“时〞、“分〞、“秒〞译码器显示时间。
第四章、系统软件设计
1.流程图
图6流程图
2.C语言程序
#include
#defineucharunsignedchar
#defineuintunsignedint
#definewrite_data
sbitsda=P1^1;//ds1302的数据线
sbitclk=P1^0;//ds1302的时钟线
sbitrst=P1^2;//ds1302的复位线
sbitk1=P1^5;//调时
sbitk2=P1^6;//调分
sbitk3=P1^7;//开场走秒
ucharcodeduan_code[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表
uchardisplay_code[]={
0x00,0x00,0xbf,0x00,0x00,0xbf,0x00,0x00};//显示格式,中间两个横杠
ucharbit_code[]={
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//数码管位选
ucharcurrent_time[7];//所读取的日期和时间
charadjust_flag=0;//调节标志
voiddelayms(uintx)//延时函数ms级
{
uchari;
while(x--)for(i=0;i++;i<120);
}
voidwrite_byte(ucharx)//写一个字节函数
{
uchari;
for(i=0;i<8;i++)
{
sda=x&1;
clk=1;
clk=0;
x>>=1;
}
}
ucharread_byte(void)//读一个字节函数
{
uchari,b,t;
for(i=0;i<8;i++)
{
b>>=1;
t=sda;
b|=t<<7;
clk=1;
clk=0;
}
returnb/16*10+b%16;
}
ucharread_data(ucharaddr)//读取数据函数
{
uchardat;
rst=0;
clk=0;
rst=1;
write_byte(addr);
dat=read_byte();
clk=1;
rst=0;
returndat;
}
voidwrite_data(ucharaddr,uchardat)//写入控制字和输入函数
{
clk=0;
rst=1;
write_byte(addr);
write_byte(dat);
clk=0;
rst=0;
}
voidset_1302()//设置ds1302函数
{
write_data(0x8e,0x00);//关闭写保护。
write_data(0x82,(current_time[1]/10<<4)|(current_time[1]%10));//初始化分
write_data(0x84,(current_time[2]/10<<4)|(current_time[2]%10));//初始化时
write_data(0x8e,0x80);//翻开写保护。
}
voidgettime()//单片机从ds1302读取的时间数据
{
current_time[0]=read_data(0x81);
current_time[1]=read_data(0x83);
current_time[2]=read_data(0x85);
}
voidint0()interrupt0//中断函数
{
if(k1==0)//小时调整
{
adjust_flag=1;//正在调整
current_time[2]=(current_time[2]+1)%24;
}
else
if(k2==0)//分钟调整
{
adjust_flag=1;//正在调整
current_time[1]=(current_time[1]+1)%60;
}
else
if(k3==0)//确定
{
set_1302();//将调整后的时间写入ds1302
adjust_flag=0;//完毕调整,时间继续正常显示
}
}
voidmain()//主函数
{
uchari;
IE=0X81;//开总中断,同时开外部定时器0中断
while
(1)
{
if(adjust_flag==0)
gettime();//扫描按键,当按键没有被按下时,单片机从ds1302读取时间数据
display_code[0]=duan_code[current_time[2]/10];//小时为的十位
display_code[1]=duan_code[current_time[2]%10];//小时位的个位
display_code[3]=duan_code[current_time[1]/10];//分钟位的十位
display_code[4]=duan_code[current_time[1]%10];//分钟为的个位
display_code[6]=duan_code[current_time[0]/10];//秒位的十位
display_code[7]=duan_code[current_time[0]%10];//秒位的个位
for(i=0;i<8;i++)//对数码管进展动态扫描
{
P2=bit_code[i];
P0=display_code[i];
delayms(5);
}
}
}
第五章、附录
1.系统总原理图
2.元件清单
序号
元件名称
数量
序号
元件名称
数量
1
ST89C2
1
14
四节7号电池盒
1
2
共阴数码管
6
15
菲林纸A4
1
3
DS1302
1
16
IN4007
1
4
按键6mm*6mm
3
17
晶振11.0592MHZ
1
5
电解电容10uf/16v
4
18
晶振32.768
1
6
电解电容1uf/16v
5
19
7
电阻10K1/4W
5
20
8
电阻2201/4W
4
21
9
电容22pf
4
22
10
电容103
4
23
11
5mmLED(红黄兰绿各一个)
4
24
10cm*15cm双面负性感光板
1
12
三极管9012
3
13
5v有源蜂鸣器
1
3.Proteus仿真图
4.PCB板图
参考文献
[1]、单片机原理及应用,电子科技大学,2002
[2]、MCS-51系列单片机应用系统设计系统配置与接口技术,
航空航天大学,2001[3]、单片机中级教程——原理与应用,,航空航天大学
,2000.6
[4]、新编单片机原理与应用.:
电子科技大学.2003