课程设计—定时打铃器的设计课程名称:专业课程设计学院名称:南昌航空大学科技学院专业: 电子信息工程班级:1482052学号:148205216姓名:彭少锟同组人:刘晶晶指导教师:评分:20 17 年 6 月19 日摘要现代社会定时打铃器已广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。
本设计是基于单片机的电子钟设计,不仅具有时分秒的显示功能,还具有定时打铃和倒计时的功能,实用性非常强。
电子钟的计时部分采用AT89S52单片机内部定时器实现,而显示功能是采用液晶模块LCD1602来实现,该定时打铃器可以让使用者通过按键来轻松选择的功能菜单和调节时间,具有非常良好地人机界面。
关键词:定时打铃器;倒计时;AT89S52;液晶LCD1602;按键目录1 设计要求 (1)2 方案论证 (1)2.1 计时方案的选择 (1)2.2 显示方案的选择 (1)2.3 按键功能方案设计 (1)2.4 指示灯和响铃方案设计 (2)3 系统组成 (2)4 硬件设计 (2)4.1 单片机最小系统设计 (2)4.2 显示电路设计 (4)4.3 蜂鸣器电路设计 (4)4.4 按键电路设计 (5)5 软件设计 (5)5.1 走时部分 (5)5.2 定时打铃检测部分 (6)5.3 键盘扫描部分 (6)5.4 液晶部分 (7)5.5 流程图 (7)6 仿真设计 (11)7 系统调试及结果 (11)7.1 软件调试 (11)7.2 硬件调试 (13)7.3 调试结果 (13)8 总结 (13)参考文献 (14)附录 (15)1 设计要求1.显示时钟格式:**时**分**秒。
2.可任意设定时间达到定时控制,定时点至少有两个3.可对设定的时间进行存取,实现掉电保护功能。
3.定时时间到,打铃一分钟,自动关闭打铃继续计时。
2 方案论证2.1 计时方案的选择1、采用专门的时钟芯片,例如美国DALLAS公司推出的DS1302实时时钟芯片,它的工作电压为2.5V-5.5V,采用三线接口与CPU进行同步通信,并可采用突发式一次传送多个字节的时钟信号或RAM数据,优点是高性能、低功耗,可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,但DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点,并且会增加电路硬件复杂性。
2、采用AT89S52单片机内部定时器,51系列单片机内部有两个16位定时器/计数器,简称定时器0和定时器1,简称T0和T1,设置T0工作在模式0状态下,每隔50ms中断一下,中断20次正好是1秒。
用此方法的优点是可节少硬件设计,计时精度高,缺点是软件编程略显复杂。
总结:综合两种方案的优缺点,以及此次课设的要求,选择第二种方案是用单片机内部定时器。
因为使用该方案不但可以节省硬件成本,还可以更锻炼自己使用单片机内部定时器和C语言编程的能力。
2.2 显示方案的选择1、使用LED数码管,由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
它能够在低电压、小电流的条件下驱动发光,发光响应时间极短,单色性好,亮度高,但是数码管显示内容单一,引脚与单片机I/0连接复杂。
2、使用液晶LCD1602,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,LCD1602是字符型液晶显示模块,它是一种专门用于显示字母、数字、符号等点阵式LCD,并且显示质量高,功耗小。
缺点是较数码管成本高。
总结:数码管显示内容单一,液晶则比较丰富,并且数码管消耗电力会比液晶更高,若选择数码管硬件布线会较复杂,影响美观性,而选择液晶也不会超过经费支持。
综合两种方案的优缺点,选择方案二液晶显示。
2.3 按键功能方案设计根据题目设计要求,定义6个12*12mm的按键来选择系统功能菜单和调节时间,分别为K1、K2、K3、K4、K5、K6。
各个按键的具体功能如表2.1:表2.1 按键功能表2.4 指示灯和响铃方案设计1、指示灯:综合设计要求和自我考虑,需要的指示灯个数为4个,分别为电源指示,程序运行指示和两个闹铃指示。
为了加以区分可使用不同颜色的LED。
2、响铃选择:采用经济适用的蜂鸣器,它是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、报警器、电子玩具、定时器等电子产品中作发声器件,而且驱动电路简单,由单片机一个I/O口外接一个三极管即可。
3 系统组成经过以上的计时方案选择和显示方案选择,确定本设计的电子闹钟的计时方案为单片机内部定时,显示方案为液晶LCD1602。
闹铃的响铃来源选择经济适用的蜂鸣器,并用按键来选择功能菜单和调节时间,用4个不同颜色的发光二极管作为两个闹铃指示灯,程序运行指示灯和电源指示灯。
因此系统组成框图如图3.1:图3.1 系统框图4 硬件设计4.1 单片机最小系统设计单片机最小系统的设计关键的就是时钟电路和复位电路的设计。
1、时钟电路在这里使用单片机内部振荡电路,管脚XTAL1、XTAL2用来外接石英晶体和微调电容,如图4.1所示。
晶体可在1.2—12MHz之间选择,电容可在6—30pF之间选择。
图4.1 时钟电路2、复位电路当振荡电路工作,并且在RST引脚加上一个至少保持两个机器周期的高电平时,就能完成一次复位。
这里我使用按钮复位方式,如图4.2,利用RC微分电路产生正脉冲来达到复位目的,该正脉冲的持续时间大于两个机器周期。
图4.2 复位电路4.2 显示电路设计此设计的显示电路采用的是液晶模块LCD1602,其为5V电压驱动,只有并行接口。
其与单片机连接的硬件电路如图4.3,其中的D0-D7分别连接到单片机的P0.0-P0.7,VSS接地,VDD接+5V电源,VEE经10K电位器接地,用于调节背光,RS端为向液晶控制器写数据/写命令选择端,接单片机P2.1口,RW为读/写选择端,因为我们不从液晶读取任何数据,故接地,E端为使能信号,接单片机P2.2口。
图4.3 液晶连接电路4.3 蜂鸣器电路设计电路设计如图4.4,单片机的P2.0脚通过限流电阻R与三极管基极相接,集电极接蜂鸣器。
当P2.0引脚电平为0是,三极管导通,蜂鸣器工作,引脚电平为1时,三极管截止,蜂鸣器不工作。
因为单片机口输出低电平时的驱动能力比高电平强的多,故三极管采用基极低电平导通PNP型的三极管。
图4.4 蜂鸣器驱动电路4.4 按键电路设计此次按键电路设计可直接将按键一端接到单片机的I/O口,另一端直接接地。
通过单片机检测低电平判断按键按下,K1-K6分别接至单片机的P3.0-P3.5。
按键电路如图4.5:图4.5 按键电路5 软件设计软件设计主要包含显示走时、闹铃检测和键盘扫描三部分。
5.1 走时部分走时部分主要有3个变量hour、min、sec和deda做为时钟的时、分、秒和定时标志位,通过单片机内部定时器定时50ms,定时标志位deda加1,此过程在中断服务程序中完成,当加满20次时,deda清零并且时钟的秒sec加1,从而到达计时目的。
代码如下:void T0_srv(void) interrupt 1{TH0=0x3C;TL0=0x0B0;deda++;}void conv(){if(deda>=20){sec++;deda=0;}if(sec==60){min++;sec=0;ok=1;}if(min==60){hour++;min=0;}if(hour==24){hour=0;}}5.2 定时打铃检测部分定时打铃检测部分主要的变量有6个,hh1、mm1和flag1做为定时1的时、分和开关标志位,hh2、mm2和flag2做为定时2的时、分和开关标志位,当hh1=hour,mm1=min并且开关标志flag1=1时,定时1便可以执行响铃程序,当hh2=hour,mm2=min并且开关标志flag2=1时,定时2便可以执行响铃程序,在这个子程序中为了不影响正常走时时间,故加上走时函数time( )。
代码如下:void alm_check1(){while((alm_flag1==1)&&(hour==hh1)&&(min==mm1)&&(ok==1)){time();alm_led1=0;beep=~beep;delay(40);if(k5==0) {alm_led1=1;beep=1;ok=0;}}}5.3 键盘扫描部分键盘扫面部分是该软件设计中较复杂的部分,用单片机I/O口检测低电平来判断是否有键按下,根据按下的键值来执行相应的子程序。
在此部分增加一个标志变量ok做为子程序执行完毕的标志变量,在子程序执行过程中当K6键按下,则ok=1,返回主程序。
while(1){time();alm_check1();alm_check2();if(k1==0)set_time();if(k2==0)set_atime1();if(k3==0)set_atime2();if(k4==0)set_countdown();}5.4 液晶部分液晶LCD1602做为本设计的显示元件,其初始化程序如下:void TS1602_INIT(void){RS=0;write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口write_com(0x0c); //设置开显示,不显示光标write_com(0x06); //写一个字符后地址指针自动加1write_com(0x01); //清屏}5.5 流程图1、主程序流程图,如图5.1:图5.1 主程序流程图2、中断服务流程图:如图5.2:图5.2 中断服务流程图2、时间流程图,如图5.3:图5.3 时间流程图3、闹铃检测流程图,如图5.4:图5.4 闹铃检测流程图4、键盘扫描流程图,如图5.5:图5.5 键盘扫面流程图6 仿真设计仿真设计是设计一个系统十分重要的环节,在实际电路做好之前系统软件调试最好选择。
此次仿真设计采用的是英国Labcenter electronics公司出版的EDA 工具软件Protues,在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。
仿真电路图如下,图6.1:图6.1 仿真电路图7 系统调试及结果7.1 软件调试此时设计的软件调试部分主要在仿真软件Protues中完成。
首先根据硬件设计在Protues中完成原理图的设计,确定使用单片机的哪些I/O口,然根据软件设计中的流程图编写单片机C语言程序。
结合题目要求模块化地编写程序,首先编写走时程序,然后编写闹铃1、闹铃2、的程序,最后完成倒计时设计,在分模块化编写过程中,不断地根据仿真现象调试程序来修复软件编写错误。