单片机定时闹钟课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绪论

摘要:

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。、

电子闹钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时自动报时及自动控制的领域。因此,研究数字钟及扩大其应用,有着非常现实的意义。

关键字:C52、单片机、定时闹钟、电子设计

一.设计目的和要求

1.1设计任务:设计一个可控制的定时闹钟。

1.2设计目的:

1.了解定时闹钟的组成及工作原理。

2.进一步熟悉和掌握单片机的结构和工作原理。

1.3设计要求:

A.基本要求:

1).由晶振电路产生1HZ标准秒信号。

2).秒、分为00-59六十进制计数器。

3).时为00-23二十四进制计数器。

4).可手动校正:能分别进行秒、分、时的校正。只要将开关置于手动位置,可分别对秒、分、时进行连续脉冲输入调整。

5).当时间到达闹钟设定时间时,蜂鸣器发出报警声。

B.提高要求:

a).通过按钮快速切换闹钟显示。

b).通过计算机串口在PC上快速设定时间闹钟

c).整点报时。

二.系统设计

2.1硬件系统:

2.1.1电源电路:

电源是单片机系统的重要组成部分,它不仅为系统提供多路电压源,还直接影响到系统的技术指标和抗干扰性能。AT89C51单片机和一般的数字芯片一样,都是5V电压供电,所以可以共用一个5V 电源。另外,为了提高电源的稳定性,在离电源的最近处做好退耦处理,即用一个47UF和一个10UF电容,以滤去干扰,保证电源的稳定。

2.1.2 AT89C51单片机

AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。

使用时VCC接电源,GND接地。P0-P3可作为输入或者输出端口。RST接复位电路。

2.1.3时钟电路

单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中AT89C51单片机采用内部时钟方式。最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHz~12MHz之间。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF~100pF之间取值。

单片机的时钟产生

AT89C51

2.1.4数码管显示电路

要同时使得6个数码管点亮,所需的IO口是很多的。为了节省单片机的IO口,通常采用动态扫描的显示方法,将每个数码管的同名段连在一起,分6次向数码管写数据,每次对6个数码管写相同的数据,每次选通一个数码管,完成扫描,通过调整、缩短扫描的时间,由于人眼的视觉暂留作用,使得人们看起来就像同时显示一样,以达到动态显示的目的.

2.2设计原理

2.2.1 系统总体方案

1)由于要显示数字时间,所以需要6位数码管。

2)时间的定时用时钟电路,修改时间和定时用手动按键控制,报警声通过喇叭发出。

3)AT89S52单片机加上外围器件(6个共阴数码管,限流电阻和一个蜂鸣器)和应用程序(KEIL编译软件),构成相应的应用系统。

2.2.2 系统设计方框图

2.2.3 软件设计流程

图1系统设计方框图

三.实验结果和讨论

在确立了编程设计的基本思路后,我们开始查找相关的编程资料,然后采用C语言对软件设计的要求进行编译。一开始进展很慢,并且编程过程中出现个各种错误,经过大量时间的编译与完善,我们终于逐步完成定时闹钟的软件设计过程。

最终程序如下:

#include

#define uint unsigned int

#define uchar unsigned char

uchar code shu[]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f}; //0~9

uchar code shu2[]={0xbf,0x86,0xdb,0xcf,

0xe6,0xed,0xfd,0x87,

0xff,0xef}; //带小数点0~9

uchar code wei[]={0xef,0xdf,0xbf,0x7f,0xf7,0xfb};//数码管位选码uchar x[]={0,0,0,0};

uchar y[]={0,0,0,0,0,0};

uint hour=12,min,sec,h=22,m=0;

uint a,s1=1,s2=1,s3=0,i=0,status=0,num=0,class=0;

bit flag=0;

相关文档
最新文档