带音乐铃声的数字日历钟的设计与制作_第1页
带音乐铃声的数字日历钟的设计与制作_第2页
带音乐铃声的数字日历钟的设计与制作_第3页
带音乐铃声的数字日历钟的设计与制作_第4页
带音乐铃声的数字日历钟的设计与制作_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、 技能课教案编号:qd-19-06 流水号:4 电气自动化 专业 10g3 班 共 20 页课题名称总课题:毕业设计授课主题内容带音乐铃声的数字日历钟的设计与制作授课课时2需用课时2分课题:毕业设计范例一起止日期课题要求技术理论知识实际技术操作设备、工、刃量具标准材料准备示范操作准备产品名称是否生产产品图号件数额定工时工时余(缺)安排备注工人学生合计课题实习结束小结授课老师:肖正光 审阅签名:新会高级技工学校毕 业 设 计 论 文 课 题: 带音乐铃声的数字日历钟的设计与制作 系 部: 电子信息系 专业、班级: 电气自动化设备安装与维修 姓 名: xxx 指导教师: 完成时间: 2012.6.

2、15 目 录1摘要1 2关键词13atmaga64概述14功能描述5硬件描述6软件描述7操作说明8制作说明9毕业设计总结一、 摘要这是一款带音乐铃声的数字日历钟,具有年、月、日、星期、时、分、秒等显示功能,同时还支持定点播放、整点播放及铃声选择功能的数字日历钟。它具备外观精致、功能齐全、操作方便、结构简单、性价比高等特点,可制作成台历、挂历或者床头闹钟等。二、关键词 atmage64、数码管、通用键盘三、 atmaga64概述 (1) avr单片机是atmel公司于1997年推出的一款基于risc指令构架的高性能、低功耗的 8 位单片机。atmega系列更是高档的单片机,同时这次用到的atme

3、ga64单片机更是性价比相当高一款单片机。atmega64是基于增强的avr risc结构的低功耗8位cmos微控制器。由于其先进的指令集以及单时钟周期指令执行时间,atmega64 的数据吞吐率高达1 mips/mhz,从而可以缓减系统在功耗和处理速度之间的矛盾。 (2) atmega64有如下特点:64k字节的系统内可编程flash(具有同时读写的能力,即rww),2k字节eeprom,4k字节sram,53个通用i/o口线,32个通用工作寄存器,实时计数器(rtc),四个具有比较模式与pwm的灵活的定时器/计数器(t/c),两个usart,面向字节的两线串行接口,8路10位具有可选差分输

4、入级可编程增益的adc,具有片内振荡器的可编程看门狗定时器,一个spi串行端口,与ieee1149.1标准兼容的、可用于访问片上调试系统及编程的jtag接口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时cpu停止工作,而sram、t/c、spi端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位一个时间基准,而其余功能模块处于休眠状态;adc噪声抑制模式时的开关噪声;standby模式下只有晶体或振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展standby模式下则允许振荡器和异步定时器继续工作。 (3)atm

5、ega64是以atmel高密度非易失性存储器技术生产的。片内isp flash允许程序存储器通过isp串行接口,或者通用编程器进行编程,也可以通过运行于avr内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用flash储存区。在更新应用flash储存区时引导flash区的程序继续运行,实现了rww操作。通过将8位risc cpu与系统内可编程的flash集成在一个芯片内,atmega64成为一个功能强大的单片机,为许嵌入式控制应用提供了灵活而低成本的解决方案。 (4)atmega6具有一整套的编程与开发工具,包括;c语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估

6、板。 atmega64引脚分布图 最小系统和通用键盘的实物图 最终的连接实物图四、 功能描述(1)使用的单片机芯片是atmage64,有看门狗,低电压检测等功能,大部分指令为单周期指令。晶体频率选择的是16mhz,采用8位led数码管显示。(2)具有年、月、日、星期、时、分、秒显示功能上面的数字5代表星期5,11代表11时,13代表13分,10代表10秒。代表2009年,12月20日。(3)具有定点报时和铃声播放功能,可以当闹钟使用。ae 代表开放定点模式,ad 代表关闭定点模式,11代表11时,13代表13分, 04代表第5首铃声。(4)具有整点报时和铃声播放功能。ad代表不开放整点报时功能

7、,ae代表开放整点报时功能,ad后的00代表00时整点报时,后面的00代表到整点报时,播放第1首铃声。五、硬件描述(1)最小系统原理图和线路板图 介绍原理图功能(2)通用键盘的原理图和线路板图六、软件描述(1)程序流程图 (2)程序内容头文件包括:nmn_code.h alarmclock.h avr_icc_int_type.h led_display_keyboard.h message.h 主程序包括:nmn_song_play.c alarmclock.c led_disp_keyboard.c message.c nmn_song.c(3)描述各程序作用nmn_code.h是简谱音符

