多功能电子万年历的设计_第1页
多功能电子万年历的设计_第2页
多功能电子万年历的设计_第3页
多功能电子万年历的设计_第4页
多功能电子万年历的设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

I任务书姓名:专业:班级:学号:指导教师:职称:完成时间:毕业设计(论文)题目:多功能电子万年历的设计设计目标:成在深入学习模拟电子技术、数字电子技术和单片机原理的基础上,设计一个多功能电子万年历。技术要求:1能显示阳历年、月、日、星期、小时、分、秒。2显示模块采用LED液晶显示,要求能用按键调整时间。3能显示阴历月、日,在显示阴历时间时能标明是否为闰年。4具有定时报警功能,能够进行整点和半点语音报时,具有测温功能,能够显示真实温度。所需仪器设备:计算机一台成果验收形式:原理图程序仿真参考文献:模拟电子技术基础、数字电子技术基础、51单片机及其C语言程序开发实例15周-6周立题论证39周-13周仿真调试时间安排27周-8周方案设计414周-16周成果验收指导教师:教研室主任:系主任:II摘要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。本系统的硬件部分主要由AVR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图。软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调试过程,给出了下一步的改进方案等。关键词:单片机液晶技术万年历时钟芯片III目录第1章绪论.11.1课题的背景与意义.11.2数字万年历的现状与发展.11.3论文的主要工作及章节安排.21.4本章小结.2第2章方案论证比较.32.2计时方案.32.3温度检测方案.42.4显示方案.42.5本章小结.4第3章系统硬件设计.53.1主控制器ATMEGA16单片机介绍.53.2时钟电路DS1302.63.3温度检测DS18B20.63.4液晶显示.73.5键盘接口.83.6语音闹铃模块.83.7电源的设计.93.8本章小结.11第4章系统软件设计.124.1公历计算显示程序设计.134.1.1DS1302内部寄存器.134.1.2时间读取程序设计.154.2农历转换程序设计.174.2.1公历转农历算法研究.174.2.2干支纪年简介.184.2.3公历转农历程序.194.3温度测量程序设计.214.3.1DS18B20的测温原理.214.3.2温度程序.22IV4.4二十四节气算法研究.244.5系统仿真.254.6本章小结.26第5章结论.27致谢.28参考文献.29附录.300多功能电子万年历的设计第1章绪论1.1课题的背景与意义随着电子技术的迅速发展,特别是大规模集成电路出现,给人类生活带来了根本性的改变,尤其是单片机技术的应用产品已经走进了千家万户。近年来,我国科技的不断发展,我国经济发展的支柱产业电子产业获得长足发展,各种电子产品琳琅满目,随处可见,随着电子产品的更新速度的加快,各种功能强大,款式新颖的电子产品不断问世。数字万年历便是这一发展趋势中的代表,数字万年历则顺应了人们对时间方面的要求。它的出现给人们的生活带来的诸多方便,在时间极显宝贵的现代生活中,其作用更是不言而喻。它在学校、车站、码头、剧院、医院、办公室等公共场所的应用非常广泛。但传统的数字万年历除显示时间之外,功能较为单一,逐渐失去了市场。顺应技术发展和人们生产、生活需求,各种功能的新式万年历不断涌现,且功能不断更新。数字万年历作为电子类的小产品以其方便、实用等优势成为市场上的宠儿,同时也成为单片机设计培训中一个很实用的课题。因为这个课题有很好的的开发性和可发挥性,因此对设计者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且要求设计的数字万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。所以数字万年历无论从实用的角度和培养能力的角度都很有价值。1.2数字万年历的现状与发展当前,数字万年历技术已经进入了优化人-家庭-环境的整体关系的阶段,它向着超微型、超高效以及集成电路的微型化方向发展,并为数字万年历上的集中控制提供了基础。目前,市场上出售的数字万年历品种很多,其中大部分是基于单片机技术设计的电子系统。它们一般由输入脉冲电路、单片机、晶振和复位电路、外部存储器电路和LED显示电路组成。当今,数字万年历主要还是用于计时、自动报时、定时、日期查询以及自动控制等方面。由于单片机技术以及数字集成电路技术的发展和采用了先进的石英技术,使得如今的数字万年历系统具有体积小、耗电省、计时准确、性能稳定、维护方便、走时准确、携带方便等优点,此外,现在市场上已有现成的数字万1年历集成电路芯片出售,而且价格便宜、使用也很方便。日历的发展经历了数千年的历史。现代日历随着使用范围的不断扩大,功能日益增加,种类也越来越多。从70年代以来,随着单片机和超大规模集成电路的发展,为数字万年历的飞速发展奠定了物质基础。近几年来,数字万年历的发展方向是朝着走时精度高、稳定性好、使用方便、耗电量小、走时延续时间长、体积小、功能多、制造成本低等方向发展。最新的数字万年历,它除了具有常见万年历功能外,而且还具有倒计时、多点定时、语音报时、实时温度测量等功能。在硬件方面它并没有太大的变化,主要是通过增加软件部分来实现倒计时、多点定时的功能。不难想像,随着科学技术的飞速发展,各种高新技术的出现并被广泛应用到生产、生活中,未来数字万年历产品也必将沿着体积小、耗电省、计时准确、性能稳定、维护方便、走时准确、性能稳定、携带方便等方向发展而其成本却越来越低。1.3论文的主要工作及章节安排论文主要围绕对数字万年历系统的设计为主线展开,主要包括复位电路设计、时钟电路设计、按键电路设计、实时控制电路设计、报时电路设计、数字万年历显示电路设计等硬件电路的设计以及为实现其各项功能而编写的软件程序设计等。论文具体章节的安排如下:第一章:阐述本课题的背景与意义,并对数字万年历系统的现状与发展展开了叙述,以及按章节具体介绍了论文所需要完成的工作。第二章:介绍了本套系统的组成,并讨论了本套数字万年历系统的几种方案设计以及主要电路的方案设计与比较,从而从理论上得出了本套系统最合理的方案设计。第三章:介绍了本套系统的各硬件模块设计,提出了几种基本硬件电路的设计。第四章:介绍了数字万年历系统的软件设计以及如何读取DS1302时间以及公历与农历如何转换等。1.4本章小结本章首先讲述了本文的选题来源及研究意义,然后讲述了数字万年历系统在国内外的发展过程及当前现状,其中叙述了数字万年历系统的优点,最后根据论文需要研究的主要内容,对课题的来源与所要完成的工作做了进一步的交代。2第2章方案论证比较2.1多功能数字万年历系统概述本设计是利用键盘模块进行输入控制,将控制指令传送到单片机,通过单片机的数据处理,配合复位电路以及时钟电路来驱动LCD显示和闹铃音乐,从而实现该数字万年历的各项功能。单片机是整个系统的核心,它既是协调整机工作的控制器,又是数据处理器,AVR公司的Mega系列能完成本系统所要求的所有功能,所以选用单片机ATmega16;时钟芯片采用DALLAS公司的DS1302涓流充电时钟芯片;按键电路拟采用四个按键,分别实现校时、定时功能,并且定时时间到可报时;显示电路采用12864点阵字符液晶显示器;语音系统是提示用户系统的实时状态或对系统进行操作,语音电路可提供整点报时、闹铃等功能,本系统选用简单的蜂鸣器来完成。系统整体设计框图如图2-1所示:图2-1系统总体框图2.2计时方案该方案具有硬件电路简单的特点时钟是本电子万年历最主要的部分,根据需要,可利用两种方案实现。方案一:本方案完全用软件实现走时,原理为:利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若3时值达到24,则将十字节清零。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高,而且由于是软件实现,当单片机不上电,程序不执行时钟将不工作。方案二:采用Dallas公司的专用时钟芯片DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,可直接读取时间、日期,使得软件编程相对简单。而且DS1302可以在很小电流的后备电源(2.5V-5.5V,在2.5V时耗电小于300nA)下继续计时,时钟在电网电压不足或突然掉电等突发情况下仍能正常工作。基于时钟芯片的上述优点,本电子万年历设计采用方案二完成时钟的功能。2.3温度检测方案方案一:采用传统的方法,测温元件用热电偶或热电阻,但它们测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,电路复杂,软件调试复杂,制作成本高。方案二:用一种智能传感器DS18B20作为检测元件,测温范围-55125,分辨率最大可达0.0625。DS18B20可以直接读出被测温度值,而且采用3线制与单片机相连,减少了外部硬件电路,具有低成本和易使用的特点。基于DS18B20的上述优点,本电子万年历的测温设计采用方案二完成温度的检测。2.4显示方案方案一:采用数字万年历显示。数字万年历亮度高、体积小、重量轻,但其显示信息简单、有限,在本题目中应用受到很大的限制。方案二:采用液晶显示。液晶显示功耗低,轻便防震。采用液晶显示界面友好清晰,操作方便,显示信息丰富。能使成品具有美观与人性化等特点,故采用此方案。2.5本章小结本章主要围绕电子万年历这一整套系统为主线展开,首先讲述了电子万年历的组成,然后介绍了计时方案、温度检测方案和显示方案的论证比较,选择最优方案。4第3章系统硬件设计本系统以单片机为核心控制器,包含了时钟芯片的接口、键盘接口、温度检测接口以及液晶显示输出接口,因此在硬件设计中合理分配单片机的输入输出端口尤为重要,通过综合比较市场上的元器件的价格以及分析单片机的I/O口数量,本系统最终选择了AVR单片机中的MEGA16型,其单片机的I/O的分配如下:11个I/O口用于液晶显示,4个I/O口用于按键输入,3个I/O口用于时钟芯片,1个I/O口用于温度检测,1个I/O口用于声音输出,单片机的20个I/O口充分利用。下面从系统硬件的各个组成部分一一做介绍。3.1主控制器ATmega16单片机介绍ATmega16带有16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节的EEPROM,1K字节的SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定时器继续工作。该芯片是以Atmel高密度非易失性存储器技术生产的。片内ISPFlash允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlashMemory)。在更新应用Flash存储区时引导Flash区(BootFlashMemory)的程序继续运行,实现了RWW操作。通过将8位RISCCPU与系统内可编程的Flash集成在一个芯片内,ATmega16成为一个功能强大的单片机,为许多嵌入式控5制应用提供了灵活而低成本的解决方案。3.2时钟电路DS1302本系统时钟芯片选择了DS1302芯片,该芯片是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信实。时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:(1)RES(复位);(2)I/O(数据线);(3)SCLK(串行时钟)。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302由DS1202改进而来,有主电源、后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;Vcc2在双电源系统中提供主电源。在这种运用方式中,Vcc1连接到后备电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较大者供电。当Vcc2(Vcc1+0.2V)时,Vcc2给DS1302供电;当Vcc22)+wCurDay+wMonthAddwCurMonth-1-38;if(!(wCurYear&0x0003)&(wCurMonth2)nTheDate+;nIsEnd=0;m=0;19while(nIsEnd!=1)if(wNongliDatam=0)nBit=wNongliDatam;for(i=1;i1);nBit=(nBitif(nTheDatey)wCurMonth=wCurMonth-1;if(wCurMonth2)+wCurDay+wMonthAddwCurMonth-1-38;该公式中不包括公历1921年距今的闰年天数,所有的2月份全部都是按28天计算的,接下来就需要对nTheDate进行修正,if(!(wCurYear&0x0003)&(wCurMonth2)nTheDate+;如果碰到闰年,总天数nTheDate就加1天。通过得到的nTheDate进行查表计20算出当前距农历1921年的年数m,然后就得到了当前农历的年份,wCurYear=1921+m;农历采用是干支纪年法,通过得到的wCurYear先计算出天干,并将计算出的天干赋值给led1,led1=(wCurYear+6)%10;然后根据wCurYear计算出地支,并将计算出的地支赋值给led2,led2=(wCurYear+8)%12;4.3温度测量程序设计4.3.1DS18B20的测温原理DS18B20测温原理如图3-3所示。传感器中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。下图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。图4-3DS18B20的测温原理在正常测温情况下,DS18B20的测温分辩率为0.5以12位数据格式表示,其中最低有效位(LSB)由比较器进行0.25比较,当计数器1中的余值转化成温度后低于0.25时,清除温度寄存器的最低位(LSB),当计数器1中的余值转化成温度后高于0.25,置位温21度寄存器的最低位(LSB)。4.3.2温度程序单总线上最基本的操作有初始化、写和读3种,所有其它的操作都由这3种基本操作组合而成。初始化用于对总线上的器件进行状态复位,写用于主节点向总线上写入一位数据,读用于主节点从总线上读取一位数据。在这3种操作中,只有写操作是单向的,初始化操作和读操作都是双向的。所谓“单向”是指操作波形完全由主节点决定,而“双向”是指前半个操作波形由主节点决定,而后半个波形由从节点决定,从节点通过这种方式向主节点返回信息。初始化操作利用这一返回信息可以得知总线上是否有器件存在,而读操作可以利用这一返回信息获取数据。以上的所说的读写都是针对单个位(Bit)进行的,一个字节(Byte)的读写由8次位读写组合而成,顺序是从低位到高位。8次位读写之间的时间间隔没有特定要求。单总线系统的总线操作流程如下:初始化;ROM操作命令;功能操作命令。初始化”使总线上所有器件复位;“ROM操作命令”用于器件定址或获取器件的ROMID,所谓“器件定址”也就是决定后边的功能命令针对哪一个器件进行操作;“功能操作命令”用于完成具体的功能。除了“初始化”是直接由基本的初始化操作完成外,其它命令(ROM操作和功能操作)都是由多个位读写操作或字节读写操作复合而成的。下面具体介绍一下对18B20操作的关键程序:(1)初始化#asm.equw1_port=0x12;PORTD.equw1_bit=7#endasm/定义18B20所用的数据线在对DS18B20进行ROM和RAM操作之前,单片机首先发出一个复位脉冲(最小脉冲宽度为480us的低电平信号),然后单片机释放单总线I/O线,使之处于接收状态。单总线经过上拉电阻被拉至高电平。当DS18B20检测到I/O端的上升沿时,就等待15-60us,然后向单片机发出应答脉冲(60-240us的低电平信号)。初始化程序如下:unsignedcharDS18B20_init(unsignedchar*addr,signedchartemp_low,signedchartemp_high,unsignedcharresolution)if(ds18b20_select(addr)=0)return0;22resolution=(resolution5)if(ds18b20_select(addr)=0)return-9999;w1_write(0x44);delay_ms(conv_delayresolution);if(ds18b20_read_spd(addr)=0)return-9999;w1_init();return(*(int*)&ds18b20_scratch_pad.temp_lsb)244.4二十四节气算法研究节气指二十四时节和气候,是我国古代发明的一种用来指导农事的历法。中国古代利用土圭实测日晷,将每年日影最长定为日至(又称日长至、长至、夏至),日影最短为日短至(又称短至、冬至),在春秋两季各有一天的昼夜时间长短相等,便定为春分和秋分,在商朝时只有四个节气,到了周朝时发展到了八个,直到西汉时才成为了现在的二十四节气。在史记太史公自序中就有提到阴阳、四时、八位、十二度、二十四节气的概念。二十四节气每一个分别相应于太阳在黄道上每运动15所到达的一定位置。二十四节气又分为12个中气和12个节气,一一相间。二十四节气反映了太阳的周年视运动,所以在公历中它们的日期是基本固定的,上半年的节气在6日,中气在21日,下半年的节气在8日,中气在23日,二者前后不差12日。将一回归年的长度等分成24份,从冬至开始,等间隔地依次相同安排各个中气和节气。这种方法叫做平气。由于太阳周年视运动不均匀,按太阳黄经每移行15的节气是非等间距的,此法称为定气。定气使用于历法计算中。因为两个节气的时间长于一个朔望月(见月)的时间,所以可能出现一个月内只有一个节气或一个中气的情况。从西汉的太初历起,规定遇到没有中气的月份定为上月的闰月。这种置闰原则沿用至今。二十四节气的命名反应了季节、气侯现象、气侯变化三种。反应季节的是立春、春分、立夏、夏至、立秋、秋分、立冬、冬至,又称八位;反应气侯现象的是惊蛰、清明、小满、芒种;反应气侯变化的有雨水、谷雨、小暑、大暑、处暑、白露、寒露、霜降、小雪、大雪、小寒、大寒。现代都是根据太阳在黄道上的位置,准确地确定二十四节气的具体时间。由于二十四节气的时间在公历中的日期变化不大都在三天内,所以在要求不太严格的情况下可以简化算法。4.5系统仿真系统仿真所以的软件为Proteus,Proteus软件是来自英国Labcenterelectronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等。Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被电子世界在其对PCB设计系统的比较文章中评为最好产品“TheRoutetoPCBCAD”。Proteus产25品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。其功能模块:个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARESPCB设计。PROSPICE仿真器的一个扩展PROTEUSVSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘、开关、按钮、LEDs甚至LCD显示CPU模型。支持许多通用的微控制器,如PIC,AVR,HC11以及8051。最新版本支持ARM交互的装置模型包括:ED和LCD显示,RS232终端,通用键盘,I2C,SPI器件强大的调试工具,包括寄存器和存储器,断点和单步模式IARC-SPY和KeiluVision2等开发工具的源层调试应用特殊模型的DLL界面-提供有关元件库的全部文件Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。4.6本章小结在单片机应用系统中,除了注意硬件电路的正确设计外,还要考虑系统软件的设计。本章主要根据系统功能,介绍了本设计的软件流程图的设计,确定系统的总体结构和操作控制过程,然后介绍了公历计算显示程序设计、时间读取程序设计、农历转换程序设计、公历转农历算法研究、公历转农历程序设计、温度测量程序设计、二十四节气算法研究等。26第5章结论经过大三下半学期的设计制作,本电子万年历最终实现了实时显示当前的公历年、月、日、时、分、秒、星期、室温、农历年、月、日、二十四节气、定时,预期设计目标全部实现。本万年历功能上需要改进的地方有如下几个方面:一、温度高于某一设定值可以给出温馨提示,如气温过高,提示不宜进行剧烈运动,或者当温度低于某一设定值时提示加衣服,甚至可以把父母的生日信息编进去,在生日当天可以自动给出祝福信息;二、考虑到本电子万年历一般用于室内,挂在墙上,输入部分可以加装遥控接收模块,用普通遥控器就能任意设定时间、定时,查询农历日期等。可以说,未来的电子万年历在生产应用中会有一个广阔的发展前景。27致谢本文研究工作是在我的导师张志通老师的精心指导和悉心关怀下完成的,从开题伊始到论文结束,我所取得的每一个进步、编写的每一段程序都无不倾注着导师辛勤的汗水和心血。导师严谨的治学态度、渊博的各科知识、无私的奉献精神使我深受启迪,从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在今后的学习工作中,我将铭记恩师对我的教诲和鼓励,尽自己最大的努力取得更好的成绩。最后,向在百忙中抽出宝贵时间参与论文评审和答辩的专家和评委们,表示由衷地感谢!28参考文献1李广弟,朱月秀,王秀山.单片机基础M.北京:北京航空航天大学出版社,20012求是科技,靳达.单片机应用系统开发实例导航M.北京:人民邮电出版社,20033何立民.MCS-51系列单片机应用系统设计系统配置与接口技术M.北京:北京航空航天大学出版社,19994胡汉才.单片机原理及其接口技术(第2版)M.北京:清华大学出版社,20045沈红卫.基于单片机的智能系统设计与实现M.北京:电子工业出版社,2005.16黄继昌.检测专用集成电路及其应用M.北京:人民邮电出版社,20067张克彦.AVR单片机实用程序设计M.北京:北京航空航天大学出版社,2004.28耿德根.AVR嵌入式单片机原理与应用M.北京:北京航空航天大学出版社,2002.109林志奇,郎建军,李会杰.基于Proteus的单片机可视化软硬件仿真M.北京:北京航空航天大学出版社,200610刘海成.AVR单片机原理及测控工程应用M.北京:北京航空航天大学出版社,200811康万新.毕业设计指导及案例剖析应用电子技术方向M.北京:清华大学出版社,200729附录电子万年历源程序/编译环境,CodeVisionAVR1.24.8Professional#include#include#asm.equds1302_port=0x18;PORTB.equds1302_io=5.equds1302_sclk=4.equds1302_rst=6#endasm/定义单片机与DS1302连接的I/O口#include#asm.equw1_port=0x12;PORTD.equw1_bit=7#endasm/定义单片机与18B20连接的I/O口#include#include#defineMAX_DS18208unsignedchards1820_devices;unsignedchards1820_rom_codesMAX_DS18209;unsignedcharnum=0x3f,0x0c,0x5b,0x5e,0x6c,0x76,0x77,0x1c,0x7f,0x7e,0x00;/数码管显示代码30ints,h,t,led,led0,ban,led1,led2,led3,led4;/s,h用来控制数码管动态扫描,led,led0,ban,led1,led2,led3,led4用来显示农历年号、24节气、星座unsignedintz,b,w,dn,dnn=2008,dy=8,dr=8,yun=0,set,mode,san,sa,tmode;/dnn倒计时日期的年,dy倒计时日期的月,dr倒计时日期的日,yun农历的月份是否是闰月,set,mode,san,sa,tmode用于调整及查询时的中间变量intkn,ky=2,kr,knb=19,kns=2,kng=1,krs=0,krg=8;/查询农历日期的中间变量intdjs,sz1,sz2,sz3,sz4,sz5,sz6,sz7,sz8,sy1,sy2,sy3,sy4,sy5;intxz1,xz2,xz3,xz4,xz5,xz6,xz7,xz8,xy1,xy2,xy3,xy4;/数码管显示的中间变量unsignedcharmg,fen,shi,r,yy,nn;/秒、分、时、日、月、年inttemp,temp_h,temp_l;/定义温度值staticconstunsignedshortwMonthAdd13=0,31,59,90,120,151,181,212,243,273,304,334,365;staticconstunsignedshortwMonthAddy13=0,31,60,91,121,152,182,213,244,274,305,335,366;staticconstunsignedlongwNongliData180=/*农历数据*/0xA4B,0x5164B,0x6A5,0x6D4,0x415B5,0x2B6,0x957,0x2092F,0x497,0x60C96,0xD4A,0xEA5,0x50DA9,0x5AD,0x2B6,0x3126E,0x92E,0x7192D,0xC95,0xD4A,0x61B4A,0xB55,0x56A,0x4155B,0x25D,0x92D,0x2192B,0xA95,0x71695,0x6CA,0xB55,0x50AB5,0x4DA,0xA5B,0x30A57,0x52B,0x8152A,0xE95,0x6AA,0x615AA,0xAB5,0x4B6,0x414AE,0xA57,0x526,0x31D26,0xD95,0x70B55,0x56A,0x96D,0x5095D,0x4AD,0xA4D,0x41A4D,0xD25,0x81AA5,0xB54,0xB6A,0x612DA,0x95B,0x49B,0x41497,0xA4B,0xA164B,0x6A5,0x6D4,0x615B4,0xAB6,0x957,0x5092F,0x497,0x64B,0x30D4A,0xEA5,0x80D65,0x5AC,0xAB6,0x5126D,0x92E,0xC96,0x41A95,0x00D4A,0x00DA5,0x20B55,0x0056A,0x7155B,0x0025D,0x0092D,0x5192B,0x00A95,0x00B4A,0x416AA,0x00AD5,0x90AB5,0x004BA,0x00A5B,0x60A57,0x0052B,0x00A93,0x40E95,0x006AA,0x00AD5,0x209B5,0x004B6,0x612AE,0x00A4E,0x00D26,0x51D26,0x00D53,0x005AA,0x30D6A,0x0096D,0xB095D,0x004AD,0x00A4D,0x61A4B,0x00D25,0x00D52,0x51B54,0x00B5A,0x0056D,0x2095B,0x0049B,0x71497,0x00A4B,0x00AA5,0x516A5,0x006D2,0x00ADA,0x30AB6,0x00937,0x8092F,0x00497,0x0064B,0x60D4A,0x00EA5,0x006B2,0x4156C,0x00AAE,0x0092E,0x3192E,0x00C96,0x71A95,0x00D4A,0x00DA5,0x50B55,0x0056A,0x00A6D,0x40A5D,0x0052D,0x8152B,0x00A95,0x00B4A,0x616AA,0x00AD5,0x0055A,0x414BA,0x00A5B,0x0052B,0x31527,0x00693,0x70E53,0x006AA,0x00AD5,0x509B5,0x004B6,0x00A57,0x40A4E,0x00D26,0x81D26,310x00D52,0x00DAA,0x60D6A,0x0056D,0x004AE,0x4149D,0x00A4D,0x00D15,0x21B25;staticintwCurYear,wCurMonth,wCurDay,nian,yue,ri;zhuanhuan()/公历转农历程序staticintnIsEnd,m,k,n,i,nBit;staticlongnTheDate;inty;wCurYear=nian;wCurMonth=yue;wCurDay=ri;y=wCurYear-1921;nTheDate=(y2)+wCurDay+wMonthAddwCurMonth-1-38;if(!(wCurYear&0x0003)&(wCurMonth2)&(!(wCurYear=2100)nTheDate+;w=nTheDate%7+1;if(w=7)w=8;dn=dnn-1921;djs=(dn2)+dr+wMonthAdddy-1-38;if(!(dn&0x0003)&(dy2)&(!(dy=2100)djs+;djs=djs-nTheDate+1;if(djs=0)nBit=wNongliDatam;for(i=1;i1);nBit=(nBitif(nTheDatey)wCurMonth=wCurMonth-1;if(wCurMonth2100)kn=2100;kr=krs*10+krg;if(kr31)kr=31;nian=kn;yue=ky;ri=kr;san+;if(san=2)san=0;sz1=kn/1000;sz2=kn%1000/100;sz3=kn%100/10;sz4=kn%10;sz5=ky/10;sz6=ky%10;sz7=kr/10;sz8=kr%10;sy1=wCurMonth/10;sy2=wCurMonth%10;sy3=wCurDay/10;sy4=wCurDay%10;sy5=w;xz1=10;xz2=10;xz3=10;xz4=10;xz5=10;xz6=10;xz7=10;xz8=10;xy1=10;xy2=10;xy3=10;xy4=10;if(san=1)if(tmode=0)sz1=kn/1000;sz2=kn%1000/100;sz3=kn%100/10;sz4=kn%10;sz5=ky/10;sz6=ky%10;sz7=kr/10;sz8=kr%10;sy1=wCurMonth/10;sy2=wCurMonth%10;sy3=wCurDay/10;sy4=wCurDay%10;sy5=w;xz1=10;xz2=10;xz3=10;xz4=10;xz5=10;xz6=10;xz7=10;xz8=10;xy1=10;xy2=10;xy3=10;xy4=10;sz1=10;sz2=10;if(PINB.1=0)knb+;if(knb21)knb=19;if(PINB.2=0)knb-;if(knb=18)knb=21;if(tmode=1)38sz1=kn/1000;sz2=kn%1000/100;sz3=kn%100/10;sz4=kn%10;sz5=ky/10;sz6=ky%10;sz7=kr/10;sz8=kr%10;sy1=wCurMonth/10;sy2=wCurMonth%10;sy3=wCurDay/10;sy4=wCurDay%10;sy5=w;xz1=10;xz2=10;xz3=10;xz4=10;xz5=10;xz6=10;xz7=10;xz8=10;xy1=10;xy2=10;xy3=10;xy4=10;sz3=10;if(PINB.1=0)kns+;if(kns9)kns=0;if(PINB.2=0)kns-;if(kn9)kng=0;if(PINB.2=0)kng-;if(kng2)ky=1;39if(PINB.2=0)ky-;if(ky=0)&(kn=2100)ky=2;kr=7;if(ky=0)|(kn=1921&ky3)krs=0;if(PINB.2=0)krs-;if(krs9)krg=0;if(PINB.2=0)krg-;if(krg=22)|(yue=1/led4用于显示星座if(yue=140if(yue=2if(yue=3if(yue=4if(yue=5if(yue=6if(yue=7if(yue=8if(yue=9if(yue=10if(yue=11/led3用于显示24节气if(yue=1)if(yue=1&ri=21)|(yue=2&ri=22)|(yue=8&ri=19)|(yue=3&ri=23)|(yue=9&ri=20)|(yue=4&ri=22)|(yue=10&ri=2340)|(yue=5&ri=23)|(yue=11&ri=21)|(yue=6&ri=22)|(yue=12&ri=21)|(yue=7&ri=21)|(yue=1&ri=5)led3=15;xs()/数码管显示函数if(h%4=3)PORTA=num10;PORTD=num10;if(h=0)PORTA=numsy1;PORTD=numsz1;if(h=4)PORTA=numsy2;PORTD=numsz2;if(h=8)PORTA=numsy3;PORTD=numsz3;41if(h=12)PORTA=numsy4;PORTD=numsz4;if(h=16)PORTA=num10;PORTD=numsz5;if(h=20)PORTA=numxz7;PORTD=numsz6;/温度十if(h=24)PORTA=numxz8;PORTD=numsz7;/温度个if(h=28)PORTA=numxy1;PORTD=numsz8;/温度小数if(h=32)PORTA=numxz1;PORTD=num10;/第三排第一个,时的十位if(h=36)PORTA=numxz2;POR

温馨提示

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

评论

0/150

提交评论