基于MEGA16数字万年历设计毕业论文.doc

上传人:小小飞 文档编号:3921019 上传时间:2019-10-10 格式:DOC 页数:32 大小:930KB
返回 下载 相关 举报
基于MEGA16数字万年历设计毕业论文.doc_第1页
第1页 / 共32页
基于MEGA16数字万年历设计毕业论文.doc_第2页
第2页 / 共32页
基于MEGA16数字万年历设计毕业论文.doc_第3页
第3页 / 共32页
基于MEGA16数字万年历设计毕业论文.doc_第4页
第4页 / 共32页
基于MEGA16数字万年历设计毕业论文.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《基于MEGA16数字万年历设计毕业论文.doc》由会员分享,可在线阅读,更多相关《基于MEGA16数字万年历设计毕业论文.doc(32页珍藏版)》请在三一文库上搜索。

1、长春理工大学毕业设计本科生毕业论文基于Mega16的数字万年历The Digital Perpetual Calendar Based On Mega16毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(

2、设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论

3、文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘要随着电子技

4、术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来的诸多方便。本文介绍了一种基于AVR单片机Mega16的数字万年历的设计。本设计以Mega16为核心控制器,其外围电路包括液晶显示模块,时钟模块,键盘模块和闹铃模块等。软件部分用C语言进行编程,实现设计的一切功能。此数字万年历不仅能显示分,时,秒,年,月,日,而且具有以下功能:显示农历,闹钟时间设置,闹钟音乐选择,整点报时和断电后自由调整时间。本设计硬件电路简单,难点在于软件编程中的公农历转换,设计完成后经测试基本实现了上述的功能关键词:Mega

5、16 万年历 公农历转换 液晶AbstractAlong with the technical and quick development in electronics, appear with the large-scale integrated circuit especially, give mankind the life brought the changes of the root. The coal gas reports to the police the system publishes, scribing the electronics measure the instru

6、ment walked into the arithmetic figure turns the ages ts function is strong, the function is well-found, technique forerunner, will quickly technical development in science.In the paper, it introduces a design of digital Calendar based on mega16.the design made Mega16 as the core controller, the per

7、ipheral circuits, including liquid crystal display module, clock module, the keyboard module and alarm module. Software with C language programming , achieves all functions of design. This calendar will not only show the number of points, the second, year, month, day, and have the following function

8、s: display Chinese, the alarm time set, alarm clock, music selection, the whole point of time and free to adjust the time after power outages. The design of hardware circuits is simple, difficult in the Chinese public conversion, the design has been tested after the completion of the basic functions

9、 to achieve the above-mentionedKey words:Mega16,Calendar, Lunar conversion of public, LCD 目录目录1第一章 绪论31.1研究目的和意义31.2 国内外研究现状31.3本设计研究的内容3第二章 系统整体设计方案52.1 系统功能分析52.2 系统方案论证52.2.1 时钟模块52.2.2键盘模块52.2.3 显示模块6第三章 系统硬件设计73.1 Mega16单片机电路设计73.1.1 Mega16的介绍73.1.2 Mega16的引脚图及引脚说明83.2 时钟接口电路103.2.1 简介103.2.2 引

10、脚介绍及其功能103.2.3DS1302的控制字节113.2.4DS1302的寄存器113.2.5 数据输入输出123.3 液晶显示电路设计133.4 键盘接口电路设计143.5 音乐闹铃功能设计143.6 仿真接口电路15第四章 系统软件主要设计流程164.1综述164.2 系统软件主流程图164.3 音乐闹铃程序174.4键盘程序184.5农历算法194.5.1 农历算法的理论研究194.5.2.阴历算法的流程图20第五章 系统测试225.1软件仿真225.2 实物仿真225.2.1测试过程225.2.2测试结果23结论24参考文献25致谢26附录:设计原理图27第一章 绪论1.1研究目的

11、和意义现在生活节奏的加快,使电子时钟成为人们生活必不可少的物品,广泛应用于个人家庭及各种公共场所,给我们的学习,生活,娱乐带来极大的方便。随着技术的发展,人们不再满足于钟表原先简单的报时功能,而追求更多更先进的功能,诸如日历显示,闹钟的应用,以带来更大的方便,而所有这些,又都是以数字化的电子钟为基础的。万年历就是实现这些功能的数字化的电子时钟。研究万年历及其扩展应用,可以方便人们了解农历的节日,节气,其具有的附加功有着非常现实的意义。1.2 国内外研究现状 随着电子科技的发展,使得万年历也不断改进,最初万年历的核心部件石英晶体振荡器己被集成电路取代,数字集成技术的发展,虽然使得电子时钟走时准确

12、,稳定性也很高的MOS集成电路的电路相对复杂,功耗高,维护起来难,且断电后调整时间极不易。现在单片机,DSP,FPGA已取代集成芯片成为万年历核心,现在国内外市面上的很多先进的万年历都采用这几种电路组成。它们可以通过编程很方便的而是先多种功能,同时以很小的体积和其它产品相组合,功能更强大。如音乐旋律的整点报时和闹铃,且可根据个人喜好改编音乐的万年历,红外遥控万年历,带人工语音的万年历,带温湿度测试的万年历,万年历笔筒,万年历相册等等,除了在功能方面不断的增多外,在显示设备上,质量体积更轻更小的LCD液晶显示已逐步取代LED,现在所研制的新型的具有汉显功能的LCD不仅可以显示基本的时间,年月日,

13、还可以显示各种节日和农历的节气。万年历的不断更新,为我们生活带来极大的方便。 1.3本设计研究的内容本设计就是以AVR单片机Mega16为核心的万年历,同时加以键盘电路断电后能够自由修改时间,并采用具有汉显功能液晶显示电路弥补了LED显示的缺点,质量更轻,体积更小,电路更简化,减少辐射。设计中重点研究了时钟芯片精确计时的问题和公农历转换的算法,用时钟芯片代替内部时钟,使得计时更准确。万年历设计中的难点就是公农历转换,研究明白此问题,才能编出子程序,显示出公历日对应的农历日。第二章 系统整体设计方案2.1 系统功能分析 本系统是基于Mega16 的数字万年历设计。它除了能显示基本的年月日外,还能

14、显示农历,同时具有音乐闹铃,整点报时和断电后调整时间的功能。这些功能由Mega16,时钟,键盘和显示共同作用下实现。2.2 系统方案论证2.2.1 时钟模块方案一:基本门电路搭建用基本门电路实现时钟发生器,电路结构复杂,故障系数大,不易调试。方案二:由单片机实现时钟功能单片机内部具有定时器,可方便实现定时功能,通过计算可知,是定时器没25ms产生一次中断,当产生40次中断后秒单元将加一,以此类推,从而实现时,分,秒的走时,并加以显示.但由于系统晶振误差,温漂,中断响应时间的不确定性及定时器重新装载时间常数所带来的误差,决定它不能用来作为时钟的时基中断。方案三:专用时钟芯片目前市场上已有很多实时

15、时钟芯片。DS12887.DS1302.DS1307.PCF8563.X1227等,芯片内部集成了时钟/日历功能,给时钟系统设计带来很多方便。因此计时功能宜选用选用专用时钟芯片为宜,时钟模块采用方案三来实现2.2.2键盘模块方案一:采用独立按键电路每个按键单独占用一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。但是当按键较多时占用单片机的I/O口数目。方案二:采用阵列式键盘此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O的I/O数目。本设计中按键为八个,需接口多,采用2*4行列式键盘2.2.3 显示模块方案一:使用多个数码管显示LED数码管式利

16、用二极管发光显示数字和字母,具有亮度大,接口设计比较容易,价格相对便宜等优点。但是由于它工作电流较大。不能显示汉字,显示信息量有限,若在此题目中应用就会受到很大限制。方案二:采用液晶显示液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息灵丰富且直观易懂。而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射等优点。系统采用方案二,设计选用LCD1602第三章 系统硬件设计本系统以Mega16为核心部件,使用串行时钟芯片DS1302,实现时间和闹钟的设置功能。通过键盘和液晶LCD1602提示可方便地校对时

17、钟和设置闹钟时间,且断电后可实现自由调整时间,同时具有音乐播放和闹铃的的功能,系统的整体框图如图3.1所示。 3.1 数字万年历的硬件结构图下面介绍下本文涉及到的几个部分:3.1 Mega16单片机电路设计3.1.1 Mega16的介绍Mega16是ATMEL公司的一款高性能、低功耗得 8 位AVR微处理器, 使用先进得RISC 结构, 大多数指令的 执行时间为单个时钟周期, 所以运算速度更快!两个具有独立预分频器和比较器功能的 8 位定时器/ 计数器;一个具有预分频器、比较功能和捕捉功能得 16 位定时器/ 计数器;具有独立振荡器得 实时计数器RTC;四通道PWM;8路10 位ADC8 个单

18、端通道,TQFP 封装的 7 个差分通道,可编程得 串行USART 接口;可工作于主机/ 从机模式得 SPI串行接口;面向字节得 两线串行接口;具有独立片内振荡器得 可编程看门狗定时器;片内模拟比较器; 其具有的下面特点无论从编程、自编程和加密等方面都给用户提供了很大得方便!4k字节的系统内可擦写10 * 000 次的可编程Flash;具有独立锁定位的可选Boot 代码区, 通过片上BOOT程序实现系统内编程;512字节的 擦写100 * 000 次的EEPROOM;1K字节的片内SRAM, 可以对锁定位进行编程以实现用户程序的 加密!具有以下特点:先进的 RISC 结构 131 条指令 32

19、 个 8 位通用工作寄存器全静态工作工作于 16 MHz 时性能高达 16 MIPS只需两个时钟周期的硬件乘法器非易失性程序和数据存储器 通过 JTAG 接口实现对 Flash、 EEPROM、熔丝位和锁定位的编程2 个具有可编程增益 (1x, 10x, 或 200x)的差分通道上电复位以及可编程的掉电检测片内经过标定的 RC 振荡器片内 / 片外中断源 6 种睡眠模式 : 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的 Standby 模式工作电压 : ATmega16:4.5 - 5.5V速度等级: 0 - 16 MHz ATmega163.1.2 Me

20、ga16的引脚图及引脚说明 VCC: 数字电路的电源 GND:地端口A(PA7.PA0): 端口 A 做为 A/D 转换器的模拟输入端。端口 A 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 A 处于高阻状态。端口 B(PB7.PB0):端口 B 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复

21、位过程中,即使系统时钟还未起振,端口 B 处于高阻状态。端口 C(PC7.PC0):端口C 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 C 处于高阻状态。如果JTAG 接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK) 的上拉电阻被激活。端口 D(PD7.PD0):端口 D 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入

