电子综合设计数字钟设计文档.docx_第1页
电子综合设计数字钟设计文档.docx_第2页
电子综合设计数字钟设计文档.docx_第3页
电子综合设计数字钟设计文档.docx_第4页
电子综合设计数字钟设计文档.docx_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

电子综合设计数字钟设计文档多功能数字钟摘要本系统以单片机AT89C55WD为核心控制部件。设计了实时时钟日历电路、环境温度显示电路、人机接口键盘电路、液晶显示电路等。其中实时时钟芯片采用串行通讯的DS1302,可实现年月日星期时分秒等时间信息的采集、时间调节和闹钟功能。温度采集模块采用DS18B20集成温度传感器,可对现场环境温度进行实时采集,并且对温度超限进行报警提示。人机接口键盘模块中,键盘由简单的8个按键组成,利用键盘的延迟消抖方法实现。操作非常简便和人性化。液晶显示模块则由LCD1602实现两行16个字符的液晶显示。通过交流电源(220V)降压整流为直流电源(9V),通过以7805芯片为核心的集成模块输出直流5V电压,供电来实现以上功能。设计能支持时、分、秒的时钟,时钟有时间调整功能,具有闹钟功能,具有秒表功能,倒计时功能。除上述基本要求外,又新增以下功能:(1)时间显示可实现12/24显示切换(2)提供闹钟的开关功能,并显示开关状态(3)倒计时的时间存储功能(4)放四种不同的音乐功能(5)生日闹钟 (6)闹钟播放音乐 (7)整点报时功能 (8)温度过限音乐报警功能 (9)开机显示功能(10) “电子日历”功能(11)温度报警功能(12)发声倒计时功能。 关键字:单片机 人机接口 DS1302 DS18B20 LCD1602 7805 温度报警 多功能数字钟实物图数字钟设计报告一、设计任务与要求1、设计任务设计制作一个多功能数字钟。2、设计要求(1)基本要求(1)时钟具有计时功能,能够显示时、分、秒;(2)时钟有时间调整功能;(3)时钟具有闹钟功能;(4)时钟具有秒表计时功能;(5)时钟具有倒计时功能。(2)提高要求(1)时钟有开机显示功能;(2)时钟增加了“电子日历”功能;(3)时钟有12进制与24进制的转换功能;(4)时钟具有整体报时功能;(5)时钟附带有一个温度计功能,显示精度为0.5度;(6)时钟具有温度报警功能;(7)时钟能够提供二个一般闹钟和一个生日闹钟功能;(8)时钟提供播放四种不同的音乐功能;(9)时钟提供闹钟的开关功能,并显示开关状态;(10)时钟的秒表提供了连续计时功能,能够连续计时三次;(11)时钟具有时间存储功能;(12)时钟具有发声倒计时功能;(13) 其它发挥。(3)数字钟具体功能及其按键1、开机显示界面K1:移动控制键;K2:显示复位键;K3:左右移动控制键;K4:更换界面键;K5:逐个显示控制键。2、时间显示界面K1:时间减控制键;K2:时间加控制键;K3:时间位移动键;K4:更换界面键;K5:12进制与24进制更换键;K7:闹钟停止控制键;K8:闹钟睡眠控制键。3、温度显示界面K1:温度减控制键;K2:温度加控制键;K3:温度位移动键;K4 : 更换界面键;K5:报警停止键。4、闹钟功能界面K1:闹钟时间加控制键;K2:闹钟时间减控制键;K3:闹钟时间位移动键;K4:更换界面键;K5:一般闹钟选择控制键;K6:生日闹钟显示控制键;K7:闹钟停止控制键;K8:闹钟开关控制键。5、秒表功能界面K1:秒表开始计时控制键;K2:秒表停止计时控制键;K3:秒表连续计时控制键;K4:更换界面键;K5:存储秒表时间控制键。6、倒计时功能界面K1:倒计时加控制键;K2:倒计时减控制键;K3:倒计时时间位移动键;K4:更换界面键;K5:倒计时开始停止控制键;K6:倒计时发声控制键;K7:倒计时清零控制键。二、总体方案比较与论证方案一:采用中小规模集成电路实现组合逻辑与时序逻辑电路设计,用振荡器产生的稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。进而得到分和小时,计数器的输出经译码器送显示器。此方案能实现数字钟的基本功能,但其他扩展功能的实现非常有限。方案二:基于单片机来实现。目前单片机技术比较成熟,功能也比较强大,时钟芯片采用DS1302,温度传感器采用DS18B20。显示采用1602液晶显示。此方案基本原理框图如图2-1所示图2-1 原理框图此系统硬件简洁,将复杂的硬件功能用软件实现,控制多个硬件电路的执行因此系统控制灵活,能很好地满足本题的基本要求和提高要求。而且编程灵活、调试方便。 从这两种电路设计方案的比较而言,利用单片机及外围电路编写软件程序来设计数字钟,简单灵活,而且可扩展各种功能,能完全达到设计要求,体现了现代计算机工具的方便、简捷、准确性。故采用第二种方案。三、模块电路分析与比较1、单片机选择方案一:由于程序代码比较多,有14K左右。采用Flash比较小的单片机,然后进行外部存储器扩展。可以选用AT89S系列,例如AT89S52,然后进行外部存储器扩展,但是,考虑到仿真比较麻烦,同时还要进行存储器的扩展,这样使电路更加复杂,不便于硬件的设计、制作。方案二:采用Flash比较大的单片机,例如AT89S54, AT89C55WD,但是AT89S54非常昂贵,使用不经济,然而AT89C55WD能够实现同样的功能,也比较便宜,抗干扰能力强,这样不仅比较经济,也使电路得到了简化,有利于硬件系统的设计、制作。基于以上分析,考虑到AT89C55WD单片机比较便宜,同时硬件电路也比较简单,有利于硬件系统的设计、制作,因此,我们采用方案二,选用AT89C55WD单片机。2、时钟方案选择方案一:使用单片机内部的定时计数器,采用软件实现,可以降低系统成本,缺点是误差较大。一般用在对时间精度要求不高的场合,而且当出现断电等情况程序重新运行时,需要对时间用按键进行校正。 方案二:在系统中扩展外部时钟芯片DS1302。DS1302时钟芯片内含一个实时时钟日历电路和32字节静态RAM,可提供秒、分、时、日、日期月、年的信息,每月和闰年的信息可自动调整。通过简单的SPI串行接口,与单片机仅需用复位、数据和时钟三根IO口线进行通信,同时DS1302可外接备用电源。在主电源关闭的情况下,也能保持时钟的连续运行。完全能满足题目掉电保护功能的要求。基于以上分析,我们决定采用串行通讯的DS1302。电路结构简单,程序容易编制,时钟精高,容易调整,具有掉电保护功能。这样就可以使用单片机内部的定时计数器来实现秒表和倒计时的设计,其中我们用T0来实现时间的闪烁,T1来实现秒表计时和倒计时功能,能够充分的利用单片机的资源。3、温度采集方案选择方案一:使用热敏电阻或温度传感器AD590,把测得的模拟量送入ADC0809的其中一个通道进行A/D转换,将转换后所得数字量送入单片机进行温度值变换之后显示。电路比较复杂。且精度难以保证。方案二:采用单线数字温度传感器DS18B20,DS18B20具有许多优点,该传感器结构简单,不需外接电路,数据传输采用one-wire总线,可用一根I/O数据线即供电又传输数据,在-10-+85范围内精度为0.5,且分辨率较高,重复性和可靠性好。基于以上分析,方案二完全符合电路设计要求,同时电路简单,操作容易,对DS18B20编程也比较容易,故在本设计中采用方案二。 4、显示模块的选择方案一:采用数码管显示。数码管亮度高、体积小、重量轻,但其显示信息简单、有限,并且需要较高的驱动能力,功耗高,人机交互功能差,较难控制,在本题目中应用受到很大的限制。方案二:采用液晶显示。液晶显示功耗低,轻便防震。由于本题显示信息比较复杂,采用液晶显示界面友好清晰,操作方便,显示信息丰富。基于以上分析,由于系统要显示的信息较多,加上数码管操作不便,必须反复进行扫描,否则显示亮度就会变暗,故本设计中采用方案二。综上所述,经方案对比,在实际设计应用中使用AT89C55WD单片机,时钟芯片DS1302,温度传感器DS18B20,和LCD1602液晶等芯片,使电路整体结构简单,功能齐全,性能稳定、可靠,设计合理。四、各模块电路原理分析及原理图1、单片机AT89C55WD模块原理及电路图单片机是整个硬件系统的核心,它即协调整机工作,又是数据处理器,是软硬件系统连接的桥梁。AT89C55WD单片机性能好,价格便宜,其片内含有20KBFlash程序存储器,存储器可循环写入/擦除10000次,具有256B内部RAM,32条可编程I/O口线,3个定时器/计数器,具有8个中断源和4个优先级的中断结构,可编程全双工串行通道等功能,因此,我们选用AT89C55WD单片机来满足程序容量大,控制较为复杂的特点,以完成题目的基本要求和发挥部分的要求。具体原理图如图4-1所示。图4-1 单片机最小系统2、时钟模块原理及电路图时钟模块采用时钟芯片DS1302,DS1302是美国 Dallas公司推出的一种高性能、 低功耗、带RAM 的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达 2555V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节 的时钟信号或 RAM 数据。DS1302内部有一个 318 的用于临时性存放数据的 RAM 寄存器。DS1202具有主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。DS1302的引脚如图 4-2:图4-2 DS1302引脚图VCC1为后备电源VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由 VCC1或 VCC2两者中的较大者供电。当VCC2大于VCCI+02V时,VCC2给 DS1302供电。当 VCC2小于VCC1时,DS1302由VCC1供电。X1、X2为振荡源,外接 32768Hz晶振。RST是复位/片选线,上电运行时,在 VCC25V之前RST必须保持低电平。只有在 SCLK为低 电平时,才能将 RST置为高电平。IO为串行数据输入输出端(双向),SCLK为时钟输入端。DS1302与单片机接口原理图如图4-3: 图4-3 DS1302与单片机接口原理图3、温度采集模块原理及电路图 DS18B20采用 3脚 PR-35封装 ,其引脚图如图4-4所示。图4-4 DS18B20引脚图智能温度传感器 DS18B20将温度传感器 、AD传感器、寄存器、接口电路集成在一个芯片中,可实现直接数字化输出和测试 ,它的测温范围从-55+l25 ,且在-l0+85之间温度精度为0.5,并且转换精度可编程控制。 芯片出厂时为默认12位转换精度。DS18B20工作在9位、10位、11位 和 12位模式时的温度分辨依次为05、025、0125、00625。和 DS18B20线连接的微控制器的 l/O 口如无内部上拉电阻,必须在总线上加一个上拉电阻。阻值以5K为佳,DS18B20接收到温度转换命令(44H)后开始转换,转换完成后温度 以16位带符号扩展的二进制补码形式,存储在 scratchpad RAM中的第 0、1字节。在执行读 scratchpad RAM命令(OBEH)后,可将这两字节的温度值通过单总线传给主 CPU。DS18B20的接口原理图如图4-5:图4-5 DS18B20与单片机接口原理图4、显示模块电路原理及电路图LCD1602是可以显示两行每行显示l6个字符的液晶显示器 。LCD1602采用8位数据传送,通过单片机的并行接口与液晶显示模块直接连接,单片机通过对这些接口的操作,实现对液晶显示模块的控制,完成相应的显示。使用 LCD做数据显示,一旦数据写入 LCD,数据就会一直显示在液晶屏上,不必像数码管显示那样要定时扫描才能将数据显示,其显示效果远远超过数码管显示,LCD1602与单片机接口原理图: 图4-6 LCD1602与单片机接口原理图5、键盘模块原理及电路图本系统有八个按键,操作非常简单人性化,为了提高CPU的工作效率,采用中断工作方式,同时采用中断也有一部分防抖功能,这样通过按键来实现各种功能要求,设计方案原理图如图4-7所示: 图4-7 键盘模块原理图6、闹钟播放音乐和温度过限报警模块原理及电路图闹铃响和温度过限报警采用单片机编程以音乐的方式实现,并最终以蜂鸣器播放出。蜂鸣器驱动电路如图4-8:闹钟采用音乐报警方式,其中音乐播放是本设计的重要创新部分,音乐播放功能没有使用任何音乐芯片,而是采用模拟音乐的频率,产生频率表,用单片机的一个口线输出,驱动蜂鸣器,输出音乐。闹钟不仅实现每天两个的功能,而且还增加了生日闹钟的功能,采用与实际相近的音乐提醒,跟使我们的实际贴近生活。在温度模块中,不仅能够实现温度的高精度采集和显示,而且还增加了温度报警功能,能够实时的检测环境温度,当温度超过一定数值,就会发声提示报警。 图4-8 蜂鸣器驱动电路五、 系统调试系统调试分为硬件调试、软件调试和软硬件联调。电路按模块调试,各模块逐个调试通过后再联调。1、硬件调试对单片机及外围电路部分进行硬件调试,此部分硬件调试主要是以检查焊接是否正确,是否有虚焊,焊接引脚是否正确等情况,调试时采用数字外用表来检查。2 .软件调试本系统的软件系统很大,全部用C51来编写,软件调试比较复杂。除了语法差错和逻辑差错外,当确认程序没问题时,我们通过PROTES仿真软件来进行仿真和调试。软件仿真调试无误后,再直接下载到单片机来调试。采取的是白下到上的调试方法即单独调试好每个模块,然后再连接成一个完整的系统调试。PROTES仿真图如图 图6-1 PROTES仿真总图3.软硬联调 软硬联调使得系统的软件和硬件之间的联系更加紧密,一般是软件编程完毕之后,将程序烧入单片机,从而进行显示。因此在软硬件都基本调通的情况下系统的软硬件联调难度不是很大。六、总结本系统以AT89C55WD为核心部件,利用软件编程,通过键盘控制和液晶显示实现各种功能。不仅完成了题目的基本功能,而且也完成了部分提高要求,同时还有很大的发挥现将题目要求指标及系统实际性能列表如下:基本要求提高要求其他要求实际性能时钟显示时、分、秒时钟实现“电子日历”功能。开机显示功能实现时钟有时间调整功能。增加“语音报时”功能时间显示有12小时和24小时模式切换实现时钟具有闹钟功能时钟的秒表提供了连续计时功能,能够连续计时三次时钟具有整体报时功能实现时钟具有秒表功能时钟具有时间存储功能时钟附带有一个温度计功能,显示精度为0.5度实现时钟具有倒计时功能时钟具有发声倒计时功能时钟具有温度报警功能实现时钟能够提供二个一般闹钟实现时钟能够提供一个生日闹钟实现时钟提供播放四种不同的音乐功能实现时钟提供闹钟的开关功能,并显示开关状态实现我们在硬件电路的设计中遇到了很多的问题,蜂鸣器有源与无源的选择,单片机晶振参数的选择,显示电路的选择,各种问题我们都将其克服,同时我们尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。由于时间和本身知识水平有限,我们认为本系统还有需要改进和提高的地方,例如语音报时尚未实现,硬件电路不够精确稳定,软件程序不够精炼,还需进一步的改进与完善等。六、 参考文献1. 李光飞 ,李良儿.楼然苗单片机C程序设计实例指导M.北京:航空航天大学出版社,20062. 楼然苗 ,李光飞.51系列单片机设计实例M.北京:航空航天大学出版社,2006 3. 张毅刚.单片机原理及应用M.北京:高等教育出版社,20034柯节成.简明电子元件器件手册M.北京:高等教育出版社,19915. 戴佳,戴卫.51单片机C语言应用程序设计实例精讲M.北京: 电子工业出版社,20076. 薛永毅,王淑英 何希才.新型电源电路应用实例M.北京: 电子工业出版社,20017. 赵茂泰.智能仪器原理及应用M.北京:电子工业出版社,20068.张大明.单片机控制实训指导及综合应用实例M.北京:机械工业出版社,20079.胡汉才.单片机原理及其接口技术M.北京:清华大学出版社,200910.孙涵芳.MCS-51 196系列单片机原理及应用M.北京:航空航天大学出版社,1988附录#include #include #include#define LCM_RS P2_0 /定义引脚#define LCM_RW P2_1#define LCM_E P2_2#define LCM_Data P0#define Busy 0x80 /用于检测LCM状态字中的Busy标识#define uchar unsigned charuchar id,timecount,dipsmodid;bit lmcinit_or_not; /是否需要清屏标志位“1”为需要“0”为不需要bit flag,sflag; /flag是时钟冒号闪烁标志,sflag是温度负号显示标志void Disp_line1(void); /显示屏幕第一行 void Disp_line2(void); /显示屏幕第二行void id_case1_key();void Disp_mod1(void);/显示模式1void Disp_mod2(void);/显示模式2void Disp_mod3(void);/显示模式3void Disp_mod4(void);/显示模式4void Disp_mod5(void);/显示模式5void Disp_mod6(void);/显示模式6/* DS1302 时间显示定义部分sbit T_CLK=P10;sbit T_IO =P11;sbit T_RST=P12;sbit ACC0=ACC0;sbit ACC7=ACC7;void Set(uchar,uchar); /根据选择调整相应项目void RTInputByte(uchar); /输入 1Byte uchar RTOutputByte(void); /输出 1Byte void W1302(uchar, uchar); / 向DS1302写入一个字节uchar R1302(uchar); / 从DS1302读出一个字节void Set1302(unsigned char * ); / 设置时间 bit sec,min,hour,year,mon,day,weekk; /闪烁标志位unsigned char inittime7=0x00,0x00,0x00,0x01,0x01,0x0b,0x06;/初始化后设置为:11年1月1日星期6 0点0分0秒/ 秒 分钟 小时 日 月 年 星期/* 18B20温度显示定义部sbit DQ=P33; /18B20 接P07口typedef unsigned char byte;typedef unsigned int word;Read_Temperature(char,char);void mychar(void);byte ow_reset(void);byte read_byte(void);void write_byte(char val);void adjust_res(char res); /res 分别等于 0x1f, 0x3f, 0x5f 温度读数分辨率分别对应 / 0.5, 0.25, 0.125 /*温度控制部分*bit tl_flash_flag; /下限闪烁标志bit th_flash_flag; /上限闪烁标志bit tl_flag; /下限越限标志 bit th_flag; /上限越限标志 bit tl_sign,th_sign;/温度零下标志 0:零上,1:零下char tempid;void Disp_Temp(void); /显示上下限温度void Set_TH_Temp(void); /设置温度上限void Set_TL_Temp(void); /设置温度下限signed char tl=10,th=45;void Compare_Temp(signed char l,signed char h); /比较温度void Tl_Al(void); /下限越限报警void Th_Al(void); /上限越限报警/*播放音乐*#define SYSTEM_OSC 11059200/定义晶振频率12000000HZ#define SOUND_SPACE 4/5 /定义普通音符演奏的长度分率,/每4分音符间隔unsigned int code FreTab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /原始频率表unsigned char code SignTab7 = 0,2,4,5,7,9,11 ; /17在频率表中的位置unsigned char code LengthTab7= 1,2,4,8,16,32,64 ;unsigned char Sound_Temp_TH0,Sound_Temp_TL0;/音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Temp_TL1;void InitialSound(void);void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed);/* 1602LCD驱动 *void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadStatusLCM(void);void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay20Ms(void);void Delay50Ms(void);void Delay100Ms(void);void Delay200Ms(void);void Delay300Ms(void);void Delay400Ms(void);unsigned char code week=Week.;unsigned char code string0 =welcome to use ;unsigned char code string1 =made by HZT team;unsigned char code string2 =For;unsigned char code string3 =Day;unsigned char code string4 =Hou;unsigned char code string5 =Min;unsigned char code string6 =Sec;unsigned char code string7 =Time is over;unsigned char code string8=Clock one;unsigned char code string9=music;unsigned char code string10 =Time is starting;unsigned char code string11 =Time is end;unsigned char code string12 = ;unsigned char code string13 =0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f; /自定义字符_unsigned char code string14 =OPR: AL:K5 BI:K6;unsigned char code string15=Clock two;unsigned char code string16=Birthday;unsigned char code string17=Show in time;unsigned char code string18=Show fir time:;unsigned char code string19=Show sec time:;unsigned char code string20=Show thr time:;unsigned char code string21= welcome to use;unsigned char code string22=0x1f,0x0a,0x0a,0x1f,0x0a,0x0a,0x0a,0x00;/自定义字符开unsigned char code string23=0x0a,0x1f,0x04,0x04,0x1f,0x04,0x0a,0x11;/自定义字符关void idshow24();void idshow10();void idshow6();void didshow24();void didshow10();void didshow6();/挥着翅膀的女孩unsigned char code Music_Girl= 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03,0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03, 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03; /同一首歌unsigned char code Music_Same= 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03; /两只蝴蝶 unsigned char code Music_Two = 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01;/生日快乐unsigned char code Music_happy=0x15,0x01, 0x0F,0x02, 0x10,0x66, 0x0F,0x03, 0x15,0x02, 0x11,0x02, 0x0F,0x03, 0x10,0x03, 0x11,0x03, 0x0F,0x03, 0x10,0x66, 0x0F,0x03, 0x16,0x02, 0x15,0x02, 0x0F,0x03, 0x15,0x03, 0x17,0x03, 0x15,0x03, 0x19,0x66, 0x17,0x03, 0x15,0x02, 0x11,0x02, 0x10,0x02, 0x18,0x67, 0x18,0x04, 0x17,0x02, 0x15,0x02, 0x16,0x67, 0x11,0x03, 0x15,0x01, 0x17,0x02, 0x19,0x66, 0x17,0x03, 0x15,0x02, 0x11,0x02, 0x10,0x02, 0x17,0x02, 0x18,0x66, 0x17,0x03, 0x16,0x02, 0x17,0x01, 0x17,0x03, 0x19,0x03, 0x1F,0x66, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x1A,0x01, 0x18,0x02, 0x17,0x02, 0x19,0x02, 0x16,0x67, 0x15,0x04, 0x15,0x01, 0x0F,0x02, 0x00,0x00 ; unsigned char idata secg2=0,secs2=0,ming2=0,mins2=0,houg2=0,hous2=0,nzjbl=0,nzsetimes=0;/闹钟变量unsigned char idata jshu=0,mseg=0,mses=0,secg=0,secs=0,ming=0,mins=0,xunhuan=0,mtime=0;mcount=0,jshu1=0;/秒表变量unsigned char idata houg=0,hous=0,dayg=0,days=0,dayb=1,secg1=0,secs1=0,ming1=0,mins1=0,mseg1=0,mses1=0;/倒计时变量unsigned char idata setimes=0,zjbl=0,zjbl1=0,songtime=0,Stime1=0,ncount=0;unsigned char dflag,t0time,t0count=0,ntime=0;unsigned char Atime=0;unsigned char Nhou=0,Nmin=0,Bmon=0,Bday=0,Bhou=0,songtime1=0,songtime2=0,nzsetimes1=0, nzsetimes2=0;bit Bflag=0,Bflag1=0,Bflag2=0,dipsmodid1=1,Bflag3=0,Bflag4=0,Nflag=0,TMflag=0,DJtime=0,Temflag=0;unsigned char idata Mmse=0,Msec=0,Mmin=0;unsigned char idata Mmse1=0,Msec1=0,Mmin1=0;unsigned char idata MSflag=0,MFlag=0,MFlag1=0;unsigned char idata DJflag=0,JXshow1=0;unsigned char idata SZflag1=0,SZflag2=0,XStime=0,XHtimes=0,JXshow=0,KGflag=0,Ssong=0;bit ZDflag=0,XSflag=0;bit Stime=0,Nflag1=0, bzw;bit KGflag1=0,KGflag2=0,KGflag3=0;bit XHleft=0,XHflag=0,XHright=0,XHright1=0,SZflag0=0;void shanshuo(bit i,bit j,bit k);void Delayus(unsigned char TimeS);void beep(unsigned char Times);void naoz(void);void jianyan();void t0show(unsigned char i,unsigned char j);void nshow(unsigned char i,unsigned char j);void xunhuanjiance();void BNshow();void BNshow1();void ZDyinyue();void YYBaoShi();void MBshow1();void MBshow2();void MBshow3();void Temshow();void Mjianyan();void Mjiance();void DJjianyan();void ZDBaoShi();void ZDshow();void mychar1();void mychar2();void SZjianyan();void showKG1();void showKG2();void showKG3();void singsong();/主函数void main(void) Delay400Ms(); /启动等待,等LCM讲入工作状态 LCMInit(); /LCM初始化 Delay5Ms(); /延时片刻(可不要) mychar(); mychar1(); mychar2(); TMOD=0x11; TH1=(65536-10000)/256; TL1=(65536-10000)%256; ET1=1; PT1=1; TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; TR0=1; ET0=1; W1302(0x90,0xa5);/打开充电二级管 一个二级管串联一个2K电阻 W1302(0x8e,0x80);/写保护,禁止写操作 adjust_res(0x1f); /调整18B20的分辨率 0x1f:0.5; 0x3f:0.25; 0x5f:0.125 while(1) jianyan(); dflag+; if (P1_7=0) dipsmodid+; lmcinit_or_not=1; if(dipsmodid6) dipsmodid=1;dipsmodid1=1;Temflag=0; while(P1_7=0); beep(57); switch(dipsmodid) case 1: D

温馨提示

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

评论

0/150

提交评论