1、设计题目: 基于单片机的定时闹钟 院 系: 电气工程 专 业: 电子信息工程 年 级: 姓 名: 指导教师: 年 月 日课程设计课 程 设 计 任 务 书专 业 电子信息工程 姓 名 学 号 开题日期: 2014 年 月 日 完成日期: 2014 年 12 月 日题 目 基于单片机的定时闹钟 一、设计的目的本 次 电 子 课 程 设 计 是 一 个 基 于 单 片 机 的 定 时 闹 钟 , 其 主 要 的 目 的是 为 了 学 习 和 巩 固 单 片 机 知 识 , 使 对 已 学 过 的 基 础 知 识 能 有 更 深 入 的 理解 , 对 所 学 的 知 识 能 够 达 到 学 以 致
2、用 , 此 外 还 对 汇 编 语 言 进 行 复 习 。总 的 来 说 , 课 程 设 计 是 培 养 我 们 综 合 运 用 所 学 知 识 , 发 现 、 提 出 、 分析 和 解 决 实 际 问 题 的 能 力 。 综 合 以 上 因 素 , 结 合 自 身 的 实 际 情 况 我 选择 了 在 生 活 中 应 用 广 泛 , 同 时 对 人 们 的 生 活 , 学 习 , 工 作 占 重 要 地位 的 闹 钟 。 二、设计的内容及要求本课程设计以 AT89C51 芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的电子时钟。硬件方面,基于单片机结合时钟电路,按键电路等设计电
3、路,其中设置了四个按键实现了对时间的调整,这四个按键有两种功能,这也是设计过程中的一个难点。软件方面采用 C 语言编程。整个电子钟系统能完成时间的显示、调时、校时和三组定时闹钟的功能。然后,使用 Keil单片机模拟调试软件,测试程序的可行性并用 Proteus 进行仿真,最后得到仿真结果,验证是否达到设计的要求和效果。 三、指导教师评语 四、成 绩 指导教师 (签章) 年 月 日一 设计方案及介绍1. 设计方案:本课程设计的定时闹钟是以单片机以及外围接口电路为核心,再加上相关的外围电路,结合汇编语言设计的程序来实现的,有功能多,精确度高等特点,实现起来也比较简单。2. 设计介绍: (1 ) 时
4、钟是将小时、分钟、秒钟显示于人的肉眼的计时装置,此次课程设计的 LCD电子定时闹钟是基于单片机的数字电路实现对时、分、秒的数字显示的数字计时装置, 它的计时周期为比较习惯的 24 小时制,此外应有校时功能和一些显示日期、闹钟等附加功能。(2 ) 定时闹钟采用 AT89C51 芯片,用 C 语言进行编程,在电路中通过对按键K1,K2,K3,K4 进行相关设置,最后所设置的定时时间到是通过喇叭发出提示。(3 ) 字符型 LCD(16*2)显示器显示格式“时时 : 分分”由 LED 闪动来做为秒计数表示,程序执行后工作指示灯 LED 闪动,表示程序开始执行,LCD 显示“00 : 00”,设置按键
5、K1-K4 动作如下:K1设置现在的时间;K2显示闹钟设置的时间;K3设置闹铃的时间;K4闹铃 ON/OFF 的状态设置,设置 ON 时连续三次发出“哗”的一声,off 置为 “哗”的一声。设置当前时间或闹铃时间如下:K1时的调整;K2分的调整;K3设置完成;K4-闹铃时间到时,发出一阵声响,按下本键可停止声响。设计的难点在于 4 个按键每个都具有两个功能,以最终实现菜单化的输入功能。采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。以对小时的设置的流程为例,其流程如下:Hour-1K1 按下?aK3 按下?K1 按下?NNNYYY3. 设计框图:二 硬件设计1. 单片机简介:电子课程设计电子
6、课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子2. 时钟电路:结合时钟方式内部方式和外部方式的特点进行分析。内部方式就是在单片机的 XTAL1 和 XTAL2 两引脚外接晶振,就构成了自
7、激振荡器在单片机内部产生时钟脉冲信号,外部方式是把外部已有的时钟信号引入到单片机内部。最后选择内部方式,即在单片机的 XTAL1 和 XTAL2 两引脚外接晶振,就构成了自激振荡器在单片机内部产振荡电路按键(键盘)单片机AT89C51调时电路 喇叭LCD 显示XTAL218XTAL119ALE30EA31PSEN29RST9P0./AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.01P1.2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD1P
8、3.2/INT012P3./INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2./A1023P2.3/A1 24P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51AT89C51 芯片采用了高性能的处理器结构,指令执行时间只需 2 到4 个时钟周期,集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积并降低系统的成本。AT89C51 芯片内部主要有以下部件:8031CPU、振荡电路、总线控制部件、中断控制部件、片内 Flash存储器、并行 I/O 接口、定时器和串行 I
9、/O 接口。生时钟脉冲信号,如图所示:电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子喇叭:由.控制,使得它能在定时电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子电子课程设计电子课程设计电子时钟电路3. 按
10、键电路(1 ) 独立按键:(2 ) 按键电路:4. 显示考虑到比效果更直观,且经久耐用,性能指标高,故采用显示5. 喇叭:由.控制,使得它能在定时时间发出提示。喇叭:由.控制,使得它能在定时喇叭:由.控制,使得它能在定时喇叭:由.控制,使得它能在定时喇叭:由.控制,使得它能在定时喇叭:由.控制,使得它能在定时喇叭:由.控制,使得它能在定时6. 电路图基于以上分析整理已经各部分的有机组成,最后完成电路图,硬件部分大致完成。如下所示:注:K1-设置现在时间和调整小时K2-设置现在时间分钟和闹铃时间分钟K3-设置闹铃时间和设置现在时间完成K4-闹铃响后切断电源B0 B1 B2 B3K1 K2 K3K
11、4AT89C51XTAL2XTAL1JZ12MC130PFC230PFC4 BUZ1BUZZER 喇 叭三 软件1. 软件设计思路:设计的程序最终的目的是要实现时间显示,定时的显示,开关实现校时以及闹钟的功能。根据要实现的功能,又要避免了一些函数的不必要的重复,使程序变得单间易懂,软件设计程序部分主要采用程序结构的模块化来优化设计。在执行程序时,主程序要须通过调用子函数就可完成相应的功能。其中主芯片:P0.0-P0.7 输出数据到 LCD 数据总线;P1.0-P1.3 输入外部控制信号;P2.0-P2.2 输出 LCD 控制信号;P2.3 输出 LED-Right 灯显示秒;P2.4 输出声音
12、信号;XTAL1、XTAL2 输出内部时钟电路(即晶振电路) 。2. 主体思路流程图:开始初始化设置闹钟判断按键扫描显示时间3. 电子闹钟的主程序流程图,如图所示:4. 程序初始化在系统开始上电时,需要首先初始化液晶:void TimeInit()write_com(0x01); /初始化 1602 液晶write_com(0x80); /设置现实初始坐标for(num=0;num#define uint unsigned int #define uchar unsigned char uint miao,fen,fen1,shi,shi1,flag1,flag2,flag3,aa,K1num
13、,K2num,K3num,K4num,N;/K1num-K1 按键被按下的标记变量,K2num-K2 按键被按下的标记变量,K3num=0-K3 按键被按下的标记变量uchar code table=“ TIMING CLOCK“; /定义初始上电时液晶默认显示状态sbit K1=P10; /四个按键sbit K2=P11;sbit K3=P12;sbit K4=P13;时十位、个位,分十位、个位改变了设置闹铃标志是否设置了闹铃清除闹铃标志判当前时间是设定时间中断返回中断返回 闹铃判别处理Nsbit rs=P20;sbit lcden=P22;sbit led=P23; /发光二极管控制端sb
14、it beep=P24; /蜂鸣器控制端sbit relay=P25; /继电器控制端void delay(uint z) /延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com) /液晶写命令函数rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date) /液晶写数据函数rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void write_sfm
15、(uchar add,uchar date) /液晶写时分秒函数uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void init() /初始化函数uint num;/写液晶的循环控制变量aa=0; /中断次数标志K1num=0; /K1 按键被按下的标记变量K2num=0; /K2 按键被按下的标记变量K3num=0; /K3 按键被按下的标记变量K4num=0;flag1=1; /控制 lcd 屏刷新的变量flag2=1; /控制闹钟响
16、闹和继电器开启关闭的标记flag3=1; /控制闹钟响起时,按下 K4 停止闹钟响闹的标记led=1; /发光二极管初始化relay=0; /继电器初始化N=100; /系统启动时,闹钟时间到发出的声音为连续三次发出“哗”的一声miao=0; /系统初始化时间fen=0;shi=0;fen1=1; /初始化闹钟的时间shi1=0;beep=0; /蜂鸣器初始化lcden=0; /液晶使能端初始化write_com(0x38); /1602 液晶初始化,设置 16*2 显示。 5*7 点阵,8 位数据接口write_com(0x0c); /设置开显示,不显示光标write_com(0x06);
17、/写一个字符后地址指针自动加 1write_com(0x01); /显示清 0,数据指针清 0write_com(0x80); /将数据指针定位到第一行,第一个字处for(num=0;num15;num+) /显示闹钟标示:TIMING CLOCKwrite_date(tablenum);delay(10);write_com(0x80+0x40+7);/写出时间显示部分的两个冒号write_date(:);write_sfm(8,fen); /送去液晶显示秒,分,时write_sfm(5,shi);TMOD=0x01; /设置定时器 0 为工作方式 1TH0=(65536-50000)/256; /定时器装初值TL0=(65536-50000)%256;EA=1; /开总中断ET0=1; /开定时器 0 中断TR0=1; /启动定时器 0