ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:614.86KB ,
资源ID:9013454      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9013454.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(南航第八届校电赛 作品报告草稿 多功能语音万年历.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

南航第八届校电赛 作品报告草稿 多功能语音万年历.docx

1、南航第八届校电赛 作品报告草稿 多功能语音万年历 编号 南京航空航天大学作品设计报告题 目多功能电子万年历学生姓名韩浩 等学 号学 院自动化学院专 业电气工程与自动化测控技术与仪器班 级、207、301指导教师无二一三年十一月南京航空航天大学本科设计作品报告(论文)诚信承诺书本人郑重声明:所呈交的电子电路设计报告(论文)(题目:多功能电子万年历)是本人在导师的指导下独立进行研究所取得的成果。尽本人所知,除了作品设计报告(论文)中特别加以标注引用的内容外,本作品设计报告(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。作者签名: 年 月 日 (学号):草稿 尚未添加引用 尚未完成电路图

2、程序设计原理阐述省略 新添加的功能未写入报告 新功能具体见作品登记表作品名称多功能电子万年历上报学院自动化学院参赛选手学号姓名学院联系方式韩浩自动化学院惠琦自动化学院高伟自动化学院崔培林自动化学院候鑫鑫自动化学院作品介绍(400字内) 作品为校电赛F题作品,是一种基于TI MSP430的万年历解决方案。功能与特性包括:1、控制核心采用MSP430F149,以LCD12864实现四行汉字显示;2、实现公历年月日时分秒准确计时,支持星期的准确计算,并支持闰年补偿,能显示闰年;3、能显示阴历年、月、日,能计算并显示节气;4、能进行整点和半点语音报时;5、具有掉电存储功能,可存储掉电前用户定时设置;6

3、、具有日程管理,可以设定指定日期的日程,可以设置日程的提醒时间,并可用语音进行提示;7、能掉电保存36个(可增至6400条)日程设定,提供8种日程内容语音、8首歌曲供选择播放,提示音乐具有重复播放功能;8、具有温度测量功能;9、具有城市煤气报警功能;10、具有智能声控小夜灯功能;11、具有功能完善的多级菜单实现上述所有功能的设置,能对具有良好的人机交互性能;12、系统代码采用Embedded C+与面向对象方法实现,编写了利用中断实现的分时调度、高优先级任务抢占调度的伪RTOS;13、具有较低功耗特性,长期不操作自动关闭背光。备注 多功能电子万年历设计摘 要本作品为校电赛F题作品,是一种基于T

4、I MSP430的万年历解决方案。硬件方面,作品控制核心采用MSP430F149单片机,以LCD12864作为显示器,依赖DS1302提供实时时钟信息,通过IIC总线与AT24C256通信实现掉电后的数据保存,通过RS485总线与LMD102芯片通信实现智能语音播报,通过四个独立按键实现多级菜单切换及功能与日程设置等人机交互功能;作品同时实现了如智能小夜灯、城市煤气报警、温度测量等额外实用小功能。软件方面,系统代码采用Embedded C+编写,采用面向对象设计方法实现,设计了利用中断实现的支持多任务时间片轮转调度、高优先级任务抢占调度的伪RTOS;设计了功能完善的多级菜单,具有良好的人机交互

5、性能;设计了基于Zeller公式与紫金历数据表的万年历算法,能显示判断闰年并自动调整日期。总体而言,系统具有良好的可靠性与较低功耗。关键词:万年历,多功能,语音播报A Design of Multi-functional Chinese CalendarAbstractThe following design is a solution to NO.F problem in 2013 NUAA Electrical Circuit Design Competition. The article describes a calendar solution based on TI MSP430 M

6、CU. In terms of hardware, MSP430F149 microcontroller is used as control center, LCD12864 is used as main monitor , and DS1302 is chosen as RTC. The design achieved power-off data store function by IIC bus using AT24C256. Intelligent voice broadcast is achieved via RS485 bus using LMD102 . User can u

7、se four independent toggle buttons to control multi-level menu and achieve other human-computer interaction functions such as agenda setting and user configuration setup . The design also includes some additional features such smart night light, city gas alarm and temperature measurement. In terms o

8、f software, system code was written with Embedded C + + language using object-oriented design method. System supports the multitasking round-robin scheduling and high-priority task preemptive scheduling by using interrupt implementation . System also includes a multi-level menu, which has a good int

9、eractive performance. The main algorithms are based on Zeller formula and a ZiJin calendar map . Overall, the system has good reliability and low power consumption. Key Words:Calendar , Multi-functional , Voice-broadcast摘 要 Abstract 第一章 系统方案 11.1 比较与选择 11.1.1 控制核心 11.1.2 实时时钟 11.1.3 语音模块 21.1.4 掉电存储

10、 21.1.5 人机交互 21.1.6 其他硬件 21.1.7 程序开发语言 31.1.8 操作系统 31.1.9 算法选择 3 1.2 方案描述 4第二章 理论分析与计算 42.1逻辑控制电路设计 42.2日程设定和日期计算方法 5第三章 电路与程序设计 63.1 电路设计 63.1.1 控制核心MCU部分 63.1.2 实时时钟模块 73.1.3 语音播报模块 73.1.4 独立按键 73,1,5 LCD12864 83.1.6 E2PROM 83.1.7 其他硬件 93.2 程序设计 10 3.2.1 主程序设计与框架 10 3.2.2 各硬件模块程序设计 12 3.2.3 时间/日程功

11、能设计 18第四章 测试方案与测试结果 204.1 测试方案及测试条件 204.2 测试结果完整性 204.3 测试结果分析 20第五章 总结与展望 21参考文献 21致谢 22附录 23第一章 系统方案1.1 比较与选择本节简述作品设计阶段各关键芯片的选型及软件开发方法的选择原因。1.1.1 控制核心依据题目要求,作品采用德州仪器Texas Instrument公司的混合信号处理器MSP430系列单片机作为控制核心。该芯片以惊人的低功耗性能著称,是一款基于RISC指令集的16位MCU,在实现超低功耗的前提下达到较高的性能,是绝对适合本题设计要求(超低功耗、高运算性能、相对低廉价格、相对较低的

12、开发成本)的单片机。考虑到万年历并非高级电子设备,成本不能过高,控制核心单片机一般在低端的MSP430FX1XX系列或MSP430G2XX系列中选择。我们最终选择了PM封装的MSP430F149芯片作为控制核心,并向TI公司索取了两片样片最终完成开发,原因如下:1、MSP430F149是TI公司MSP430系列单片机中最为广泛采用的芯片,在开发阶段可以直接向TI公司索取样片,有效降低了开发成本;2、MSP430F149片内存储空间高达60KB,足够存储外年历的控制程序(最终控制程序编译完成后达16KB),而Launchpad所采用的G2553芯片存储空间为4K;3、F149管脚资源丰富,能满足

13、设计中各模块对管脚资源的要求,且能有效利用管脚第二功能简化开发(如直接利用管脚的UART功能进行485通信),相比之下G2553仅有20管脚,如果用于开发将不得不设计较为复杂的程序实现管脚的分时复用,大大加重编程人员的负担。基于以上讨论,作品最终采用MSP439F149PM芯片作为控制核心。1.1.2 实时时钟由于MSP430F149片内没有实时时钟RTC模块,作品采用外扩实时时钟的方式完成计时功能。不同厂商生产的RTC芯片有许多,性能、价格上相差甚远。出于性价比考虑,Dallas公司的DS1302芯片足以满足万年历的计时要求。该芯片具有涓细电流充电能力,利用普通手表晶振实现低功耗运行,利用备

14、用电源(纽扣电池)实现断电计时功能,操作简单,性价比极高,精度足以满足题目要求。基于以上讨论,作品最终采用Dallas DS1302芯片作为实时时钟模块的核心。1.1.3 语音模块各厂商生产的语音模块功能各不相同,如能实现录放功能的ISD1730,能实现SD卡内文件读取的WTV020,能实现TTS功能的科大讯飞语音模块等。考虑到低功耗、能利用单片机有效控制、编程实现简单、外围电路简单的要求,作品采用LMD102模块作为语音模块。该模块价格极低,抗干扰能力好,片内自带功率放大,且单片机可以利用RS485总线协议能实现的播放控制。片内存储容量为32M,足以实现题目要求的语音播报功能。1.1.4 掉

15、电存储掉电存储实现方式较多。在不利用备用电源的情况下,一般可以考虑直接对MSP430片内存储FlashROM读写或外连电可擦写可编程EEPROM实现。单片机FlashROM的擦写次数有限,而单片机作为控制核心在万年历系统中有至关重要的作用,不应因频繁擦写而报废,因此采用片内存储并不可取。另外,对于片内存储器的写入必须按Segment擦除,操作上并不方便。EEPROM采用IIC总线协议与单片机进行通信,能实现简单可靠的随机存储,掉电后保持数据能力极好,成本极低,且电路连接方便,易于损坏后更换,因此作品最终采用Atmel公司的AT24C256作为掉电存储模块。1.1.5 人机交互根据题目要求,作品

16、采用LCD12864作为主显示器,显示公历的年月日、时分秒及闰年情况,同时实现农历年月日的汉字输出,同时实现温度等数据以及全中文菜单的显示。根据题目要求,作品采用四枚独立按键分别作为上、下、确认、菜单功能按键,足以满足多级菜单间的切换与相应时间、功能、日程安排的设置。1.1.6 其他硬件作品充分利用管脚,作品实现了以下功能:1、声控智能小夜灯:采用多片锁存器与数十枚LED实现能指示时间的环状灯,利用声控开关实现夜间人声自动亮灯。2、城市煤气报警:采用MQ2气敏传感器实现包括城市煤气在内的多种气体的测量与报警。3、温度测量:采用Dallas DS18B20温度传感器实现温度测量。1.1.7 程序

17、开发语言MSP430单片机开发采用C语言较多。但由于开发时间极短、开发人数极少、课业压力大、任务较重,作品采用IEEE制定的Embedded C+语言开发,且充分利用了面向对象编程的思想,大大简化了程序设计的过程,也较大程度地提高了代码的复用性(且代码具有很高的可重用性)。代码也适当地利用了IAR Electric Workbench for MSP430开发环境对C+泛型编程开发的良好支持,使用了标准模板库STL中的部分函数简化部分算法和数据结构的设计开发工作。由于C+编译的程序将比C效率低,为保证程序仍具有较高效率,编程时充分考虑MSP430内部结构,遵循C430编程规范,尽量避免使用不适

18、合MSP430架构执行的代码段。为保持较好的可移植性,几乎没有使用Embedded C+语言不支持的特性。1.1.8 操作系统万年历对于实时响应的要求不高,一般不需要移植实时操作系统如uC/OS-II来实现相应的任务调度与进程管理,而简单采用永循环内各模块工作的主程序框架有时无法达成很快的实时响应。基于以上讨论,作品采用了独立编写的基于时间片轮转思想设计的、依靠定时器中断实现的伪RTOS作为操作系统,同时,对于优先级较低的任务实现智能放权,对于优先级较高或需要实时响应的任务(如菜单按键按下后显示菜单、煤气报警、日程报警等)支持抢占式调度。1.1.9 算法选择万年历主要涉及的算法为公历年月日(涉

19、及闰年补偿)及星期的算法、公历与农历的高效转换算法。基于1.1.2的讨论,作品采用了外连RTC模块的设计方案,而DS1302具有闰年补偿功能,能实现较完整的公历年月日计算,因此只需设计星期的计算方法。作品采用了基于Zeller公式的星期计算方法,时间复杂度仅为O(1)。由于中国农历计算依赖于天象等不确定量,无特定算法。因此作品内建了公农历映射表实现公农历间转换。此外,作品在菜单设计部分还利用到了递归算法的思想,在日程设计方面利用了STL提供的快速排序算法。1.2 方案描述基于1.1部分的比较分析,作品最终的方案描述如下:作品提供了一种基于MSP430与DS1302的万年历解决方案。硬件方面,作

20、品控制核心采用MSP430F149单片机,以LCD12864作为显示器,依赖DS1302提供实时时钟信息,通过IIC总线与AT24C256通信实现掉电后的数据保存,通过RS485总线与LMD102芯片通信实现智能语音播报,通过四个独立按键实现多级菜单切换及功能与日程设置等人机交互功能;作品同时实现了其他小功能,利用多片锁存器与声控开关实现了智能小夜灯,利用MQ2气敏传感器实现了城市煤气报警,利用DS18B20实现了温度测量。软件方面,系统代码采用Embedded C+编写,采用面向对象设计方法实现,设计了利用中断实现的支持多任务时间片轮转调度、高优先级任务抢占调度的伪RTOS;设计了功能完善的

21、多级菜单,具有良好的人机交互性能;设计了基于Zeller公式与紫金历数据表的万年历算法,能显示判断闰年并自动调整日期。功能与特性包括以下几点:1、控制核心采用MSP430F149,以LCD12864实现四行汉字显示; 2、实现公历年月日时分秒准确计时,支持星期的准确计算,并支持闰年补偿,能显示闰年; 3、能显示阴历年、月、日,能计算并显示节气;4、能进行整点和半点语音报时; 5、具有掉电存储功能,可存储掉电前用户定时设置; 6、具有日程管理,可以设定指定日期的日程,可以设置日程的提醒时间,并可用语音进行提示; 7、能掉电保存36个(可增至6400条)日程设,提供8种日程内容语音、8首歌曲供选择

22、播放,提示音乐具有重复播放功能; 8、具有温度测量功能; 9、具有城市煤气报警功能; 10、具有智能声控小夜灯功能; 11、具有功能完善的多级菜单实现上述所有功能的设置,能对具有良好的人机交互性能; 12、系统代码采用Embedded C+与面向对象方法实现,编写了利用中断实现的分时调度、高优先级任务抢占调度的伪RTOS; 13、具有较低功耗特性。第二章 理论分析与计算2.1逻辑控制电路设计众所周知,单片机系统发展的趋势是片内集成,通过片上链路实现各类信息的处理转换,利用单片机自身的其他资源实现各类控制。然而由于设计者相关知识与经验的匮乏,作品依然采用了8086时代以单片机为核心、外扩各类模块

23、实现所需功能的设计方法。逻辑控制电路均以单片机管脚为出发点设计,各模块直接或者通过各类总线连接方式连接到相应管脚。具体参见第三章电路设计部分。2.2日程设定和日期计算方法公历的计算方法:由于硬件选择的原因,公历方面不需考虑年月日计算、闰年补偿,只需设计星期算法:最著名也最有效的公历星期算法为Zeller公式 : 1公式都是基于公历的置闰规则来考虑。公式中的符号含义如下:w:星期(计算所得的数值对应的星期:0-星期日; 1-星期一; 2-星期二; 3-星期三; 4-星期四; 5-星期五; 6-星期六)1c:年份前两位数y:年份后两位数m:月(m的取值范围为3至14,即在蔡勒公式中,某年的1、2月

24、要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)d:日:称作高斯符号,代表向下取整,即,取不大于原数的最大整数。mod:同余(这里代表括号里的答案除以7后的余数)实际编程时考虑C+语言特性,采用了以下修正公式代替Zeller公式:其中各变量与Zeller公式定义一致,只是采用了char(编译时默认为unsigned char)类型作为各变量的数据类型,利用C+语言特性可以实现取整。农历算法:由于中国农历是直接利用天体位置定义的历法(区别于利用固定的天体时间平周期定义的历 法,如格里历,回历等),它是现今世界上为数不多的天文年历性质的历法,它和一些重要

25、天象是一一对应的2,因此不存在确切的算法。程序内建了一张紫金历与公历的映射表实现了公农历间的转换。见附录。第三章 电路与程序设计3.1 电路设计3.1.1 控制核心MCU部分3.1.2 实时时钟模块3.1.3 语音播报模块3.1.4 独立按键3.1.5 LCD128643.1.6 E2PROM3.1.7 其他硬件小夜灯的声控模块:温度传感器:城市煤气报警模块:3.2 程序设计3.2.1 主程序设计与框架主程序包含系统初始化与任务调度功能,包含了一套精简的基于时间片轮转思想、依靠定时器中断实现的伪RTOS作为操作系统。系统对于优先级较低的任务实现智能放权,对于优先级较高或需要实时响应的任务(如菜

26、单按键按下后显示菜单、煤气报警、日程报警等)支持抢占式调度。程序主框架如下:(类C风格伪代码)Int main() LCDE2PROM初始化; 读取用户设置信息(如果有); RTC初始化; 设置并开启TA中断; while(1) Switch(任务安排特征码) Case 特征1: 执行任务1,非紧急如果执行完毕,更新任务特征码; Break;Case 特征2: 执行任务1,需要实时响应,重复执行,直到系统更新任务特征码; Break;Case 特征 n-1: 执行任务n-1,非紧急若执行完毕,更新任务特征码; Break;Case 特征n: 执行任务n,需要实时响应,重复执行,直到系统更新任务

27、特征码; Break;中断服务程序: 更新任务特征码; 如果需要响应最高级任务,无视任务特征码,直接响应。3.2.2 各硬件模块程序设计RTC模块类声明:class DS1302 private: void ByteWrite(char d);/RTC写入一字节(内部函数) char ByteRead(void);/RTC读取一字节(内部函数) void write(char Addr, char Data);/对地址写数据 char read(char Addr); /对地址读数据 void autoSetWeekDay(char _y, char _m,char _d) ;/基于Zelle

28、r公式的星期计算函数 public: void setProtect(char flag); /写/清保护接口 void setTime(char Address, char Value); / 设置时间函数 void setTime(timeClass& t) ; /调用timeClass对象设置时间函数(重载) void getTime(timeClass&t); /获得时间并存入timeClass对象 void init(timeClass&t); /初次使用的初始化;E2PROM掉电存储模块类声明:class AT24C256 private:/private部分均为I2C总线操作内部

29、函数 void I2C_delay(); void I2C_start(void); void I2C_stop(void); void I2C_init(void); void I2C_ack(void); void I2C_NoAck(void); char I2C_TestAck(void); void I2C_SendByte(char data_); char I2C_ReceiveByte(void); public: void init();/初始化 char writeByte(char data_,unsigned int addr_);/对地址写1字节 char write

30、Page(char data_,unsigned int addr_);/对页写入 char readCurrentByte(char *p);/对当前地址读1字节 void writeNByte(char* data,char n,unsigned int addr_);/对地址写N字节 void readNByte(char* data,char n,unsigned int addr_);/对地址写N字节 char readByte(char *p,unsigned int addr_);/对地址读1字节 char readByte(unsigned int addr_);/对地址读一字节直接返回(重载) char readCurrentData(char data_,unsigned int count_);/对当前地址批量读出 char readData(char data_,unsigned int count_,unsigned int addr_);/对页读出 char haveData();/检测是否已经被用户写入过信息(检测已写入标志) void restoreUserConfig();/恢复用户设置 void saveUserConfig();/保存用户设置 void wipe();/清除片内信息 void setWritten()/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1