6位LED显示时钟计时器.docx

上传人:b****8 文档编号:9642885 上传时间:2023-05-20 格式:DOCX 页数:17 大小:280.92KB
下载 相关 举报
6位LED显示时钟计时器.docx_第1页
第1页 / 共17页
6位LED显示时钟计时器.docx_第2页
第2页 / 共17页
6位LED显示时钟计时器.docx_第3页
第3页 / 共17页
6位LED显示时钟计时器.docx_第4页
第4页 / 共17页
6位LED显示时钟计时器.docx_第5页
第5页 / 共17页
6位LED显示时钟计时器.docx_第6页
第6页 / 共17页
6位LED显示时钟计时器.docx_第7页
第7页 / 共17页
6位LED显示时钟计时器.docx_第8页
第8页 / 共17页
6位LED显示时钟计时器.docx_第9页
第9页 / 共17页
6位LED显示时钟计时器.docx_第10页
第10页 / 共17页
6位LED显示时钟计时器.docx_第11页
第11页 / 共17页
6位LED显示时钟计时器.docx_第12页
第12页 / 共17页
6位LED显示时钟计时器.docx_第13页
第13页 / 共17页
6位LED显示时钟计时器.docx_第14页
第14页 / 共17页
6位LED显示时钟计时器.docx_第15页
第15页 / 共17页
6位LED显示时钟计时器.docx_第16页
第16页 / 共17页
6位LED显示时钟计时器.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

6位LED显示时钟计时器.docx

《6位LED显示时钟计时器.docx》由会员分享,可在线阅读,更多相关《6位LED显示时钟计时器.docx(17页珍藏版)》请在冰点文库上搜索。

6位LED显示时钟计时器.docx

6位LED显示时钟计时器

时钟计时器的设计

 

时钟计时器的设计

1.引言

1.1.设计意义

时钟计时器在现在应用场合非常的广泛,近年来,随着科学技术的进步和时代的发展,人们对时钟的功能和精度提出了越来越高的要求,各种时钟的设计也越来越重要。

秒表/时钟计时器是在一种计时器上实现两种基本功能的一种器件。

它广泛应用于各种场所,同时,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化,而受到广大消费者的喜爱引言近年来随着计算机技术的飞速发展,计算机也正式形成了通用计算机系统和嵌入式计算机系统二个分支。

单片机作为最典型的嵌入式系统,由于其微小的体积和极低的成本,广泛应用于家用电器、仪器仪表、工业控制单元以及通信产品中,成为现代电子系统中最重要的智能化工具。

同时数模电技术、微电子技术也快速发展使得大量集成芯片出现,从而实现很多简单功能代替了原来的模拟电路。

这样利用单片机、集成芯片和电子电路就可以很方便的进行设计,其中最典型、现在应用也很多的就是电子产品的设计。

本设计就是利用单片机技术将秒表和时钟两种计时器的功能集中到一种计时装置上,从而实现计时器功能的集成化,使其使用起来更加方便。

本设计的一大特点就是在硬件设计中采用实时时钟芯片来实现计时,大大简化了硬件电路,从而使设计更加简便易行。

1.2.系统功能要求

时钟计时器要求用单片机及6位数码管显示时,分,秒,以24小时计时方式运行,能整点提醒(但蜂鸣器,次数代表整点时间),使用按键开关可实现时,分调整,秒表|时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)的歌功能。

1.3.本组成员所做的工作

方案原理论证

焊接

调试

设计报告

2.方案设计

方案论证:

为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。

由于静态显示法需要数据锁存器等硬件,接口要复杂些,又考虑到时钟显示只有6位,且系统没有其他复杂的处理任务,所以决定采用动态扫描法实现LED的显示。

单片机采用易购的AT89S52系列,这种单片机具有足够的空余硬件资源,可以实现其他的扩充功能。

如果考虑使用电池供电,则可采用LV系列单片机。

时钟计时器电路系统的总体设计框图如下所示

3.硬件设计

时钟计时器的硬件电路如图所示。

该电路采用AT89S52单片机最小化应用实际;采用共阳7段LED显示器;P0口输出段码数据;P2.0~P2.5口作列扫描输出;P1.0、P1.1、P1.2、和P1.3口接4个按键开关,用于调时及功能设置;P1.7端口接5v的小蜂鸣器,用于按键发音及定时提醒、整点到时提醒等;为了提供共阳LED数码管的列扫描驱动电压,用三极管9012做电源驱动输出;采用12MHZ晶振,可提高秒计时的精确性。