8、编码定义头文件,包括定义简谱音符相对编码、中音相对编码、一阶高音相对编码、二阶高音相对编码、一阶低音相对编码等alarmclock.h是avr综合实验系统之数字日历钟头文件,里面包括定义日期显示位置id、定义时间显示位置id、定义闹钟设置显示位置id、定义整点报时设置显示位置id、定义时间和日期更新函数的返回值、定义铃声输出端口b配置常数(pb6输出,其余为输入)、全局函数声明。avr_icc_int_type.h是固定长度整数类型定义头文件,包括定义带符号定长整数类型和定义无符号定长整数类型。led_display_keyboard.h是avr综合实验系统之led数码管显示和键盘输入头文件,

9、包括定义led数码管段驱动端口、定义led数码管公共阳极驱动位域选择常数、定义led数码管公共阳极驱动位域清零常数、定义总显示位数、定义可视七段字形ascii字符总数、定义闪烁时间常数(ms)、定义光标位置位域选择常数、定义特殊ascii字符、定义键盘扫描线数、定义键盘返回线数等。message.h是avr综合实验系统之消息定义头文件,里面包括定义消息队列常数、定义从16位整数中提取字节的宏、创建消息处理函数指针类型、创建消息结构类型、全局消息函数声明、消息处理函数messageproc包含一个uint16_t类型的参数umessage,该参数的内容由消息处、理函数定义,在一些消息中umess

10、age为16位的参数,在另一些消息中umessage的高低字节、分裂为两个8位的参数使用。该函数返回char类型的值,当给定的消息被成功处理或该消息、必须从队列中移除时,应返回true(非零),而当给定的消息未被处理或该消息应继续保留、在队列中时,则应返回false(0)。nmn_song_play.c是简谱歌曲编码与播放源程序,里面包括简谱编码歌曲播放设备打开函数、简谱编码歌曲播放设备关闭函数、音符播放参数设置函数、简谱编码歌曲合法性检查、简谱编码歌曲播放函数。该函数先打开简谱编码歌曲播放设备,初始化播放控制变量并开始播放指定的歌曲、报警状态检查、缺省中断服务程序、定时器1输出比较通道a中断

11、服务程序。alarmclock.c是avr综合实验之数字日历钟源程序,里面包括更新时间显示函数、更新日期显示函数、日期显示初始化函数,日期显示格式 yyyy.mm.dd、时间显示初始化函数,时间显示格式 w hh.mm.ss、闹钟设置显示初始化函数,闹钟设置显示格式 ae.hh.mm.tt、整点报时设置显示初始化函数,整点报时设置显示格式 he hh tt、显示初始化函数、读取显示缓冲区的日期设置值、读取显示缓冲区的时间设置值、读取显示缓冲区的闹钟设置、读取显示缓冲区的整点报时设置、保存日期设置、保存时间设置、保存闹钟设置、保存整点报时设置、保存数字日历钟设置、获取已保存的数字日历钟设置、由给

12、定的月份查取当月的天数、avr综合实验之数字日历钟主程序、连击编码表初始化函数、按键消息中继函数、日期编辑验证函数、整点报时设置编辑验证函数、编辑回调函数、系统计时事件中继函数。led_disp_keyboard.c是led显示与键盘输入源文件,里面包括键盘接口初始化函数、编辑模式初始化函数、将光标向左移动一个字符位置、将光标向右移动一个字符位置、该函数先调用keymessagehook对击键消息进行预处理,若keymessagehook返回0值,则对光标位置上的内容执行编辑操作,然后再调用editcallback对修改内容进行确认,若editcallback返回0值,则将光标指针移动到下一个

13、编辑位置。扫描按键输入,对按键输入状态进行滤波,检测按键状态转换事件,每当检测到按键事件是就调用keymessageproc()予以处理。按键连击扫描函数、led数码管显示扫描函数、系统计时事件处理函数、缺省中断服务程序、定时器0输出比较中断服务程序、使用给定的字符填充显示缓冲区。message.c是avr综合实验系统之消息处理函数源程序,里面包括sendmessage该函数先检查消息队列是否已满,当消息队列未满时,便将给定的消息投递到消息队列并返回true(-1),否则直接返回false(0)。该函数可被任何程序调用。getmessage该函数先检查消息队列是否为空,当消息队列非空时,便从消

