智能闹钟.doc_第1页
智能闹钟.doc_第2页
智能闹钟.doc_第3页
智能闹钟.doc_第4页
智能闹钟.doc_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能闹钟1. 设计思路本设计是一个智能闹钟,采用美国DALLAS公司生产的时钟芯片,产生时间信号传递给单片机,经单片机处理,再通过LED 8段数码管显示出来。用户通过键盘来设定闹钟定时时间,当达到定时时间,单片机将声音传感器和喇叭开启,声音传感器采集外部声音信号,将外界的声音大小转变成电流大小,输入发光二极管,再通过光敏三极管来控制阻值大小,来控制喇叭发出的声音的大小,从而实现喇叭声音随外界声音变化而变化.键盘时钟芯片单片机LED功放声音采集图1 系统结构框图 2. 方案设计2.1单片机方案一 如果用8031系列,由于它没有内部RAM,系统又需要大量内存存储数据,因而不可用。方案二 8051或8052系列具有片内ROM或EPROM,而52子系列与51子系列的不同之处在于:片内数据存储器增支256字节;片内程序存储器增之8KB(8032无);有3个16位定时/计数器,6个中断源。8051片内程序存储器为4KB,对于本设计来说已经足够,因此选择8051弹片机。2.2时钟功能方案一 用软件实现,直接用单片机的定时器编程以实现时钟;方案二 用专门的时钟芯片实现时钟的记时,再把时间数据送入单片机,由单片机控制显示。比较两种方案,用软件实现时钟固然可以,但是程序运行的每一步都需要时间,多一步或少一步程序都会影响记时的准确度,用专用时钟芯片可以实现准确记时。因此选择方案二。2.3 显示器方案一 液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。方案二 用数码管作为显示器。数码管的驱动电路简单,使用方便,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。由于数码管使用起来较为方便,在夜间看时间也很方便,因此我们选择了方案二。2.4 键盘方案一 4*3矩阵式键盘。如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。方案二 独立式按键。如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,此方案适用于按键较少的情况。因此选择方案一。3. 单元电路设计3.1单片机系统图2 AT89C51最小系统电路图单片机采用AT89C51,使用P0口作为I/O口,则需外接上拉电阻。使用P0.0、P0.1、P0.2、P0.3分别与74LS48译码器的输入端相连接;P0.4、P0.5、P0.6、P0.7分别与显示电路的4个LED数码管片选信号相连接;P1.0到P1.6连接外接键盘;P1.7(即B0)作为功放的输出端与功放驱动电路相连接;P2.0到P2.2分别与时钟芯片DS1302的/RET(“5”)、I/O(“6”)、 SCLK(“7”)三个引脚相连接;31脚(即/EA)接高电平,因此首先执行片内程序存储器的程序;19脚(即X1)与18脚(即X2)连接外部振荡电路;9脚(即RESET)连接复位电路。3.2键盘电路键盘电路采用4*3行列式键盘,用P1口线组成行、列结构,按键设置在行列的交点上。当进行键盘扫描时,则将扫描信号送至P1.4、P1.5、P1.6,再从P1.0、P1.1、P1.2、P1.3读取键盘状态,即可判断哪个键盘被按下。P1.0、P1.1、P1.2、P1.3分别连接一个10K的上拉电阻到公共接点上,公共接点连接在VCC上,因此采用低电平扫描。送入P1.4、P1.5、P1.6的扫描信号中,只有按键S0到S11分别代表的意义是“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“闹钟”与“时间”。 一个为低电平(即0),其余为高电平。紧接着读取P1.0、P1.1、P1.2、P1.3的状态,哪个为低电平(即0)则表示被按下,如果都是高电平,则从头开始继续扫描。当长时间按下“闹钟”键时,为开启或关闭闹钟;当短时间按下“闹钟”键时,为设置闹钟时间。当按下“时间”键时,为设置时间。电路图如下图3所示:图3 4*3键盘电路图33功放电路本系统是利用程序产生高电平,送到P1.7(即B1)口,驱动麦克风和三极管导通,采集声音信号并转化为电流,从而影响二极管的发光亮度在通过光敏三极管来控制喇叭发出的声音的大小图4 功放电路图35显示电路图5 显示电路图数码管在夜间看时间的时候就不需要有光源,非常方便,因此采用4个共阳极8段LED数码管作为显示系统,片选信号分别连接在A4(P0.4)、A5(P0.5)、A6(P0.6)、A7(P0.7),LED 8段数码管的a、b、c、d、e、f、g分别与74LS48译码器的输出端相连接。LED数码管的dp端接高电平。电路图如上图4所示。36时钟电路图6 DS1302时钟电路图选用DS1302作为时钟芯片,X1与X2连接32.768kHz的晶体振荡电路,DS1302与单片机AT89C51采用串行数据传输方式,/RET、I/O、 SCLK分别与单片机的P2.0(B1)、P2.1(B2)、P2.2(B3)相连接。Vcc2(即“1”)连接电源。电路图如上图5所示。4 程序设计开始初始化闹钟与时间比较键盘扫描放音关音是否关闭闹铃闹钟或时间设置键是否按下显示时间设置闹钟是否开启 4.1 主程序流程图 N Y N Y Y N Y N Y图7 主程序流程图系统启动后,进行初始化设置,键盘扫描,显示当前的时间。判断闹钟或时钟是否需要设置,如果需要则进行相应的设置,如果不需要则跳转到判断闹钟是否开启,如果没有开启则跳回键盘扫描,开启则进行判断闹钟与时间是否相等,相等则放音乐同时显示代码,进行输入码与显示代码比较是否相等,相等则关闭音乐,转到键盘扫描,否则一直播放音乐直到正确输入代码。42 比较闹钟与时间程序43H,42H存放闹钟的时位;41H,40H存放闹钟的分位33H,32H存放时间的时位;31H,30H存放时间的分位 NNNNYYY(33H)=(43H)?(32H)=(42H)?(31H)=(41H)?(30H)=(40H)?开始RETY 图8 比较闹钟与时间程序MOV A,33HXRL A,43HJNZ TO-ENDMOV A,30HXRL A,40HJNZ TO-ENDSETB F0SETB P1.7TO-END:POP ARET判断33H与43H存储的内容是否相等,如果不相等则停止该程序,相等说明时间与闹钟时位的高位相等;继续判断32H与42H分别存储的时间与闹钟时位的低位是否相等,不相等则停止该程序,相等则继续判断31H与41H分别存储的时间与闹钟分位的高位是否相等,与上面同理;当判断30H与40H存储的内容是否相等时,如果相等则说明闹钟时间到达,音乐开启,F0=1,此时按键可以使用,反之则停止该程序。43 键盘扫描程序系统启动后,判断有无按键按下,R2存储是哪个按键按下,然后判断R2的值。当R2为11时,F0置位,进行时间调整,调整完毕则显示,并从新开始键盘扫描。当R2为10时,进行1秒钟的延时,判断是否长按闹钟键(S10),如果长按,则进行闹钟开启与关闭设置,R1为FFH时闹钟开启,R1为00H时闹钟关闭;如果没有长按,则直接跳转到进行F0置位,闹钟调整。调整完毕则显示,并从新开始键盘扫描。当R2为其他数值时,判断F0是否为1,如果F0为1时,调用相应键值程序,否则返回键盘扫描。F0的值判断数字键“0”到“9”是否开启,当为1时开启,反之关闭。在调整时间、闹钟、显示代码时F0为1。开始键盘扫描R1=0FFH?判断R2F0置位,时间调整键值存入R2CPL R1F0置位,闹钟调整显示F0=1?P1.5=0&R2=10是否调整完毕1秒延时相应键值程序有无键按下是否调整完毕 N Y N R2为11 R2为其他 R2为10 Y N Y N Y N Y N Y图9 键盘扫描流程图44 对DS1302操作的程序初始化要求/RST为低电平,SCLK为低电平,/RST被设置为高就启动了一个数据传送的过程。SCLK的16个方波完成一次数据传送,前8个方波用于输入命令字节,后8个方波用于数据的输出(读DS1302)或数据的输入(写DS1302)。在SCLK的上升沿,I/O线上数据被送入DS1302,在SCLK下降沿DS1302输出数据在I/O线上。读DS1302驱动程序图,如下图所示:结束YNY开始初始化/RST变高启动一次数据传送工作写命令字节一位SCLK发脉冲/RST发低电平到8次吗?SCLK发脉冲读命令字节一位N到8次吗?图10 读DS1302驱动程序图读写操作各用一个程序,读DS1302如上图所示,写DS1302程序框图与之相似,只需上图第二个循环中“读数据字节一位”改为“写数据字节一位”即可。读DS1302驱动程序:RDRTC:CLR /RET ;置控制引脚为低电平,禁止数据传送 NOP CLR SCLK ;初始化串行时钟线为低电平 NOP SETB /RET ;置控制引脚为高电平,允许数据传送 NOP MOV A,#0BFH ;准备“接收多字节数据”的命令码 MOV R2,#8 ;1字节命令码需要传送8次RDRTC0:CLR SCLK ;置串行时钟线为低电平 RRC A ;将最低位传送给进位标志C MOV P2.1,A ;再传送至数据端口 NOP SETB SCLK ;置串行时钟线为高电平,其上升沿发送1位数据 DJNZ R2,RDRTC0 ;直到发送完1字节的命令码 MOV R0,#2EHRDRTC1:MOV R2,#8 ;每字节数据需要接受8次RDRTC2:CLR SCLK ;置串行时钟线为低电平,其下降沿接收1位数据 NOP MOV C,P2.1 ;将数据端口的信息传送给进位标志C RRC A SETB SCLK ;置串行时钟线为高电平 DJNZ R2,RDRTC2 ;直到接收到1个完整字节的数据 MOV R0,A INC R0 DJNZ R3,RDRTC1 ;直到接收完全部数据 CLR /RET RET5 小结本文介绍了一种智能闹钟设计。本设计是由中央控制器、时钟系统、存储器、显示器及键盘部分组成。控制器采用单片机AT89C51,时钟系统使用时钟芯片DS1302,用LED 8段数码管作为显示器,用单片机内置ROM作为存储器件。单片机通过时钟芯片DS1302获取时间数据,对数据处理后,单片机再把时间数据送LED数码管显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论