基于单片机89C51的数码管显示时钟设计说明.docx

上传人:b****6 文档编号:11917745 上传时间:2023-06-03 格式:DOCX 页数:21 大小:151.32KB
下载 相关 举报
基于单片机89C51的数码管显示时钟设计说明.docx_第1页
第1页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第2页
第2页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第3页
第3页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第4页
第4页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第5页
第5页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第6页
第6页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第7页
第7页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第8页
第8页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第9页
第9页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第10页
第10页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第11页
第11页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第12页
第12页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第13页
第13页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第14页
第14页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第15页
第15页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第16页
第16页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第17页
第17页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第18页
第18页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第19页
第19页 / 共21页
基于单片机89C51的数码管显示时钟设计说明.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机89C51的数码管显示时钟设计说明.docx

《基于单片机89C51的数码管显示时钟设计说明.docx》由会员分享,可在线阅读,更多相关《基于单片机89C51的数码管显示时钟设计说明.docx(21页珍藏版)》请在冰点文库上搜索。

基于单片机89C51的数码管显示时钟设计说明.docx

基于单片机89C51的数码管显示时钟设计说明

基于单片机的数字时钟

摘要

单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能与工作顺序都非常熟悉。

但是却很少知道它的部结构以与工作原理。

由单片机作为数字钟的核心控制器,可以通过它的时钟信号进展实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。

通过键盘可以进展校时、定时等功能。

输出设备显示器可以用液晶显示技术和数码管来显示技术。

本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时〞,“分〞,“秒〞的现代计时装置。

与传统机械表相比,它具有走时准确,显示直观等特点。

另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩大等优点。

关键词:

数字钟系统;单片机;数码管显示

 

Digitalclocksystem

Abstract

SCMinmulti-functiondigitalclockintheapplicationisalreadyverycommon,peopleonthedigitalclockfunctionandareveryfamiliarwiththeworkorder.Butveryfewknowthatitsinternalstructureandworkingprinciples.SCMasadigitalclockfromthecorecontroller,itcanachievetheclocksignaltiming,itstimedatabytheMCUoutput,useofmonitorsdisplayed.Keyboardcanbecarriedoutattheschool,timing,andotherfunctions.Outputdevicescanbeusedliquidcrystaldisplaymonitorsanddigitaltechnologytodisplaythetechnology.

    ThesystemusesMCUwithtime,theschoolfeaturessuchasthedigitalclock,SCMAT89C51isalsousedasthecorecomponentsoftheLEDdigitaldisplaydynamicdisplay"when"and"points"and"seconds"ofthemoderntimedevice.Comparedwiththetraditionalmechanicalwatches,ithasaprecisepaththatintuitive,andothercharacteristics.Inadditionaschoolfunction,stopwatchfunction,andthetimerfunctiontoachieveMCUuseofthedigitalclockwithprogrammingflexibilitytofacilitatetheexpansionoffunctionaladvantages.

Keywords:

digitalclocksystem;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

……………………………………………………………….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-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版.

 

1.开场函数的定义:

#include

#defineucharunsignedchar//宏定义

#defineuintunsignedint//宏定义

#include//循环左移函数库

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)

{

t0=0;

//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)

{

t=0;

if(p31==1)

ss++;

}

if(t>611)

t=0;

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

{

ET0=0;

TR0=0;

ET1=1;

TR1=1;

t=0;

}

}

4.定时器1中断程序:

voidtimer1()interrupt3

{j=610;

if(ds==1)

mm=59;

if(ds==0)

ds=0;

else

ds--;

TH1=(65536-10001)/256;//重新初始化T1

TL1=(65536-10001)%256;

t++;

t0++;

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

P2=0x7f;

//秒分时计算

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

{

ss=59;

mm--;

}

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

{

mm=59;

hh--;

}

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

if(t0==2)

{

t0=0;

//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)

{

t=0;

if(p31==1)

{

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

=0)

ss--;

}

}

if(t>611)

t=0;

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

{

ET1=0;

TR1=0;

ET0=1;

TR0=1;

t=0;

}

}

5.键盘子程序:

voidjian_pan()

{

uinttemp;

temp=P1;

switch(temp)

{

case0xfe:

//秒个位加1

{

while(P1!

=0xff)

{

}

if(ss==59)

ss=00;

else

ss++;

}

break;

case0xfd:

//秒个位减1

{

while(P1!

=0xff)

{

}

if(ss==00)

ss=59;

else

ss--;

}

break;

case0xfb:

//分个位加1

{

while(P1!

=0xff)

{

}

if(mm==59)

mm=00;

else

mm++;

}

break;

case0xf7:

//分个位减1

{

while(P1!

=0xff)

{

}

if(mm==00)

mm=59;

else

mm--;

}

break;

case0xef:

//时个位加1

{

while(P1!

=0xff)

{

}

if(hh==23)

hh=00;

else

hh++;

}

break;

case0xdf:

//时个位减1

{

while(P1!

=0xff)

{

}

if(hh==00)

hh=23;

else

hh--;

}

break;

case0xbf:

{

ss=0;

}

break;

case0x7f:

{

while(P1!

=0xff)

{

}

if(p30==1)

{hh=0;mm=0;ss=0;}

else

{hh=23;mm=59;ss=59;}

}

break;

}

}

4.总结体会

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

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

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

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

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

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

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

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2