基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx

上传人:b****4 文档编号:18088859 上传时间:2022-12-13 格式:DOCX 页数:16 大小:140.22KB
下载 相关 举报
基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx_第1页
第1页 / 共16页
基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx_第2页
第2页 / 共16页
基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx_第3页
第3页 / 共16页
基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx_第4页
第4页 / 共16页
基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx

《基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

基于单片机89C51的数码管显示时钟设计Word文档下载推荐.docx

SCM;

LEDMonitor

设计任务书………………………………………………………………………….………

摘要…………………………………………………………………………………….……

ABSTRACT…………………………………………………………………………….……

1.系统方案…………………………………………………………………………….…..

系统概述设计任务书……………………………………………………….……………

摘要……………………………………………………………………………….…….……

ABSTRACT…………………………………………………………………………………..

1.系统方案………………………………………………………………………….………1

1.1系统概述………………………………………………………………….…………1

1.2方案论证…………………………………………………………………………….1

1.3扩展功能…………………………………………………………………………….2

2.设计过程………………………………………………………………………………….2

2.1设计原理……………………………………………………………………………2

2.2所需元器件……………………………………………………………………….…2

3.电路与程序………………………………………………………………………….…….2

3.1电路设计……………………………………………………………………………2

3.2程序设计……………………………………………………………………………3

3.2.1程序流程图………………………………………………………………….3

3.2.2主要程序分析……………………………………………………………….7

参考文献……………………………………………………………………………6

4.总结体会…………………………………………………………………………………..16

1、系统方案

1.1系统概述

本系统可模拟电子时钟,实现时钟,秒表,倒计时定时器功能,主从CPU数据处理、键盘控制与数据显示。

主控系统能响应按键,并对其进行相应的处理,再把其对应的结果数据在数码管LED上显示。

具体设计基本任务是:

1.用LED数码管显示时间,且能显示时、分、秒的24小时制的数字钟。

2.具有校时功能,具体方法:

设置三个按钮,其中两个按钮分别对“时”、“分”进行校时,另一个按钮则实现对“秒”位清零

系统结构框图如图1.1所示:

图1.1数字钟系统结构框图

1.2方案论证

方案一

1.计数部分采用异步2-5-10进制计数器7490,显示部分参考实验七。

1.计时用的“秒”脉冲信号可用实验板中提供的800Hz分频产生。

800Hz信号同时作为动态扫描显示电路的时钟信号。

2.时、分校时控制,当校时按钮按下时,可对时、分计数器CP端输入秒脉冲来加速计数速度来达到校时目的。

方案二

1.用单片机定时器中断原理实现数码管动态10ms循环扫描,同时完成计数功能,并经过多次中断产生“秒”信号。

2.可控制按键实现时,分,秒加一,减一功能。

考虑到设计硬件简单原则,利用单片机实现的数字时钟具有编程灵活,便于功能的

扩充等优点,故本设计采用方案二。

1.3扩展功能

1.实现秒表功能。

2.可以用于倒计时定时。

3.可以时分秒清零。

2.设计过程

1.原理

本设计主要应用了单片机原理,利用单片机的I/O口,由键盘控制I/O口,进行单片机相应的程序处理,再用I/O口控制数码管的显示。

利用开关来控制开启,暂停计时,并切换时钟,秒表,倒计时定时器功能。

2.所需元器件

六位一体数码管,89C51单片机,7407芯片,12M晶振,按键若干,开关若干,电阻若干,电容若干,导线

3.电路与程序设计

3.1电路设计:

图3.1总体电路图

本系统的设计电路如图3.1所示,左边按键控制时分秒加一减一操作,右边开关切换数码管显示时钟,秒表,倒计时定时器等功能。

单片机下方按键有复位功能:

当在时钟方式时,此按键有清零作用;

当在倒计时定时器方式时,此按键按下,时分秒均付为最大值。

右上角是六位一体的数码管LED,用于显示。

数码管左边的上拉电阻具有自动拉高P0I/O口的功能。

数码管下方的7407芯片有限流作用,用于防止数码管电流过大而烧毁。

3.2程序设计

3.2.1程序流程图

图3-2-1为主程序流程图,图3-2-2为定时器0程序流程图,图3-2-3为定时器1程序流程图。

图3-2-1主程序流程图

此为主程序流程图,初始化后,就一直在while里循环,并把秒,分,时分别拆成各位和十位两个数,放到相应的数码管上显示,并检测是否有按键按下,和定时器T0,T1溢出,来执行相应的键盘子程序和定时器0,1的中断程序。

图3-2-2定时器0程序流程图

此为定时器0流程图,在主程序检测到T0溢出时执行该子程序,该中断主要执行数码管循环显示数字,并检测到一秒后秒加一的功能。

图3-2-3定时器1程序流程图

此为定时器1流程图,在主程序检测到T1溢出时执行该子程序,该中断程序主要执行数码管循环显示数字,并检测到一秒后秒减一的功能。

