欢迎来到天天文库
浏览记录
ID:15092285
大小:110.58 KB
页数:33页
时间:2018-08-01
《可报温报时电子钟设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、电子系统设计报告电气43陈振斌孙鹏程西安交通大学2017-5-20闹钟提示1、整体系统框图S3、S4、S5键组合实现校正整点S2键切换显示S1键切换模式数码管闪烁报时报温温度显示日历校正定闹功能日历显示时钟显示时钟校正2、系统工作原理基于单片机STC89C52与开发平台KEIL软件,利用C语言设计相关程序。期间配合使用DS1302时钟芯片实现走时功能,使用温度传感器件DS18B20实现室温测量功能,使用ISD1760语音芯片实现录放音功能以及配合动态显示数码将相关功能以可视形式呈现,并通过按键配合实现切换显示、校时、定闹
2、等额外功能。S1、S2键执行模式及显示切换功能及S5确认/关闭闹钟功能时钟、日历校正及定闹模块(S3、S4、S5组合)闹钟提示(数码管闪烁)定时中断部分循环程序主程序循环时钟、日历显示模块整点报时报温功能温度显示循环(关闭定时器)3、软件框图开始各变量及时钟、语音芯片初始化4、系统使用介绍:电路板上电后,初始状态数码管显示时钟;S1键切换模式,模式0为正常显示模式,模式1为校正模式,并且取决于按下按键之前显示部分依次进入:时钟校正、日历校正、闹钟定时模块;S2键切换显示,依次为:时钟、日历、温度;S3键在进入校正模式有效
3、,用于选择校正位;S4键在进入校正模式有效,用于对当前校正位进行数值改变,即“加1”功能;S5键在校正模式时,用于确认校正,在闹钟闪烁时,按下可关闭闹钟;S6为电路板重置键,终止程序;RST键为语音芯片重置键,中断语音芯片工作。5、已知部分缺陷及非完美解决方案:问题描述:进入校正模式时,会出现数据读取错乱,使得数码显示0~9以外的数字,如A、B、C、D等;在确认校正时同样会有几率出现该问题。推测原因:DS1302走时程序中数据会有过渡性变化,使得display_buffer[]数组的数据在读取和置入时产生问题。或置数时有
4、数据错误。解决方案:对显示错乱部分重新进行校时,该处将置零。此后可正常校正。6、软件编写与调试时所遇到的问题及解决方案:l按键按下时程序多次执行:利用“miaomiao”系列变量作为判定条件保证只执行一次程序;l对显示变量display_buffer直接进行加一操作进位产生错乱:引入buffer_temp[]数组,替代校正;l语音芯片不能连续播放多段语音:每段播放后延时适当时间;l为使得”on”、”off”的右下角显示小数点时对SEGMENT直接进行“位与”操作只能显示"o8.”、”of8”.等:引入变量s过渡;l整点报
5、时会连续两次播放语音:只在分钟显示为“59”时使得miaomiao_play变量为一,播放后置为零,保证只播放一次;l报温时可能读取到设定工作温度上限(39摄氏度)的温度值且实际此时温度在上限之内:在tmread()函数里增加循环读取部分直至读到正常数值;l其他组组员(于晨曦同学)提出的建议与提示:温度读取时间较长不宜加入定时中断显示;每次显示前对位码或段码(取决于置数顺序)先置零,以解决数码管残影问题。7、PCB板原理图及接线图见验收文件夹PPT,由于打印问题在此不作展示。4、源程序代码#include6、.h>#include#include#include#defineSEGMENTXBYTE[0xdfff]#defineBIT_LEDXBYTE[0xbfff]#definefosc11.0592#definetime02500#defineuintunsignedint#defineSEGMENTXBYTE[0xdfff]#defineBIT_LEDXBYTE[0xbfff]//语音部分定义开始unsignedcharbdataSR0_L;unsignedc7、harbdataSR0_H;unsignedcharbdataSR1;unsignedcharAPCL=0,APCH=0;unsignedcharPlayAddL=0,PlayAddH=0;unsignedcharRecAddL=0,RedAddH=0;sbitCMD=SR0_L^0;sbitFULL=SR0_L^1;sbitPU=SR0_L^2;sbitEOM=SR0_L^3;sbitINTT=SR0_L^4;sbitRDY=SR1^0;sbitERASE=SR1^1;sbitPLAY=SR1^2;sbitREC=SR8、1^3;unsignedcharISD_SendData(unsignedchardat);voidISD_PU(void);voidISD_Rd_Status(void);voidISD_WR_APC2(unsignedcharapcdatl,apcdath);voidISD_SET_PLAY(unsignedch
6、.h>#include#include#include#defineSEGMENTXBYTE[0xdfff]#defineBIT_LEDXBYTE[0xbfff]#definefosc11.0592#definetime02500#defineuintunsignedint#defineSEGMENTXBYTE[0xdfff]#defineBIT_LEDXBYTE[0xbfff]//语音部分定义开始unsignedcharbdataSR0_L;unsignedc
7、harbdataSR0_H;unsignedcharbdataSR1;unsignedcharAPCL=0,APCH=0;unsignedcharPlayAddL=0,PlayAddH=0;unsignedcharRecAddL=0,RedAddH=0;sbitCMD=SR0_L^0;sbitFULL=SR0_L^1;sbitPU=SR0_L^2;sbitEOM=SR0_L^3;sbitINTT=SR0_L^4;sbitRDY=SR1^0;sbitERASE=SR1^1;sbitPLAY=SR1^2;sbitREC=SR
8、1^3;unsignedcharISD_SendData(unsignedchardat);voidISD_PU(void);voidISD_Rd_Status(void);voidISD_WR_APC2(unsignedcharapcdatl,apcdath);voidISD_SET_PLAY(unsignedch
此文档下载收益归作者所有