22、使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 D 处于高阻状态。RESET: 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位, 持续时间小于门限间的脉冲不能保证可靠复位XTAL1: 反向振荡放大器与片内时钟操作电路的输入端XTAL2: 反向振荡放大器的输出端. AVCC: AVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接.使用ADC时应通过一个低通滤波器与 VCC连接。 AREF: A/D 的模拟基准输入引脚。根据以上端口的介绍以及具体引脚图,设计中单片机端口分配表PA口液晶显示数据线PB4PB

23、7接4*1键盘PD3DS1302 SCKPD4DS1302 I/OPD5DS1302 RSTPD6扬声器输入驱动PB0,PB1,PB2液晶显示RS,R/W,E3.2 时钟接口电路本万年历系统的重要部分在于时钟和闹钟功能模块,这里选用串行时钟芯片dS1302,与采用并行总线与单片机进行数据通信的时钟芯片相比,DS1302与单片机的连线大为减少,极大的节省了单片机的系统资源3.2.1 简介DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并

24、可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。3.2.2 引脚介绍及其功能图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32

25、.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向), SCLK始终是输入端。 图1 DS1302 引脚图3.2.3DS1302的控制字节

26、DS1302的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出图2 DS1302 的控制字 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。时序图如下:3.2.4DS1302的寄存器DS1302有1

