1、目录第 1 节 引 言 31.1 作息时间控制钟系统概述31.2 本设计任务和主要内容4第 2 节 系统主要硬件电路设计 52.1 单片机总体设计原理52.2 各功能模块分析52.2.1 SPCE061A 性能简介 52.2.2 扩展部分实现8第 3 节 系统软件设计 93.1 软件主程序 93.2 软件主要子程序103.2.1 键盘扫描子程序 103.2.2 万年历计算子程序 103.2.3 校时子程序 113.2.4 播放语音子程序 12第四节 系统调试 144.1 调试 144.1.1 软件调试144.1.2 硬件调试144.1.3 软硬联调141第 4 节 结束语15参考文献162基于
2、单片机的作息时间控制钟系统第一节 引 言随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。台湾凌阳科技公司推出的16位单片机SPCE061A的问世,使得16位单片机的科技含量及应用跃上一个新的台阶。因其功耗低,超高型,低成本,功能完整,在国内越来越受到用户的重视和广泛使用。本设计是一个具有报时功能的作息时间控制钟。它利用SPCE0
3、61A单片机的2Hz时基计时,进行年历计算,并用SPCE061A的语音功能将它报出来;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。由键盘、声音输出模块和指示灯三部分组成,系统扩展三个按键用于报时及校正时间。现代机关企业,特别是学校要求对时间加以控制,要按时打铃及播放广播,以保证学习与工作的正常运行。本设计实现了这些功能,给学校及其他机关企业带来方便,整体性好,人性化强、可靠性高,实现了对时间控制的智能化。1.1 作息时间控制钟概述科技的进步需要技术不断的提升。一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。而现在,只需要一块几厘米见
4、方的单片机,写入简单的程序,就可以使您以前的电路简单很多。相信您在使用并掌握了单片机技术后,不管在您今后开发或是工作上, 一定会带来意想不到的惊喜。 以凌阳 16位单片机 SPCE061A 为核心控制器件的作息时间控制钟,由键盘、声音输出模块和指示灯三部分组成。它利用 SPCE061A 单片机的 2Hz 时基计时,进行年历计算,并用 SPCE061A 的语音功能将它报出来。SPCE061A 单片机是整个设计的核心控制器件,根据从键盘接受的数据控制整个系统的工作流程。整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。1.2 本
5、设计任务和主要内容本设计是一个具有报时功能的作息时间控制钟。它利用 SPCE061A 单片机的32Hz 时基计时,进行年历计算,并用 SPCE061A 的语音功能将它报出来;在进行时间计算,分每加 1 时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。假定某高校的作息时间如下所示: 08:00-08:50 第一节课 09:00-09:50 第二节课09:52-10:05 课间操10:10-11:00 第三节课 01:10-12:00 第四节课12:00-13:30 午间休息13:30-14:20 第五节课14:30-15:20 第六节课15:21-15:50 播放歌曲 SPCE061
6、A 的 DAC 为电流型输出,经负载电阻 R1、三极管 Q1 放大驱动扬声器SPEAKER 放音,SPEAKER 可选用 4 或 8 扬声器。IOA15 接一个 LED,到规定的作息时间用 LED 闪烁来表示,使用者可根据具体需要来控制电铃、播放提示语等。凌阳芯片的工作电压为 3.3v,我们给出了获得工作电压两种方法。方法 1、通过两个二极管连续降压使 5v 的电压降至 3.6v,接近 3.3v 供芯片使用,这种方法比较简单,但电压值不是很精确。见图 1-1图 1-1方法 2、通过 LM7833 可获得准确的 3.3V 电压。见图 1-2图 1-2第二节 系统主要硬件电路设计4硬件设计是整个系
7、统的基础,要考虑的方面很多,主要考虑以下几个因素:系统稳定度;器件的通用性或易选购性; 软件编程的易实现性;系统其它功能及性能指标;因此硬件设计至关重要。现从各功能模块的实现逐个进行分析探讨。2.1 单片机控制系统原理本设计以 SPCE061A 单片机为控制核心,模块化设计,共分以下几个功能模块:键盘模块、声音输出模块和指示灯模块。硬件连接图见图 2-1 图 2-1 硬件连接图22 各功能模块分析2.2.1 SPCE061A 性能简介SPCE061A 的结构框图如图 2-2 所示。其内部结构如下:51CPU SPCE061A 配备了凌阳科技开发的最新的 16 位微处理器,其内部含有 8 个寄存
8、器,4 个通用寄存器 R1R4,1 个程序计数器 PC,1 个堆栈指针 SP,1 个基址指针BP,1 个段寄存器 SR,通用寄存器 R3 和 R4 结合组成一个 32 位寄存器 MR,MR 可以作为乘法运算和内积运算的目标寄存器。此外,SPCE061A 有 3 个 FIQ 中断和 14 个IRQ 中断,1 个由指令控制的软中断。2存储器 SPCE061A 拥有 2 kb 的 SRAM,还有 32 kb 闪存 FLASH ROM,可在 ICE 工作方式下被编程写入或被擦除。对闪存设置保密设定后,其内容将不能再通过 ICE 被读写,从而将程序保密。3时钟 (1)锁相环(PLL)振荡器 PLL 的作
9、用为系统提供一个实时时钟的基频(32 768 Hz),然后将基基频进行倍频,调整至 49.152 MHz,40.96 MHz,32.768 MHz,24.576 MHz 或 20.480 MHz。系统默认的 PLL 自激振荡频率为 24.576 MHz 。 (2)系统时钟其信号源为 PLL 振荡器。系统时钟频率(Fosc)和 CPU 时钟频率(CPUCLK)可通过编程来控制。默认的 Fosc、CPUCLK 分别为24576 MHz 和Fosc/8。 (3)实时时钟 32 768 Hz 实时时钟通常用于钟表、实时时钟延时以及其他与时间相关类产品。SPCE061A 通过对 32 768 Hz 实时
10、时钟源分频而提供了多种实时时钟中断源。 4低电压监测和低电压复位 低电压监测功能可以提供系统内电源电压的使用情况。4 级电压监测低限:2.4 V,2.8 V,3.2 V 和3.6 V 。可通过编程来控制,系统默认的电压监测低限为 2.4 V。 低电压复位当电源电压低于 2.4 V 时,系统会变得不稳定且易出故障,导致电源电压过低的原因很多,如电压的反跳、负载过重、电池能量不足等。如果系统设置了低电压复位(LVR)功能。当电源电压低于该值时,会在 4 个时钟周期之后产生一个复位信号,使系统复位。5中断 SPCE061A 具有 2 种中断方式:快速中断请求 FIQ 中断和中断请求 IRQ 中断。中
11、断控制器可处理 3 种 FIQ 中断和 14 种 IRQ 中断,以及 1 个由指令 BREAK 控制的软中断。 66输入/输出端口(I/O) I/O 是系统与其他设备进行数据交换的接口。SPCE061A 具有 2 个可编程口:A口和 B 口。A 口既是具有可编程唤醒功能的普通 I/O 口,又可与 ADC 的多路 LINE IN 输入共用,B 口除了具有普通 I/O 口的功能外,在特定的管脚上还可以完成一些特殊的功能。7定时器/计数器 SPCE061A 提供了 2 个 16 位的定时器/计数器:TimerA 和 TimerB。TimerA 为通用计数器;TimerB 为多功能计数器。TimerA
12、 的时钟源由时钟源 A(高速时钟源)和时钟源 B(实时时钟 32 768Hz)进行“与”操作而形成,TimerB 的时钟源仅为时钟源 A。8时基 时间基准信号,简称时基信号,来自于 32 768 Hz 实时时钟,通过频率选择组合而成。时基信号发生器的 2 个选频逻辑 TMB1 和 TMB2 为 TimerA 的时钟源 B 提供各种频率选择信号并为中断系统提供中断源(IRQ6)信号。此外,时基信号发生器还可以直接生成 2 Hz,4 Hz,1 024 Hz,2 048 Hz 以及 4 096 Hz 的时基信号,为中断系统提供各种实时中断源(IRQ4 和 IRQ5)信号。9模数转换器(ADC)和数模
13、转换器(DAC) SPCE061A 有 8 个 10 位模数转换通道,其中 7 个通道用于将模拟量信号转换为数字量信号,可能直接通过引线(IOA06)输入。另外有一个通道只作为语音输入通道,通过内置有自动增益控制放大器的麦克风通道(MIC IN)输入。实际上可以把 ADC 看作是一个实现模数信号转换的编码器。 SPCE061A 为音频输出提供了 2 个 10 位的数模转换器,即 DAC1 和 DAC2。DAC1,DAC2 转换输出的模拟量电流信号分别通过 AUD1 和 AUD2 管脚输出。 10串行设备接口 串行输入输出端口 SIO 提供了 1 个 1 位的串行接口,用于与其他设备进行数据通讯
14、。在 SPCE061A 内通过 IOB0 和 IOB1 这 2 个端口实现与设备进行串行数据交换功能。72.2.2 扩展部分实现系统扩展三个按键用于报时及校正时间。SPCE061A 的 DAC 为电流型输出,经负载电阻 R1、三极管 Q1 放大驱动扬声器 SPEAKER 放音,SPEAKER 可选用4 或 8 扬声器。IOA15 接一个 LED,到规定的作息时间用 LED 闪烁来表示,使用者可根据具体需要来控制电铃、播放提示语等。凌阳芯片的工作电压为 3.3v,通过 LM7833 可获得准确的 3.3V 电压。见图 1-28第 3 节 系统的软件设计硬件平台结构一旦确定,大的功能框架即形成。软
15、件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。由于编程多涉及到数值运算,比较复杂,用我们平时常用的汇编语言编程是很难实现的,这里我们选用了移值性好、结构清晰、能进行复杂运算的 C 语言来实现编程。 3.1 软件主程序程序按照结构化程序设计,所有功能都可通过调用子程序完成,主程序较简单,流程见 0。SPCE061A 具有低功耗的睡眠模式,在睡
16、眠模式下功耗电流可降到几个,这对于用电池供电的系统非常重要,睡眠模式可以通过按键中断唤醒。图 3-1 软件主程序流程图3.2 软件主要子程序3.2.1 键盘扫描子程序9由于机械触点的弹性作用,在键被按下或弹起时会出现电压抖动,从最初按下到接触稳定要经过数毫秒的弹跳时间,如图 3-2 所示。为保证键识别的准确,必须进行去抖动处理,去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根本上避免抖动;软件方法有很多种,本例中主要是利用主程序的循环扫描,主程序循环一次,扫描一次按键,当连续 N 次扫描到的键值都一样时,则说明是稳定的按键值。图 3-2 键盘按下过程3.2.2 万年历计算子程序利用 2Hz 中断做时钟源进行计时,每两次中断秒加 1,并进行年历计算,年历范围从 2001 年到 3099 年。在进行年历计算时,有平闰年计算问题。闰年的条件是:能被 400 整除,或者能被 4 整除,但不能被 100 整除。万年历调整子程序流程图见3-3