语音闹钟及定时器(完整版附图)

上传人:博****1 文档编号:552796816 上传时间:2023-11-19 格式:DOC 页数:29 大小:6.25MB
返回 下载 相关 举报
语音闹钟及定时器(完整版附图)_第1页
第1页 / 共29页
语音闹钟及定时器(完整版附图)_第2页
第2页 / 共29页
语音闹钟及定时器(完整版附图)_第3页
第3页 / 共29页
语音闹钟及定时器(完整版附图)_第4页
第4页 / 共29页
语音闹钟及定时器(完整版附图)_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《语音闹钟及定时器(完整版附图)》由会员分享,可在线阅读,更多相关《语音闹钟及定时器(完整版附图)(29页珍藏版)》请在金锄头文库上搜索。

1、课程设计实习报告 课程名称:语音闹钟及定时器 组员:* * 学号: * 专业班级:* 指导老师:* 学院:信息科学与技术学院 完成时间:2011年7月30日一、课程设计题目要求1、 自己焊接凌阳十六位单片机实验板;2、 利用实验板完成以下电路设计;3、 外围电路实现以下功能: a、定时器功能:(1)、能设置定时时间并语音播报;(2)、外扩电路显示定时时间。 b、语音闹钟:在原有万年历程序基础上,修改程序使之具有如下功能:开机时间为当前日期和时间;设置闹钟时间;语音或音乐闹铃。二、设计方案与论证2.1系统原理框图 本课题是基于凌阳十六位单片机的语音闹钟定时器的开发,由于之前我们组员都未曾接触过单

2、片机知识,我们首先通过查阅凌阳单片机的相关资料学习单片机相关知识。由于凌阳十六位单片机自带了语音录放功能,这在很大程度上减小了我们的课题难度,我们首先考虑到实现闹钟定时器功能分两个部分,即软件部分和硬件部分,通过编程可以实现对单片机外围接口的定义,将想要传送的内容(包括语音部分和显示部分)传输出去,而外围电路的设计包括语音部分、显示部分以及输入部分(键盘);由于要求只显示年月日时分秒,我们采用数码管即可实现显示功能。此外我们还要做的就是语音采集及时间显示和闹钟的切换。系统设计框图如下 图2.1.1、系统设计框图 SPCE061A最小系统框图:图2.1.22.2主要电路设计与参数计算 61板硬件

3、框图如图所示:图2.2.1、 61硬件板框图框图说明:表2.2.2、框图说明61板接口说明图:图2.2.3、61板接口说明2.2.1基本参数1、 工作电压:4.5V(三节干电池);2、 时间采用24小时制;3、 采用六位数码管动态显示年月日/时分秒。2.2.2所需元件及元件参数1、 凌阳十六位单片机组套;2、 三节1.5V干电池;3、 一片SR420561K四位数码管和两片SM420501K一位数码管;4、 20位插排、数据传输线、一些导线和焊锡。2.2.3注意事项1、 将61板上的J5跳线选择3.3V;2、 在安装电池时注意正负极,否则容易烧坏芯片;3、 在印制电路板上的焊接元器件前要认真对

4、照原理图,仔细查看印制电路板,找到对应的元器件功能区;4、 在电源测试期间请勿将单片机芯片插入座中,以免电源部分有问题造成芯片烧坏。5、 连接外接电路时一定要注意端口对应关系,以免连接错误不能正常显示;6、 在焊接外围电路时,要仔细认真,以免造成个别焊点焊接不良。2.3输入/输出(I/O)接口61板将SPCE061A的IOB端口引出,IOB的所有端口均设置为输出端口,IOA的低八位端口设置为输入端口,其中IOA端口的IOA0IOA2为默认的Key1、Key2、Key3按键接口,IOB端口的IOB7IOB2设置为数码管的位选端口,高八位IOB15IOB8设置为数码管的段选接口。三、 调试步骤3.

5、1 软件部分3.1.1时间显示函数题目要求我们在原有的万年历的基础上更改程序使之满足闹钟定时器功能,而原有万年历程序部分并未给出外围显示部分,因此我们小组在此基础上添加了时钟时间显示函数display(),程序如下:/=/ 文件名称:Clock_Display.c/ 功能描述:调整日期和时间的函数集/=#includespce061a.h#include Key.hstatic int LED110 = 0xfcfb,0x60fb,0xdafb,0xf2fb,0x66fb,0xb6fb,0xbefb,0xe0fb,0xfefb,0xf6fb;static int LED210 = 0xfcf7

