定时闹钟单片机课程设计报告书文档格式.docx
- 文档编号:15139138
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:23
- 大小:278.04KB
定时闹钟单片机课程设计报告书文档格式.docx
《定时闹钟单片机课程设计报告书文档格式.docx》由会员分享,可在线阅读,更多相关《定时闹钟单片机课程设计报告书文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
本课程设计以AT89C51芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟。
硬件方面,基于单片机结合时钟电路,按键电路等设计电路,其中设置了四个按键实现了对时间的调整,这四个按键有两种功能,这也是设计过程中的一个难点。
软件方面采用C语言编程。
整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。
然后,使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真,最后得到仿真结果,验证是否达到设计的要求和效果。
三、指导教师评语
四、成绩
指导教师(签章)
年月日
一.设计方案及介绍
1.设计方案:
本课程设计的定时闹钟是以单片机以及外围接口电路为核心,再加上相关的外围电路,结合汇编语言设计的程序来实现的,有功能多,精确度高等特点,实现起来也比较简单。
2.设计介绍:
(1)时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置,此次课程设计的LCD电子定时闹钟是基于单片机的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为比较习惯的24小时制,此外应有校时功能和一些显示日期、闹钟等附加功能。
(2)定时闹钟采用AT89C51芯片,用C语言进行编程,在电路过对按键K1,K2,K3,K4进行相关设置,最后所设置的定时时间到是通过喇叭发出提示。
(3)字符型LCD(16*2)显示器显示格式“时时:
分分”
由LED闪动来做为秒计数表示,程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:
00”,设置按键K1-K4动作如下:
K1——设置现在的时间;
K2——显示闹钟设置的时间;
K3——设置闹铃的时间;
K4——闹铃ON/OFF的状态设置,设置ON时连续三次发出“哗”的一声,off置为“哗”的一声。
设置当前时间或闹铃时间如下:
K1——时的调整;
K2——分的调整;
K3——设置完成;
K4---闹铃时间到时,发出一阵声响,按下本键可停止声响。
设计的难点在于4个按键每个都具有两个功能,以最终实现菜单化的输入功能。
采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。
以对小时的设置的流程为例,其流程如下:
3.设计框图:
二.硬件设计
1.AT89C51单片机简介:
AT89C51芯片采用了高性能的处理器结构,指令执行时间只需2到4个时钟周期,集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积并降低系统的成本。
AT89C51芯片内部主要有以下部件:
8031CPU、振荡电路、总线控制部件、中断控制部件、片内Flash存储器、并行I/O接口、定时器和串行I/O接口。
2.时钟电路:
结合时钟方式部方式和外部方式的特点进行分析。
部方式就是在单片机的XTAL1和XTAL2两引脚外接晶振,就构成了自激振荡器在单片机部产生时钟脉冲信号,外部方式是把外部已有的时钟信号引入到单片机部。
最后选择部方式,即在单片机的XTAL1和XTAL2两引脚外接晶振,就构成了自激振荡器在单片机部产生时钟脉冲信号,如图所示:
时钟电路
3.按键电路
(1)独立按键:
(2)按键电路:
4.LCD显示
考虑到LCD比LED效果更直观,且经久耐用,性能指标高,故采用LCD显示
5.喇叭:
由P2.4控制,使得它能在定时时间发出提示。
6.电路图
基于以上分析整理已经各部分的有机组成,最后完成电路图,硬件部分大致完成。
如下所示:
注:
K1-设置现在时间和调整小时
K2-设置现在时间分钟和闹铃时间分钟
K3-设置闹铃时间和设置现在时间完成
K4-闹铃响后切断电源
三.软件
1.软件设计思路:
设计的程序最终的目的是要实现时间显示,定时的显示,开关实现校时以及闹钟的功能。
根据要实现的功能,又要避免了一些函数的不必要的重复,使程序变得单间易懂,软件设计程序部分主要采用程序结构的模块化来优化设计。
在执行程序时,主程序要须通过调用子函数就可完成相应的功能。
其中主芯片:
P0.0-P0.7输出数据到LCD数据总线;
P1.0-P1.3输入外部控制信号;
P2.0-P2.2输出LCD控制信号;
P2.3输出LED-Right灯显示秒;
P2.4输出声音信号;
XTAL1、XTAL2输出部时钟电路(即晶振电路)。
2.主体思路流程图:
3.电子闹钟的主程序流程图,如图所示:
4.程序初始化
在系统开始上电时,需要首先初始化液晶:
voidTimeInit()
{
write_(0x01);
//初始化1602液晶
write_(0x80);
//设置现实初始坐标
for(num=0;
num<
9;
num++)//显示年月日
{
write_date(table[num]);
delay(5);
}
write_(0x80+0x40+6);
//写出时间显示部分的两个冒号
write_date('
:
'
);
write_(0x80+0x40+9);
write_sfm(4,shi);
//分别送去液晶显示
write_(0x80+0x40+4);
write_sfm(7,fen);
write_(0x80+0x40+7);
write_sfm(10,miao);
write_(0x80+0x40+10)
5.实现闹钟
1)实现闹钟涉及到两方面:
a)闹钟时间的设定;
b)是否响应闹钟判别以及相应的处理。
2)关键:
判别什么时候进行闹铃。
3)闹钟判别的条件:
当时十/个位、分十/个位中任意一位发生改变(即进位)时,就必须进行闹铃判别。
4)判别处理的流程图:
四.仿真结果
1.程序清单
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
uintmiao,fen,fen1,shi,shi1,flag1,flag2,flag3,aa,K1num,K2num,K3num,K4num,N;
//K1num-K1按键被按下的标记变量,K2num-K2按键被按下的标记变量,K3num=0-K3按键被按下的标记变量
ucharcodetable[]="
TIMINGCLOCK"
;
//定义初始上电时液晶默认显示状态
sbitK1=P1^0;
//四个按键
sbitK2=P1^1;
sbitK3=P1^2;
sbitK4=P1^3;
sbitrs=P2^0;
sbitlcden=P2^2;
sbitled=P2^3;
//发光二极管控制端
sbitbeep=P2^4;
//蜂鸣器控制端
sbitrelay=P2^5;
//继电器控制端
voiddelay(uintz)//延时函数
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voidwrite_(uchar)//液晶写命令函数
rs=0;
lcden=0;
P0=;
lcden=1;
voidwrite_date(uchardate)//液晶写数据函数
rs=1;
P0=date;
voidwrite_sfm(ucharadd,uchardate)//液晶写时分秒函数
ucharshi,ge;
shi=date/10;
ge=date%10;
write_(0x80+0x40+add);
write_date(0x30+shi);
write_date(0x30+ge);
voidinit()//初始化函数
uintnum;
//写液晶的循环控制变量
aa=0;
//中断次数标志
K1num=0;
//K1按键被按下的标记变量
K2num=0;
//K2按键被按下的标记变量
K3num=0;
//K3按键被按下的标记变量
K4num=0;
flag1=1;
//控制lcd屏刷新的变量
flag2=1;
//控制闹钟响闹和继电器开启关闭的标记
flag3=1;
//控制闹钟响起时,按下K4停止闹钟响闹的标记
led=1;
//发光二极管初始化
relay=0;
//继电器初始化
N=100;
//系统启动时,闹钟时间到发出的声音为连续三次发出“哗”的一声
miao=0;
//系统初始化时间
fen=0;
shi=0;
fen1=1;
//初始化闹钟的时间
shi1=0;
beep=0;
//蜂鸣器初始化
//液晶使能端初始化
write_(0x38);
//1602液晶初始化,设置16*2显示。
5*7点阵,8位数据接口
write_(0x0c);
//设置开显示,不显示光标
write_(0x06);
//写一个字符后地址指针自动加1
//显示清0,数据指针清0
//将数据指针定位到第一行,第一个字处
15;
num++)//显示闹钟标示:
TIMINGCLOCK
delay(10);
//写出时间显示部分的两个冒号
write_sfm(8,fen);
//送去液晶显示秒,分,时
write_sfm(5,shi);
TMOD=0x01;
//设置定时器0为工作方式1
TH0=(65536-50000)/256;
//定时器装初值
TL0=(65536-50000)%256;
EA=1;
//开总中断
ET0=1;
//开定时器0中断
TR0=1;
//启动定时器0
voidkeyscan()//键盘扫描函数
if(K1==0&
&
K3num==0)//判断K1按下,按下前没有按下K3键,则开始修改时间
K1num==0)
K1num=1;
while(!
K1)//判断是否松开按键,后同
if(K1num==1)
TR0=0;
//关闭计数器0
write_(0x80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时 闹钟 单片机 课程设计 报告书