27、2个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1表一 DS1302 的时钟,日历寄存器及控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H 00-59CH10SECSEC分钟寄存器82H83H 00-59010MIN MIN小时寄存器84H85H00-12或00-23 12/24110/APHR HR日期寄存器86H87H01-28,29.30.31 010DATE DATE月份寄存器88H89H 01-12 0 010MMONTH周月寄存器8AH8BH 01-07 0 000DAY年份寄存器8CH8

28、DH 00-99 10 YEAR YEAR 表中12或24小时的方式选择位,当为1时,选择12小时。有AP那位是上午和下午的选择位,当为1是表示为下午。CH是暂停位,当CH=1时,时钟振荡停止,器件被置入低功率备份方式,其电源电流小于100NA,当CH=0时,时钟启动此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为

29、突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)3.2.5 数据输入输出 在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序见图。 如果命令字节中的寻址位A0A4均为1,可以把时钟/日历或RAM存储器规定为多字节方式。当命令字节为FFH或FEH,可以对片内31字节RAM进行读/写操作;当命令字节为BFH或BEH时,可对8个时钟/日历寄存器进行读/写操作,在时钟/日

30、历寄存器中的地址9-31或RAM存储器中的地址31均不能使用。在多字节方式中读或写都是从地址0的第0位开始。 当以多字节方式写时钟/日历寄存器时,必须按传送是次序写满8个寄存器;但是,当以多字节方式写RAM时,根据发送的要求,数据不必写入所有31字节。不管是否写入全部31字节,所写的字节都将传入送至RAM。 另外,应注意在写操作时,CLK的每一个时钟上升沿,一。I/O引线将为高阻态,数据必须在CLK上升沿前读取。16 长春理工大学毕业设计 3.3 液晶显示电路设计本设计中的液晶选用LCD1602.液晶显示模块可以分为字段,字符点阵,图形点阵 3 种。一般只有后者可以显示汉字和图形。LCD 16

