搜索
您的当前位置:首页正文

基于单片机设计简易数字钟

来源:爱够旅游网


信息与电气工程学院

课程设计说明书

(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 附录 源程序 .................................................................................................... 9

单片机课程设计报告

课程设计的目的

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

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

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

件设计的方法、内容及步骤。

1

单片机课程设计报告

课程设计正文

一 系统工作原理

1.1 功能说明

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

1、 准确及时,以数字形式显示一位分、两位秒的时间; 2、 分最大计到10,秒的计时要求为60进位;

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

按键的“加键”依次加1,按键“减键”依次减1; 4、 晶振电路起到减小误差,提高精确度的作用; 5、 整分报时。

1.2 基本原理

该系统主要由复位电路、晶振电路、按键电路,数码管显示电路和STC80C51单片机组成。该数字时钟设计采用单片机内部的定时器来定时,,然后通过软件编程来实现时钟的显示,这种设计方案的优点是外围器件少,电路简单清晰,电路焊接容易,出问题的故障几率小。系统结构图如图1所示。 按键开关 晶振电路 复位电路 2 四位数码管显示 80C51 控制器 单片机课程设计报告

图1

二 硬件设计

2.1 单片机

STC90C52系列单片机采用了CMOS技术制造,较之AT89c51系列单片机,集成度高、速度快、功耗低。主要由9个部件组成,分别是:1个8位中央处理器;4KBFlash存储器;128B的数据存储器;32条I/O口线;2个定时器/计数器;1个具有5个中断源、2个优先级的中断嵌套结构;全双工UART的串行口;特殊功能寄存器;1个片内振荡器和时钟电路。如图2所示。

s

图2 STC80C51单片机

3

单片机课程设计报告

2.2 复位电路

STC90C52 的复位端高电平有效。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。在复位电路中,下拉电阻具有拉低电平作用,按一下复位开关就使在RST端出现一段时间的高电平。复位电路如图3所示。

图3复位电路

2.3 晶振电路

外接12MHZ晶振和两个30pF 电容组成系统的内部时钟电路。将外部已有信号引入单片机内,这种方式适宜用来使单片机的时钟与外部信号保持同步。晶振电路如图4所示。

4

单片机课程设计报告

图4 晶振电路

2.4 键盘调整单元

当要对时钟进行调时时,就要用到键盘进行时间修改。由于调节信息不多,故采用3个独立键盘即可,分别实现功能、增大、减小等作用。将所有扫描线置成低电平,检查输入线是否为低电平,若无低电平则不是按键操作,延时一段时间,再次将所有扫描线置成低电平,检查输入线是否为低电平,如果有低电平则是按键操作,若无低电平则不是按键操作,返回,即完成按键扫描。键盘原理图如图5所示

图5键盘原理图

S1:接P2.0口, 开始功能。

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

S3:接P2.2口,实现时和分的增大 S4:接P2.3口, 实现时和分的减小

5

单片机课程设计报告

2.5 数码管与三极管显示

显示单元由3个8段共阴数码管组成,数码管位选端分别接P1.0、P1.1、P1.2用于显示一位分和两位秒; 按照工作方式, 数码管显示可以分为静态显示和动态扫描。所谓静态显示, 就是每一个数码管的段码都要独占具有锁存功能的输出口, CPU把要显示的字码送到输出口上,就可以使数码管显示对应的字符, 直到下一次送出另外一个字码之前, 显示的内容一直不会消失;动态扫描是把所有显示器的8个段码中的A-dp的各个相同段连接在一起, 接到一个公共的输出口上,而数码管的位端分别接在另外的输出口上,通过这两个输出口的两组信号相互作用来产生显示效果。即让各位数码管按照一定顺序轮流显示, 只要扫描频率足够高, 由于人眼的“ 视觉暂留”现象,就能连续稳定的显示动态扫描其特点在于能显著降低显示部分成本,大大减少显示接口的连线结构。该系统采用动态扫描显示。

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

IE=IB+IC=IB(1+β·IB)。即,基极电流可以控制集电极电流,这种控制作用就称为管子的放大作用,图中1K电阻为了限流。如图6所示。

图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,则将分、秒的内容全部清零。

四 心得体会

在基于单片机的数字时钟电路设计过程中,我学到了很多重要的东西,其中最重要的是如何将实践和理论相联系,怎样将我所学到的知识运用到我以后的工作中去。大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的时钟设计给我奠定了一个实践基础。本系统的设计应用到了模拟电子技术、数字电子技术、单片机控制技术、电路焊接工艺等多方面的知识,所设计的时钟电路,达到了题目要求。

这次课程设计使我得到了很大收获:不仅学到了许多了关于单片机方面的知识,还提高了实验技能;而且也使我的动手能力和电路设计能力得到了极大的提高。在此次设计中,我的难点是程序的调试,由于以前学业不精,所以编一个完整的程序很是吃力!但是经过这一段时间的学习,我还是解决了一些问题。软件调试中也出现了一些问题,就是程序在编译中仿真器的设置出现了错误,从而使系统的编译通不过,给系统的调试带来了极大的不便,所以对软件的使用还须更进一步的熟练掌握。

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

8

单片机课程设计报告

 附录 源程序

#include

#define uchar unsigned char

uchar ds_code=0,second2=0,second1=0,sum=0,F_flag,S_flag; char minute = 0; char second = 0;

uchar time_temp = 0;

sbit DS0 = P1^0; sbit DS1 = P1^1; sbit DS2 = P1^2; sbit key1=P2^0; //开始键 sbit key2=P2^1; //功能键 sbit key3=P2^2; //加键 sbit key4=P2^3; //减键

sbit SPEAKER = P1^4;

//***********延时函数****************** void delay(uchar x) {

unsigned int a,b;

9

单片机课程设计报告

for(a=x;a>0;a--) for(b=110;b>0;b--); }

