课程设计定时打铃器

上传人:Sc****h 文档编号:142390217 上传时间:2022-08-25 格式:DOC 页数:33 大小:836KB
返回 下载 相关 举报
课程设计定时打铃器_第1页
第1页 / 共33页
课程设计定时打铃器_第2页
第2页 / 共33页
课程设计定时打铃器_第3页
第3页 / 共33页
点击查看更多>>
资源描述
.课程设计定时打铃器的设计课程名称:专业课程设计学院名称:航空大学科技学院专业 :电子信息工程班级:1482052学号:148205216:彭少锟同组人:晶晶指导教师:评分:2017年6月19日.专业资料 .摘要现代社会定时打铃器已广泛用于各种私人和公众场合, 成为我们生活、工作和学习中不可缺少的好帮手,因此研究实用性更强的电子闹钟具有十分重要的意义。本设计是基于单片机的电子钟设计,不仅具有时分秒的显示功能,还具有定时打铃和倒计时的功能,实用性非常强。电子钟的计时部分采用AT89S52 单片机部定时器实现,而显示功能是采用液晶模块LCD1602来实现,该定时打铃器可以让使用者通过按键来轻松选择的功能菜单和调节时间,具有非常良好地人机界面。关键词:定时打铃器;倒计时;AT89S52;液晶 LCD1602;按键.专业资料 .目录1设计要求 . .12方案论证 . .12.1计时方案的选择 . .12.2显示方案的选择 . .12.3按键功能方案设计 . .12.4指示灯和响铃方案设计 . .23系统组成 . .24硬件设计 . .24.1单片机最小系统设计 . .24.2显示电路设计 . .44.3蜂鸣器电路设计 . .44.4按键电路设计 . .55软件设计 . .55.1走时部分 . .55.2定时打铃检测部分 . .65.3键盘扫描部分 . .65.4液晶部分 . .75.5流程图 . .76仿真设计 . .117系统调试及结果 . .117.1软件调试 . .117.2硬件调试 . .137.3调试结果 . .138总结 . .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 :K1选择调节时间菜单键及时增加键K4选择倒计时菜单键K2选择调节闹铃 1 菜单键及分增加键K5关闭闹铃响声键K3选择调节闹铃 2 菜单键及秒增加键K6确认键表 2.1按键功能表2.4 指示灯和响铃方案设计1、指示灯:综合设计要求和自我考虑,需要的指示灯个数为4 个,分别为电源指示,程序运行指示和两个闹铃指示。为了加以区分可使用不同颜色的LED。2、响铃选择:采用经济适用的蜂鸣器,它是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、报警器、电子玩具、定时器等电子产品中作发声器件,而且驱动电路简单,由单片机一个 I/O 口外接一个三极管即可。3 系统组成经过以上的计时方案选择和显示方案选择,确定本设计的电子闹钟的计时方案为单片机部定时,显示方案为液晶LCD1602。闹铃的响铃来源选择经济适用的蜂鸣器,并用按键来选择功能菜单和调节时间,用4 个不同颜色的发光二极管作为两个闹铃指示灯,程序运行指示灯和电源指示灯。因此系统组成框图如图3.1 :LCD1602指AT89S52最小系统蜂示鸣灯器键盘图 3.1 系统框图4 硬件设计4.1 单片机最小系统设计单片机最小系统的设计关键的就是时钟电路和复位电路的设计。1、时钟电路.专业资料 .在这里使用单片机部振荡电路,管脚 XTAL1、XTAL2用来外接石英晶体和微调电容,如图 4.1 所示。晶体可在 1.2 12MHz之间选择,电容可在 630pF 之间选择。图 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 1TH0=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_(0x38);/设置 16*2 显示, 5*7 点阵, 8 位数据接口write_(0x0c);/设置开显示,不显示光标write_(0x06);/写一个字符后地址指针自动加 1write_(0x01);/清屏5.5流程图1、主程序流程图,如图5.1 :开始初始化显示时间闹铃检测键盘扫描图 5.1 主程序流程图2、中断服务流程图:如图 5.2 :.专业资料 .开始重装定时器初值Deda加1中断返回图 5.2 中断服务流程图2、时间流程图,如图5.3 :开始Ndeda=20?Ydeda=0,秒 sec加 1Nsec=60?YSec=0,分钟 min 加 1Nmin=60?Ymin=0, 小时 hour 加 1返回主程序图 5.3时间流程图3、闹铃检测流程图,如图5.4 :.专业资料 .开始闹铃1时间到?NYY闹铃2时间到?闹铃NNY1分钟到或K5摁下返回主程序图 5.4闹铃检测流程图4、键盘扫描流程图,如图5.5 :.专业资料 .开始YYhh2 加1K1是否按下?NYmm2 加1K2是否按下?NYFlag2=1K3是否按下?NYFlag2=0K4是否按下?NY确认 okK6是否按下?返回主程序YC_hour加1K1是否按下?NYC_min加1K2是否按下?NYC_sec加1K3是否按下?NYN确认okK6是否按下?显示倒计时NK5是否按下?Y返回主程序K1是否按下?设置走时时间YK1是否按下?Hour加1NYK2是否按下?min加1NNYK3是否按下?sec加1NNYK6是否按下?确定okN返回主程序YK2是否按下?设置闹铃 2NYK1是否按下?hh1加1YN设置闹铃 2K3是否按下?YK2是否按下?mm1加1NN设置倒计时YK3是否按下?Flag1=1=1NYK4是否按下?Flag1=0=0NNYK62是否按下?确定 ok返回主程序YK4是否按下?N返回主程序图 5.5键盘扫面流程图.专业资料 .6 仿真设计仿真设计是设计一个系统十分重要的环节,在实际电路做好之前系统软件调试最好选择。此次仿真设计采用的是英国Labcenter electronics公司出版的EDA工具软件 Protues ,在 PROTUES绘制好原理图后,调入已编译好的目标代码文件: *.HEX,可以在 PROTUES的原理图中看到模拟的实物运行状态和过程。仿真电路图如下,图6.1 :图 6.1仿真电路图7 系统调试及结果7.1软件调试此时设计的软件调试部分主要在仿真软件Protues 中完成。首先根据硬件设计在Protues 中完成原理图的设计, 确定使用单片机的哪些I/O 口,然根据软件设计中的流程图编写单片机C 语言程序。结合题目要求模块化地编写程序,首先编写走时程序,然后编写闹铃1、闹铃 2、的程序,最后完成倒计时设计, 在分模块化编写过程中, 不断地根据仿真现象调试程序来修复软件编写错误。例如调试液晶的显示问题,写指令write_(0x80)将数据指针定位到第一行.专业资料 .第一个字处,当写第二行时需要重新定位数据指针,写指令 write_(0x80+0x40)。再者,在显示倒计时时出现走时时间不准确的问题,故在倒计时变量处理的程序中要加上正计时走时时间变量处理,C_sec、 C_min、C_hour 是倒计时时间变量, sec、 min、hour 是走时时间变量。程序如下:void C_conv( )if(deda=20)C_sec-;sec+;deda=0;if(C_sec0)C_sec=59; C_min-;if(sec=60)min+;sec=0;if(C_min0)C_hour-;C_min=59;if(min=60)hour+;min=0;if(hour=24)hour=0;if(C_hour0)C_sec=0;C_min=0;C_hour=0;for(i=0;i10;i+)routine_led=routine_led;beep=beep;delay(80);ok=1;最后在显示时间问题上, 要将数字显示到液晶上, 采取的方法是将数字转化为字符 串中的元素然 后再 送往液晶显示 。 程 序如下 :其 中, ucharcodelcd_code =0123456789。void display_num(unsigned char num)uchar ge,shi;ge=num%10;shi=num/10;write_date(lcd_codeshi);write_date(lcd_codege);.专业资料 .7.2硬件调试此次的硬件设计较为简单, 主要的调试部分在于液晶对比度的调试, 期间遇到的问题是液晶的对比度调节引脚所接的 10k 电位器封装不正确,导致 VCC与GND短路,还好及时发现问题,没有损坏器件。7.3调试结果经过近两周的软件调试和硬件调试,对比设计要求,完成情况如下:1、电路板大小 7cm*12cm;2、电路接通电源后,蜂鸣器连续发出2 次响声,同时工作指示灯闪动,液晶第一行显示“ Time:00:00:00 ”,代表时间,第二行显示“00:00 F 00:00 F”,代表两个闹铃,初始为关。3、可通过按键设定走时时间、两个闹铃响的时间和倒计时时间。4、可显示两个闹钟的时、分,并用2 个 LED灯分别指示闹钟1、闹钟 2 的时间。8 总结1、通过本次课程设计,实现了基于单片机的电子时钟设计,在这过程中,我学到了很多,加深了对单片部模块的理解,进一步学习了 C 语言的编写规则。在设计的前期,我认真地复习了 51 单片机的相关资料,掌握了单片机外部电路的合理设计以及各个引脚的功能。 系统的进行电子时钟的需求分析, 合理的设计出了电路原理框图, 根据原理框图设计出电路原理图, 然后设计软件流程图, 根据流程图对单片机使用 C 语言编程。在此过程中,我学到了很多在书本上学不到的东西,尤其是在处理故障和解决问题方面的考虑,受益颇多。2、本次设计的题目为基于单片机的电子时钟设计,通过两周努力,可以顺利实现的功能有: 在液晶上显示走时时间; 两个闹铃时间和是否开启以及倒计时时间;并且能通过按键实现设置时间的暂停、启动、调节等控制。3、在完成设计后,发现有还可以改进的地方,例如增加一个省电模式,即在不需要看时间的时候,将液晶显示关闭,这是设计前考虑不周的地方。最后,我深刻感受到要做好一个课程设计,就必须做到:在设计程序之前,对所需资料的综合整理,有效的挑选资料;要明确目标,整理思路;合理设计出系统所必须的流程图, 做好充分的心里准备。 这次设计是对我所学单片机一书的综合考验,使我能查漏补缺,复习课本知识,加深理解记忆,所以每一步我都用心去做。.专业资料 .参考文献1 红卫 . 基于单片机的智能系统设计与实现M. 北京:电子工业 ,20052王守中、聂元铭.51 单片机开发入门与典型实例(第2版) M. 北京:人民邮电 ,20093白驹珩、雷晓平. 单片计算机及其应用(第2 版) M.:电子科技大学 ,2012.专业资料 .附录1、元器件清单:专业工程设计元器件清单示例学号:148205216:彭少锟空课题名称:定时打铃器的设计空序 号名称数量单 价备 注1单片机 89C52及锁紧底座12lcd1602134脚按键(规格 12*12mm)6带按键帽44脚按键(规格 6*6mm)15发光二极管(直径3mm)3蓝绿黄各一个6发光二极管(直径5mm)1红7直插电阻 360欧48直插电阻 1K19直插电阻 100欧210直插电阻 2.7k111精密电位器 10k112晶振 12MHz113电解电容 10u114直插电容 22pF2159012三极管116蜂鸣器117排阻 1K*81181*40 圆孔插座11排19双排插针11排20单排插针11排21ISP 下载口 2*5 插座1.专业资料 .2、电路原理图:3、程序代码#include#define uchar unsigned char#define uint unsigned int#define TS1602_DATA P0sbit routine_led=P10;sbit alm_led1=P11;sbit alm_led2=P12;sbit E=P22;sbit RS=P21;sbit beep=P20;sbit k1=P30;sbit k2=P31;sbit k3=P32;sbit k4=P33;sbit k5=P34;sbit k6=P35;uchar i,j;uchar hour=0,min=0,sec=0;.专业资料 .uchar hh1=0,mm1=0,hh2=0,mm2=0;uchar alm_flag1=0,alm_flag2=0;uchar deda=0;char C_hour=0,C_min=0,C_sec=0;uchar ok=0;uchar string1=Time: : :;uchar string2= :F:F;uchar string3= :N:F;uchar string4= :F:N;uchar string5= :N:N;uchar string6=Countdown_time:;uchar string7= : :;uchar code lcd_code=0123456789;void delay(uint x)uint i,j;for(i=0;ix;i+)for(j=0;j=20)sec+;deda=0;if(sec=60)min+;sec=0;ok=1;if(min=60)hour+;min=0;if(hour=24)hour=0;/*/ 函数功能:显示走时时间/*void disp_time()write_(0x80+0x05);display_num(hour);delay(1);write_(0x80+0x08);display_num(min);delay(1);write_(0x80+0x0B);display_num(sec);delay(1);/*/ 函数功能:倒计时分秒转换程序.专业资料 ./*void C_conv()if(deda=20)C_sec-;sec+;deda=0;if(C_sec0)C_sec=59; C_min-;if(sec=60)min+;sec=0;if(C_min0)C_hour-;C_min=59;if(min=60)hour+;min=0;if(hour=24)hour=0;if(C_hour0)C_sec=0;C_min=0;C_hour=0;for(i=0;i10;i+)routine_led=routine_led;beep=beep;delay(80);ok=1;/*/ 函数功能:显示倒计时时间/*void disp_Countdown_time()write_(0x80+0x40);display_num(C_hour);delay(1);write_(0x80+0x43);display_num(C_min);delay(1);write_(0x80+0x46);display_num(C_sec);delay(1);/*.专业资料 ./ 函数功能:调用走时时间程序函数/*void time()conv();disp_time();/*/ 函数功能:调用倒计时时间程序函数/*void Ctime()C_conv();disp_Countdown_time();/*/ 函数功能:显示闹铃 1 时间/*void disp_alm1()write_(0x80+0x40);display_num(hh1);delay(1);write_(0x80+0x43);display_num(mm1);delay(1);/*/ 函数功能:显示闹铃 2 时间/*void disp_alm2()write_(0x80+0x48);display_num(hh2);delay(1);write_(0x80+0x4B);.专业资料 .display_num(mm2);delay(1);/*/ 函数功能:调整时间/*void set_time()delay(500);TR0=0;sec=0;ok=0;while(ok=0)if(k1=0)delay(100);if(k1=0)hour+;if(hour=24)hour=0;delay(5);disp_time();if(k2=0)delay(100);if(k2=0)min+;if(min=60)min=0;delay(5);disp_time();if(k3=0)delay(100);if(k3=0)sec+;if(sec=60)sec=0;delay(5);disp_time();if(k6=0)ok=1;TR0=1;/*/ 函数功能:调整闹铃 1.专业资料 ./*void set_atime1()alm_led1=0;delay(500);ok=0;while(ok=0)if(k1=0)delay(100);if(k1=0)hh1+;if(hh1=24)hh1=0;delay(5);disp_alm1();if(k2=0)delay(100);if(k2=0)mm1+;if(mm1=60)mm1=0;delay(5);disp_alm1();if(k3=0)alm_flag1=1;if(alm_flag1=0)&(alm_flag2=0)display_string2(string2); disp_alm1();disp_alm2();if(alm_flag1=1)&(alm_flag2=0)display_string2(string3); disp_alm1();disp_alm2();if(alm_flag1=0)&(alm_flag2=1)display_string2(string4); disp_alm1();disp_alm2();if(alm_flag1=1)&(alm_flag2=1)display_string2(string5); disp_alm1();disp_alm2(); if(k4=0)alm_flag1=0;if(alm_flag1=0)&(alm_flag2=0)display_string2(string2); disp_alm1();disp_alm2();if(alm_flag1=1)&(alm_flag2=0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!