数字钟的proteus仿真电路及C语言程序设计Word格式.docx

上传人:b****5 文档编号:19824595 上传时间:2023-01-10 格式:DOCX 页数:9 大小:257.54KB
下载 相关 举报
数字钟的proteus仿真电路及C语言程序设计Word格式.docx_第1页
第1页 / 共9页
数字钟的proteus仿真电路及C语言程序设计Word格式.docx_第2页
第2页 / 共9页
数字钟的proteus仿真电路及C语言程序设计Word格式.docx_第3页
第3页 / 共9页
数字钟的proteus仿真电路及C语言程序设计Word格式.docx_第4页
第4页 / 共9页
数字钟的proteus仿真电路及C语言程序设计Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

数字钟的proteus仿真电路及C语言程序设计Word格式.docx

《数字钟的proteus仿真电路及C语言程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《数字钟的proteus仿真电路及C语言程序设计Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

数字钟的proteus仿真电路及C语言程序设计Word格式.docx

这里要求实现一个具有实时时钟显示和闹钟控制功能的数字钟。

通过数字钟的设计与制作,将前面所学的单片机内部定时资源、I/O端口、键盘和显示接口等知识融会贯通,锻炼独立设计、制作和调试应用系统的能力,深入领会单片机应用系统的硬件设计、模块化程序设计及软硬件调试方法等,并掌握单片机应用系统的开发过程。

1.2数字钟设计要求

设计并制作具有如下功能的数字钟:

(1)自动计时,由6位LED先四起显示时、分、秒。

(2)具备校准功能,可以设置当前时间。

(3)具备定时启动功能,可以设置闹钟时间。

1.3数字钟设计方案

(1)采用实时时钟芯片。

针对应用系统对实时功能的普遍需求,各大芯片生产厂家陆续推出了一系列实时时钟集成电路,如DS1287、DS12887、DS1302、PCF8563、S35190等。

这些实时时钟芯片具备年、月、日、时、分、秒、计时功能和多点定时功能,计时数据每秒自动更新一次,不需程序干预。

单片机可通过中断或查询方式读取计时数据。

实时时钟芯片的计时功能无须占用CPU时间,功能完善,精度高,软件程序设计相对简单,在实时工业测控系统中多采用这一类专用芯片来实现。

(2)利用单片机并行I/O端口,实现LED动态显示。

该方案直接使用单片机并行口作为显示接口,无须外扩接口芯片,但占用资源较多,且动态扫描显示方式需占用CPU时间。

在非实时测控或单片机具有足够并行口资源的情况下可以采用。

二:

硬件设计

2.1数字钟系统硬件描述

1.控制器用AT89S51,12M晶振

2.数码管动态扫描驱动——P2口

3.数码管段码驱动——P1口

4.闹铃驱动——P1.0

5.调整键K1——P3.2(外部中断0,正常、调时、调分、调秒)

6.定时/正常切换键K2——P3.3

7.时间参数低位加1键K3——P3.4

8.时间参数高位加1键K4——P3.5

2.2单片机的介绍

单片机也被称为微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:

一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!

但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!

只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

2.3数字钟系统设计构思

1.主流程是取时间参数,显示时间参数。

2.利用T0中断来完成计时、比较定时时间、驱动闹铃。

3.利用T1中断完成动态显示中,调整时间闪烁效果的定时。

4.利用外部中断0来完成调整选择功能。

5.利用外部中断1完成定时显示,当前时间显示的切换

6.K3、K4键完成时间参数的循环加1操作

2.4数字钟硬件电路图显示

三:

软件设计

3.1数字钟主程序设计流程图

3.2数字钟系统C语言程序代码设计

本系统的软件系统主要可分为显示数字程序、定时计数中断程序、时间调整程序、闹钟设置程序四大模块。

1:

显示数字函数

voiddisplay(uchar*p)

{ucharbuffer[6]={0,0,0,0,0,0};

uchark,i,j,m,temp;

ucharled[]={0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f};

buffer[0]=p[0]/10;

buffer[1]=p[0]%10;

buffer[2]=p[1]/10;

buffer[3]=p[1]%10;

buffer[4]=p[2]/10;

buffer[5]=p[2]%10;

for(k=0;

k<

2;

k++)

{temp=0x01;

for(i=0;

i<

6;

i++)

{

j=buffer[i];

P0=~temp;

P1=led[j];

//P1送断码

temp<

<

=1;

for(m=0;

m<

100;

m++);

//每一位显示延时

P1=0x00;

//关显示

}}}

2:

修改时钟函数

voidcum()

