已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的语音报时系统基于单片机的语音报时系统 中文摘要中文摘要 本文主要介绍了利用凌阳科技公司的 SPCE061A 单片机作为主控制器设计的语音报时系统方 案 结合 SPCE061A 强大的语音功能 语音报时 播报日期的功能 这是一种用新型凌阳单片机 来实现的 SPCE061A 单片机作为控制器制作的语音报时系统 该方案充分利用单片机强大的编程 语音处理 以及中断 并且操作简单 易于修改 是理想的数字控制系统 本文首先简介凌阳单片机的发展 紧接着详细描述了凌阳单片机 SPCE061A 的组成原理及其 功能 根据它的组成原理及其指令系统 设计了语音报时系统的软件部分 包括主程序 语音 播放程序 此类单片机特别是在数字处理及语音处理方面有着明显的优越性 所以本次设计中 采用凌阳 SPCE061A 单片机 它能够使所设计的产品更具智能化和先进性 关键词 关键词 电子钟 电子钟 SPCE061ASPCE061A 语音 语音 SCM Production Using digital clock ABSTRACT This paper describes the use of Sunplus Technology Inc SPCE061A SCM as the main controller of digital electronic bell programme Sunplus SPLC501A use of LCD module with SPCE061A powerful voice and realized the Gregorian calendar Lunar New Year stopwatch alarm clock and voice broadcast the broadcast date and other functions This is a New Sunplus microcontroller to achieve the SPCE061A SCM as a controller and LCD module SPLC501A a digital clock The programme full use of a powerful microcontroller programming voice processing and multi function interrupt input output and simple easy to modify is the ideal digital control system This paper first brief Sunplus the development of SCM followed by a detailed description of the composition of Sunplus SCM SPCE061A principle and function According to its composition and its command system theory and design of digital electronic clock control system software including the main program display voice player SCM especially in such digital processing and voice processing there are distinct advantages so this design in the use of Sunplus SPCE061A SCM it can make the products more intelligent design and advanced KEYKEY WORD WORD clockclock SPCE061ASPCE061A PRONUNCIATIONPRONUNCIATION TIMETIME WATCHWATCH 目 录 第一章 前言 1 1 1 系统功能 2 1 2 基本参数 2 1 3 注意事项 2 第二章 模块特性简介 3 2 1 SPCE061A 单片机 3 2 1 1 SPCE061A 简介 3 2 1 2 芯片特性 4 2 2 SPCE061A 精简开发板 5 2 3 SPLC501A 液晶模组 6 2 4 语音的设计及工作原理 7 2 5 系统总体方案介绍 8 第三章 系统硬件设计 11 3 1 SPCE061A 最小系统 11 3 2 电源模块 11 3 3 音频输出模块 12 3 4 液晶显示模块 13 3 4 1 显示 RAM 区映射情况 13 3 4 2 SPLC501 驱动控制器芯片 15 第四章 系统软件设计 17 4 1 软件的结构 17 4 2 各模块程序的说明 18 4 2 1 概述 18 4 2 2 主程序 18 4 2 3 中断服务程序 19 4 2 4 时间日期模块 21 4 2 5 SPLC501 液晶显示模组显示汉字 22 4 2 6 常用功能函数介绍 用户API 24 第五章 操作步骤 28 5 1 软件的操作步骤 28 5 1 1 LCD 汉字显示操作步骤 28 5 1 2 程序烧入硬件操作步骤 31 5 1 3 语音播放操作步骤 33 5 2 操作界面 34 第六章 结论 37 参考文献 38 致 谢 39 附录一 软件编写程序 40 附录二 主要元器件清单 48 1 第一章第一章 前言前言 20世纪末 电子技术获得了飞速的发展 在其推动下 现代电子产品几乎渗透了社会的各 个领域 有力地推动了社会生产力的发展和社会信息化程度的提高 同时也使现代电子产品性 能进一步提高 产品更新换代的节奏也越来越快 时间对人们来说总是那么宝贵 工作的忙碌性和繁杂性容易使人忘记当前的时间 忘记了 要做的事情 当事情不是很重要的时候 这种遗忘无伤大雅 但是 一旦重要事情 一时的耽 误可能酿成大祸 目前 单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化 低功耗 小 体积 大容量 高性能 低价格和外围电路内装化等几个方面发展 下面是单片机的主要发展 趋势 单片机应用的重要意义还在于 它从根本上改变了传统的控制系统设计思想和设计方法 从前必须由模拟电路或数字电路实现的大部分功能 现在已能用单片机通过软件方法来实现了 这种软件代替硬件的控制技术也称为微控制技术 是传统控制技术的一次革命 单片机模块中最常见的是数字钟 数字钟是一种用数字电路技术实现时 分 秒计时的装 置 与机械式时钟相比具有更高的准确性和直观性 且无机械装置 具有更长的使用寿命 因 此得到了广泛的使用 数字钟是采用数字电路实现对时 分 秒 数字显示的计时装置 广泛用于个人家庭 车站 码头办公室等公共场所 成为人们日常生活中不可少的必需品 由于数字集成电路的发展和石英晶 体振荡器的广泛应用 使得数字钟的精度 远远超过老式钟表 钟表的数字化给人们生产生活带来 了极大的方便 而且大大地扩展了钟表原先的报时功能 诸如定时自动报警 按时自动打铃 时间程序自动控制 定时广播芯片自动起闭路灯 定时开关烘箱 通断动力设备 甚至各种定 时电气的自动启用等 所有这些 都是以数字电子钟具有走时准确 一钟多用等特点 在生活中 已经得到了广泛的应用 随着科技的发展 人们对电子产品的应用要求越来越高 数字电子钟 不但可以显示当前的时间 而且可以显示日期 农历 以及星期等 给人们的生活带来了方便 另外数字钟还具备秒表和闹钟功能 且闹钟铃声可自选 使一款电子钟具备了多媒体的色彩 本方案利用凌阳16位单片机SPCE061A作为主控芯片 充分利用SPCE061A精简开发板 简 称61板 上面的三个按键 完成一个简易的数字系统 数字电子钟 该数字钟可以将当前的日期和时间播报出来 以及调时功能 具有较强的可扩展性 满足 了不同人的需要 该方案的主要功能是能通过SPCE061A的音频通道播报当前的日期和时间 61板上面的三 2 个按键可以控制实现所有的功能 在播报日期和时间状态下按Key1播报年 月 日 再按一下 播报时 分长按Key1键达到1 5秒 则进入日期时间调整模式 Key2 在调整模式下 使年 月 日 时 分 秒增加 Key3 在调整模式下 使年 月 日 时 分 秒减小 1 11 1 系统功能系统功能 本系统利用凌阳科技公司的SPCE061A单片机作为控制器 系统具有以下功能 1 可以语音播报日期和时间 2 具有调整日期和时间功能 1 21 2 基本参数基本参数 1 工作电压 4 5V 3节干电池 2 日期显示范围 2001 2100年 3 时间采用24小时制 1 31 3 注意事项注意事项 1 请将61板上的J5跳线选择3 3V 2 在安装电池时注意正负极 否则容易烧坏芯片 3 在印制电路板上的焊接元器件前要认真对照原理图 仔细查看印制电路板 找到对应的 元器件功能区 4 在电源测试期间请勿将单片机芯片插入座中 以免电源部分有问题造成芯片烧坏 第二章第二章 模块特性简介模块特性简介 该数字钟系统主要由SPCE061A精简开发板 简称61板 构成 系统通过61板上的三个按键 控制扬声器播放语音 所以这里主要介绍SPCE061A精简开发板 3 2 12 1 SPCE061ASPCE061A 单片机单片机 2 1 1 SPCE061A 简介 SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机 具有易学易用且效率较 高的一套指令系统和集成开发环境 在此环境中 支持标准C语言 可以实现C语言与汇编语言 的互相调用 并且 提供了语音录放和语音识别的函数库 只要了解库函数的使用方法 就可 以很容易完成语音录放 为软件开发提供了方便的条件 SPCE061A主要包括输入 输出端口 定时器 计数器 数 模转换 模 数转换 串行设备输 入 输出 通用异步串行接口 低电压监测和复位等电路 并且内置在线仿真电路ICE接口 使 其能够快速地处理复杂的数字信号 SPCE061A片内还集成了一个ICE 在线仿真电路 接口 使得对该芯片的编程 仿真变得非 常方便 而ICE接口不占用芯片上的硬件资源 结合凌阳科技提供的集成开发环境 unSP IDE 用户可以进行在线调试 仿真 而程序的下载 烧写 也是通过该接口完成 图 1 SPCE061A内部结构图 4 2 1 2 芯片特性 16位 nSP微处理器 工作电压 内核工作电压VDD为3 0 3 6V CPU I O口工作电压VDDH为VDD 5 5V I O CPU时钟 0 32MHz 49 152MHz 内置2K字SRAM 内置32K闪存ROM 可编程音频处理 晶体振荡器 系统处于备用状态下 时钟处于停止状态 2个16位可编程定时器 计数器 可自动预置初始计数值 2个10位DAC 数 模转换 输出通道 32位通用可编程输入 输出端口 14个中断源可来自定时器A B 时基 2个外部时钟源输入 键唤醒 具备触键唤醒的功能 使用凌阳音频编码SACM S240方式 2 4K位 秒 能容纳210秒的语音数据 锁相环PLL振荡器提供系统时钟信号 32768Hz实时时钟 7通道10位电压模 数转换器 ADC 和单通道声音模 数转换器 声音模 数转换器输入通道内置麦克风放大器和自动增益控制 AGC 功能 具备串行设备接口 低电压复位 LVR 功和低电压监测 LVD 功能 内置在线仿真板 ICE In Circuit Emulator 5 2 22 2 SPCE061ASPCE061A 精简开发板精简开发板 SPCE061A精简开发板 简称61板 是以凌阳16位单片机SPCE061A为核心的精简开发 仿 真 实验板 大小相当于一张扑克牌 是 凌阳科技大学计划 专为大学生 电子爱好者等进 行电子实习 课程设计 毕业设计 电子制作及电子竞赛所设计的 也可作为单片机项目初期 研发使用 61板除了具备单片机最小系统电路外 还包括有电源电路 音频电路 含Mic输入部 分和DAC音频输出部分 复位电路等 采用电池供电 方便学生随身携带 使学生在掌握软件 的同时 熟悉单片机硬件的设计制作 锻炼学生的动手能力 也为单片机学习者和开发者创造 了一个良好的学习条件和开发新产品的机会 61板上有调试器接口 Probe接口 以及下载线 EZ Probe 接口 分别可接凌阳科技的在线调试器 简易下载线 配合unSP IDE 可方便地 在板上实现程序的下载 在线仿真调试 61板上的主要功能模块如下 1 SPCE061A单片机最小系统外围电路模块 2 电源输入模块 3 音频电路 包含Mic输入 DAC音频功放输出 模块 4 按键模块 5 I O端口接口模块 6 调试 下载接口模块 图2为61板的实物图 6 图 2 61板实物图 2 32 3 语音的设计及工作原理语音的设计及工作原理 本次设计的要求为整个系统在运行时能够根据要求及时的发出声音 以增加效果 为了配 合设计要求 设计了语音模块 语音是SPCE061A的一大特点 应用SPCE061A可以方便的实现语 音的录放 该芯片拥有8路10位精度的AD 其中1路AD为音频转化通道 并且内置自动增益电 路 这为语音的录入提供方便的硬件条件 2路10位精度的DA 只需外接1个功放即可完成语音 播放 一般都是用C语言作为主程序 用汇编语言编制各种模块 供主程序调用 凌阳音频格 式常用的有3种 将压缩前的数据量比上压缩后的数据量即可以得到凌阳不同音频格式压缩比 SACM A2000 压缩比为8 1 8 1 25 8 1 5 SACM S480 压缩比为80 3 80 4 5 SACM S240 压缩比为80 1 5 压缩比越大 存储空间越小 更加节省资源 2 52 5 系统总体方案介绍系统总体方案介绍 电子钟的系统结构如图3 图4为电子钟功能结构图 61板作为整个系统的控制中心 负责 控制键盘扫描 年 月 日 星期以及时间的计算 并根据按键值播报当前的日期或者时间 在声音的处理上主要采用凌阳科技的语音压缩格式 将需要播放的声音压缩存在SPR模组里面 7 然后通过61板将语音资源取出播放出来 本系统采用了语音的录入和输出播放 图 3 系统结构框图 图 4 功能结构图 8 用61板控制数字钟系统 使用了IOA口的IOA0 IOA2位连接SPCE061A上的三个按键 另 外使用了61板的语音输出模块 以及61板上的三个按键 电路连接如图5 第三章第三章 系统硬件设计系统硬件设计 3 13 1 SPCE061ASPCE061A 最小系统最小系统 SPCE061A最小系统包括SPCE061A芯片及其外围的基本模块 其中外围的基本模块有 晶 振输入模块 OSC 锁相环外围电路 PLL 复位电路 RESET 指示灯 LED 等 如图7所示 图 5 SPCE061A最小系统 9 3 23 2 电源模块电源模块 SPCE061A 板采用 3 节 5 号电池进行供电 由 J10 接入 其中前后两组电容用来去耦滤波 使其供给芯片的电源更加干净平滑 为了获得标准的 3 3 伏电压 在电路上加入 SPY0029 三端稳 压器和两个二极管 是为了防止误将电源接反造成不必要损失而设置的 在操作过程中千万不要 将电源接反 因为反向电压超过一定值 二极管将会被损坏 达不到保护的目的 后面的零电 阻及其电源分成不同的几路是为了减少电磁干扰设置的 图 6 是电源部分的电路 4 5V 直流电 压经过 SPY0029 后产生 3 3V 给整个系统供电 SPY0029 是凌阳公司设计的电压调整 IC 采 用 CMOS 工艺 SPY0029 具有静态电流低 驱动能力强 线性调整出色等特点 4 2 图中的 VDDH3 为 SPCE061A 的 I O 电平参考 接 SPCE061A 的 51 脚 这种接法使得 I O 输出高电平 为 3 3V VDDP 为 PLL 锁相环电源 接 SPCE061A 的 7 脚 VDD 和 VDDA 分别为数字电源与 模拟电源 分别接 SPCE061A 的 15 脚和 36 脚 AVSS1 是模拟地 接 SPCE061A 的 24 脚 VSS 是数字地 接 SPCE061A 的 38 脚 AVSS2 接音频输出电路的 AVSS2 61板电源模块电路如图8 SPCE061A的内核供电为3 3V 而I O端口可接3 3V 5V 所以在 电源模块 61板上 中有一个端口电平选择跳线 如图中的J5 本系统需要的端口高电平为 3 3V 所以图8中的J5跳线需要跳到2和3上 图 6 电源模块 3 33 3 音频输出模块音频输出模块 音频输出 D A 部分的原理图如图7所示 可以直接听喇叭输出的声音 图中的SPY0030 也是凌阳公司的产品 它的详细说明可以参见SPY0030 data sheet 和LM386相比 SPY0030还 10 具有下述优势 比如LM386工作电压需在4V以上 SPY0030仅需2 4V即可工作 两颗电池即可工 作 LM386输出功率100mW以下 SPY0030约700mW 芯片将声音处理后输出 J2 经 SPY0030音频放大输出 J3 通过扬声器还原为声音 SPY0030A是凌阳公司开发的专门用于语 音放大的芯片 SPY0030的输入电压的范围是2 4 6 0伏 该电路中采用的电压是3 3伏 SPCE061A内置2路10位DAC 只需要外接功放电路即可完成语音的播放 图 7 音频输出电路图 第四章第四章 系统软件设计系统软件设计 4 14 1 软件的结构软件的结构 下图中可以看出各文件之间的调用关系 11 图 8 软件结构 数字钟主要还是软件实现的 数字钟的软件设计由以下程序构成 1 main c 实现系统的初始化 键盘扫描和语音播报 2 system c 包含工程中大部分的功能函数 包括时间和日期的调整等 3 key c 键盘扫描文件 文件中定义了键盘扫描函数 延时函数 用来实现对键盘的扫描 等功能 键盘扫描采用查询方式 4 isr asm 中断服务函数文件 实现语音解码以及时间 日期的修改 5 speak c 语音播报函数 实现语音播报日期 时间 4 24 2 各模块程序的说明各模块程序的说明 4 2 1 概述 由于凌阳 SPCEA061A 使得外围电路变的更简单 制作好系统的硬件电路后 整个系统 的主体任务主要落在了程序的编写上 SPCE061A 是凌阳科技研发生产的性价比很高的一款十 六位单片机 具有易学易用且效率较高的一套指令系统和集成开发环境 在此环境中 支持标 准 C 语言 可以实现 C 语言与汇编语言的互相调用 并且 提供了语音录放和语音识别的函数 库 只要了解库函数的使用方法 就可以很容易完成语音录放 为软件开发提供了方便的条件 此次系统采用了模块程序结构 模块程序结构包括了初始化 系统主程序模块 语音播放模块 显示模块 C 语言属于高级语言 有着汇编语言无法比拟的优点 而 SPCE061A 开发系统抓住 了这个关键 两者结合 充分发挥各自的优势 在用到语音的时候 一般都是用 C 语言作为主 程序 用汇编语言编制各种模块 供主程序调用 本系统采用了这种编制方法使得相互调用非 常简单 4 2 2 主程序 主程序流程如图9所示 在主程序中初始化了整个工程中用到的变量 初始化了液晶显 示 模块 开2Hz中断实现计时 在主程序中调用了键盘扫描程序 对IOA口的低三位进行扫描 如 果有键按下 就把相应的键值存入到一个变量中 通过主程序来判断是哪个键按下 并执行相 应的功能 按Key1播报年 月 日 再按一下播报时 分长按Key1键达到1 5秒 则进入日期 时间调整模式 Key2 在调整模式下 使年 月 日 时 分 秒增加 Key3 在调整模式下 使年 月 日 时 分 秒减小 12 图 9 主程序流程图 4 2 3 中断服务程序 中断服务程序有三个 一个是2Hz中断服务程序 用来计时 一个是1KHz中断服务程序 用于秒表计时 另外一个是FIQ中断服务程序 用来播放语音 程序的流程分别如图10 图 11 图12 13 图 10 IRQ5时基中断流程图 另外一个是FIQ中断服务程序 用来播放语音 图 11 IRQ4时基中断流程图 14 图 12 FIQ中断程序 4 2 4 时间日期模块 时间日期程序模块的流程图如图13所示 该模块用到了2Hz的时基中断 用来实现计时 同 时实现了日期的更新 15 图 13 时间日期模块流程图 16 第五章第五章 操作步骤操作步骤 5 15 1 软件的操作步骤软件的操作步骤 5 1 1 程序烧入硬件操作步骤 步骤一 根据图5数字钟连接示意图连接硬件 并连接好下载线 步骤二 打开电池盒电源 步骤三 启动u nSP IDE 打开数字钟应用实例程序 路径 数字电子钟礼包 参考源代码 monthdayclock monthdayclock sp 编译 链接确认没有错误 如图14所示 图 14 打开数字钟应用实例程序 步骤四 下载程序代码到61板上 17 步骤五 下载成功后会有几秒钟的开机画面 随后会进入时间日期显示界面 初始时间设 定为 00 00 00 日期为2006年8月1日 按Key1播报年 月 日 再按一下播报时 分长按Key1键达到1 5秒 则进入日期时间调 整模式 Key2 在调整模式下 使年 月 日 时 分 秒增加 Key3 在调整模式下 使年 月 日 时 分 秒减小 具体操作流程图如图15 图 15 具体操作流程图 18 第六章第六章 结论结论 SPCE061A芯片强大的语音处理功能 为本系统的设计提供了便利条件 32个可编程I O口 使得扩展外围设备非常方便 CPU可工作在0 32MHz 49MHz的主频范围 并且拥有丰富的中断 源 使得系统在语音播放 数据显示等方面游刃有余 扩展性强 根据硬件的选择和电路的搭 配进行了软件的设计和编程 在实现硬件功能时 我们曾遇到一些问题 在参阅了许多资料结合 实际条件选择了一种全面和简单的数字钟系统 其次在焊接中和元器件的购买都是在胡老师的指 导下购买的 在这次毕业设计中锻炼了我的分析能力 解决问题和动手能力 显然 这是一个比较简单的数字钟 在这个基础上 稍微改动 或者扩展其他模块可以设 计出一个更加完善的数字钟系统 比如 扩展外部存储器可以增加铃声的数目 可以改变铃声 的播放格式使铃声更加动听 增加掉电保护功能等等 以此来提高同学们的对单片机的兴趣 本次设计中 我从基础做起 做好每一个程序模块 在最后的硬件调试中 取得成功 实现了数字钟 的基本功能 达到了我们预期的设计目的 系统实物照片如图16 图 16 系统实物照片 19 参考文献参考文献 1 李全利 迟荣强 单片机原理及接口技术 M 北京 高等教育出版社 2004 1 2 黄智伟 全国大学生电子设计竞赛系统设计 M 北京 北京航空航天大学出版社 2006 6 3 黄智伟 凌阳单片机课程设计指导 M 北京 北京航空航天大学出版社 2006 11 4 李广弟 朱月秀 王秀山 单片机基础 M 北京 北京航空航天大学出版社 2001 7 5 赵曙光 郭万有 杨颂华 可编程逻辑器件原理开发与应用 M 西安 西安电子科技大学 2000 6 候伯亨 VHDL 硬件描述语言与数字逻辑电路设计 M 西安 西安电子科技大学出版社 1999 7 康华光 模拟电子技术基础 第四版 M 武汉 华中理工大学出版社 1999 8 谭浩强 C语言程序设计 第二版 M 北京 清华大学出版社 1991 9 陈小忠 黄宁 单片机接口技术实用子程序 M 北京 北京人民邮电出版社 2005 10 欧伟明 周春临 瞿遂春 电子信息系统设计 M 西安电子科技大学出版社 2005 9 11 贾立新 王涌 电子系统设计与实践 M 北京 清华大学出版社 2007 12 罗亚非 凌阳16位单片机应用基础 M 北京 北京航空航天大学出版社 2003 13 SPLC501A液晶显示模块产品说明书 Z 凌阳大学计划网站 14 雷思孝 凌阳单片机原理及实用技术 M 西安电子科技大学 2004 20 附录一附录一 软件编写程序软件编写程序 主程序 工程名称 61 SpeechClock 功能描述 61 板程序示例 具有语音播报功能的电子钟 使用 61 板上的三个按键控制报时和时间调整 Key1 按一下播报年 月 日 再按一下播报时 分 长按 Key1 键达到 1 5 秒 则进入日期时间调整模式 Key2 在调整模式下 使年 月 日 时 分 秒增加 Key3 在调整模式下 使年 月 日 时 分 秒减小 涉及的库 CMacro1016 lib SacmV26e lib 组成文件 main c Sound c Clock c Clock Speech c Clock Adjust c Key asm hardware asm ISR asm A2000 h Sound h Clock h Clock Speech h Clock Adjust h Key h SPCE061A h 硬件连接 61 板自带的三个按键已经连接在 IOA0 IOA2 上 维护记录 2006 8 30 v1 0 文件名称 main c 功能描述 主程序 维护记录 2006 08 30v1 0 include spce061a h include Sound h include Key h include Clock h include Clock Speech h include Clock Adjust h 语法格式 int main void 实现功能 主函数 参数 无 返回值 无 int main unsigned int KeyCode unsigned int Flag 0 Key Init 初始化按键扫描程序 Clock Start 初始化计时程序 while 1 21 KeyCode Key Get 获取按键值 switch KeyCode case KEY 1 Key1 键 播放日期 时间 if Flag 0 PlayDate Flag 1 else PlayTime Flag 0 break case KEY LONG 1 Key1 键长按 调整日期和时间 Adjust break default break P Watchdog Clear 0 x01 清看门狗 P SystemClock 0 x001F 进入睡眠模式 子程序 1 文件名称 Clock c 功能描述 计时模块 使用 2Hz 时基中断 维护记录 2006 08 30v1 0 include spce061a h typedef struct STR CLOCK 定义时钟结构体 unsigned int Year unsigned int Mon unsigned int Day unsigned int Hour unsigned int Min unsigned int Sec unsigned int HalfSec CLOCK CLOCK Clock 2006 1 1 0 0 0 0 时钟初始值 2006 年 1 月 1 日 0 点 0 分 const unsigned int Month Day 12 31 28 31 30 31 30 31 31 30 31 30 31 每月包含的天数 22 语法格式 void Clock ISR void 实现功能 计时模块的 2Hz 中断服务程序 应在 IRQ5 2Hz 中断中调用 参数 无 返回值 无 void Clock ISR if Clock HalfSec 0 0 5 秒 Clock HalfSec 1 else Clock HalfSec 0 Clock Sec 1 if Clock Sec 60 处理秒进位 Clock Sec 0 Clock Min 1 if Clock Min 60 处理分进位 Clock Min 0 Clock Hour 1 if Clock Hour 24 处理小时进位 Clock Hour 0 Clock Day 1 处理天进位 if Clock Day Month Day Clock Mon 1 if Clock Mon 2 Clock Year Clock Mon 1 if Clock Mon 12 处理月进位 Clock Mon 1 Clock Year 1 语法格式 void Clock Start void 实现功能 开始计时 参数 无 返回值 无 23 void Clock Start P INT Ctrl New C IRQ5 2Hz asm IRQ ON 语法格式 unsigned int Clock GetYear 实现功能 查询当前年 参数 无 返回值 当前年 unsigned int Clock GetYear return Clock Year 语法格式 unsigned int Clock GetMon void 实现功能 查询当前月 参数 无 返回值 当前月 unsigned int Clock GetMon return Clock Mon 语法格式 unsigned int Clock GetDay void 实现功能 查询当前日 参数 无 返回值 当前日 unsigned int Clock GetDay return Clock Day 语法格式 unsigned int Clock GetHour void 实现功能 查询当前小时 参数 无 返回值 当前时 unsigned int Clock GetHour return Clock Hour 24 语法格式 unsigned int Clock GetMin void 实现功能 查询当前分 参数 无 返回值 当前分 unsigned int Clock GetMin return Clock Min 语法格式 unsigned int Clock GetSec void 实现功能 查询当前秒 参数 无 返回值 当前秒 unsigned int Clock GetSec return Clock Sec 语法格式 void Clock SetYear unsigned int Year 实现功能 设置年 参数 Year 年 返回值 无 void Clock SetYear unsigned int Year Clock Year Year 语法格式 void Clock SetMon unsigned int Mon 实现功能 设置月 参数 Mon 月 返回值 无 void Clock SetMon unsigned int Mon Clock Mon Mon 语法格式 void Clock SetDay unsigned int Day 实现功能 设置日 参数 Day 日 返回值 无 void Clock SetDay unsigned int Day 25 Clock Day Day 语法格式 void Clock SetHour unsigned int Hour 实现功能 设置小时 参数 Hour 时 返回值 无 void Clock SetHour unsigned int Hour Clock Hour Hour 语法格式 void Clock SetMin unsigned int Min 实现功能 设置分 参数 Min 分 返回值 无 void Clock SetMin unsigned int Min Clock Min Min 语法格式 void Clock SetSec unsigned int Sec 实现功能 设置秒 参数 Sec 秒 返回值 无 void Clock SetSec unsigned int Sec P TimeBase Clear 0 x01 时基计数器清零 Clock Sec Sec Clock HalfSec 0 半秒计数清零 子程序 2 文件名称 Clock Adjust c 功能描述 调整日期和时间的函数集 维护记录 2006 08 30v1 0 26 include spce061a h include Sound h include Clock h include Clock Speech h include Key h 语法格式 unsigned int AdjustYear unsigned int Year 实现功能 调整年 参数 Year 调整前的年 返回值 调整后的年 unsigned int AdjustYear unsigned int Year unsigned int KeyCode unsigned int TempYear Year PlayYear TempYear 播放当前年 while 1 P Watchdog Clear 0 x01 KeyCode Key Get 获取按键 switch KeyCode case KEY 1 return TempYear 按 Key1 键返回调整后的年 case KEY 2 27 TempYear 按 Key2 键 年数加 1 PlayYear TempYear break case KEY 3 TempYear 按 Key3 键 年数减 1 PlayYear TempYear break default break 语法格式 unsigned int AdjustMon unsigned int Mon 实现功能 调整月 参数 Mon 调整前的月 返回值 调整后的月 unsigned int AdjustMon unsigned int Mon unsigned int KeyCode unsigned int TempMon Mon PlayMon TempMon 播报调整前的月 while 1 P Watchdog Clear 0 x01 28 KeyCode Key Get switch KeyCode case KEY 1 Key1 返回调整后的月 return TempMon case KEY 2 TempMon Key2 月数加 1 到 12 后回复为 1 if TempMon 12 TempMon 1 PlayMon TempMon break case KEY 3 TempMon Key3 月数减 1 到 1 后变为 12 if TempMon Month Day Mon 1 如果当前的日期已经超过调整后月的最大天 数则日期置为 1 if TempDay 29 处理闰年 if Year else TempDay 1 PlayDay TempDay 播放调整前日 while 1 P Watchdog Clear 0 x01 KeyCode Key Get switch KeyCode case KEY 1 return TempDay Key1 返回调整后日 case KEY 2 TempDay Key2 日数加 1 达到当月最大日之后回复为 1 if TempDay Month Day Mon 1 30 if TempDay 29 处理闰年 if Year else TempDay 1 PlayDay TempDay break case KEY 3 TempDay Key3 日数减 1 减到 0 时转为当月最大日 if TempDay23 TempHour 0 PlayHour TempHour break case KEY 3 if TempHour 0 TempHour 23 Key3 时数减 1 到 0 后回复为 23 else TempHour PlayHour TempHour break default break 32 语法格式 unsigned int AdjustMin unsigned int Min 实现功能 调整分 参数 Min 调整前的分 返回值 调整后的分 unsigned int AdjustMin unsigned int Min unsigned int KeyCode unsigned int TempMin Min PlayNum TempMin 播报调整前的分钟数 PlaySnd S Fen while 1 P Watchdog Clear 0 x01 KeyCode Key Get switch KeyCode case KEY 1 return TempMin Key1 返回调整后的分 case KEY 2 TempMin Key2 分钟数加 1 到 59 后变为 0 if TempMin 59 TempMin 0 33 PlayNum TempMin PlaySnd S Fen break case KEY 3 if TempMin 0 TempMin 59 Key3 分钟数减 1 到 0 后变为 59 else TempMin PlayNum TempMin PlaySnd S Fen break default break 语法格式 unsigned int AdjustSec unsigned int Sec 实现功能 调整秒 参数 Sec 调整前的秒 返回值 调整后的秒 unsigned int AdjustSec unsigned int Sec unsigned int KeyCode unsigned int TempSec Sec PlaySec TempSec 播报调整前的秒数 while 1 34 P Watchdog Clear 0 x01 KeyCode Key Get switch KeyCode case KEY 1 return TempSec Key1 返回调整后的秒 case KEY 2 TempSec Key2 秒加 1 到 59 后变为 0 if TempSec 59 TempSec 0 PlaySec TempSec break case KEY 3 if TempSec 0 TempSec 59 Key3 秒减 1 到 0 后变为 59 else TempSec PlaySec TempSec break default break 语法格式 void Adjust void 实现功能 调整日期时间 参数 无 返回值 无 35 void Adjust unsigned int TempYear TempMon TempDay TempHour TempMin TempSec TempYear AdjustYear Clock GetYear 调整年 TempMon AdjustMon Clock GetMon 调整月 TempDay AdjustDay TempYear TempMon Clock GetDay 调整日 TempHour AdjustHour Clock GetHour 调整时 TempMin AdjustMin Clock GetMin 调整分 TempSec AdjustSec Clock GetSec 调整秒 Clock SetYear TempYear 保存调整后的日期时间 Clock SetMon TempMon Clock SetDay TempDay Clock SetHour TempHour Clock SetMin TempMin Clock SetSec TempSec PlaySnd S DING 播报调整后的日期时间 PlayYear TempYear PlayMon TempMon PlayDay TempDay PlayHour TempHour PlayMin TempMin 子程序 3 36 文件名称 Clock Speech c 功能描述 语音播报日期和时间的函数集 维护记录 2006 08 30v1 0 include Clock h include Sound h 语法格式 void PlayNum unsigned int Num 实现功能 播放 100 以内的数字 参数 Num 待播报的数字 返回值 无 void PlayNum unsigned int Num unsigned int TempNum Num if TempNum 0 数字为 0 则直接播报 0 PlaySnd S 0 else if TempNum 20 PlaySnd TempNum 10 十位 if TempNum 10 PlaySnd S 10 十 TempNum TempNum 10 if TempNum 0 PlaySnd TempNum 个位 37 语法格式 void PlayYear unsigned int Year 实现功能 播报年 参数 Year 待播报的年 返回值 无 void PlayYear unsigned int Year unsigned int TempYear Year PlaySnd TempYear 1000 千位 TempYear TempYear 1000 PlaySnd TempYear 100 百位 TempYear TempYear 100 PlaySnd TempYear 10 十位 TempYear TempYear 10 PlaySnd TempYear 个位 PlaySnd S Nian 年 语法格式 void PlayMon unsigned int Mon 实现功能 播报月 参数 Mon 待播报的月 返回值 无 void PlayMon unsigned int Mon 38 PlaySnd Mon PlaySnd S Yue 语法格式 void PlayDay unsigned int Day 实现功能 播报日 参数 Day 待播报的日 返回值 无 void PlayDay unsigned int Day PlayNum Day PlaySnd S Ri 语法格式 void PlayHour unsigned int Hour 实现功能 播报小时 参数 Hour 待播报的时 返回值 无 void PlayHour unsigned int Hour if Hour 5 PlaySnd S LC 凌晨 0 5 点 else if Hour 11 PlaySnd S SW 上午 6 11 点 else if Hour12 PlaySnd Hour 12 12 小时制 else PlaySnd Hour PlaySnd S Dian 点 语法格式 void PlayMin unsigned int Min 实现功能 播报分 参数 Min 待播报的分 返回值 无 void PlayMin unsigned int Min if Min 0 PlaySnd S Zheng 00 分播报 整 else PlayNum Min 播报数字 PlaySnd S Fen 分 语法格式 void PlaySec unsigned int Sec 实现功能 播报秒 参数 Sec 待播报的秒 40 返回值 无 void PlaySec unsigned int Sec PlayNum Sec PlaySnd S Miao 语法格式 void PlayTime 实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年辽源辅警协警招聘考试备考题库附答案详解(典型题)
- 2025年芜湖辅警招聘考试真题及答案详解(各地真题)
- 2025年阳江辅警协警招聘考试备考题库附答案详解(轻巧夺冠)
- 2025年玉树州辅警协警招聘考试备考题库及答案详解(必刷)
- 2025年菏泽辅警协警招聘考试真题及答案详解1套
- 2025年甘孜藏族自治州辅警协警招聘考试备考题库及答案详解(基础+提升)
- 2025年莱芜辅警协警招聘考试真题附答案详解(典型题)
- 2025年滨州辅警协警招聘考试备考题库含答案详解(培优)
- 2025年湖北辅警协警招聘考试真题附答案详解(综合卷)
- 2025年西双版纳州辅警协警招聘考试备考题库含答案详解ab卷
- 交安设施冬季施工方案
- 行业的客户信息管理表格模板
- 生物育种方法
- 建筑企业法人a证考试及答案
- 2025年秋统编版小学语文四年级上册第六单元综合测试卷及参考答案
- 《国有企业管理人员处分条例》测试题(名校卷)附答案详解
- 鸡蛋采购项目服务方案投标文件(技术方案)
- 静压机工程桩吊装专项方案(2025版)
- 医院进修人员培训报告
- 冬季燃气管道施工安全方案
- 化工仪表维保知识培训课件
评论
0/150
提交评论