14、息队列中读取一条消息存入pmessage指向的消息结构并返回true(-1),否则直接返回false(0)。dispatchmessage该函数先检查pmessage-messageproc是否为空指针,若为空指针则直接返回-1,否则调用pmessage-messageproc处理pmessage指向的消息并返回消息处理函数的返回值。nmn_song.c是简谱歌曲编码源程序,里面包括我们创建简谱编码歌曲表目录,和歌曲简码程序。(4)部分主程序#include #include #include avr_icc_int_type.h#include nmn_code.h/创建歌曲“新年好”con

15、st charxinnianhao64 = major_f, 60,d1, 0x02, d1, 0x02, d1, 0x10, _s5,0x10,m3, 0x02, m3, 0x02, m3, 0x10, d1, 0x10,d1, 0x02, m3, 0x02, s5, 0x10, s5, 0x10,f4, 0x02, m3, 0x02, r2, 0x20,r2, 0x02, m3, 0x02, f4, 0x10, f4, 0x10,m3, 0x02, r2, 0x02, m3, 0x10, d1, 0x10,d1, 0x02, m3, 0x02, r2, 0x10, _s5,0x10,_t7

16、,0x02, r2, 0x02, d1, 0x20,m0, 0x00;/创建歌曲“月亮代表我心”const char yueliangdaibiaowodexin = major_d, 60,m0, 0x02, _s5, 0x02, d1, 0x12, m3, 0x02, s5, 0x12, d1,0x02, t7, 0x12, m3, 0x02, s5, 0x10, d1,0x02, s5,0x02, l6, 0x02, t7, 0x10, d1_,0x12, l6,0x02, l6, 0x02, s5, 0x02, s5, 0x30, m3,0x02, r2,0x02, d1, 0x12,

17、 d1, 0x02, d1, 0x10, m3,0x02, r2,0x02, d1, 0x12, d1, 0x02, d1, 0x10, r2,0x02, m3,0x02, r2, 0x10, d1, 0x02, _l6, 0x10, r2,0x02, m3,0x02, r2, 0x30, m0, 0x02, _s5, 0x02,r2, 0x12, _l6, 0x02, _t7, 0x02, d1,0x02, r2,0x02, d1, 0x30, m3, 0x02, s5, 0x02, m3, 0x12, r2, 0x02, d1, 0x10, s5,0x10, _t7, 0x30, _l6,

18、 0x02,_t7, 0x02, _l6, 0x12, _t7, 0x02,_l6, 0x12, _s5,0x12, m3, 0x30, s5, 0x10,m3, 0x12, r2, 0x02, d1, 0x10, s5,0x10, _t7, 0x30, _l6, 0x02, _t7, 0x02,d1, 0x12, d1, 0x02, d1, 0x10, r2,0x02, m3,0x02, r2, 0x30, m0, 0x02,_s5, 0x02, d1, 0x12, m3, 0x02, s5, 0x12, d1,0x02,t7, 0x12, m3, 0x02, s5, 0x12, s5,0x

19、02, l6, 0x12, t7, 0x02, d1_,0x12, l6,0x02, l6, 0x02, s5, 0x02, s5, 0x20, m3,0x02, r2,0x02, d1, 0x12, d1, 0x02, d1, 0x10, m3,0x02, r2,0x02,d1, 0x12, d1, 0x02, d1, 0x10, r2,0x02, m3,0x02, r2, 0x12, _l6, 0x02, _t7, 0x10, d1,0x02, r2,0x02, d1, 0x30, m0, 0x00;/创建简谱编码歌曲表const char * const nmncsongtablenum

20、_songs = xinnianhao, yueliangdaibiaowodexin, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao,xinnianhao, xi

21、nnianhao,xinnianhao, xinnianhao,xinnianhao, xinnianhao, xinnianhao, xinnianhao,xinnianhao, ;/*-the end of nmn_song.c-*/七、操作说明(1)第一次接上9v电源后,正常的显示情况。如下: 【5 000000】 后面显示有运行或修改过 【20091020】后面显示有运行或修改过 【ae.07.30.00】后面显示有运行或修改过 【hd 0 0 00】 (2)星期、时、分|秒显示的修改接上9v电源后, 数码管会显示【5 000000】代表是星期五,00点00分00秒。通过键盘上的、来移

22、动屏幕上的数字,移动到的数字在闪烁,表示可进行修改。 例如,想设定今天星期三11点13分10秒,则通过通用按键、,则屏幕上5会闪烁,按下键盘上的3则可改为星期三,数字会自动跳到下一位,在按键盘上的数字,则可完成修改,下面的修改同理,最后要按enter键确认,否则刚才所作的修改无效。(3)年、月、日显示修改按下mode键就会显示,这个代表2009年12月20日。如果想修改为2010年7月1日,则可以按下、移到需要修改的数字上按键盘上的数字(01),屏幕上就会显示你按下的数字,修改完成后,屏幕会自动跳到下一位,后面的修改同理,全部修改完成后,要按enter键确认,否则刚才所作的修改无效。(4)定点

