已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广州学院广州学院 机电一体化方向机电一体化方向 综合课程设计说明书综合课程设计说明书 万年历电子钟系统设计 院 系 院 系 机械工程学院 专专 业业 机械工程及自动化 班班 级级 08 级机械 3 班 学生姓名学生姓名 成桂铨 学学 号号 200830842035 指导老师指导老师 徐文斌 2011 年 12 月 23 日 课 程 设 计 任 务 书 兹发给 08 级机械 3 班 班学生 成桂铨 课程设计任务书 内容如下 1 设计题目 万年历电子钟系统设计 2 应完成的项目 1 单片机编程 2 电子钟整体机构设计 3 完成时钟显示并调节 日历显示 整点报时 电子钟背景切换 音乐盒播放功能 4 电路设计 3 参考资料以及说明 1 李全利 迟荣强 单片机原理及接口技术 M 北京 高等教育出版社 2004 1 2 黄智伟 全国大学生电子设计竞赛系统设计 M 北京 北京航空航天大学出版社 2006 6 3 黄智伟 凌阳单片机课程设计指导 M 北京 北京航空航天大学出版社 2006 11 4 李广弟 朱月秀 王秀山 单片机基础 M 北京 北京航空航天大学出版社 2001 7 5 康华光 模拟电子技术基础 第四版 M 武汉 华中理工大学出版社 1999 6 谭浩强 C 语言程序设计 第二版 M 北京 清华大学出版社 1991 7 陈小忠 黄宁 单片机接口技术实用子程序 M 北京 北京人民邮电出版社 2005 8 欧伟明 周春临 瞿遂春 电子信息系统设计 M 西安电子科技大学出版社 2005 9 4 本设计任务书于 2011 年 12 月 6 日发出 应于 2012 年 1 月 3 日前完成 然后进行 答辩 指导教师 徐文斌 签发 2011 年 12 月 6 日 课程设计评语 课程设计总评成绩 指导老师签字 年 月 日 万年历电子时钟系统设计万年历电子时钟系统设计 摘要摘要 本文主要介绍了利用凌阳的 SPCE061A 单片机作为主控制器设计的数字电子钟方案 利用凌 阳 SPLC501A 液晶模组 结合 SPCE061A 强大的语音功能 实现了公历 农历 秒表 闹钟及语 音报时 播报日期 整点报时 电子钟背景切换 音乐盒播放等功能 这是一种用新型凌阳单 片机来实现的 SPCE061A 单片机作为控制器与 SPLC501A 液晶模组构成数字钟 该方案充分利用 单片机强大的编程 语音处理 中断以及多功能输入 输出口 并且操作简单 易于修改 是理 想的数字控制系统 本文首先简介凌阳单片机的发展 紧接着详细描述了凌阳单片机 SPCE061A 的组成原理及其 功能 根据它的组成原理及其指令系统 设计了数字电子钟控制系统的软件部分 包括主程序 显示 语音播放程序 此类单片机特别是在数字处理及语音处理方面有着明显的优越性 所以 本次设计中采用凌阳 SPCE061A 单片机 它能够使所设计的产品更具智能化和先进性 关键词关键词 数字电子钟 数字电子钟 SPCE061ASPCE061A SPLC501ASPLC501A 目 录 第一章 前言 1 1 11 1 系统功能系统功能 2 1 21 2 基本参数基本参数 2 第二章 模块特性简介 3 2 12 1 SPCE061ASPCE061A 单片机单片机 3 2 1 1 SPCE061A 简介 3 2 1 2 芯片特性 4 2 22 2 系统总体方案介绍系统总体方案介绍 4 第三章 系统硬件设计 7 3 13 1 SPCE061ASPCE061A 最小系统最小系统 7 3 23 2 电源模块电源模块 7 3 33 3 音频输出模块音频输出模块 8 3 43 4 液晶显示模块液晶显示模块 9 3 4 1 显示 RAM 区映射情况 9 3 4 2 SPLC501 驱动控制器芯片 10 第四章 系统软件设计 12 4 14 1 软件的结构软件的结构 12 4 24 2 各模块程序的说明各模块程序的说明 12 4 2 1 概述 12 4 2 2 主程序 13 4 2 3 中断服务程序 14 4 2 4 时间日期模块 16 4 2 5 SPLC501 液晶显示模组显示汉字 16 4 2 6 常用功能函数介绍 用户 API 18 第五章 结论 20 参考文献 21 附录一 软件编写程序 22 附件二 电路设计图 29 附件三 PROTEUS 仿真电路图 31 1 第一章第一章 前言前言 20世纪末 电子技术获得了飞速的发展 在其推动下 现代电子产品几乎渗透了社会的各 个领域 有力地推动了社会生产力的发展和社会信息化程度的提高 同时也使现代电子产品性 能进一步提高 产品更新换代的节奏也越来越快 目前 单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化 低功耗 小 体积 大容量 高性能 低价格和外围电路内装化等几个方面发展 下面是单片机的主要发展 趋势 单片机应用的重要意义还在于 它从根本上改变了传统的控制系统设计思想和设计方法 从前必须由模拟电路或数字电路实现的大部分功能 现在已能用单片机通过软件方法来实现了 这种软件代替硬件的控制技术也称为微控制技术 是传统控制技术的一次革命 数字钟是采用数字电路实现对时 分 秒 数字显示的计时装置 广泛用于个人家庭 车站 码头办公室等公共场所 成为人们日常生活中不可少的必需品 由于数字集成电路的发展和石英晶 体振荡器的广泛应用 使得数字钟的精度 远远超过老式钟表 钟表的数字化给人们生产生活带来 了极大的方便 而且大大地扩展了钟表原先的报时功能 诸如定时自动报警 按时自动打铃 时间程序自动控制 定时广播芯片自动起闭路灯 定时开关烘箱 通断动力设备 甚至各种定 时电气的自动启用等 所有这些 都是以数字电子钟具有走时准确 一钟多用等特点 在生活中 已经得到了广泛的应用 随着科技的发展 人们对电子产品的应用要求越来越高 数字电子钟 不但可以显示当前的时间 而且可以显示日期 农历 以及星期等 给人们的生活带来了方便 另外数字钟还具备秒表和闹钟功能 且闹钟铃声可自选 使一款电子钟具备了多媒体的色彩 本方案利用凌阳科技公司的SPLC501A液晶模组作为显示模块 凌阳16位单片机SPCE061A 作为主控芯片 充分利用SPCE061A精简开发板 简称61板 上面的三个按键 完成一个简易 的数字系统 数字电子钟 该数字钟既可以显示当前的日期和时间 又可以将当前的日期和时间播报出来 同时具有 闹钟秒表等功能 满足了不同人的需要 该方案的主要功能是在SPLC501A液晶模组上显示时间 日期 能通过SPCE061A的音频通 道播报当前的日期和时间 61板上面的三个按键可以控制实现所有的功能 在显示日期和时间 状态下按KEY1键进入功能选择菜单 此时KEY2为下翻键 KEY3为上翻键 KEY1为确定键 在显示日期和时间状态下按KEY2键播报当前的时间 按KEY3键播报当前的日期 当 2 KEY2 KEY3键同时按下时控制闹钟的开 关 1 11 1 系统功能系统功能 本系统利用凌阳科技公司的SPCE061A单片机作为控制器 扩展SPLC501A液晶模组 系统 具有以下功能 1 可以在SPLC501A液晶模组上面显示时间 日期 农历 星期 闹钟 2 可以语音播报日期和时间 3 整点报时功能 4 具备闹钟功能 5 闹钟的铃声音乐盒可以选择 6 电子钟背景切换 1 21 2 基本参数基本参数 1 工作电压 4 5V 3节干电池 2 日期显示范围 2001 2100年 3 时间采用24小时制 3 第二章第二章 模块特性简介模块特性简介 该数字钟系统主要由SPCE061A精简开发板 简称61板 和SPLC501A液晶模块构成 系统通 过61板上的三个按键控制SPLC501A液晶模块显示 通过扬声器播放语音 所以这里主要介绍这 两个模块 2 12 1 SPCE061ASPCE061A 单片机单片机 2 1 1 SPCE061A 简介 SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机 具有易学易用且效率较 高的一套指令系统和集成开发环境 在此环境中 支持标准C语言 可以实现C语言与汇编语言 的互相调用 并且 提供了语音录放和语音识别的函数库 只要了解库函数的使用方法 就可 以很容易完成语音录放 为软件开发提供了方便的条件 SPCE061A主要包括输入 输出端口 定时器 计数器 数 模转换 模 数转换 串行设备输 入 输出 通用异步串行接口 低电压监测和复位等电路 并且内置在线仿真电路ICE接口 使 其能够快速地处理复杂的数字信号 SPCE061A片内还集成了一个ICE 在线仿真电路 接口 使得对该芯片的编程 仿真变得非 常方便 而ICE接口不占用芯片上的硬件资源 结合凌阳科技提供的集成开发环境 unSP IDE 用户可以进行在线调试 仿真 而程序的下载 烧写 也是通过该接口完成 4 图 1 SPCE061A内部结构图 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秒的语音数据 5 锁相环PLL振荡器提供系统时钟信号 32768Hz实时时钟 7通道10位电压模 数转换器 ADC 和单通道声音模 数转换器 声音模 数转换器输入通道内置麦克风放大器和自动增益控制 AGC 功能 具备串行设备接口 低电压复位 LVR 功和低电压监测 LVD 功能 内置在线仿真板 ICE In Circuit Emulator 2 22 2 系统总体方案介绍系统总体方案介绍 电子钟的系统结构如图4 图5为电子钟功能结构图 61板作为整个系统的控制中心 负责 控制键盘扫描 年 月 日 星期以及时间的计算 SPLC501A液晶显示的驱动 并根据按键 值播报当前的日期或者时间 SPLC501A液晶显示模组主要用来显示当前的时间 日期 以及 显示功能选择菜单和时间日期调整菜单 在声音的处理上主要采用凌阳科技的语音压缩格式 将需要播放的声音压缩存在SPR模组里面 然后通过61板将语音资源取出播放出来 在图片的 处理上 采用SPLC501液晶模组 使用配套的DM Tool工具将需要显示的图片实现提取出图片 资源烧写到SPCE061A中 然后通过61板控制SPLC501A播放出来 本系统采用了语音的录入和 输出播放 图 4 系统结构框图 6 图 5 功能结构图 用61板控制数字钟系统 使用了IOA口的高八位 IOB的4 5 6共11个I O口连接 SPLC501A液晶模组 另外使用了61板的语音输出模块 以及61板上的三个按键 硬件连接如 图 7所示 电路连接如图7 IOA的高八位接到液晶模组的八个数据端 同时也连接了液晶模组的电源 即直接用一根10pin的排线连接61板 IOA8 15 与SPLC501A液晶显示模组的 DB0 7 主要用来向液晶模组传送命令和数据 IOB6接EP IOB5接R W IOB4接 AO 用来控制液晶的显示和工作方式 注意电源的正负极不要接反 DB0连接IOA8 DB7连 接IOA15 也不要接反 图 6 电路连接图 7 第三章第三章 系统硬件设计系统硬件设计 3 13 1 SPCE061ASPCE061A 最小系统最小系统 SPCE061A最小系统包括SPCE061A芯片及其外围的基本模块 其中外围的基本模块有 晶 振输入模块 OSC 锁相环外围电路 PLL 复位电路 RESET 指示灯 LED 等 如图7所示 8 图 7 SPCE061A最小系统 3 23 2 电源模块电源模块 SPCE061A 板采用 3 节 5 号电池进行供电 由 J10 接入 其中前后两组电容用来去耦滤波 使其供给芯片的电源更加干净平滑 为了获得标准的 3 3 伏电压 在电路上加入 SPY0029 三端稳 压器和两个二极管 是为了防止误将电源接反造成不必要损失而设置的 在操作过程中千万不要 将电源接反 因为反向电压超过一定值 二极管将会被损坏 达不到保护的目的 后面的零电 阻及其电源分成不同的几路是为了减少电磁干扰设置的 图 8 是电源部分的电路 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 脚 9 VSS 是数字地 接 SPCE061A 的 38 脚 AVSS2 接音频输出电路的 AVSS2 61板电源模块电路如图8 SPCE061A的内核供电为3 3V 而I O端口可接3 3V 5V 所以在 电源模块 61板上 中有一个端口电平选择跳线 如图中的J5 本系统需要的端口高电平为 3 3V 所以图8中的J5跳线需要跳到2和3上 图 8 电源模块 3 33 3 音频输出模块音频输出模块 音频输出 D A 部分的原理图如图9所示 可以直接听喇叭输出的声音 图中的SPY0030 也是凌阳公司的产品 它的详细说明可以参见SPY0030 data sheet 和LM386相比 SPY0030还 具有下述优势 比如LM386工作电压需在4V以上 SPY0030仅需2 4V即可工作 两颗电池即可工 作 LM386输出功率100mW以下 SPY0030约700mW 芯片将声音处理后输出 J2 经 SPY0030音频放大输出 J3 通过扬声器还原为声音 SPY0030A是凌阳公司开发的专门用于语 音放大的芯片 SPY0030的输入电压的范围是2 4 6 0伏 该电路中采用的电压是3 3伏 SPCE061A内置2路10位DAC 只需要外接功放电路即可完成语音的播放 10 图 9 音频输出电路图 3 43 4 液晶显示模块液晶显示模块 3 4 1 显示 RAM 区映射情况 SPLC501A液晶模组为128 64点阵模式 面板采用STN Super Twisted Nematic 超扭曲相 列技术制成 非常容易通过接口被访问 模组上的液晶显示器采用凌阳科技的SPLC501芯片作 为LCD驱动和控制器 为128X64点阵图形液晶显示器 表1 SPLC501液晶显示模组的基本参数 显示模式黄色模式STN液晶 显示格式128X64点阵地图形液晶 显示 输入数据兼容68 80系列MPU数据 输入 背光黄绿色LED 模块尺寸72 8 长 73 6 宽 9 5 高 mm 视屏尺寸58 84 宽 35 79 长 mm 点大小0 42 宽 0 51 长 mm 注意事项 SPLC501液晶显示模组中 接口引脚 V3 分别为电源输入端和高电平 引针 供时序选择跳线用 而 GND 都是接地引脚 表2 接口引脚名 11 接口引脚名 说明 CS1 片选 低有效 RES 复位脚 A0 数据命令选择脚 对于6800系列MPU的读 写信 号 R W R W 对于8080系列MPU的写信号 W R 对于6800系列MPU的时钟信 号使能脚 EP EP 对于8080系列MPU的读信号 RD DB0 DB1 DB2 DB3 DB4 8位数据总线 DB5 DB6 DB7 VR 端口输出电压 C86 C86 H 选择6800MPU系列 C86 L 选择8080MPU系列 PS 串 并行时序选择 3 4 2 SPLC501 驱动控制器芯片 SPLC501液晶显示模组采用的驱动控制芯片为凌阳科技的SPLC501A芯片 SPLC501A为液 晶显示控制驱动器 集行 列驱动器和控制器于一体 广泛应用于小规模液晶显示模块 SPLC501A单芯片液晶驱动 可以直接与其他微控制器接口总线相连 微控制器可以将显 示数据通过8位数据总线或者串行接口写到SPLC501A的显存中 下列是SPLC501A的特点 内置8580位显示RAM RAM中的一位数据控制液晶屏上的一个象素点的亮 暗状态 1 亮 0 暗 具有65行驱动输出和132列驱动输出 注 模组中的液晶显示面板仅为64行 128列 可以直接与80系列和68系列微处理器相连 内置晶振电路 也可以外接晶振 12 工作温度范围为 40摄氏度 85摄氏度 其电路原理图如图 10所示 图 10 液晶模组电路 SPLC501A液晶显示模组提供了8080和6800的并行操作时序 也提供了串行的操作时序 用户可以通过对PS C86引脚接不同的电平来选择操作的时序 8080操作时序接线图 PS接 VDD C86接VSS 6800操作时序接线图 PS接VDD C86接VDD 行操作时序接线图 PS接VSS C86接VSS或VDD都可 SPLC501液晶显示模组中 设置了PS和C86的跳线 供 用户选择操作时序 第四章第四章 系统软件设计系统软件设计 4 14 1 软件的结构软件的结构 下图中可以看出各文件之间的调用关系 13 图 11 软件结构 数字钟主要还是软件实现的 数字钟的软件设计由以下程序构成 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 语言作为主 程序 用汇编语言编制各种模块 供主程序调用 本系统采用了这种编制方法使得相互调用非 常简单 14 4 2 2 主程序 主程序流程如图12所示 在主程序中初始化了整个工程中用到的变量 初始化了液晶显 示 模块 开2Hz中断实现计时 在主程序中调用了键盘扫描程序 对IOA口的低三位进行扫描 如 果有键按下 就把相应的键值存入到一个变量中 通过主程序来判断是哪个键按下 并执行相 应的功能 若是KEY1键按下 则会进入功能选择菜单 此时KEY1就会为确定键 KEY2为下翻键 KEY3为上翻键 若是KEY2键按下 播报时间 若是KEY3键按下 播报当前的日期 KEY2 KEY3 键同时按下控制闹钟的开 关 图 12 主程序流程图 4 2 3 中断服务程序 中断服务程序有三个 一个是2Hz中断服务程序 用来计时 一个是1KHz中断服务程序 用于秒表计时 另外一个是FIQ中断服务程序 用来播放语音 程序的流程分别如图13 图 15 14 图15 图 13 IRQ5时基中断流程图 另外一个是FIQ中断服务程序 用来播放语音 16 图 14 IRQ4时基中断流程图 图 15 FIQ中断程序 17 4 2 4 时间日期模块 时间日期程序模块的流程图如图16所示 该模块用到了2Hz的时基中断 用来实现计时 同 时实现了日期的更新 其中农历是使用查表的方法来实现的 图 16 时间日期模块流程图 4 2 5 SPLC501 液晶显示模组显示汉字 利用SPLC501 液晶显示模组显示汉字比显示英文字符稍微复杂一点 因为英文字符在 ASCII 码中都有对应字符 而SPLC501 液晶显示模组显示的都是ASCII 码 汉字却不能与 18 ASCII 码对应 所以要先用字模提取工具把汉字提取成字模数据 才能显示 利用SPLC501 液晶显示模组显示汉字需要图17的操作过程 新建一个工程 利用字模提取 工具提取字模数据 把字模数据文件保存在工程文件夹 以方便工程调用 添加字模数据文件 到工程 程序可以直接使用这些字模数据 拷贝并添加驱动程序文件 编写程序 运行显示 利用SPLC501 液晶显示模组显示汉字的过程见图17 和显示英文字符的方法类似 所不同的是 显示汉字的API 函数为LCD501 Bitmap unsigned int x unsigned int y unsigned int word 图 17 利用SPLC501液晶显示模组显示汉字需要的操作过程 为了使用户能够方便快速地使用SPLC501液晶显示模组 凌阳大学计划提供了基于 SPCE061A单片机的SPLC501液晶显示模组的驱动程序 包括文本显示 几何图形绘制和位图显 示等功能函数 SPLC501液晶显示模组的驱动程序架构如图所示 图 18 驱动程序架构 19 驱动程序由5个文件组成 分别为 底层驱动程序文件 SPLC501Driver IO inc SPLC501Driver IO asm 用户API功能接口函数文件 SPLC501User h SPLC501User c DataOSforLCD asm 4 2 6 常用功能函数介绍 用户 API SPLC501User c文件中定义了常用的显示函数 包括 液晶显示控制函数 文本显示 图形 显示等 下面介绍部分常用功能函数 液晶显示控制类 1 LCD501 Init 液晶初始化 程序 LCD501 Init unsigned int InitialData 描述 液晶显示初始化函数 参数 unsigned int InitialData 初始化显示的字 低八位有效 返回 无 注意 在使用LCD前 首先应执行该函数 使LCD处于可以正常显示的状态 2 LCD501 ClrScreen 清屏 程序 LCD501 ClrScreen unsigned int Mode 描述 液晶整屏清屏函数 C语言调用 参数 unsigned int Mode 清屏类型Mode 1则全点亮 Mode 0内全清零 3 LCD501 ReverseColor 显示翻转 程序 void LCD501 ReverseColor void 描述 屏幕反色显示 每执行一次该函数 屏幕颜色翻转一次 5 LCD501 GetPaintMode 获取当前显示模式 程序 unsigned int LCD501 GetPaintMode void 描述 设置图形显示模式 参数 无 返回 ModeCode 图形显示模式 可以是下列数值之一 0 PAINT COVER 1 PAINT SET 2 PAINT CLR 3 PAINT REV 4 PAINT RECO 注意 无 20 文本显示类函数 1 LCD501 FontSet 设置文本字体 程序 void LCD501 FontSet unsinged int Font 8x16 6X8 描述 选择显示字符的大小类型 参数 Font 字符的类型选择 1 8X16 0 6X8 返回 无 注意 只针对显示驱动中包含的ASCII码显示 2 LCD501 FontGet 获取当前文本字体 程序 unsigned int LCD501 FontGet void 8x16 6X8 描述 获取当前显示字符的大小类型 返回 字符的类型选择 1 8X16 0 6X8 注意 只针对显示驱动中包含的ASCII码显示 3 LCD501 PutChar 显示单个字符 程序 void LCD501 PutChar int x int y unsigned int a 8x16 6X8 描述 显时8X16 6X8的自带ASCII字符 任意行定位 参数 x 显示字符的起始列 0 128 y 显示字符的起始行 0 63 a ASCII码 返回 无 注意 无 4 LCD501 PutString 显示字符串 程序 void LCD501 PutString int x int y unsigned int a 8x16 6X8 描述 显时8X16 6X8的自带ASCII字符 任意行定位 参数 x 显示字符的起始列 0 128 y 显示字符的起始行 0 63 a ASCII码 返回 无 注意 无 5 LCD501 Bitmap 位图显示 汉字显示 程序 void LCD501 Bitmap unsigned int x unsigned int y unsigned int word 描述 DM Tool取的汉字字模 位图字模显示函数 参数 x 显示字符的起始列 0 128 y 要显示的字模的起始行 0 64 y whide word 要显示的汉字字模的数据首地址 返回 无 21 第五章第五章 结论结论 SPCE061A芯片强大的语音处理功能 为本系统的设计提供了便利条件 32个可编程I O口 使得扩展外围设备非常方便 CPU可工作在0 32MHz 49MHz的主频范围 并且拥有丰富的中断 源 使得系统在语音播放 数据显示等方面游刃有余 扩展性强 根据硬件的选择和电路的搭 配进行了软件的设计和编程 在实现硬件功能时 我曾遇到一些问题 在参阅了许多资料结合实 际条件选择了一种全面和简单的数字钟系统 在这次课程设计中锻炼了我的分析能力 解决问 题和动手能力 显然 这是一个比较简单的数字钟 在这个基础上 稍微改动 或者扩展其他模块可以设 计出一个更加完善的数字钟系统 比如 扩展外部存储器可以增加铃声的数目 可以改变铃声 的播放格式使铃声更加动听 增加掉电保护功能等等 以此来提高同学们的对单片机的兴趣 本次设计中 我从基础做起 做好每一个程序模块 在最后的硬件调试中 取得成功 实现了数字钟 的基本功能 达到了预期的设计目的 22 参考文献参考文献 1 李全利 迟荣强 单片机原理及接口技术 M 北京 高等教育出版社 2004 1 2 黄智伟 全国大学生电子设计竞赛系统设计 M 北京 北京航空航天大学出版社 2006 6 3 黄智伟 凌阳单片机课程设计指导 M 北京 北京航空航天大学出版社 2006 11 4 李广弟 朱月秀 王秀山 单片机基础 M 北京 北京航空航天大学出版社 2001 7 5 康华光 模拟电子技术基础 第四版 M 武汉 华中理工大学出版社 1999 6 谭浩强 C语言程序设计 第二版 M 北京 清华大学出版社 1991 7 陈小忠 黄宁 单片机接口技术实用子程序 M 北京 北京人民邮电出版社 2005 8 欧伟明 周春临 瞿遂春 电子信息系统设计 M 西安电子科技大学出版社 2005 9 23 附录一附录一 软件编写程序软件编写程序 工程名称 monthdayclock spj 功能描述 万年历 农历和电子钟 具备拨报日期 时间 正点报时 秒表 闹钟等功能 IDE环境 SUNPLUS u nSPTM IDE 2 0 0 or later 涉及的库 CMacro1016 lib sacmv26e lib 组成文件 main c system Key c speak c IRQ asm miaobiao asm 硬件连接 IOA8 15接液晶显示模块DB0 DB7 IOB4接液晶显示模块AO IOB5接液晶显示模块的R W IOB6接液晶显示模块的EP 文件名称 main c 功能描述 系统初始化 显示时间日期界面 按KEY1 进入时间调整和功能选择菜单 按KEY2 拨报当前的时间 按KEY3 拨报当前的日期 KEY2 KEY3同时按下控制闹钟的开关 include SPCE061A h include SPLC501User h include model h define ring1 17 播放第一个铃声的序号 define ring2 18 播放第二个铃声的序号 对主函数调用的函数声明 voidDelay unsignedint tt extern void display extern void PlayRespond unsigned int Result extern void speaktime extern void keyscan extern void nextdisplay extern void setday extern void set ring extern void setsecond extern void speaktime extern void speakday extern void keyinitial 24 定义文件中用到的变量以及常数数组 unsigned int keyflag1 0 键按下标志1 控制进入功能选择菜单 unsigned int keyflag2 0 键按下标志2 unsigned int keyflag3 0 键按下标志3 控制进入时间日期调整界面 unsigned int keyflag4 0 键按下标志4 控制进入闹钟时间设置界面 unsigned int keyflag5 0 键按下标志5 控制进入秒表设置界面 unsigned int keyflag6 0 键按下标志6 控制进入闹钟设置界面 unsigned int keyflag7 0 键按下标志7 控制进入闹钟铃声选择界面 unsigned int ringflag 0 播放铃声标志位1播放第一首2播放第二首 unsigned int keyvalue 0 存放按下的键值 unsigned int runflag 0 当年闰月标志位 unsigned int num 0 2HZ计数单元 unsigned int hour 12 存放当前的小时 unsigned int min 0 存放当前的分钟 unsigned int sec 0 存放当前的秒 unsigned int year 2008 存放当前的年 unsigned int gmonth 4 存放当前的公历的月 unsigned int gday 21 存放当前的公历的日 unsigned int xqvalue 1 存放当前的星期 unsigned int nmonth 3 存放农历的月 unsigned int nday 16 存放农历的日 unsigned int runxq 3 6 0 3 5 1 3 6 2 4 0 2 润年星期偏差表 unsigned int pingxq 4 0 0 3 5 1 3 6 2 4 0 2 平年星期偏差表 unsigned int mouse 1 17 32 48 箭头坐标数组 unsigned int nhour 0 存放闹钟的小时 unsigned int nmin 0 存放闹钟的分钟 unsigned int mbmin 0 存放秒表的分 unsigned int mbsec 0 存放秒表的秒 unsigned int mmsec 0 存放秒表的毫秒 unsigned int mbnum 0 1KHZ中断标志位 unsigned int onoff 0 闹钟开关标志 unsigned int int2hz 设置一个2HZ中断标志 unsigned int ringonoff 闹钟响时关闭标志 char number 0 1 2 3 4 5 6 7 8 9 设置待显示的数字 unsigned int clockset 11 31 51 设置闹钟铃声时的光标 unsigned int counter 0 设置显示SUNPLUS计数器 unsigned int mapcounter1 0 unsigned int mapcounter2 0 const int glunarmonthday 存放2001 2100的阴历月天数 25 为1则当月为30天 为0则为29天 低四位为当年闰月的月份 0 xd954 0 xd4a0 0 xda50 0 x7552 0 x56a0 0 xabb7 0 x25d0 0 x92d0 0 xcab5 0 xa950 0 xb4a0 0 xbaa4 0 xad50 0 x55d9 0 x4ba0 0 xa5b0 0 x5176 0 x52bf 0 xa930 0 x7954 0 x6aa0 0 xad50 0 x5b52 0 x4b60 0 xa6e6 0 xa4e0 0 xd260 0 xea65 0 xd530 0 x5aa0 0 x76a3 0 x96d0 0 x4afb 0 x4ad0 0 xa4d0 0 xd0b6 0 xd25f 0 xd520 0 xdd45 0 xb5a0 0 x56d0 0 x55b2 0 x49b0 0 xa577 0 xa4b0 0 xaa50 0 xb255 0 x6d2f 0 xada0 0 x4b63 0 x937f 0 x49f8 0 x4970 0 x64b0 0 x68a6 0 xea5f 0 x6b20 0 xa6c4 0 xaaef 0 x92e0 0 xd2e3 0 xc960 0 xd557 0 xd4a0 0 xda50 0 x5dd5 0 x56a0 0 xa6d0 0 x55d4 0 x52d0 0 xa9b8 0 xa950 0 xb4a0 0 xb6a6 0 xad50 0 x55a0 0 xaba4 0 xa5b0 0 x52b0 0 xb273 0 x6930 0 x7337 0 x6aa0 0 xad50 0 x4b55 0 x4b6f 0 xa570 0 x54e4 0 xd260 0 xe968 0 xd520 0 xdaa0 0 x6aa6 0 x56df 0 x4ae0 0 xa9d4 0 xa4d0 0 xd150 0 xf252 0 xd520 const unsigned int BMP Cartoon 动画帧数据链表 sunplus标志 unsigned int encoding 00 unsigned int encoding 01 unsigned int encoding 02 unsigned int encoding 03 unsigned int encoding 04 unsigned int encoding 05 unsigned int encoding 06 unsigned int encoding 07 unsigned int encoding 08 unsigned int encoding sunplus unsigned int encoding 08 unsigned int encoding 07 unsigned int encoding 06 unsigned int encoding 05 unsigned int encoding 04 unsigned int encoding 03 unsigned int encoding 02 unsigned int encoding 01 unsigned int encoding 00 unsigned int encoding sunplus unsigned int encoding 00 unsigned int encoding 01 unsigned int encoding 02 unsigned int encoding 03 unsigned int encoding 04 unsigned int encoding 05 unsigned int encoding 06 unsigned int encoding 07 unsigned int encoding 08 unsigned int encoding sunplus unsigned int encoding 08 unsigned int encoding 07 unsigned int encoding 06 unsigned int encoding 05 unsigned int encoding 04 unsigned int encoding 03 unsigned int encoding 02 unsigned int encoding 01 unsigned int encoding 00 unsigned int encoding sunplus 语法格式 int main void 实现功能 键盘控制语音拨报日期时间及功能选择 参数 无 返回值 无 int main void keyinitial 键盘初始化 LCD501 Init 0 液晶显示初始化 LCD501 Circle 64 32 15 1 26 LCD501 Bitmap 40 5 unsigned int encoding 201 LCD501 Bitmap 52 5 unsigned int encoding 202 LCD501 Bitmap 64 5 unsigned int encoding 203 LCD501 Bitmap 76 5 unsigned int encoding 204 P Watchdog Clear 0 x0001 LCD501 Bitmap 5 18 unsigned int encoding 205 LCD501 Bitmap 17 18 unsigned int encoding 206 LCD501 Bitmap 29 18 unsigned int encoding 207 LCD501 Bitmap 41 18 unsigned int encoding 208 P Watchdog Clear 0 x0001 LCD501 Bitmap 53 18 unsigned int encoding 209 LCD501 Bitmap 65 18 unsigned int encoding 20a LCD501 Bitmap 77 18 unsigned int encoding 20b LCD501 Bitmap 89 18 unsigned int encoding 20c P Watchdog Clear 0 x0001 LCD501 Bitmap 101 18 unsigned int encoding 20d LCD501 Bitmap 113 18 unsigned int encoding 20e LCD501 Bitmap 5 31 unsigned int encoding 20f LCD501 Bitmap 17 31 unsigned int encoding 210 P Watchdog Clear 0 x0001 LCD501 Bitmap 29 31 unsigned int encoding 211 LCD501 Bitmap 41 31 unsigned int encoding 212 LCD501 Bitmap 53 31 unsigned int encoding 213 LCD501 Bitmap 65 31 unsigned int encoding 214 P Watchdog Clear 0 x0001 LCD501 Bitmap 77 31 unsigned int encoding 215 LCD501 Bitmap 89 31 unsigned int encoding 216 LCD501 Bitmap 29 43 unsigned int encoding 100 LCD501 Bitmap 50 43 unsigned int encoding 101 P Watchdog Clear 0 x0001 LCD501 Bitmap 71 43 unsigned int encoding 102 Delay 5000 LCD501 ClrScreen 0 LCD501 FontSet 0 P INT Ctrl New P INT Ctrl New 0 x0004 置2HZ中断标志 asm INT IRQ LCD501 Bitmap 90 5 unsigned int encoding 100 LCD501 Bitmap 90 18 unsigned int encoding 101 LCD501 Bitmap 90 31 unsigned int encoding 102 LCD501 Bitmap 105 10 unsigned int encoding 103 LCD501 Bitmap 105 24 unsigned int encoding 104 27 while 1 int i 0 定义一个循环变量 用来对数组寻址 display 用显示日期时间界面 while hour nhour 当闹钟响时如果有任何键按下 则关闭闹钟 if keyvalue 0 onoff 1 else if ringflag 0 PlayRespond ring1 播放乐曲1 else PlayRespond ring2 播放乐曲2 if min 0 keyscan 键盘扫描 P Watchdog Clear 0 x0001 if keyvalue 0 x0001 如果KEY1键按下 keyflag1 1 置位键按下标志 LCD501 ClrScreen 0 调用清屏函数 while keyflag1 1 nextdisplay 显示调整界面 LCD501 Bitmap 15 mouse i unsigned int encoding mouse 显示鼠标位置 keyscan P Watchdog Clear 0 x0001 switch keyvalue case 0 x0001 如果是KEY1按下则进入相应的调整 switch i 判断此时的鼠标指向 case 0 setday break 指向的时间日期调整 case 1 28 set ring 设置闹钟的铃声和时间 break case 2 setsecond 设置秒表 break case 3 指向的返回 则执行返回程序 LCD501 ClrScreen 0 keyflag1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 罐头杀菌工岗中应变水平考核试卷含答案
- 电机线圈制造工岗中协调沟通考核试卷含答案
- 动设备课件-旋转机械故障诊断
- 2025年通信专业技术人员职业资格真题精讲试题及答案
- 2025年计算机技术与软件专业技术资格(高级)考试试题及答案
- 2025年高级审计实务真题及参考答案
- 2026年秋季开学初三稳住心态心理调适课件
- 2026及未来5年中国排水槽数据监测研究报告
- 2025年10月自考00160《审计学》真题及答案
- 2026浙江省卫生事业单位招聘考试(医学检验知识)历年参考题库含答案详解2卷
- 2025年南京大数据集团有限公司工作人员招聘笔试参考题库附带答案详解
- 2025双方合作谅解备忘录合同范本
- (正式版)DB65∕T 3347-2011 《杨十斑吉丁虫无公害防治技术规程》
- 肛门指检课件
- 2025年新电梯安全员证考试试题及答案
- 甲状腺结节诊断与治疗讲课件
- 海尔人力资源管理制度
- 中医中风护理查房
- JGJ64-2017饮食建筑设计标准(首发)
- 曲阜明故城控制性详细规划(同济)课件
- 货油泵操作演示文稿
评论
0/150
提交评论