{if(secbit==1){//时钟秒修改标志为1,秒单元内容加1

if(clockbuf[2]==59)clockbuf[2]=0;

elseclockbuf[2]++;

}

elseif(minbit==1){//时钟分修改标志为1,分单元内容加1

if(clockbuf[1]==59)clockbuf[1]=0;

elseclockbuf[1]++;

elseif(hourbit==1){//时钟小时修改标志为1,小时单元内容加1

if(clockbuf[0]==23)clockbuf[0]=0;

elseclockbuf[0]++;

elseif(rminbit==1){//闹钟分修改标志为1,分单元内容加1

if(bellbuf[1]==59)bellbuf[1]=0;

elsebellbuf[1]++;

elseif(rhourbit==1){//闹钟小时修改标志为1,小时单元内容加1

if(bellbuf[0]==23)bellbuf[0]=0;

elsebellbuf[0]++;

3:

闹钟设置函数

voidftion1()

{

if(secbit==1||minbit==1||hourbit==1||timdata==1)

{rhourbit=0;

rtimbit=0;

rtimdata=0;

else

{

dis_p=bellbuf;

//设置闹钟显示标志

rtimdata++;

//将闹钟修改记录值加1

switch(rtimdata){

case0x01:

rminbit=1;

break;

//记录值为1,将闹钟分修改标志置1

case0x02:

rminbit=0;

rhourbit=1;

//记录值为2,将时钟分修改标志置1

case0x03:

rhourbit=0;

//按3次则清闹钟单元修改位置记录

armbit=1;

//设置闹钟已设置标志位

dis_p=clockbuf;

//恢复时钟显示标志

break;

default:

}

}}

4:

定时器中断函数

voidclock()interrupt1

EA=0;

//关中断

if(msec1!

=40)msec1++;

{msec1=0;

//到10ms否,不到则msec1加1

if(msec2!

=10)msec2++;

//到1s否,不到则msec2加1

else

if(rtimbit==1)count++;

msec2=0;

if(clockbuf[2]!

=59)clockbuf[2]++;

//到1min否,不到则clockbuf[2]加1

else

{

clockbuf[2]=0;

if(clockbuf[1]!

=59)clockbuf[1]++;

//到1h否,不到则clockbuf[1]加1

else

{

clockbuf[1]=0;

if(clockbuf[0]!

=23)

clockbuf[0]++;

//到24h否,不到则clockbuf[0]加1

elseclockbuf[0]=0;

}

}}}

EA=1;

//开中断

3.3数字钟仿真结果显示

电子钟正常显示仿真:

启动闹钟:

设置定时数值:

(如图设置为10分钟)

四:

设计总计

电子制作不一定一次就能成功,总有个反复过程。

因此碰到电路不正常工作的情况时,千万要冷静,不要慌乱。

此时既不要埋怨自己,也不要责怪电路,应该集中精力去检查电路。

首先应该检查电路的连线。

电路越复杂,连线出现错误的几率也就越高,要按照电路图反复检查每一根连线和连接点,每检查一根连线和一个连接点,都在电路图上作一个记录,特别要注意检查接触不好等情况。

其次,要检查元件的极性,注意极性方向。

经过努力终于找到了电路不正常工作的原因,此时我们的知识技能也一定有了很大的提高。

通过这次实训使我更深刻地感受到Proteus的魅力,完成对数字电子钟的设计与制作调试,使我对单片机应用系统的设计过程进行了掌握。

单片机应用系统开发的一般工作流程包括:

项目任务的需求分析,制作系统软、硬件方案,系统硬件设计与制作,系统软件模块划分与设计,系统软、硬件联调,程序固化,脱机运行等。

当我们接手一个课题或项目的时候,不是马上就动手做,而是先进行可行性论证。

首先提出几套方案,然后对各个方案进行对比,最后找出最适合的设计方案。

对于芯片的使用,我们应该在了解它的各项功能的前提条件下,灵活巧妙地运用。

具体的芯片资料和图片我们通过查阅相关的书籍,在网上能够很方便的查找。

这次大型作业虽然时间很短,但是从中学到很多东西,是自己对以前学的知识有了进一步得了解。

并增强了对数字电子技术这门课程的兴趣。

同时也发现自对数电知识和电子设计软件掌握得不够。

这次设计仿真我们用到了仿真软件Proteus和编译软件keil,从软件的安装到使用,从网上查阅资料学到了很多课堂之外的专业知识。

这次的设计最主要是单片机的应用,从控制到接口。

技术是一个多学科的综合,要做到灵活应用需要自我学习各种辅助技术的应用。

这次明显体会到自己知识的匮乏,思考问题不全面,这激励我要学好基础知识的同时要拓展知识面,增强自己的综合能力,从而使得自己成为一个有综合能力的人才而更加适应社会。

参考文献

[1]周景润。

基于PROTEUS的电路及单片机系统设计与仿真[M].北京:

北京航空航天大学出版社,2006.

[2]单片机AEDK5196ET实验指导书苏州大学通信与电子工程系

[3]李光才.单片机课程设计实例指导[M].北京北京航空航天大学出版社2004

[4]李朝青.单片机原理及接口技术(简明修订版).杭州:

北京航空航天大学出版社,1998

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

当前位置:首页 > 高中教育 > 语文

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

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