基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx

上传人:b****2 文档编号:4008672 上传时间:2023-05-02 格式:DOCX 页数:20 大小:462KB
下载 相关 举报
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第1页
第1页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第2页
第2页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第3页
第3页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第4页
第4页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第5页
第5页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第6页
第6页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第7页
第7页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第8页
第8页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第9页
第9页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第10页
第10页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第11页
第11页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第12页
第12页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第13页
第13页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第14页
第14页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第15页
第15页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第16页
第16页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第17页
第17页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第18页
第18页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第19页
第19页 / 共20页
基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx

《基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

基于单片机设计简易数字钟说明书本科学位论文Word文档格式.docx

二硬件设计3

2.1单片机3

2.2复位电路4

2.3晶振电路4

2.4键盘调整单元5

2.5数码管与三极管显示6

三软件设计7

3.1系统主程序7

3.2中断程序7

3.3显示函数7

3.4键盘扫描程序8

3.5时钟实现的基本方法8

四心得体会8

n附录源程序9

课程设计的目的

(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制能力;

(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;

(3)对课题设计方案的分析、选择、比较、熟悉单片机应用系统开发、研制过程,软硬件设计的方法、内容及步骤。

课程设计正文

一系统工作原理

1.1功能说明

全面了解掌握MCS-51的基本知识,由于该系列单片机具有体积小、功耗低、价格便宜、易于产品化等特点,可以更加方便的实现以下特点:

1、准确及时,以数字形式显示一位分、两位秒的时间;

2、分最大计到10,秒的计时要求为60进位;

3、三位数码管,显示分和秒,按键“功能键”依次选择调整“时”、“分”,

按键的“加键”依次加1,按键“减键”依次减1;

4、晶振电路起到减小误差,提高精确度的作用;

5、整分报时。

1.2基本原理

该系统主要由复位电路、晶振电路、按键电路,数码管显示电路和STC80C51单片机组成。

该数字时钟设计采用单片机内部的定时器来定时,,然后通过软件编程来实现时钟的显示,这种设计方案的优点是外围器件少,电路简单清晰,电路焊接容易,出问题的故障几率小。

系统结构图如图1所示。

图1

二硬件设计

2.1单片机

STC90C52系列单片机采用了CMOS技术制造,较之AT89c51系列单片机,集成度高、速度快、功耗低。

主要由9个部件组成,分别是:

1个8位中央处理器;

4KBFlash存储器;

128B的数据存储器;

32条I/O口线;

2个定时器/计数器;

1个具有5个中断源、2个优先级的中断嵌套结构;

全双工UART的串行口;

特殊功能寄存器;

1个片内振荡器和时钟电路。

如图2所示。

s

图2STC80C51单片机

2.2复位电路

STC90C52的复位端高电平有效。

RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。

在复位电路中,下拉电阻具有拉低电平作用,按一下复位开关就使在RST端出现一段时间的高电平。

复位电路如图3所示。

图3复位电路

2.3晶振电路

外接12MHZ晶振和两个30pF电容组成系统的内部时钟电路。

将外部已有信号引入单片机内,这种方式适宜用来使单片机的时钟与外部信号保持同步。

晶振电路如图4所示。

图4晶振电路

2.4键盘调整单元

当要对时钟进行调时时,就要用到键盘进行时间修改。

由于调节信息不多,故采用3个独立键盘即可,分别实现功能、增大、减小等作用。

将所有扫描线置成低电平,检查输入线是否为低电平,若无低电平则不是按键操作,延时一段时间,再次将所有扫描线置成低电平,检查输入线是否为低电平,如果有低电平则是按键操作,若无低电平则不是按键操作,返回,即完成按键扫描。

键盘原理图如图5所示

图5键盘原理图

S1:

接P2.0口,开始功能。

S2:

接P2.1口,具有切换功能,可以切换到时、分,从而实现对时、分的调整,再次按下功能键S2则返回,继续计时。

S3:

接P2.2口,实现时和分的增大

S4:

接P2.3口,实现时和分的减小

2.5数码管与三极管显示

显示单元由3个8段共阴数码管组成,数码管位选端分别接P1.0、P1.1、P1.2用于显示一位分和两位秒;

按照工作方式,数码管显示可以分为静态显示和动态扫描。

所谓静态显示,就是每一个数码管的段码都要独占具有锁存功能的输出口,CPU把要显示的字码送到输出口上,就可以使数码管显示对应的字符,直到下一次送出另外一个字码之前,显示的内容一直不会消失;

动态扫描是把所有显示器的8个段码中的A-dp的各个相同段连接在一起,接到一个公共的输出口上,而数码管的位端分别接在另外的输出口上,通过这两个输出口的两组信号相互作用来产生显示效果。

即让各位数码管按照一定顺序轮流显示,只要扫描频率足够高,由于人眼的“视觉暂留”现象,就能连续稳定的显示动态扫描其特点在于能显著降低显示部分成本,大大减少显示接口的连线结构。

该系统采用动态扫描显示。

三极管放大电路中发射极正向偏置,集电极反向偏置是使三极管工作的必要条件,当PNP管的VC<

VB<

VE时,使得集电结反偏,发射结正偏时,管子的发射极电流流入管子,基极电流和集电极电流流出管子,且集电极电流跟基极电流之间成β关系,三极电流满足IE=IB+IC=IB(1+β·

IB)。

即,基极电流可以控制集电极电流,这种控制作用就称为管子的放大作用,图中1K电阻为了限流。

如图6所示。

图6数码管显示

三软件设计

3.1系统主程序

中需要对各个模块进行初始化,并且判断定时器是否溢出20次,用以确定是否到达1S,初始化主要包括:

设置定时器0和定时器1的工作方式为方式1,定时器赋初值,开总中断,开定时器0和定时器1中断,启动定时器。

3.2中断程序

定时器0中断:

单片机晶振12MHZ,主要是使用定时器0方式1,定时5ms

,用来控制数码管的位选信号。

且分为三种情况,P0口分别输送分钟和秒。

定时器1中断:

单片机晶振12MHZ,主要是使用定时器0方式1,每50ms溢出一次,计数加一次,计数20次,到时1S;

秒加一。

秒钟加到60,分加一,同时秒钟置0,蜂鸣器响。

分加到10,分和秒都置0,

3.3显示函数

本设计采用共阴数码管显示,显示两位秒,为秒钟的个位与十位,second2=second/10;

second1=second%10;

P1控制数码管的位选,如下:

P1=(P1&

0xf0)|0x0e;

P0=minute;

0xf0)|0x0d;

P0=second2;

0xf0)|0x0b;