6、,0x60f7,0xdaf7,0xf2f7,0x66f7,0xb6f7,0xbef7,0xe0f7,0xfef7,0xf6f7;static int LED310 = 0xfdef,0x61ef,0xdbef,0xf3ef,0x67ef,0xb7ef,0xbfef,0xe1ef,0xffef,0xf7ef;static int LED410 = 0xfcdf,0x60df,0xdadf,0xf27f,0x66df,0xb6df,0xbedf,0xe07f,0xfedf,0xf6df;static int LED510 = 0xfdbf,0x61bf,0xdbbf,0xf3bf,0x67bf,0

7、xb7bf,0xbfbf,0xe1bf,0xffbf,0xf7bf;static int LED610 = 0xfc7f,0x607f,0xda7f,0xf27f,0x667f,0xb67f,0xbe7f,0xe07f,0xfe7f,0xf67f; /IOB口的高八位接段选,低六位接位选 /共阴接法0123456789的代码void display(unsigned Hour,unsigned Min,unsigned Sec) int i; unsigned int Fir_hour; unsigned int Sec_hour; unsigned int Fir_min; unsigned

8、 int Sec_min; unsigned int Fir_sec; unsigned int Sec_sec; Fir_hour=Hour/10;/时钟十位要显示的数字 Sec_hour=Hour%10;/时钟个位要显示的数字 Fir_min=Min/10; /分钟十位要显示的数字 Sec_min=Min%10; /分钟个位要显示的数字 Fir_sec=Sec/10; /秒钟十位要显示的数字 Sec_sec=Sec%10; /秒钟个位要显示的数字 *P_IOB_Attrib = 0xffff; /初始化IOB0IOB15带数据缓存的高电平输出口 *P_IOB_Dir = 0xffff; *

9、P_IOB_Data = 0xffff; *P_IOB_Data = LED1Sec_sec; *P_Watchdog_Clear = 0x0001; for(i=0;i0x00ef;i+) /延时 *P_Watchdog_Clear = 0x0001; *P_IOB_Data = LED2Fir_sec; *P_Watchdog_Clear = 0x0001; for(i=0;i0x00ef;i+) /延时 *P_Watchdog_Clear = 0x0001; *P_IOB_Data = LED3Sec_min; *P_Watchdog_Clear = 0x0001; for(i=0;i0

10、x00ef;i+) /延时 *P_Watchdog_Clear = 0x0001; *P_IOB_Data = LED4Fir_min; *P_Watchdog_Clear = 0x0001; for(i=0;i0x00ef;i+) /延时 *P_Watchdog_Clear = 0x0001; *P_IOB_Data = LED5Sec_hour; *P_Watchdog_Clear = 0x0001; for(i=0;i0x00ef;i+) /延时 *P_Watchdog_Clear = 0x0001; *P_IOB_Data = LED6Fir_hour; *P_Watchdog_Cle

11、ar = 0x0001; for(i=0;i0x0011;i+) /延时 *P_Watchdog_Clear = 0x0001; 3.1.1日期显示函数但是题目要求我们还要显示日期,这样既要求显示日期又要求显示时间,如果我们选择12个数码管当然理论上是可以实现的,但是一方面这样太浪费资源,另一方面在引脚控制上也过于繁琐(要至少有12个位选端口8个段选端口共20个端口),因此我们考虑添加日期显示函数displaydata(),具体程序如下:void displaydata(unsigned Year,unsigned Mon,unsigned Day) int i; unsigned int F

12、ir_year; unsigned int Sec_year; unsigned int Fir_mon; unsigned int Sec_mon; unsigned int Fir_day; unsigned int Sec_day; Fir_year=Year/10%10;/年十位要显示的数字 Sec_year=Year%10;/年个位要显示的数字 Fir_mon=Mon/10; /月十位要显示的数字 Sec_mon=Mon%10; /月个位要显示的数字 Fir_day=Day/10; /日十位要显示的数字 Sec_day=Day%10; /日个位要显示的数字 *P_IOB_Attrib = 0xffff; /初始化IOB0IOB15带数据缓存的高电平输出口 *P_IOB_Dir = 0xffff; *P_IOB_Data = 0xffff; *P_IOB_Data = LED1Sec_day; *P_Watchdog_Clear = 0x0001; for(i=0;i0x00ef;i+) /延时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业合同/协议

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号