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

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

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

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

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

基于单片机设计简易数字钟说明书本科学位论文

信息与电气工程学院

(课程设计说明书

(2015/2016学年第二学期)

 

课程名称:

单片机应用技术课程设计

题目:

简易数字钟设计

专业班级:

电气工程及其自动化1303班

学生姓名:

学号:

指导教师:

刘增环、岑毅南、李兵等

设计周数:

两周

设计成绩:

2016年6月24日

【摘要】

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

单片机数字时钟是以单片机为核心,在它的基础上设计出来的数字时钟,本设计采用了STC公司生产的AT80C51型单片机设计了一个单片机最小系统,外接LED显示电路,按键电路,晶振电路,复位电路模块构成了一个简易的数字钟,具有显示、时、分、秒的功能,且时、分、秒每一个参数都可以自行设置,以实现时间的校正,总体来说实现了一个数字时钟的应有功能。

 

关键词:

80C51系列单片机、单片机最小系统、时钟定时器、4位一体数码管显示

目录

课程设计正文2

一系统工作原理2

1.1功能说明2

1.2基本原理2

二硬件设计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

即,基极电流可以控制集电极电流,这种控制作用就称为管子的放大作用,图中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;

P1=(P1&0xf0)|0x0d;

P0=second2;

P1=(P1&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

#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>0;b--);

}

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

voidsecond_div(void)

{

second2=second/10;

second1=second%10;

}

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

voidKey(void)

{

P2=0xff;

if(P2!

=0xff)

{

delay(50);

if(P2!

=0xff)

{

if(key1==0)

{

TR1=1;

}

if(key2==0)

{

delay(50);//消抖

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)

{

delay(50);

if(key4==0)

{

while(!

key4);

minute--;

if(minute==-1)

{

minute=9;

}

}

}

}

if(sum==2)

{

F_flag=0;

S_flag=1;

if(key3==0)

{

delay(50);

if(key3==0)

{

while(!

key3);

second++;

if(second==60)

{

second=0;

delay(50);

minute++;

}

}

}

if(key4==0)

{

delay(50);

if(key4==0)

{

while(!

key4);

second--;

if(second==-1)

{

second=59;

delay(50);

minute--;

}

}

}

second_div();

}

if(sum==3)

{

F_flag=1;//打开标志位

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&0xf0)|0x0e;

P0=minute;

break;

case1:

P1=(P1&0xf0)|0x0d;

P0=second2;

break;

case2:

P1=(P1&0xf0)|0x0b;

P0=second1;

break;

default:

break;

}

ds_code++;

if(ds_code>2)

{

ds_code=0;

}

TH0=(65536-5000)/256;

TL0=(65536-5000)%256;

ET0=1;

}

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

voidTimer_1(void)interrupt3

{

ET1=0;

time_temp++;

if(time_temp>=20)

{

time_temp=0;

second++;

if(second==60)

{

minute++;

delay(50);

second=0;

if(minute==10)

{

minute=0;

second=0;

SPEAKER=0;

}

}

second_div();

}

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

ET1=1;

}

⏹系统原理图以及仿真图

 

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

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

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

 

课程设计

评语

课程设计

成绩

指导教师

(签字)

年月日

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

当前位置:首页 > 总结汇报 > 学习总结

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

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