设计范例一音乐铃声的数字日历钟的设计与制作Word格式文档下载.docx
《设计范例一音乐铃声的数字日历钟的设计与制作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《设计范例一音乐铃声的数字日历钟的设计与制作Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
图号
件数
额定工时
工时余
(缺)安排
备注
工人
学生
合计
课题实习结束小结
授课老师:
肖正光审阅签名:
新会高级技工学校
毕业设计论文
课题:
系部:
电子信息系
专业、班级:
电气自动化设备安装与维修
姓名:
XXX
指导教师:
完成时间:
2012.6.15
1.摘要………………………………………………………………………1
2.关键词……………………………………………………………………1
3.ATMAGA64概述……………………………………………………………1
4.功能描述……………………………………………………………………
5.硬件描述……………………………………………………………………
6.软件描述……………………………………………………………………
7.操作说明……………………………………………………………………
8.制作说明………………………………………………………………………………
9.毕业设计总结…………………………………………………………………………
一、摘要
这是一款带音乐铃声的数字日历钟,具有年、月、日、星期、时、分、秒等显示功能,同时还支持定点播放、整点播放及铃声选择功能的数字日历钟。
它具备外观精致、功能齐全、操作方便、结构简单、性价比高等特点,可制作成台历、挂历或者床头闹钟等。
二、关键词
ATmage64、数码管、通用键盘
三、ATMAGA64概述
(1)AVR单片机是ATMEL公司于1997年推出的一款基于RISC指令构架的高性能、低功耗的8位单片机。
Atmega系列更是高档的单片机,同时这次用到的ATmega64单片机更是性价比相当高一款单片机。
ATmega64是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega64的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
(2)ATMEGA64有如下特点:
64K字节的系统内可编程FLASH(具有同时读写的能力,即RWW),2K字节EEPROM,4K字节SRAM,53个通用I/O口线,32个通用工作寄存器,实时计数器(RTC),四个具有比较模式与PWM的灵活的定时器/计数器(T/C),两个USART,面向字节的两线串行接口,8路10位具有可选差分输入级可编程增益的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,与IEEE1149.1标准兼容的、可用于访问片上调试系统及编程的JTAG接口,以及六个可以通过软件进行选择的省电模式。
工作于空闲模式时CPU停止工作,而SRAM、T/C、SPI端口以及中断系统继续工作;
掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位一个时间基准,而其余功能模块处于休眠状态;
ADC噪声抑制模式时的开关噪声;
STANDBY模式下只有晶体或振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;
扩展STANDBY模式下则允许振荡器和异步定时器继续工作。
(3)ATMEGA64是以ATMEL高密度非易失性存储器技术生产的。
片内ISPFLASH允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。
引导程序可以使用任意接口将应用程序下载到应用FLASH储存区。
在更新应用FLASH储存区时引导FLASH区的程序继续运行,实现了RWW操作。
通过将8位RISCCPU与系统内可编程的FLASH集成在一个芯片内,ATMEGA64成为一个功能强大的单片机,为许嵌入式控制应用提供了灵活而低成本的解决方案。
(4)ATMEGA6具有一整套的编程与开发工具,包括;
C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。
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代表不开放整点报时功能,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是简谱音符编码定义头文件,包括定义简谱音符相对编码、中音相对编码、一阶高音相对编码、二阶高音相对编码、一阶低音相对编码等
㈡ AlarmClock.h是AVR综合实验系统之数字日历钟头文件,里面包括定义日期显示位置ID、定义时间显示位置ID、定义闹钟设置显示位置ID、定义整点报时设置显示位置ID、定义时间和日期更新函数的返回值、定义铃声输出端口B配置常数(PB6输出,其余为输入)、全局函数声明。
㈢ AVR_ICC_INT_TYPE.h是固定长度整数类型定义头文件,包括定义带符号定长整数类型和定义无符号定长整数类型。
㈣ LED_DISPLAY_KEYBOARD.h是AVR综合实验系统之LED数码管显示和键盘输入头文件,包括定义LED数码管段驱动端口、定义LED数码管公共阳极驱动位域选择常数、定义LED数码管公共阳极驱动位域清零常数、定义总显示位数、定义可视七段字形ASCII字符总数、定义闪烁时间常数(ms)、定义光标位置位域选择常数、定义特殊ASCII字符、定义键盘扫描线数、定义键盘返回线数等。
㈤ Message.h是AVR综合实验系统之消息定义头文件,里面包括定义消息队列常数、定义从16位整数中提取字节的宏、创建消息处理函数指针类型、创建消息结构类型、全局消息函数声明、消息处理函数MessageProc包含一个uint16_t类型的参数uMessage,该参数的内容由消息处、理函数定义,在一些消息中uMessage为16位的参数,在另一些消息中uMessage的高低字节、分裂为两个8位的参数使用。
该函数返回char类型的值,当给定的消息被成功处理或该消息、必须从队列中移除时,应返回TRUE(非零),而当给定的消息未被处理或该消息应继续保留、在队列中时,则应返回FALSE(0)。
㈥ NMN_SONG_PLAY.c是简谱歌曲编码与播放源程序,里面包括简谱编码歌曲播放设备打开函数、简谱编码歌曲播放设备关闭函数、音符播放参数设置函数、简谱编码歌曲合法性检查、简谱编码歌曲播放函数。
该函数先打开简谱编码歌曲播放设备,初始化播放控制变量并开始播放指定的歌曲、报警状态检查、缺省中断服务程序、定时器1输出比较通道A中断服务程序。
㈦ AlarmClock.c是AVR综合实验之数字日历钟源程序,里面包括更新时间显示函数、更新日期显示函数、日期显示初始化函数,日期显示格式YYYY.MM.DD、时间显示初始化函数,时间显示格式Whh.mm.ss、闹钟设置显示初始化函数,闹钟设置显示格式AE.hh.mm.tt、整点报时设置显示初始化函数,整点报时设置显示格式HEhhtt、显示初始化函数、读取显示缓冲区的日期设置值、读取显示缓冲区的时间设置值、读取显示缓冲区的闹钟设置、读取显示缓冲区的整点报时设置、保存日期设置、保存时间设置、保存闹钟设置、保存整点报时设置、保存数字日历钟设置、获取已保存的数字日历钟设置、由给定的月份查取当月的天数、AVR综合实验之数字日历钟主程序、连击编码表初始化函数、按键消息中继函数、日期编辑验证函数、整点报时设置编辑验证函数、编辑回调函数、系统计时事件中继函数。
㈧ LED_DISP_KEYBOARD.c是LED显示与键盘输入源文件,里面包括键盘接口初始化函数、编辑模式初始化函数、将光标向左移动一个字符位置、将光标向右移动一个字符位置、该函数先调用KeyMessageHook对击键消息进行预处理,若KeyMessageHook返回0值,则对光标位置上的内容执行编辑操作,然后再调用EditCallback对修改内容进行确认,若EditCallback返回0值,则将光标指针移动到下一个编辑位置。
扫描按键输入,对按键输入状态进行滤波,检测按键状态转换事件,每当检测到按键事件是就调用KeyMessageProc()予以处理。
按键连击扫描函数、LED数码管显示扫描函数、系统计时事件处理函数、缺省中断服务程序、定时器0输出比较中断服务程序、使用给定的字符填充显示缓冲区。
㈨ Message.c是AVR综合实验系统之消息处理函数源程序,里面包括SendMessage该函数先检查消息队列是否已满,当消息队列未满时,便将给定的消息投递到消息队列并返回TRUE(-1),否则直接返回FALSE(0)。
该函数可被任何程序调用。
GetMessage该函数先检查消息队列是否为空,当消息队列非空时,便从消息队列中读取一条消息存入pMessage指向的消息结构并返回TRUE(-1),否则直接返回FALSE(0)。
DispatchMessage该函数先检查pMessage->
MessageProc是否为空指针,若为空指针则直接返回-1,否则调用pMessage->
MessageProc处理pMessage指向的消息并返回消息处理函数的返回值。
㈩ NMN_SONG.c是简谱歌曲编码源程序,里面包括我们创建简谱编码歌曲表目录,和歌曲简码程序。
(4)部分主程序
#include<
iom64v.h>
macros.h>
#include"
AVR_ICC_INT_TYPE.h"
NMN_CODE.h"
//创建歌曲“新年好”
constcharXinNianHao[64]={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,0X02,R2,0X02,D1,0X20,
M0,0x00}。
//创建歌曲“月亮代表我心”
constcharYueLiangDaiBiaoWoDeXin[]={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,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,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,0X02,
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}。
//创建简谱编码歌曲表
constchar*constnmncSongTable[NUM_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,XinNianHao,XinNianHao,XinNianHao,XinNianHao,XinNianHao,XinNianHao,XinNianHao,XinNianHao,}。
/*------------------TheendofNMN_SONG.c---------------------------*/
七、操作说明
(1)第一次接上9V电源后,正常的显示情况。
如下:
【5000000】后面显示有运行或修改过
【2009.10.20】后面显示有运行或修改过
【AE.07.30.00】后面显示有运行或修改过
【Hd0000】
(2)星期、时、分|秒显示的修改
接上9V电源后,
数码管会显示【5000000】代表是星期五,00点00分00秒。
通过键盘上的→、←来移动屏幕上的数字,移动到的数字在闪烁,表示可进行修改。
例如,想设定今天星期三11点13分10秒,则通过通用按键→、←,则屏幕上5会闪烁,按下键盘上的3则可改为星期三,数字会自动跳到下一位,在按键盘上的数字,则可完成修改,下面的修改同理,最后要按enter键确认,否则刚才所作的修改无效。
(3)年、月、日显示修改
按下MODE键就会显示
,这个代表2009年12月20日。
如果想修改为2010年7月1日,则可以按下→、←移到需要修改的数字上按键盘上的数字(0→1),屏幕上就会显示你按下的数字,修改完成后,屏幕会自动跳到下一位,后面的修改同理,全部修改完成后,要按enter键确认,否则刚才所作的修改无效。
(4)定点的设定及铃声的选择(可当作闹钟使用)
继续按下MODE键就会显示
AE代表开放闹钟模式,Ad代表关闭闹钟模式。
07代表7时,30代表30分,00代表第一首铃声。
例如想允许19点00分报警,播放第2首铃声,首先,把Ad→AE,数字的修改操作如上所说。
(5)整点报时及铃声的选择(可当作闹钟使用)
再继续按下按下MODE键就会显示
,Hd代表不开放整点报时功能,HE代表开放整点报时功能,00代表是00时整点报时,后面的00代表报时时播放第一首铃声。
假如我们想设定21点报时,铃声选择3首铃声,首先,把Hd→HE,数字的修改操作如上所说。
八、制作说明
(1)原理图设计流程
根据设计要求,绘制出原理图,对电路图分析和论证后,用Protel99SE绘制出原理图。
① 绘制PCB板之前必须先启动SCH设计好电路原理图
② PCB并设置参数。
启动PCB的方法是:
打开Protel99SE后,打
开数据库文件系统在数据库中建立一个名为“Documents”的文件夹。
打开文件夹,用菜单命令File/New打开NewDocuments的对话框,在对话框中选择建立PCB文件。
启动PCB后要设置参数。
包括格点的大小和类型、元件的布局参数、板层参数、布线参数等
1)定义板框。
板框是规定实际电路板的大小,要按照实际情况来规定板框的大小
2)装入网络表,生成元件。
网络表是原理图设计系统与印制板图设计系统的接口。
在PCB中装入网络表后才能生成元件
3)元件的布局。
定义了板框并装入网络表生成元件后可由系统分布元
件的位置,也可以手工分布元件的位置
4)自动布线和手工布线,在布置完元件的位置后,可由系统自动布线,也可以用手工布线
5)填充。
在布线后根据元件之间的距离及整个电路板的布局把连线加粗、填充
(2)线路板设计流程
1)建立一个PCB板文件,取名为“PCB1”
2)在禁止布线层KeepOutLagety设置板框的大小。
选择了禁止布线层后在主菜单栏中选择Line画出板框.
3)画完板框后就执行菜单命令“Design/LoadNets”打开装载网络表的对话框选择要装载的网络表并选择它,单击生成元件按钮。
元件生成在板框内
4)把生成的元件。
按照合理的布局分布在板框内。
元件放置完后单击BottomLager焊接层再击导线按钮,把板框内分布好的元件一一连接好
5)连接完线后,把那些空余的地方都填充,也把连接的导线加粗
(3)线路板制作流程
1)先用激光打印机将稳压电源的PCB图打印出来。
注意打印的时候要用光滑的打印纸
2)把打印出来的PCB图贴在附铜板上并用透明胶布固定,然后把附铜板放在过塑机里反复过塑。
利用过塑机加热及压挤把打印纸上的PCB图贴在附铜板上
3)用三氯化铁和水开出腐蚀铜的溶液。
把印有PCB图的附铜板放进溶液中,把铜腐蚀掉。
,由于PCB图上有炭粉,可以不受腐蚀。
所以在腐蚀完后铜板上只有PCB图上有铜
4)我们用沙纸把附铜板表面的炭粉抹去,露出铜面,然后马上涂一层松香水避免铜面氧化,然后根据PCB图在附铜板确定焊盘的位置。
确定焊盘位置后,使用钻孔机把焊盘打穿,最后把元件都焊上
(4)线路板的装配与调试
按装配图先把跳线焊接好,然后装配比较小、低的元器件,接着再装配较大、高的元器件,在装配时,要注意看有没有假焊、漏焊、短路等现象,这些现象要在通电之前一定要检查几遍,最后检查无误时才能通电,注意这时的通电不要装上单片机,要先检查单片机电源引脚的电压正常时才能通电
(5)程序的编写与调试
先对这个产品所要实现的功能构思,画出程序流程图,再用C语言把所要实现的功能编写出来,下载到单片机上,再对电路板调试,调试看哪里还没有达到要求再对程序进行修改,直到实现功能为止。
九、毕业大作业的总结
通过这次毕业大作业,使得我们对制作的整个流程都非常的了解,而且加强我们的动手能力,把平时在课堂上所学到的知识应用到实际上,在制作这个产品的过程中,有遇到种种困难,但经过自己的分析和向老师请教,顺利的排除困难,所以这次制作是成功的,我们按老师的要求把这个作品制作出来。
这次制作、调试过程中,程序的编写和调试使得我们受益匪浅,程序的编写虽然我们还不是很熟练,但是我们把刚刚学完的C语言用到了产品中,使得我们对程序的编写有了很大的帮助,不但可以巩固我们所学的知识,而且锻炼了我们编写程序的能力。
带音乐铃声的数字日历钟的设计与制作方面已告一段落了,但制作的这个大作业的热情与干劲还在,在这三年里,我很庆幸能有高水平老师(贺老师、罗老师)的指导,从他们身上学到很多东西。
数字日历钟器材料清单:
序号
材料名称
规格型号
数量
1
CPU
ATMEGA64-16AU
集成电路
LM358
MAX232-16N
74HC138N
74LCX07
3
集成稳压电路
7805
4
集成电路插座
DIP8
DIP16
5
三极管
S8550
9
S8050
场效应管
2N7000
8
6
发射二极管
IR908-7C
接收二极管
CHQ0038
7
电阻
1/4W,510Ω
1/4W,4K7
1/4W,150Ω
1/4W,10K
1/4W,2K
1/4W,10/0.5W
1/4W,30K
排阻
4K7
可调电阻