参考文献

[1]康华光,邹寿彬,秦臻.电子技术基础——数字部分.北京——高等教育出版社,2006.1

[2]张毅刚,彭喜元,董继成.单片机原理及应用.高等教育出版社,2003.12

[3]刘鲲,刘春亮,黄焱.单片机C语言入门.人民邮电出版社,2008年4月第1版.

3.2.2源程序

1.开始函数的定义:

#include<

reg51.h>

#defineucharunsignedchar//宏定义

#defineuintunsignedint//宏定义

#include<

intrins.h>

//循环左移函数库

voidjian_pan();

//键盘子函数

charcodeduan_ma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};

//时钟显示数组

intss,mm,hh,s_shi,s_ge,m_shi,m_ge,h_shi,h_ge,t,t0,zy,j,ds;

//zy为左移的意思

sbitp32=P3^2;

sbitp31=P3^1;

sbitp30=P3^0;

sbitp37=P3^7;

2.主程序:

voidmain()

{ds=1;

//定时器初始化

P2=0xfe;

//数码管位初始化

P0=0x3f;

//如果时时钟,断码初始置0

P1=0xff;

//键盘初始

t=0;

//1S时,t=700

t0=0;

//数码管动态显示一次,t0=2,10ms左右

TH0=(65536-10001)/256;

TL0=(65536-10001)%256;

TH1=(65536-10001)/256;

TL1=(65536-10001)%256;

EA=1;

ET1=0;

//开定时器0

TR1=0;

//定时器开始工作

ET0=1;

TR0=1;

while

(1)

{

if(P1!

=0xff)//判断是否有键,有键就执行jian_pan子程序

jian_pan();

s_shi=ss/10;

//拆分

s_ge=ss%10;

m_shi=mm/10;

m_ge=mm%10;

h_shi=hh/10;

h_ge=hh%10;

}

}

3.定时器0中断程序:

voidtimer0()interrupt1

{

if(p32==1)

j=610;

else

j=10;

TH0=(65536-10001)/256;

//重新初始化T0

TL0=(65536-10001)%256;

t++;

t0++;

if(P2==0xdf)//如果数码管显示到第6个下一个显示第1个数码管11011111->

01111111->

11111110

P2=0x7f;

//秒分时计算

if(ss==60)//若ss为60,ss=0,同时mm+1

ss=00;

mm++;

if(mm==60)//若mm为60,mm=0,同时hh+1

mm=00;

hh++;

if(hh==24)//若hh为24,hh=0

hh=00;

//数码管动态显示,t=0~2时左移一位,并显示那一位相应的值

if(t0==2)

//P2循环左移一位

zy=P2;

zy=_crol_(zy,1);

P2=zy;

//相应数码管显示相应的数值

if(P2==0xfe)

P0=duan_ma[s_ge];

if(P2==0xfd)

P0=duan_ma[s_shi];

if(P2==0xfb)

P0=duan_ma[m_ge+10];

if(P2==0xf7)

P0=duan_ma[m_shi];

if(P2==0xef)

P0=duan_ma[h_ge+10];

if(P2==0xdf)

P0=duan_ma[h_shi];

if(t==j)

if(p31==1)

ss++;

if(t>

611)

if(p30==0)//转到timer1上去

ET0=0;

TR0=0;

ET1=1;

TR1=1;

4.定时器1中断程序:

voidtimer1()interrupt3

{j=610;

if(ds==1)

mm=59;

if(ds==0)

ds=0;

ds--;

//重新初始化T1

TL1=(65536-10001)%256;

if(ss==-1)//若ss为60,ss=0,同时mm+1

ss=59;

mm--;

if(mm==-1)//若mm为60,mm=0,同时hh+1

hh--;

if((ss||hh||mm)!

=0)

ss--;

if(p30==1)//转到timer1上去

5.键盘子程序:

voidjian_pan()

uinttemp;

temp=P1;

switch(temp)

case0xfe:

//秒个位加1

while(P1!

=0xff)

if(ss==59)

break;

case0xfd:

//秒个位减1

if(ss==00)

case0xfb:

//分个位加1

if(mm==59)

case0xf7:

//分个位减1

if(mm==00)

case0xef:

//时个位加1

if(hh==23)

case0xdf:

//时个位减1

if(hh==00)

hh=23;

case0xbf:

ss=0;

case0x7f:

if(p30==1)

{hh=0;

mm=0;

ss=0;

{hh=23;

mm=59;

ss=59;

4.总结体会

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。

本系统是以单片机AT89C52芯片为核心部件,实现了时钟、倒计时、秒表的功能。

此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于单片机这方面的知识。

通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。

使我初步了解了单片机的原理,学会了使用仿真软件进行仿真,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能向前迈了一大步。

通过本次电子技术课程设计,我们充分认识到了课程设计的理要性和必要性,本次设计使们对已学过的基础知识有了更深入的理解。

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

当前位置:首页 > 求职职场 > 简历

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

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