4.实验目的

1.掌握stc89c52编程原理。

a.掌握stc89c52可编程并行接口的工作原理及初始化方法,验证各种工作方式的功能。

b.掌握用stc89c52扩展PC机并行接口的方式。

c.了解stc89c52工作在方式1时,利用应答信号控制数据传输的过程。

2.了解键盘电路的工作原理。

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4×4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

3.掌握键盘接口电路的编程方法。

设计人机界面接口,要求在微机屏幕上动态地显示当前实验的内容和实验的结果,包括stc89c52的工作方式,输入的数据和输出的结果

设计人机界面接口,要求在微机屏幕上,以菜单方式列出并行接口stc89c52原理实验的内容,并根据实验内容设置好工作方式选择跳线开关,用户可以通过键盘选择实验的内容。

设计原理与分析

1、实验原理:

为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。

由于静态显示法需要数据锁存器等硬件,接口要复杂些,又考虑到时钟显示只有6位,且系统没有其他复杂的处理任务,所以决定采用动态扫描法实现LED的显示。

单片机采用易购的AT89S52系列,这种单片机具有足够的空余硬件资源,可以实现其他的扩充功能。

如果考虑使用电池供电,则可采用LV系列单片机。

时钟计时器电路系统的总体设计框图如下所示

 

(1)最小系统及控制原理图

(2)LED显示及驱动

4.软件设计

主程序

本设计中计时采用定时器T0中断完成,秒表使用定时器T1中断完成。

主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。

其主程序执行流程如下图

 

 

按时间鸣叫次数

 

以上为主程序流程图

 

显示子程序

时间显示子程序每次显示6个连续内存单元的十进制BCD码数据,首地址在调用显示程序时现指定。

显示时,先取出内存地址中的数据,然后查的对应的显示用段码从P0口输出,P2口将对应段码选中供电,就能显示该地址单元的数据值。

为了显示小数点及“-”“A”等特殊字符,在显示班级和计时时应采用不同的显示子程序。

定时器T0中断服务程序

定时器T0用于时间计时。

定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断里累计20次时,对秒计数单元进行加1操作。

时钟计数单元地址分别在70H~71H、76H~77H、78H~79H中,最大计时值为23时59分59秒。

7AH单元内存放“熄灭符“数据(#0A),用于时间调整时的闪烁功能。

在计数单元中,采用十进制BCD码计数,满10进位。

流程图如下

T0中断计时程序流程图

 

5.系统调试

调试分为硬件调试和软件调试

硬件调试:

在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。

在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道到底是哪一方出错了。

当然,在设计的过程中也存在着失误和不足,在调试中进行修改了。

软件调试:

软件为老师所提供提供,其原理在上一模块以作说明,在这里

再作说明,软件经调试无误,直接将其下再到单片机中,看是否达到所要的效果

软件部分是先参考书上的例子,然后自己根据硬件电路写程序,

由于以前所学是单片机汇编语言,所以这个系统在编写程序过程中都采用汇编语言编写。

刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。

6.设计总结

本文是关于基于ST89S52设计的时钟计时器,能够进行计时,显示时间,定时提醒等功能。

是非常实用的一个设计,此次的设计对于我们更好的学习和掌握相关知识有很大的帮助。

在此次设计中,我们得到以下体会:

一、在这次时钟计时器设计的过程让我进一步熟悉KEIL及Proteus的使用。

二、重新复习并进一步学习了MCS-52优点,明确了研究目标。

三、在后的设计中,既要想到电路器件的联合使用,又要灵活变通,举一反三。

四、在焊接方面,我们了解到焊接某些器件时,要先消去电烙铁上的静电,防止静电对芯片特别是放大器件造成伤害,焊接二极管、三极管等芯片时要快,防止持续高温损坏芯片。

我们在焊接时争取一次性焊接成功,当焊接好时再去检查时非常困难,所以要非常的仔细。

五、从中我们学习到了大家的团结是非常重要的,组里的每一个成员都是必不可少的,因此团结合作的精神是非常的重要的。

课程设计心得

在此次设计中,我们得到以下体会:

一、在这次时钟计时器设计的过程让我进一步熟悉KEIL及Proteus的使用。

二、重新复习并进一步学习了单片机,明确了研究目标。

三、在后的设计中,既要想到电路器件的联合使用,又要灵活变通,举一反三。

四、在焊接方面,我们了解到焊接某些器件时,要先消去电烙铁上的静电,防止静电对芯片特别是放大器件造成伤害,焊接二极管、三极管等芯片时要快,防止持续高温损坏芯片。

我们在焊接时争取一次性焊接成功,当焊接好时再去检查时非常困难,所以要非常的仔细。

/*********************************************************************/

//

//采用8位LED动态扫描时钟演示程序

//LRM2004.03.31

/*********************************************************************/

//使用12MHZ晶振,P0口输出段码,P2口作列扫描,用共阳LED数码管

//

#include"reg51.h"

codechardis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};