P0=second1;

3.4键盘扫描程序

键盘采用查询的方式,一旦有s1按键按下,数字钟开始工作,定时器1开始计时。

按一次s2键,是对分钟进行调节,按二次s2键是对秒钟进行调节;

s3,s4键分别是加减键,只有在s2键被按下的前提下,s3,s4键才有效;

3.5时钟实现的基本方法

时钟的最小计时单位是秒,使用定时器0方式1,把定时器的定时时间定为50ms。

这样,计数溢出20次即可得到时钟的最小计时单位:

秒单元满60,则分单元的内容加1;

分单元满10,则将分、秒的内容全部清零。

四心得体会

在基于单片机的数字时钟电路设计过程中,我学到了很多重要的东西,其中最重要的是如何将实践和理论相联系,怎样将我所学到的知识运用到我以后的工作中去。

大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的时钟设计给我奠定了一个实践基础。

本系统的设计应用到了模拟电子技术、数字电子技术、单片机控制技术、电路焊接工艺等多方面的知识,所设计的时钟电路,达到了题目要求。

这次课程设计使我得到了很大收获:

不仅学到了许多了关于单片机方面的知识,还提高了实验技能;

而且也使我的动手能力和电路设计能力得到了极大的提高。

在此次设计中,我的难点是程序的调试,由于以前学业不精,所以编一个完整的程序很是吃力!

但是经过这一段时间的学习,我还是解决了一些问题。

软件调试中也出现了一些问题,就是程序在编译中仿真器的设置出现了错误,从而使系统的编译通不过,给系统的调试带来了极大的不便,所以对软件的使用还须更进一步的熟练掌握。

最后,我要感谢老师在此次课程设计中的悉心指导与帮助,让我的课程设计得以顺利完成。

⏹附录源程序

#include<

reg52.h>

#defineucharunsignedchar

uchards_code=0,second2=0,second1=0,sum=0,F_flag,S_flag;

charminute=0;

charsecond=0;

uchartime_temp=0;

sbitDS0=P1^0;

sbitDS1=P1^1;

sbitDS2=P1^2;

sbitkey1=P2^0;

//开始键

sbitkey2=P2^1;

//功能键

sbitkey3=P2^2;

//加键

sbitkey4=P2^3;

//减键

sbitSPEAKER=P1^4;

//***********延时函数******************

voiddelay(ucharx)

{

unsignedinta,b;

for(a=x;

a>

0;

a--)

for(b=110;

b>

b--);

}

//***********秒显示函数**************

voidsecond_div(void)

second2=second/10;

second1=second%10;

//***************按键扫描函数***************

voidKey(void)

P2=0xff;

if(P2!

=0xff)

{

delay(50);

if(P2!

{

if(key1==0)

{

TR1=1;

}

if(key2==0)

//消抖

while(!

key2);

//松手检测

TR0=1;

TR1=0;

//关闭定时器

sum++;

}

}

if(sum==1)

{

F_flag=1;

S_flag=0;

if(key3==0)

delay(50);

if(key3==0)

while(!

key3);

minute++;

if(minute==10)

{

minute=0;

}

}

if(key4==0)

if(key4==0)

key4);

minute--;

if(minute==-1)

minute=9;

if(sum==2)

F_flag=0;

S_flag=1;

second++;

if(second==60)

second=0;

delay(50);

minute++;

second--;

if(second==-1)

second=59;

minute--;

}

second_div();

if(sum==3)

//打开标志位

S_flag=1;

sum=0;

//Sum清零

TR0=1;

//打开定时器

TR1=1;

//*********************主函数**************

voidmain(void)

SPEAKER=1;

TMOD=0x11;

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET0=1;

TF0=0;

TR0=1;

ET1=1;

TF1=0;

while

(1)

Key();

//**********定时器0***********

voidTimer_0(void)interrupt1

ET0=0;

switch(ds_code)

case0:

P1=(P1&

P0=minute;

break;

case1:

P0=second2;

case2:

P0=second1;

default:

ds_code++;

if(ds_code>

2)

ds_code=0;

//***************定时器1**************

voidTimer_1(void)interrupt3

ET1=0;

time_temp++;

if(time_temp>

=20)

time_temp=0;

second++;

if(second==60)

minute++;

second=0;

if(minute==10)

minute=0;

second=0;

SPEAKER=0;

second_div();

⏹系统原理图以及仿真图

[1].《电力电子技术基础》(第五版)康光华主编高等教育出版社。

[2].《单片机原理及应用》(C语言编程)魏鸿磊主编同济大学出版社。

[3].《PROTEUS入门实用教程》(第二版)周润景蔡雨恬编著机械工业出版社。

课程设计

评语

成绩

指导教师

(签字)

年月日

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

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

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

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