数字钟课程设计万能模板.docx

上传人:b****6 文档编号:7594289 上传时间:2023-01-25 格式:DOCX 页数:12 大小:58.09KB
下载 相关 举报
数字钟课程设计万能模板.docx_第1页
第1页 / 共12页
数字钟课程设计万能模板.docx_第2页
第2页 / 共12页
数字钟课程设计万能模板.docx_第3页
第3页 / 共12页
数字钟课程设计万能模板.docx_第4页
第4页 / 共12页
数字钟课程设计万能模板.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数字钟课程设计万能模板.docx

《数字钟课程设计万能模板.docx》由会员分享,可在线阅读,更多相关《数字钟课程设计万能模板.docx(12页珍藏版)》请在冰豆网上搜索。

数字钟课程设计万能模板.docx

数字钟课程设计万能模板

单片机课程设计实验报告课设名称:

电子时钟

1.1设计背景

随着科学技术的发展和电子技术产业结构调整,单片机开始迅速发展,由于家用电器逐渐普及,市场对于智能时钟控制系统的需求也越来越大。

近些年,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。

多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。

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

1.2 课程设计目的

通过《单片机原理与应用》课程设计,使学生掌握单片机及其扩展系统设计的方法和设计原则及相应的硬件调试的方法。

进一步加深单片机及其扩展系统设计和应用的理解

1.3设计要求

1、主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成

3、译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来

二、总体方案设计

2.1电路的总体原理框图

根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:

单片机模块、数码显示模块与按键模块,模块之间的关系图如下面得方框电路图1所示

 

 

2.5总体方案介绍

2.5.1计时方案

利用STC89C52单片机内部的定时/计数器进行中断时,配合软件延时实现时、分、秒的计时。

该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。

2.5.2控制方案

STC89C52的P0口和P1口外接由八个LED数码管(LED8~LED1)构成的显示器,用P0口作LED的段码输出口,P1口作八个LED数码管的位控输出线,P3口外接四个按键A、B、C构成键盘电路。

2.6元件清单

1.STC89C52RC处理器若干

2.共阳四位八段数码管若干

3.焊接单股导线若干

4.STC89C52RC处理器若干

5.共阳四位八段数码管若干

6.焊接单股导线若干

每人必备件

(1)1K电阻8个

(2)10K电阻5个(3)9012三极管4个(4)30pF电容2个(5)10uF电容1个(6)12M晶振1个(7)40脚插座1个(8)14脚插座1个

三、数字钟的硬件设计

3.1.1芯片分析

STC89C52单片机引脚图如下:

MCS-51单片机是标准的40引脚双列直插式集成电路芯片,其各引脚功能如下:

VCC:

+5V电源(隔行)VSS:

接地。

RST:

复位信号。

当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。

XTAL1和XTAL2:

外接晶体引线端。

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

P0口:

P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,它不再需要多路转接电路MUX;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。

P2口:

P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。

P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。

P3口:

P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。

当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。

当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出.

3.1.2晶振电路

右图所示为时钟电路原理图,在AT89S51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图3-2晶振电路

3.2数码显示模块设计

分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。

外加正向电压时二极管导通,发出清晰的光。

只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。

LED数码管有共阳、共阴之分。

系统采用动态显示方式,用P0口来控制LED数码管的段控线,而用P2口来控制其位控线。

四、系统软件设计

4.1软件设计分析

在编程上,首先进行了初始化,定义程序的的入口地址以及中断的入口地址,在主程序开始定义了一组固定单元用来储存计数的时.分.秒,在显示初值之后,进入主循环。

在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能。

4.2源程序清单

#include

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};

unsignedchartemp,t0,t1,counter,hou,min,sec;

sbitd1=P2^0;

voiddelay()

{

unsignedcharx,y;

for(x=2;x>0;x--)

for(y=100;y>0;y--);

}

voidinit()

{

t0=0;

d1=0;

counter=0;

hou=12;

min=0;

sec=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

voiddisplay(hou,min,sec)

{

P1=0xfe;

P0=table[hou/10];

delay();

P1=0xfd;

P0=table[hou%10];

delay();

P1=0xfb;

P0=table[10];

delay();

P1=0xf7;

P0=table[min/10];

delay();

P1=0xef;

P0=table[min%10];

delay();

P1=0xdf;

P0=table[10];

delay();

P1=0xbf;

P0=table[sec/10];

delay();

P1=0x7f;

P0=table[sec%10];

delay();

P0=table[11];

}

voidmain()

{

init();

while

(1)

{

P3=0xff;

temp=P3;

while(temp==0xfb)

{

delay();

temp=P3;

while(temp==0xfb)

{

counter++;

if(counter==3)

counter=0;

while(temp==0xfb)

{

temp=P3;

display(hou,min,sec);

}

}

}

if(counter==0)

display(hou,min,sec);

else

{

P3=0xff;

temp=P3;

while(temp==0xf7||temp==0xef)

{

delay();

temp=P3;

while(temp==0xf7||temp==0xef)

{

temp=P3;

if(counter==1)

{

switch(temp)

{

case0xf7:

{

hou++;

if(hou==24)

hou=0;

}

break;

case0xef:

{

hou--;

if(hou==-1)

hou=23;

}

break;

}

}

if(counter==2)

{

switch(temp)

{

case0xf7:

{

min++;

if(min==60)

min=0;

}

break;

case0xef:

{

min--;

if(min==-1)

min=59;

}

}

}

while(temp==0xf7||temp==0xef)

{

temp=P3;

display(hou,min,sec);

}

}

}

P1=0xfb;

P0=table[10];

delay();

P1=0xdf;

P0=table[10];

delay();

P1=0xbf;

P0=table[sec/10];

delay();

P1=0x7f;

P0=table[sec%10];

delay();

switch(counter)

{

case1:

{

P1=0xf7;

P0=table[min/10];

delay();

P1=0xef;

P0=table[min%10];

delay();

if(t0<=10)

{

P1=0xfe;

P0=table[hou/10];

delay();

P1=0xfd;

P0=table[hou%10];

delay();

}

else

{

P1=0xfe;

P0=table[11];

delay();

P1=0xfd;

P0=table[11];

delay();

}

}

break;

case2:

{

P1=0xfe;

P0=table[hou/10];

delay();

P1=0xfd;

P0=table[hou%10];

delay();

if(t0<10)

{

P1=0xf7;

P0=table[min/10];

delay();

P1=0xef;

P0=table[min%10];

delay();

}

else

{

P1=0xf7;

P0=table[11];

delay();

P1=0xef;

P0=table[11];

delay();

}

}

break;

}

}

}

}

voidtimer0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

t1++;

if(t0==20)

{

t0=0;

sec++;

if(sec==60)

{

sec=0;

min++;

if(min==60)

{

min=0;

hou++;

d1=1;

t1=0;

if(hou==24)

{

hou=0;

}

}

}

}

if(t1==20)

{

d1=0;

t1=0;

}

}六、设计总结。

设计体会单片机作为我们主要的专业课程之一,单片机课程设计很有必要,而且很有意义。

在这次课程设计中,运用到了很多以前的专业知识,虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的一大收获。

另外,要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,反复修改、不断改进是程序设计的必经之路。

课程设计结束了,但是从中学到的发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,不能灵活运用。

通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

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

当前位置:首页 > 高等教育 > 工学

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

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