/*共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮"*/

codecharscan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列扫描控制字

datachardisdata[6]={0x00,0x00,0x00,0x00,0x00,0x00};//计时单元数据初值,共6个

datachardis[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00};//显示单元数据,共6个数据

datacharcon1s=0x00,con04s=0x00,con=0X00;//1秒定时用

sbitkey0=0x90;

sbitkey1=0x91;

sbitkey2=0x92;

//

/****************/

//1毫秒延时程序//

/***************/

delay1ms(intt)

{

inti,j;

for(i=0;i

for(j=0;j<120;j++)

;

}

/****************/

//键扫描子程序//

/****************/

keyscan()

{

EA=0;

if(key0==0)

{

delay1ms(10);

while(key0==0);

if(dis[con]==10)

{dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];}

con++;TR0=0;ET0=0;TR1=1;ET1=1;

if(con>=6)

{con=0;TR1=0;ET1=0;TR0=1;ET0=1;}

}

//

if(con!

=0)

{

if(key1==0)

{

delay1ms(10);

while(key1==0);

disdata[con]++;

if(disdata[con]>=10)

{disdata[con]=0;}

dis[con]=disdata[con];dis[6]=0x0a;

}

}

//

if(con!

=0)

{

if(key2==0)

{

delay1ms(10);

while(key2==0);

if(disdata[con]==0)

{disdata[con]=0x09;}

else{disdata[con]--;}

dis[con]=disdata[con];dis[6]=0x0a;

}

}

EA=1;

}

//

/***********/

//扫描程序//

/**********/

scan()

{

chark;

for(k=0;k<6;k++)

{

P0=dis_7[dis[k]];P2=scan_con[k];delay1ms

(1);P2=0xff;

}

}

/*************/

//初始化程序//

/*************/

clearmen()

{

inti;

for(i=0;i<6;i++)

{

dis[i]=disdata[i];}

TH0=0x3C;TL0=0xB0;//;50MS定时初值(T0计时用)

TH1=0x3C;TL1=0xB0;//;50MS定时初值(T1计时用)

TMOD=0X11;ET0=1;ET1=1;TR1=0;TR0=1;EA=1;//

}

/**********/

//主程序//

/*********/

main()

{

clearmen();

while

(1)

{

scan();

keyscan();

}

}

/********************/

//1秒中断处理程序//

/*******************/

voidtime_intt0(void)interrupt1

{

ET0=0;TR0=0;TH0=0x3C;TL0=0xB0;TR0=1;

con1s++;

if(con1s==20)

{

con1s=0x00;

disdata[0]++;

if(disdata[0]>=10)

{

disdata[0]=0;disdata[1]++;

if(disdata[1]>=6)

{

disdata[1]=0;disdata[2]++;

if(disdata[2]>=10)

{

disdata[2]=0;disdata[3]++;

if(disdata[3]>=6)

{

disdata[3]=0;disdata[4]++;

if(disdata[4]>=10)

{

disdata[4]=0;disdata[5]++;

}

if(disdata[5]==2)

{

if(disdata[4]==4)

{

disdata[4]=0;disdata[5]=0;

}

}

}

}

}

}

dis[0]=disdata[0];dis[1]=disdata[1];dis[2]=disdata[2];

dis[3]=disdata[3];dis[4]=disdata[4];dis[5]=disdata[5];

}

ET0=1;

}

/********************/

//0.4秒闪烁中断程序//

/*******************/

voidtime_intt1(void)interrupt3

{

EA=0;TR1=0;TH1=0x3C;TL1=0xB0;TR1=1;

con04s++;

if(con04s==8)

{

con04s=0x00;

dis[7]=dis[con];dis[con]=dis[6];dis[6]=dis[7];

}

EA=1;

}

//***************************************************************

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

当前位置:首页 > 表格模板 > 合同协议

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

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