23、的设定及铃声的选择(可当作闹钟使用)继续按下mode键就会显示, ae 代表开放闹钟模式,ad 代表关闭闹钟模式。07代表7时,30代表30分,00代表第一首铃声。例如想允许19点00分报警,播放第2首铃声,首先,把adae ,数字的修改操作如上所说。(5)整点报时及铃声的选择(可当作闹钟使用)再继续按下按下mode键就会显示,hd代表不开放整点报时功能,he代表开放整点报时功能, 00代表是00时整点报时,后面的00代表报时时播放第一首铃声。假如我们想设定21点报时,铃声选择3首铃声,首先,把hdhe ,数字的修改操作如上所说。 八、制作说明(1)原理图设计流程 根据设计要求,绘制出原理图,

24、对电路图分析和论证后,用protel99 se绘制出原理图。 绘制pcb板之前必须先启动sch设计好电路原理图pcb并设置参数。启动pcb的方法是:打开protel 99 se后,打开数据库文件系统在数据库中建立一个名为“documents”的文件夹。打开文件夹,用菜单命令file/new打开new documents的对话框,在对话框中选择建立pcb文件。启动pcb后要设置参数。包括格点的大小和类型、元件的布局参数、板层参数、布线参数等1) 定义板框。板框是规定实际电路板的大小,要按照实际情况来规定板框的大小2) 装入网络表,生成元件。网络表是原理图设计系统与印制板图设计系统的接口。在pcb

25、中装入网络表后才能生成元件3) 元件的布局。定义了板框并装入网络表生成元件后可由系统分布元件的位置,也可以手工分布元件的位置4)自动布线和手工布线,在布置完元件的位置后,可由系统自动布线,也可以用手工布线5) 填充。在布线后根据元件之间的距离及整个电路板的布局把连线加粗、填充(2)线路板设计流程1) 建立一个pcb板文件,取名为“pcb1”2) 在禁止布线层keepout lagety设置板框的大小。选择了禁止布线层后在主菜单栏中选择line画出板框.3) 画完板框后就执行菜单命令“design/load nets”打开装载网络表的对话框选择要装载的网络表并选择它,单击生成元件按钮。元件生成在

26、板框内4) 把生成的元件。按照合理的布局分布在板框内。元件放置完后单击bottom lager焊接层再击导线按钮,把板框内分布好的元件一一连接好5) 连接完线后,把那些空余的地方都填充,也把连接的导线加粗(3)线路板制作流程1)先用激光打印机将稳压电源的pcb图打印出来。注意打印的时候要用光滑的打印纸2)把打印出来的pcb图贴在附铜板上并用透明胶布固定,然后把附铜板放在过塑机里反复过塑。利用过塑机加热及压挤把打印纸上的pcb图贴在附铜板上3)用三氯化铁和水开出腐蚀铜的溶液。把印有pcb 图的附铜板放进溶液中,把铜腐蚀掉。,由于pcb图上有炭粉,可以不受腐蚀。所以在腐蚀完后铜板上只有pcb图上有

27、铜4)我们用沙纸把附铜板表面的炭粉抹去,露出铜面,然后马上涂一层松香水避免铜面氧化,然后根据pcb图在附铜板确定焊盘的位置。确定焊盘位置后,使用钻孔机把焊盘打穿,最后把元件都焊上 (4)线路板的装配与调试按装配图先把跳线焊接好,然后装配比较小、低的元器件,接着再装配较大、高的元器件,在装配时,要注意看有没有假焊、漏焊、短路等现象,这些现象要在通电之前一定要检查几遍,最后检查无误时才能通电,注意这时的通电不要装上单片机,要先检查单片机电源引脚的电压正常时才能通电(5)程序的编写与调试先对这个产品所要实现的功能构思,画出程序流程图,再用c语言把所要实现的功能编写出来,下载到单片机上,再对电路板调试,调试看哪里还没有达到要求再对程序进行修改,直到实现功能为止。九、毕业大作业的总结通过这次毕业大作业,使得我们对制作的整个流程都非常的了解,而且加强我们的动手能力,把平时在课堂上所学到的知识应用到实际上,在制作这个产品的过程中,有遇到种种困难,但经过自己的分析和向老师请教,顺利的排除困难,所以这次制作是成功的,我们按老师的要求把这个作品制作出来。这次制作、调试过程中,程序的编写和调试使得我们受益匪浅,程序的编写虽然我们还不是很熟练,但是我们把刚刚学完的c语言用到了产品中,使得我们对程序的编写有了很

温馨提示

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

评论

0/150

提交评论