31、02 是常见的 16 2 行, 6 8 字符点阵液晶模块,广泛应用于智能仪表、通信、办公自动化设备中,其字符发生器 ROM 中自带数字和英文字母及一些特殊符号的字符库,没有汉字。LCD1602的引脚图如下,引脚功能如下:BLA :背光源正极,接 +5V ; BLK :背光源负极,接地; VO :液晶显示偏压信号,通过电位器 W1 调节, 1602 偏压接近 0V ; RS :接 PD.0 ,决定传输类型是数据或命令, 1- 表示数据, 0- 表示命令; R W :接 PD.1,读写控制, 1 一表示读, O 一表示写; E :接 PD.2 ,使能端,高电平有效; DB0 DB7:数据端口,连接

32、PA 1602无法显示汉字,农历的日期就不好显示了。若要显示汉字,关键是先要自己建立欲显示的汉字字库。1602提供了在片内CGRAM的00H-3FH共64个字节的空间,可以存放8个68点阵的自建字符库,其代码分别为00H-07H,然后在显示时只要用处查表法调用汉字的相应代码就可以了 对于本设计,若进行编程实现自定义的汉字字符,会占用单片机的内存,如果在农历显示前加以前缀区分,仍可用公历格式来显示农历 3.4 键盘接口电路设计 在设计键盘电路时我们采用2*4的行列式八键键盘。单片机通过查询方式对键盘扫描。用软件算法消除按键顺势的抖动。 3.5 音乐闹铃功能设计 当闹铃定时到点时,会触发声音报警,

33、电路如下 Speaker口接至单片机的PD.6声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。此外,结束符和体止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H,则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果。为了产生手弹的节

34、奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。3.6 仿真接口电路 采用AVR仿真机对硬件电路的软件编程进行仿真,再硬件电路里加JTAG接口,通过下载线连硬件与仿真机,烧入程序和进行仿真JTAG主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(Test Access Port�测试访问口)通过专用的JTAG测试工具对进行内部节点进行测试。JTAG测

35、试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-System rogrammable�在线编程),对FLASH等器件进行编程。 JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程 其引脚图如下:8脚悬空,1.3.5.九脚分别与MEGA16的 第四章 系统软件主要设计流程4.1综述软件系统在本设计中尤其重要,基本功能大部分是由软件完成的,发挥功能的关键控

36、制部分同样需要软件的密切配合才能顺利实现。鉴于软件设计的复杂性和规模性,我们采用AVR编译器支持的C语言编程,放弃了效率高但可读性不强的汇编语言。整个软件系统采用模块化的程序设计方法,共分为时间设定,显示程序,闹铃设定,键盘设定四个部分。此系统完成的主要功能有:时间、日期设定与显示,闹铃设定,整点报时,跑表的启动/停止/保持显示/清除,音乐播放。4.2 系统软件主流程图 本设计的主要编程思想是:初始化设备后,读取DS1302的寄存器地址所存放的数据,将其显示在LCD上,扫描键盘,有键按下,就进入设置界面,根据键值执行相应的闹铃和时钟设置。完成设置后,将设置后的时间送给DS1302的寄存器,单片

37、机从DS1302中读入此数据显示在LCD上4.3 音乐闹铃程序声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表程序依次取出,产生音符并控制节奏,就可以实现演奏效果。此外,结束符和体止符可以分别用代码 00H 和 FFH 来表示,若查表结果为 00H,则表示曲子终了;若查表结果为 FFH,则产生相应的停顿效果。

38、为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。具体流程图如下:4.4键盘程序 键盘采用查询方式进行扫描,对两行键盘依次进行扫描。根据扫描的键值执行相应的功能4.5农历算法 本设计中的难点即为阴历算法,解决了这个问题,才能显示农历4.5.1 农历算法的理论研究农历是我国的一种历法,又称夏历、中历、旧历,俗称阴历。定月的方法是用朔望月周期给出,朔所在日为初一,朔望月长约29天半,所以农历大月30天,小月29天。农历平年有十二个月,全年354天或355天,闰年为十三个月,其中某一月为闰月,月名依前一月名而定,如前月是八月,闰月则为闰八月。闰年全年383天

