可报温报时电子钟设计报告.docx

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可报温报时电子钟设计报告

闹钟提示整体系统框图S3、S4、S5键组合实现校正整点S2键切换显示S1键切换模式系统工作原理基于单片机STC89C52与开发平台KEIL软件,利用C语言设计相关程序。期间配合使用DS1302时钟芯片实现走时功能,使用温度传感器件DS18B20实现室温测量功能,使用ISD1760语音芯片实现录放音功能以及配合动态显示数码将相关功能以可视形式呈现,并通过按键配合实现切换显示、校时、定闹等额外功能。S1、S2键执行模式及显示切换功能及S5确认/关闭闹钟功能时钟、日历校正及定闹模块(S3、S4、S5组合)闹钟提示(数码管闪烁)定时中断部分循环程序主程序循环时钟、日历显示模块整点报时报温功能温度显示循环(关闭定时器)软件框图各变量及时钟、语音芯片初始化系统使用介绍:电路板上电后,初始状态数码管显示时钟;S1键切换模式,模式0为正常显示模式,模式1为校正模式,并且取决于按下按键之前显示部分依次进入:时钟校正、日历校正、闹钟定时模块;S2键切换显示,依次为:时钟、日历、温度;S3键在进入校正模式有效,用于选择校正位;S4键在进入校正模式有效,用于对当前校正位进行数值改变,即“加1”功能;S5键在校正模式时,用于确认校正,在闹钟闪烁时,按下可关闭闹钟;S6为电路板重置键,终止程序;RST键为语音芯片重置键,中断语音芯片工作。已知部分缺陷及非完美解决方案:问题描述:进入校正模式时,会出现数据读取错乱,使得数码显示0~9以外的数字,如A、B、C、D等;在确认校正时同样会有几率出现该问题。推测原因:DS1302走时程序中数据会有过渡性变化,使得display_buffer[]数组的数据在读取和置入时产生问题。或置数时有数据错误。解决方案:对显示错乱部分重新进行校时,该处将置零。此后可正常校正。软件编写与调试时所遇到的问题及解决方案:按键按下时程序多次执行:利用“miaomiao”系列变量作为判定条件保证只执行一次程序;对显示变量display_buffer直接进行加一操作进位产生错乱:引入buffer_temp[]数组,替代校正;语音芯片不能连续播放多段语音:每段播放后延时适当时间;为使得”on”、” off”的右下角显示小数点时对SEGMENT直接进行“位与”操作只能显示o8.”、” of8”. 等:引入变量s过渡;整点报时会连续两次播放语音:只在分钟显示为“59”时使得miaomiao_play变量为一,播放后置为零,保证只播放一次;报温时可能读取到设定工作温度上限(39摄氏度)的温度值且实际此时温度在上限之内:在tmread()函数里增加循环读取部分直至读到正常数值;其他组组员(于晨曦同学)提出的建议与提示:温度读取时间较长不宜加入定时中断显示;每次显示前对位码或段码(取决于置数顺序)先置零,以解决数码管残影问题。PCB板原理图及接线图见验收文件夹PPT,由于打印问题在此不作展示。源程序代码#include at89x52.h#include stdio.h#include absacc.h#include intrins.h#define SEGMENT XBYTE[0xdfff]#define BIT_LED XBYTE[0xbfff]#define fosc 11.0592#define time0 2500#define uint unsigned int#define SEGMENT XBYTE[0xdfff]#define BIT_LED XBYTE[0xbfff]//语音部分定义开始unsigned char bdata SR0_L;unsigned char bdata SR0_H;unsigned char bdata SR1;unsigned char APCL=0,APCH=0;unsigned char PlayAddL=0,PlayAddH=0;unsigned char RecAddL=0,RedAddH=0;sbit CMD=SR0_L^0;sbit FULL=SR0_L^1;sbit PU=SR0_L^2;sbit EOM=SR0_L^3;sbit INTT=SR0_L^4;sbit RDY=SR1^0;sbit ERASE=SR1^1;sbit PLAY=SR1^2;sbit REC=SR1^3;unsigned char ISD_SendData(unsigned char dat);void ISD_PU(void);voidISD_Rd_Status(void);void ISD_WR_APC2(unsigned char apcdatl,apcdath);void ISD_SET_PLAY(unsigned char Saddl,Saddh,Eaddl,Eaddh);sbit SS=P1^4;sbi

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档