数字电子钟设计Word文件下载.docx

上传人:b****6 文档编号:17475929 上传时间:2022-12-01 格式:DOCX 页数:18 大小:500.88KB
下载 相关 举报
数字电子钟设计Word文件下载.docx_第1页
第1页 / 共18页
数字电子钟设计Word文件下载.docx_第2页
第2页 / 共18页
数字电子钟设计Word文件下载.docx_第3页
第3页 / 共18页
数字电子钟设计Word文件下载.docx_第4页
第4页 / 共18页
数字电子钟设计Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数字电子钟设计Word文件下载.docx

《数字电子钟设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字电子钟设计Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

数字电子钟设计Word文件下载.docx

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,还弥补了一些在单片机学习过程中的不足。

老师给我们补充了很多知识,在做实验过程中,很认真的指导我们,严格的要求我们,而且课堂时间很有趣,总是让人觉得时间好短。

老师备课总是很认真,大家都看得出来,沈老师是个负责人的老师。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1