//***********秒显示函数************** void second_div(void) { }

//***************按键扫描函数*************** void Key(void) {

P2 = 0xff; if(P2!=0xff) {

delay(50); if(P2!=0xff) {

if(key1==0) { }

if(key2==0)

TR1 = 1;

second2 = second/10; second1 = second%10;

{

delay(50); // 消抖

if(key2==0) {

while(!key2); //松手检测

TR0=1;

TR1=0;//关闭定时器

10

单片机课程设计报告

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;

11

单片机课程设计报告

}

}

}

}

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

12

单片机课程设计报告

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;

}

} } }

//*********************主函数************** void main(void) {

SPEAKER = 1;

TMOD = 0x11;

TH0 = (65536-5000)/256; TL0 = (65536-5000)%256;

13

单片机课程设计报告

TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; EA = 1; ET0 = 1; TF0 = 0; TR0 = 1;

ET1 = 1; TF1 = 0; while(1) { Key();

}

}

//**********定时器0*********** void Timer_0(void) interrupt 1 { ET0 = 0;

switch(ds_code) { case 0: P1 = (P1&0xf0)|0x0e; P0 = minute;

break;

case 1: P1 = (P1&0xf0)|0x0d; P0 = second2;

break;

case 2:

14

单片机课程设计报告

}

//***************定时器1************** void Timer_1(void) interrupt 3 {

ET1 = 0;

time_temp++; if(time_temp>=20) {

time_temp = 0; second++; if(second==60) {

minute++;

15

}

P1 = (P1&0xf0)|0x0b; P0 = second1; break;

default:

break;

ds_code++; if(ds_code>2) { }

TH0 = (65536-5000)/256; TL0 = (65536-5000)%256; ET0 = 1;

ds_code = 0;

单片机课程设计报告

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;

}

16

单片机课程设计报告

 系统原理图以及仿真图

17

单片机课程设计报告

[1] .《电力电子技术基础》(第五版)康光华主编 高等教育出版社。 [2].《单片机原理及应用》 (C语言编程)魏鸿磊主编 同济大学出版社。 [3].《PROTEUS入门实用教程》(第二版) 周润景蔡雨恬编著 机械工业出版社。

课程设计 评 语 课程设计 成 绩 指导教师 (签字) 年 月 日

18

因篇幅问题不能全部显示,请点此查看更多更全内容

Top