数字电子钟设计Word文件下载.docx
《数字电子钟设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字电子钟设计Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
3.1系统框图2
4.数字电子时钟的电路设计3
4.1电路原理图设计3
4.2数字电子时钟设计的理论推导3
4.2.1LED数码管的结构3
4.2.2.AT89C51的使用6
5数字电路设计的算法流程图6
6数字电子时钟设计的实现8
6.1仿真8
6结论12
参考文献12
附录12
致谢16
数字电子时钟设计
学生:
陈东梅
指导教师:
沈晓波
电气信息工程学院电子信息科学与技术专业专业
1.数字电子钟的研究背景
近年来,电子技术获得了飞速的发展,在其推动下,现代电子产品渗透了社会的各个领域,大力推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。
对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。
数码管显示的时间简单明了而且读数快、时间准确显示到秒。
而机械式的依赖于晶体震荡器,可能会导致误差。
数字钟是采用数字电路实现对“时”“分”“秒”数字显示的计时装置。
数字钟的精度、稳定度远远超过老式机械钟。
在我的设计中采用了LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。
在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。
数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
2.数字电子钟设计的基本理论
数字电子时钟采用内部硬件定时器来进行计时,计时最小单位sec100为10ms。
若sec100每记满100次,表示已经计时1s,则sec100清零且sec加1。
如果sec等于60,应将sec清零,同时min加1。
如果min等于60,应将min清零并hour加1。
如果hour大于23时,应该将hour清零。
用AT89C51对系统进行控制,并加上外部中断按钮K1、K2来实现。
3.数字电子时钟方案设计
3.1系统框图
图1.电子时钟系统的原理框图
4.数字电子时钟的电路设计
4.1电路原理图设计
打开ProteusISIS,在ProteusISIS编辑窗口中单击元件列表之上的“p”按钮,添加下表所列的元器件。
添加元器件后,绘制原理图。
表1.元件表
单片机AT89C51
电解电容CAP-ELEC10Uf
瓷片电容CAP22pF
电阻RES
晶振CRYSTAL11.592MHz
数码管7SEG-MPX8-CA-BLUE
三极管NPN
按钮BUTTON
上拉排阻RESPACK-8
图2原理图
4.2数字电子时钟设计的理论推导
4.2.1LED数码管的结构
使用的LED数码管是7段LED,a—g呈“日”字形,结构如下图:
图3LED结构图
图4LED数码管的连接
表2.字形代码与十六进制数的对应关系
图5n个LED数码管的连接
4.2.2.AT89C51的使用
单片机应用系统以单片机为核心,同时配以相应的外围电路及软件来完成某种或几种功能的系统。
它包括硬件和软件两部分,硬件是系统的躯体,软件是系统的灵魂。
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
在本设计中,用了INT0和INT1两个中断,分别作为按钮K1和K2。
初始化为TMOD=0x01;
TH0=0xDC;
TL0=0x00;
TR0=1;
ET0=1;
EX0=1;
IT0=0;
EX1=1;
IT1=0;
EA=1;
加上排阻RESPACK-8,驱动,电流不够,加排阻增加电流嘛,排阻一般有九个脚,一个脚接VCC,其他脚接单片机I/o口。
5数字电路设计的算法流程图
图6.主流程图图7按键控制处理流程图
图8定时器中断流程图图9显示器流程图
6数字电子时钟设计的实现
6.1仿真
打开keiluvision4,执行”Project-NewProject”,z在弹出的“creatnewproject”输入项目名,在新建一个“file”,保存并加入“Group”,在“file”中输入C语言程序,检查错误并改错。
再生成“.HEX”文件。
画好原理图并电器检测,生成网络表,双击AT89C51,在弹出的“EditCompeonet”对话框的“ProgamFile”栏中选择刚刚生产的HEX文件,单击调试按钮,进行调试。
如图所示:
图10仿真图1
图11仿真图2
点击“Design-DesignExplorer”,会看到有没有封装的元件。
打开“Ares”封装元件,并加入自己的库里,再回到原理图加封装,“Design-DesignExplorer”,元件都封装后。
再生成网络表。
执行“Tools-NetlisttoARES”,进入PCB。
执行“File-loadnetlist”,再执行“Tools-Autoplace”导入元件,再执行“Tools-AutoRouter”布线。
图12PCB布线图
图133D效果图
6结论
总结:
在这次课程设计中,遇到很多问题,而且发现对proteus软件不是很熟悉,所以做得很慢,对于单片机的掌握也不是很好,还要多做多练。
参考文献
[1]陈忠平.基于Proteus的51系列单片机设计与仿真[P].北京:
电子工业出版社,2012.05.
[2]谭浩强.C语言程序设计教程[P].北京:
高等教育出版社,2006.08.
[3]谢维成,杨家国.单片机原理与应用及C51程序设计[P].第二版清华大学出版社.2003.
附录
C语言程序:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitk1=P3^2;
sbitk2=P3^3;
uchartab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
uchardis_buff[8];
ucharsec100,sec,min,hour;
voiddelay(uintk)
{
uintm,n;
for(m=0;
m<
k;
m++)
{
for(n=0;
n<
120;
n++);
}
}
voiddisplay(void)
P2=0x80;
P0=tab[dis_buff[0]];
delay
(2);
P2=0x40;
P0=tab[dis_buff[1]];
delay
(2);
P2=0x20;
P0=tab[dis_buff[2]];
P2=0x10;
P0=tab[dis_buff[3]];
P2=0x08;
P0=tab[dis_buff[4]];
P2=0x04;
P0=tab[dis_buff[5]];
P2=0x02;
P0=tab[dis_buff[6]];
if(hour>
9)
{
P2=0x01;
Else
P2=0x00;
P0=tab[dis_buff[7]];
voiddisp_data(void)
dis_buff[7]=hour/10;
dis_buff[6]=hour%10;
dis_buff[5]=16;
dis_buff[4]=min/10;
dis_buff[3]=min%10;
dis_buff[2]=16;
dis_buff[1]=sec/10;
dis_buff[0]=sec%10;
voidinc_hour(void)
hour++;
if(hour>
23)
hour=0;
}}
voidinc_min(void)
{
min++;
if(min>
59)
min=0;
inc_hour();
voidinc_sec(void)
sec++;
if(sec>
59)
sec=0;
inc_min();
voidint0()interrupt0
delay(150);
if(INT0==0)
voidint1()interrupt2
if(INT1==0)
voidtimer0()interrupt1
TH0=0xDC;
sec100++;
if(sec100>
=100)
{
sec100=0;
inc_sec();
}}
voidint_init(void)
TMOD=0x01;
TR0=1;
ET0=1;
EX0=1;
IT0=0;
IT1=0;
}
voidmain(void)
int_init();
P0=0xFF;
P2=0x00;
hour=22;
min=59;
sec=0;
sec100=0;
while
(1)
disp_data();
display();
致谢
首先必须感谢沈晓波老师在PROTEUS学习过程中对我的辅导,在本学期的学习中了解的不单单是PROTEUS,还弥补了一些在单片机学习过程中的不足。
老师给我们补充了很多知识,在做实验过程中,很认真的指导我们,严格的要求我们,而且课堂时间很有趣,总是让人觉得时间好短。
老师备课总是很认真,大家都看得出来,沈老师是个负责人的老师。