39、或384天。设置闰月的方法是:农历月份中无“中气”的月份则是闰月。 7 i+ s0 L& & G) C农历平年、闰年的月数、天数一览表 3年月数大月天数小月天数全年天数闰月设置方法平年12302935419年7个闰月闰年133029383(或384)无中气月份为闰月二十四节气中四季“节气”和“中气如下: 四季 春 夏 秋 冬 节气 立春 惊蛰 清明 立夏 芒种 小暑 立秋 白露 寒露 立冬 大雪 小寒 中气 雨水 春分 谷雨 小满 夏至 大暑 处暑 秋分 霜降 小雪 冬至 大寒 阴历最大的问题是在如何置闰。阴历基本法则如下: * 月朔日即是初一* 月以中气得名* 以包含雨水中气月为正月,即是寅

40、月* 月无中气者为闰月,以前月同名6 c1要求出; f4 , 0 u0 l$ dR* r9 x6 P 农历算法即求任一公历年的农历日期。根据存在的公农历转换数据表,查找和计算出当前显示的公历的农历日期。首先是要保存公农历之间的转换信息:以任意一年作为起点,把从这一年起若干年的农历信息保存起来。根据上表要保存一年的信息其实只要两个信息就能了:1、农历每个月的大小;2、今年是否有闰月,闰几月及闰月的大小。用一个整数来保存这些信息就足够了。具体的方法是:用三个字节来表示公历对应的农历数据,格式第一字节BIT7-4位表示闰年月份,值为0为无闰月,BIT3-0对应农历第1-4月的大小。第二字节 BIT7

41、-0对应农历第 5-12 月大小,第三字节 BIT7表示农历第 13个月大月份对应的位1表示本农历月大(30天),为 0表示小(29天)第三字节表示春节的公历月份,BIT4-0表示春节的公历日期.这样建立了农历年对应的农历数据表。建立表后,具体的算法如下: 1)从数据表中取得当年春节的公历日期 计算此公历日期距当年元旦和春节离元旦的天数。从而算出公历日期距春节的天数X,判断公历日和春节的前后 2) 公历日在春节后,农历年=公历年,农历月从1月开始,判断是否是闰3)取农历月天数Y,大月30天,小月29天,判断X,Y大小,如果X不小于Y,X减去当月天数,若农历月非闰月,农历月加1.循环此过程,X小

42、于Y跳出循环,农历日=X+1 4)公历日在春节前,农历年=公历年减1,相应的数据表的地址减三,定位到前一年,农历月从12月开始5)取农历月天数Y,大月30天,小月29天,如果X大于Y,X减去当月的天数 ,农历月非闰月,农历月减1,循环此过程,如果X不小于Y,跳出循环,农历日=Y-X+14.5.2.阴历算法的流程图 在编程时,为了方便运算,将数据转换为HEX格式,农历日期求出后转换成标准格式。其流程图如下:第五章 系统测试 本设计的硬件电路和软件编程后,先用Proteus进行仿真,对硬件电路进行模拟 ,得到预想的结果后,焊接硬件,对硬件电路进行实物仿真,得到最够的测试结果5.1软件仿真 Prot

43、eus它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,观察的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。proteus 的工作过程 运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单

44、的Define code generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/remove source files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。5.2 实物仿真 Proteus 仿真完,实现设计所预想的功能后,焊接电路,对实物进行仿真测试, 仿真环境即测试环境是:AVR Studio 4.07以上版本,915DC电源,PC与RS232口。5.2.1测试过程 (1) 安装AVR Studio:在安装AVR Studio时将随机提供的光盘放入CDROM中,选取avrs

45、tuio4。07目录中的setup.Exe文件,按照安装向导提示的步骤进行即可。 (2) 在启动AVR Studio之前,把JTAGICE连接在上位PC和目标板之间,确保AVR Studio可以完成自动侦测连接情况。 (3) 仿真器与上位机的连接,将随机带的“串行通讯电缆”一头与仿真器的“串行通讯口”相接,另一头与计算机任意串口相接。注意:AVR Studio不能同其他程序共享串口资源,在打开AVR Studio前要关闭其他使用该串口的程序 (4) JTAGICE同目标板的连接:最小需要6条线与目标板相连,才可以完成仿真任务,他们是:TCK 、TMS 、TDO 、TDI、 Vref、 GND,另外有两条可选择的引线 nSRST 和 Vsupply 。引脚nTRST不接,Vsupply的功能是由目标板向JTAGICE供电(仅对接口部分)nSRST的作用是监视目标板的复位线。然而,在仿真过程中不是必须的。如果应用程序对MCUSR中JTD位进行了编程,JTAG接口就会关闭,为了使用JTAGICE对目标板重新编程。就必须控制复位引脚。 (5)AVR JTAG仿真器的连接总结:将AVR JTAG 与PC串口相联接,并由9-15VDC直流电源供电,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1