单片机课程设计(论文)-基于SPCE061A的万年历设计.doc_第1页
单片机课程设计(论文)-基于SPCE061A的万年历设计.doc_第2页
单片机课程设计(论文)-基于SPCE061A的万年历设计.doc_第3页
单片机课程设计(论文)-基于SPCE061A的万年历设计.doc_第4页
单片机课程设计(论文)-基于SPCE061A的万年历设计.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

洛阳师范学院毕业设计/论文2013届本科毕业论文(一号黑体居中)基于SPCE061A的万年历设计(二号黑体居中)院 (系) 名 称物理与电子信息学院(小三号黑体)专 业 名 称物理学(小三号黑体)学 生 姓 名学 号指 导 教 师完 成 时 间2013年5月8日(小三号黑体)目 录摘 要IABSTRACTII绪论1第一章 方案论证2第二章SPCE061A单片机硬件结构42.1 SPCE061A单片机的结构42.2 SPCE061A芯片的信号引脚52.3 功能分区与工作原理7第三章SPCE061A实验板的焊接及测试113.1焊接前准备113.2 用万用表判别器件的管脚113.3 焊接流程123.4 测试步骤13第四章 万年历程序设计164.1显示部分设计164.2绘制原理图164.3主程序流程图194.4按键模块204.5程序代码214.6程序编译及下载调试22总 结24参考文献25附录26河南机电高等专科学校毕业设计/论文摘 要随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,Digital Signal Processing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的CPU内核采用凌阳最新推出的nSP(Microcontroller and Signal Processor)16位微处理器芯片。围绕nSP所形成的16位nSP系列单片机采用的是模块式集成结构,它以nSP内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件。 nSP内核是一个通用的核结构。除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合。这样做无疑会使每一种派生产品具有更强的功能和更低的成本。本设计主要介绍16位的具有语音功能的SPCE061A单片机。本设计共分为4章,简单阐述了SPCE061A的内核结构、性能、原理、开发应用方法、61板的焊接、集成开发环境(IDE)及程序开发流程等。关键词:SPCE061A单片机、原理、焊接、IDE。ABSTRACT With the development of integrated SCM function, its applications have gradually from the traditional control, extended to control processing, data processing and digital signal processing (DSP, Digital Signal Processing) and other fields. Sunplus 16-bit microcontroller is to adapt to this development and design. Its CPU core with Sunplus latest nSP (Microcontroller and Signal Processor) 16-bit microprocessor chip. Formed around the nSP nSP 16-bit single chip integrated with the modular structure, it is to nSP core-centric integration of different sizes of ROM, RAM, and feature-rich components of various peripheral interfaces .nSP core is a common nuclear structure. In addition to the other modules are optional structures, that is, the structure can be very flexible or optional. With this general structure of an additional optional modular structure of the composition, can be derived form a different series of products to suit different applications. This will undoubtedly each derivative products more features and lower cost. This design introduces 16-bit microcontroller with voice-enabled SPCE061A. The design is divided into four chapters, briefly addressed the SPCE061A core structure, performance, theory, development and application of methods, 61 plate welding, integrated development environment (IDE) and application development process and so on.Key words: SPCE061A SCM, principles, welding, IDE. II绪论随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在的电子钟,人类不断研究,不断创新纪录,直至到人类发明了电子万年历。该电子产品采用独立芯片控制内部数据运行,以LED夜光数码显示日期、时间、星期、节气倒计,以及温度等日常信息,糅合了多项先进电子技术及现代经典工艺打造的现代数码计时产品。它的诞生让人类在时间概念上有了更为形象、更为方便的立体式认识。电子万年历作为电子类小设计中的宠儿,它具有非常好的开放性与可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力,更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历中已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还能够继续扩展处更多的功能。基于电子万年历的种种优越性和挑战性,我决定把自己的毕业论文取向定位为电子万年历的制作与设计上。目前,国内外电子界对于万年历的开发与设计可谓是百花齐放,百家争鸣。能用于制作电子万年历的单片机也是形形色色,包括AT89C51单片机、同系列的AT89C52单片机以及凌阳出品的SPCE061A单片机等。这些单片机在性能和作用上各有千秋,在接下来的一章里我将比较一下这三种单片机的优缺点,并通过方案论证来选择所需要的单片机类型。第一章 方案论证第一种方案是使用AT89C51单片机,它的结构和功能如下:4k字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。该单片机由于不具备ISP在线编程技术,当在对电路进行调试的时候,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片多次拔插会对芯片造成一定的损坏。相对于51单片机,第二种方案中的AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52功能特性兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM,32个双向I/O口 256x8bit内部RAM,3个16位可编程定时/计数器中断 时钟频率0-24MHz,2个串行中断 可编程UART串行通道,2个外部中断源 共6个中断源,2个读写中断口线 3级加密位,低功耗空闲和掉电模式 软件设置睡眠和唤醒功能。第三种方案则是凌阳科技推出的16位结构单片机SPCE061A,它具有丰富的中断源和时基,方便电子万年历的设计。它的准确度相当高,并且在C语言和汇编兼容的编程环境也很方便来实现一些递归调用。I/O口的功能叶比较强大,方便使用。用凌阳16位单片机做控制器最有特色的就是它的可编程音频处理,可完成语音的录制播放和识别。该单片机内置有2路DA转换,8路AD转换及在线仿真等丰富的功能,这些都为我们实现具备语音报时功能的红外测温计提供良好的方便条件,红外测温打破了传统的测温模式,并且具备回应速度快、测量精度高、测量范围广和可同时测量环境温度和目标温度的特点。这些都方便对设计进行扩展,使设计更加完善,成本也相对更低一些。综合性能与性价,我选择在本设计中使用SPCE061A。在接下来的章节我将着重介绍SPCE061A单片机以及电子万年历的制作。另外,还有必要简单介绍一下显示部分的方案选择。第一种方案,选择液晶显示方式。液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕上会有明显的闪烁。而且由于61板的存储空间容量不够的限制,液晶显示就不能够与语音播报程序同时实现。这些缺点都会极大地影像电子万年的性能。相比液晶显示,采用8段数码管,不仅经济实惠,在效果上也可以加入语音报时功能,操作起来相比较液晶显示来说,虽然繁琐了很多,但是总体上还是可以做到人性化的程度的。因此,最后还是选择LED数码管显示方案。第二章SPCE061A单片机硬件结构SPCE061A 是继nSP系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使nSP能够非常容易地、快速地处理复杂的数字信号。本章主要介绍SPCE061A单片机的内部结构、引脚功能、工作方式和时序。2.1 SPCE061A单片机的结构SPCE061A的结构如图2.1所示:图2.1 SPCE061A的结构SPCE061A单片机具有以下基本特征:(1) 16位nSP微处理器;(2) 工作电压(CPU) VDD为2.43.6V (I/O) VDDH为2.45.5V;(3) CPU时钟:0.32MHz49.152MHz ;(4) 内置2K字SRAM;(5) 内置32K FLASH;(6) 可编程音频处理;(7) 系统处于备用状态下(时钟处于停止状态),耗电仅为2A3.6V;(8) 2个16位可编程定时器/计数器(可自动预置初始计数值);(9) 2个10位DAC(数-模转换)输出通道;(10) 32位通用可编程输入/输出端口;(11) 14个中断源可来自定时器A / B,2个外部时钟源输入;(12) 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;(13) 锁相环PLL振荡器提供系统时钟信号;(14) 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;(15) 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;(16) 具有低电压复位(LVR)功能和低电压监测(LVD)功能;(17) 内置在线仿真电路ICE(In- Circuit Emulator)接口;2.2 SPCE061A芯片的信号引脚SPCE061A有两种封装片,一种为80个引脚,LQFP80封装形式,它的排列如图2.2所示;另一种为84个引脚,PLCC84封装,它的排列如图1.2所示。图2.2 SPCE061APLCC84封装排列图在PLCC84封装中,有15个空余脚,用户使用时这15个空余脚悬浮。在LQFP80封装中有9个空余脚,用户使用时这9个空余脚接地。此处以LQFP80封装管脚功能介绍。在下面的表格中,将为大家展示出SPCE061A单片机PLCC84封装的管脚描述表。管脚名称管脚编号类型描述IOA15:84639输入输出IOA15:8:双向IO端口IOA7:03427输入输出IOA7:0:通过编程,可设置成唤醒管脚 IOA6:0:与ADC Line_In输入共用IOB15:115054输入输出IOB15:11 :双向IO端口。IOB100除用作普通的IO端口,还可作为: IOB1057输入输出IOB10:通用异步串行数据发送管脚TxIOB958输入输出IOB9:TimerB脉宽调制输出管脚BPWMOIOB859输入输出IOB8:TimerA脉宽调制输出管脚APWMOIOB760输入输出IOB7:通用异步串行数据接收管脚RxIOB661输入输出IOB6:双向IO端口IOB562输入输出IOB5:外部中断源EXT2的反馈管脚IOB463输入输出IOB4:外部中断源EXT1的反馈管脚IOB364输入输出IOB3:外部中断源EXT2IOB265输入输出IOB2:外部中断源EXT1IOB166输入输出IOB1:串行接口的数据传送管脚IOB067输入输出IOB0:串行接口的时钟信号DAC112输出DAC1数据输出管脚DAC213输出DAC2数据输出管脚X32I 2 输入32768Hz晶振输入管脚X32O 1 输出32768Hz晶振输出管脚VCOIN 70 输入PLL的RC滤波器连接管脚AGC 16 输入AGC的控制管脚MICN 19 输入麦克风负向输入管脚MICP 21 输入麦克风正向输入管脚V2VREF 14 输出电压源2.0V产生5mA的驱动电流,可用作外部ADC Line_In通道的最高参考输入电压,不可作为电压源使用MICOUT 18 输出麦克风1阶放大器输出管脚,管脚外接电阻决定AGC增益倍数OPI 17 输入麦克风2阶放大器输入管脚VEXTREF 23 输入ADC Line_In通道的最高参考输入电压管脚VMIC 25 输出麦克风电源VADREF 22 输出AD参考电压(由内部ADC产生) VDD 5,69 输入逻辑电源的正向电压VSS 10,26,71 输入逻辑电源和IO口的参考地VDDIO 37,38,56 输入IO端口的正向电压管脚VSSIO 35,36,48 输入IO端口的参考地AVDD 24 输入模拟电路(A/D、D/A和2V稳压源)正向电压AVSS 15 输入模拟电路(A/D、D/A和2V稳压源)参考地 RESET 68 输入低电平有效的复位管脚SLEEP 49 输出睡眠模式(高电平激活) ICE 7 输入激活ICE(高电平激活) ICECLK 8 输入ICE串行接口时钟管脚ICESDA 9 输入输出ICE串行接口数据管脚TEST 3 输入测试模式时接高电平,正常模式时接地GND或悬浮ROMT 47 输入测试闪烁存储器,正常模式时悬浮N/C 55 输入正常使用时接地N/C 4 输入正常使用时接地N/C 6 输入正常使用时接地PFUSE,PVIN20,11 输入程序保密设定脚。用户慎重使用。 表2.1 管脚描述表2.3 功能分区与工作原理(一) 电源区:电源部分原理图如图2.3图2.3电源部分原理图61板采用3节5号电池进行供电,由J10接入。其中的前后两组电容用来去耦滤波,使其供给芯片的电源更加干净平滑。为了获得标准的3.3V电压在板子上加入SPY0029三端稳压器。两个二极管,是为防止误将电源接反造成不必要损失而设置的,在操作过程中千万不要将电源接反,因为反向电压超过一定的值,二极管将会被损坏,达不到保护的目的。后面的零电阻及其电源、地分成不同的几路是为减少电磁干扰设置的。(二) 程序下载区:下载区原理图如图2.4图2.4 下载区原理图ICE 基本运作方式是通过控制clock 及通过ICE 喂入指令方式,来控制CPU 的运行及缓存器资料和内存资料的存取,因此必须透过控制缓存器值的设定来控制目前CPU 的动作.每个相连接的不同ICE模块都拥有自己独特的3-bit ID,当PC在传送control信号时都会先传送该3-bit ID,只有ICE本身的ID和control信号的ID 相同时才会执行该命令或回传资料。61板上的74HC244主要在我们选用下载线的时候起作用,主要奇缓存的作用和完成SDA是作为数据回送还是数据下传的选择。(三)音频输入部分:图2.5音频输入外围电路如图1.5所示电路, MICP和MICN将随着MIC产生的波形变化,并在两个端口处形成两路反相的波形,再经过两级运放放大,把放大的语音信号交给ADC转换为数字量,这个时候我们就可以通过单片机编程对这些数据进行处理,比如说语音数据压缩、语音识别样本处理。(四)音频输出部分:SPY0030是凌阳公司开发的专门用于语音信号放大的芯片,它的增益如下图2.6所示:图2.6音频输出部分(五)按键部分:按键是通过通断控制来实现它的功能,61板上的按键在没按下时,它的1、3脚是断开的,当按下时这两个脚是连通的。若此时我们在1脚接一个高电平,把第三脚连到一个I/O口上,这就形成了一个人机操作界面,通过编程对I/O扫描,单片机就能识别到我们的按键命令。 SPCE061A 与周边区域:这就是整块板子的大脑,所有控制信息都是从这里发出的,那些周边器件用来协助SPCE061A 单片机正常工作。复位区:这里是由几个简单的电子元器件组成,当按下这里面的按键后,单片机就重新开始工作,也可以说成是单片机里的程序从第一条开始重新运行。端口区:用于对外挂硬件的控制,或者获取外部硬件的一些状态以便SPCE061A 来进行处理。第三章SPCE061A实验板的焊接及测试3.1焊接前准备1焊料与焊剂的选择焊料:一般常用焊锡作焊料。因为它具有较好的流动性和附着性。在一定是温度、湿度及振动冲击条件下有足够的机械强度。而且具有耐腐性,使用方便的优点。所以我选择用焊锡作为焊料。焊剂:除去焊料外,我还要用到焊料,它的作用是除去油污,防止焊件受热氧化,增强焊锡的流动性。2电烙铁与电烙铁头的选择常用的电烙铁有外热式、内热式和速热式三种。一般来说电烙铁的功率都是不能过大的,因此考虑到安全操作的因素,我就选用 20W50W 的电烙铁就可以了。3焊点质量焊点的质量直接关系到整块电路板能否正常工作,作为电子系的一名学生,这是我要学会并掌握的基本功,因此在该方面我也不可以懈怠。要努力避免出现虚焊,这就需要我搞好清洁处理。焊接时使电烙铁头与焊接元件及铜箔接触面积要尽可能大些。3.2 用万用表判别器件的管脚1. 二极管的判别方法在判别的过程中,我把万用表拨至X100 或 X1K 档,用两个表笔分别接触二极管的两个引出脚。在判别的过程中,我发现表针的示数较小时,得出与黑表笔相接的引出脚为正极的结论。接着我调换两个表笔再测量,表针的示数显示比较大的时候,我得出了该二极管是没问题的结论,并且原先判明的极性是正确的。2. 三极管的判别方法在判别出管型和基极 b 的基础之上,先任意假定一个电极为 e 极,另一个为 c 极,将万用表拨动至 X1K 档,对 NPN 型三极管,令黑笔接 c 极,红笔接 e 极,再用手捏一下管子的 b、e 极,注意不要让两个电极直接接触,并观察一下表针向右摆动的幅度,然后使假设的 c、e 极对调,重复以上测试步骤。哪次表针的摆幅大,则该次的假设与实际情况相符。3. 欧姆表使用的注意事项(1)用欧姆表测电阻,每次换挡后和测量前都要重新调零 (2)测电阻时待测电阻不仅要和电源断开,而且要和别的元件断开 (3)测量时注意手不要碰表笔的金属部分,否则将人体的电阻并联进去,影响测量结果 (4)合理选择量程,使指针尽可能在中间刻度附近,参考指针偏转在R中/55R中的范围(或电流表指针偏转满度电流的1323)若指针偏角太大,应改接低挡位,反之就改换高挡位读数时应将指针示数乘以挡位倍数 (5)实际应用中要防止超量程,不得测额定电流极小的电器的电阻(如灵敏电流表的内阻) (6)测量完毕后,应拔出表笔,选择开关置于 OFF挡位置,或交流电压最高挡;长期不用时,应取出电池,以防电池漏电。以上操作经常被同学所忽略,因此,在这个地方我简单地做个提醒,毕竟作为电子类的学生,这是我们必须要掌握的基本技能。3.3 焊接流程焊接前我再次地认真对照原理图,仔细查看印刷电路板,找到对应元件的功能区后,我就开始准备元件和工具。此电路板焊接要求使用25W左右尖烙铁,下面详细叙述我的焊接的步骤:第一步:61裸板检测电源部分:目的:检测61板裸板电源部分是否短路方法:利用万用表检测61板上U3的第一脚和第三脚之间是否短路,无短路则说明61板电源部分是正常。端口部分:目的:检测61板裸板相邻端口部分是否短路方法:用万用表测量相邻端口是否短路,无短路则说明端口部分是正常。第二步:检测元器件、并做器件整形用万用表检测12个电解电容、16个独石104、3个独石224是否短路,短路的器件需更换(有条件的可采用电容表逐个测试)。利用万用表检测4个按键,按键按下后看1、3脚是否接通,是则说明按键正常。先将单排插针掰开,分别为10PIN 4个、5PIN 1个、3PIN和2PIN 各1个。将所有检测过的电阻、电容、二极管按电路板间距把引脚折弯,以便插到电路板上。第三步:焊接61板的步骤遵从从低到高的焊接原则,并且为确保焊接一次成功。我是按照以下18个步骤进行焊接,各类元件焊接顺序由表3.1的序号大小来决定,序号小的需要先焊。SPY0029电阻(18个)二极管(3个)晶振独石电容(19个)瓷片电容(5个)电解电容C33、C35电源整体初测电源器件初测完成所有电解电容的焊接(12个)焊接按键&电位器发光二极管电源座第二次电源测试单排插针五针座麦克风芯片座焊接管脚修整。3.4 测试步骤3.4.1硬件测试部分首先应该检查电路板是否有虚焊,虚焊很有可能造成最后结果的不正确或是在整个过程中出现接触不良的现象。所以在焊接时一定要注意焊接的技巧和方法。测试工作可贯穿整个焊接过程,即在焊接好一个元件后就用数字万用表测量它的导通情况。若万用表有蜂鸣声发出,则说明已导通,否则可能出现了短路现象。当所有元件都已焊接完毕并且都处于良好的导通状态下,就将进入后期测试过程,即测试一些重要引脚上的电压是否是正常的工作电压,主要有:电源电压5V或接近5VVDDH、VDD引脚上的电压分别是3.5v和3v。一、电源部分:在板子的左上角。以下就采用万用表分别测试以下12个点的电压,注意数字万用表的使用方式(黑色的表笔接电源“-”端,红色的表笔接电源“+”端),些时请勿将芯片插入座中,以免电源部分有问题告成芯片烧坏。第一步:测试61电路源和地是否有短路;断开电源并拔掉电池盒,将J5的2、3脚用跳线帽短接;用万用表测量J10的两脚的电阻是否为零;如果电阻为零,表示焊接过程中可能有短路,应进行电源部分的排查;如果电阻大于300欧,表示正常。第二步、测试61板电源部分器件是否工作正常;首先,电池盒接到J10处,将电池盒开关拔到ON处;如果D1亮了表示正常。D1没点亮,电源器件有问题,按说明书排查。最后电源部分一些器件引脚的电压进行测试,如果电压正常,则进行下一步的测试。第三步:测试61板上各器件电源供电是否正常;用跳线冒把S5的1、2脚短接;测试U1的第7脚电压3.3v左右;测试U4的第20脚电压3.3v左右;测试J4的第1脚电压3.3v左右;测试U2的第7、8脚电压4.5v左右;测试J6、J7、J8、J9的+端电压4.5v左右;如果电压正常进入下一步测试。不正常在供电的某个传输方向上出现了问题,对照原理一步一步的进行排查。二、 键盘部分:1. U1 U2 U4 芯片座中不安放元件:给61板通电,万用表选择电压档,利用万用表的负极接板子的地,万用表笔的正端分别检测接IOA0、IOA1、IOA2;2. 用万用表笔的正端放在IOA0上时,按下KEY1键,读取万用表上的电压值并记录,之后用同样的方法分别检测KEY2、KEY3电压值;如果电压为零,不正常;应更新按键,重新测试按键部分;电压不为零;正常,进入下一部测试。3. 调试步骤:第一步:硬件连接。电源连接,可接3接电池,也可以直接连接5V的稳压源;在线调试(PROBE)的连接,一端接PC机并口,一端接61板的5针接口 J4,跳线要连接S5的1与2。如果使用EZ-PROBE,将一端接PC机的并口,一端接61板的5针接口J11,跳线要连接S5的2与3;喇叭连接,直接接61板的J3。第二步:打开IDE,在安装路径下(example/61-Exa)找到SpeechClock项目文件(speechclock.spj)并打开;第三步:下载程序:检查PROBE是否连接好,程序放在主菜单build-StartDebug下;如果使用EZ-PROBE,操作同上,只是注意IDE下选择EZ-PROBE模式。3.4.2软件调试部分在程序编写完成后,就进入程序的调试过程。在IDE环境下,单击Debug菜单项,选择Download,将程序文件编译生成可执行文件。若调试出错,应修改程序,再进行调试,直到程序调试通过为止。下载软件测试程序:1、模拟部分的测试:主要有晶振部分,I/O部分和音频输出部分的测试,当测试时会有语音输出I/O测试成功。2、数字部分的测试:断开电源,数字万用表选择鸣叫功能,查看74HC244外围电路是否连接正确。3、D/A和A/D部分测试:用排线分别将IOA口的低8位和IOB口的低沉位相连,IOA口的高8位和IOB口的高8位相连,然后按下RESET复位键S4。短接J2的左边两脚短接,听到“I/O测试成功”。4、输出部分测试:看喇叭是否有响声。5、在进行程序下载时要注意当下载完程序后要关掉电源,因为61板所能够支持的热量是有限的当板子过热时就会影响下载程序的结果。如果发生播报的错误是因为板子使用过长所造成的就应该过一段时间再使用,不然很有可能会所芯片损坏。按以上步骤执行后就可以将已经修改好的程序下载到芯片上,按设计要求通过对程序的不断修改来实现电路板的功能。程序实现了以后,通过按键就可以控制语音报时系统。按K1键就可以播报年月日,K2键播报时间,通过K3键对系统时间或年月日进行调整(注意:调整时间或年月日时,要连续按K2或K1键3秒钟)。例如:按K1它播报“2006年1月1日”。按K2播报“现在时刻上午0点0分”。如需调整时间则持续按K2键不少于3秒,接着按K3键先对小时进行调整,然后调整分钟。同理K1键的调整操作。第四章 万年历程序设计在这一章我将着重介绍通过SPCE061A凌阳单片机如何设计出电子万年历。本章的内容主要包括硬件电路的设计、程序设计流程以及软件编写等内容。4.1显示部分设计基本显示原理:时钟开始显示为0时0分0秒,也就是说数码管显示的内容应该为000000,然后每秒秒位加1,到9之后,10秒位开始加1,秒位回至0。10秒位到5之后,即59秒,分钟加1,10秒位回至0。依此类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。同时,时钟达到最大值的时候天数也增加一位,直到显示了7后再变为1,同时阴历和阳历的天数也加1,根据不同的月份显示的天数阳历有28,29,30,31天,阴历就要经过计算得到了,到了12月后,年数自动增加1,依此类推,显示万年历的现实。另外,连接方式总电路图这里就不再介绍了,图4-1为显示部分的电路图:图4-14.2绘制原理图利用Protel 99的原理图设计系统来绘制电路原理图。将原理图按照程序下载区、音频输出、语音输入、电源分模块设计。1程序下载区(ICE)ICE基本运行方式是通过控制clock及通过ICE伪指令方式,来控制CPU的运行及缓存器资料和内存资料的存取,因此必须通过控制缓存器值的设定来控制目前CPU的动作。61板上的74HC244主要是在我们用下载线进行程序下载时起作用,主要起缓存的作用和完成对SDA是用来作为数据回送还是数据下载进行选择。见图4-2。图4-2图4-3为74HC244芯片引脚排列图。74HC244芯片可以控制SDA信号的高低电平,这样可以使用ResWriter工具发出符合烧写芯片的时序信号,完成对芯片的擦除、写入与校验功能。1A1 1Y11A2 1Y21A3 1Y31A4 1Y4 2Y12A1 2Y22A2 2Y32A3 2Y42A4 GND1 2VCC 图4-3 74HC244引脚排列图2.音频输入部分此模块主要通过MICROPHONE把我们所要求语音信息进行的输入。再由SPCE061A对采集的语音信号进行处理,将提取的说话人特征参数与存储在外扩FLASH内的特征参数模板进行匹配。见图4-4图4-43.语音输出模块如图4-5图4-5音频输出电路图4.电源模块如图4-6,61板采用3节5号电池进行供电,由J10接入。其中的前后两组电容用来去耦滤波,使其供给芯片更加平滑。为了获得标准3.3V电压,在板子上加入SPY0029A三端稳压器。两个二极管,是为防止误将电源接反造成不必要损失而设置的,在操作过程中千万不要将电源接反,因为反向电压超过一定的值,二极管将会被损坏,达不到保护的目的。后面的零电阻及其电源、地成分不同的几路是为了减少电磁干扰设置的。图4-6电源模块4.3 主程序流程图在编程中,运用了很多程序模块,程序模块中的文件大致可以分为两大类:一类是程序,一类是程序接口。所谓接口一般是指针对高一级的模块而言,通过接口,高一级的程序模块可以调用本级程序模块中的子程序或函数,或者使用本级模块中定义的全局变量。这样可以大大增加软件的可维护性,而程序既可以用C语言编写,也可以用凌汇编语言编写。主程序流程图如图4-7所示:图4-7主程序流程图4.4按键模块由图可以看出按键最后要实现的功能,程序控制KEY键主要是实现复位、按K1键实现年、月、日的播报,K1键播报“*年*月*日”;当K1按下持续3秒以上时K1键进入调时状态,此时用K3键对年、月、日进行递增调整,要完成此过程必须先要判断是否K1键按下才能对年、月、日进行调整。如果要回到默认值状态可按KEY键进行复位操作。调整年、月、日按键流程图如4-8所示:KKEY2/K3?大于2秒小于3秒KEY2加一小时KEY3KEY2KEY3KEY2键按下 几秒调整当前时KEY2/KEY3?调整当前分KEY2/KEY3?加一分播报当前时分返回主程序图4-8 调整年月日按键程序流程图由图可以看出按键最后要实现的功能,程序控制KEY键主要是实现复位、按K2键实现时分的播报,K2键播报“报时声,现在时刻,上午/下午/凌晨*时*分”当K2键按下持续3秒以上时K3键可对时、分进行递增调整,所以此过程必须要判断是否是K2键按下才能对时、分进行调整。如果要回到默认值可按复位键KEY进行复位操作。调整时、分的流程图如图4-8所示:KKEY2/K3?大于2秒小于3秒KEY2加一小时KEY3KEY2KEY3KEY2键按下几秒?调整当前时KEY2/KEY3?调整当前分KEY2/KEY3?加一分播报当前时分返回主程序图4-9 调整时分流程图4.5程序代码if(Key=1 & KeyStatus=0 ) /keystate 校时状态还是报时状态,1-校时 bou=1; KeyCount=1; /按键计数单元 Key=0; if(bou=1&Key=0x8001 & KeyStatus=0 ) KeyCount+; Key=0; if (bou=1&KeyPressFlag=0 & KeyCount0 ) if(KeyCount=20) /进入调整时间状态 KeyCount=0; KeyStatus=1; KeyAdjust=0; TimeCount = 0; Start256HzRTC(); PlayAdjustTime(KeyAdjust); 4.6程序编译及下载调试将所有的程序进行编译无错误提示后,下载程序到61板中,即设计部分结束。程序下载区(ICE):ICE基本运行方式是通过控制clock及通过ICE伪指令方式,来控制CPU的运行及缓存器资料和内存资料的存取,因此必须通过控制缓存器值的设定来控制目CP的动作。61板上的74HC244主要是在我们用下载线进行程序下载时起作用,主要起缓存的作用和完成对SDA是用来作为数据回送还是数据下载进行选择。总 结这几个月期间我们主要进行了61板电子实习。本设计利用凌阳SPCE061A单片机设计电子万年历,凌阳单片机是凌阳公司专为学生和电子爱好者所设计的专用单片机。通过61板的基本功能,以及从凌阳单片机介绍及内部器件到SPCE061A的各种I/O接口以及如何进行编程分别为我们介绍了汇编语言与C语言,让我们在编程当中有了足够的资料来编写语音报时系统。在完成了电路图和PCB板的设计以及理论知识,我们又对61板进行了焊接,在完成了61板的焊接之后我们也要对它进行测试。实现了语音的播报功能。通过对单片机的学习,明白了凌阳单片机的系统各模块工作原理,然后根据SPCE061A单片机的各种功能设计出了电子万年历。突出了理论与实际相结合,基础实验与综合技能训练相结合的模式。参与本次设计,我也有不少收获:第一、系统而比较全面地检查了我所学的专业知识,补充了我未学的专业知识,对一个产品的开发的步骤有一定的认识。“查漏补缺”的同时进一步巩固了专业知识,锻炼了自己。第二、训练了我的动手能力。焊接元件,实际操作让我真正地理解了“学以致用”的含义。第三、在学习怎样开发SPCE061A板的同时也使我们对相应的软件环境有了更进一步的认识和了解。第四、使我真正意识到团队合作的重要性。一个产品的诞生,离不开设计参与者的文化素质,更离不开他们的团队精神。所有的参与者都是优秀的,但谁都不是最优秀的。第五、发掘自我潜能,重视能力,注重培养自己的兴趣与爱好。学习分析和解决问题,不要因为困难而害怕困难,只有坚持才能够取得最后的成功。参考文献1凌阳科技大学计划技术资料.跟我学SPCE061A 单片机2罗亚非等.凌阳16位单片机应用基础.北京航空航天大学出版社.20053雷思孝等.凌阳16位单片机原理及应用.西安电子科技大学出版社.20044李广第.单片机基础.北京航空航天大学出版社19995徐惠民、安德宁、单片微型计算机原理接口与应用.北京邮电大学出版社.19966肖洪兵.单片机应用技术.自编教材7李朝青等.单片机原理及接口技术.北京航空航天大学出版社.2000附录:1闰年的判断:闰年的条件:能被4整除,但不能被100整除的年份是闰年,如2004年是闰年;能被100整除,又能被400整除的年份是闰年,如2000年是闰年。不符合这两个条件的年份都不是闰年。实现:如果逻辑表达式( year%4=0 & year%100!=0 | year%400=0 )的值为真,则为闰年,否则不是闰年。2某年某月某日是这一年的第几天:加啦(前N个月的天数+该月日期),不难吧。如2004年3月12日是这一年的第(31+29)+12=72天,记住了闰年2月是29天哦。3.某年某月某日是星期几年算法:求(year-1)+(year-1)/4-(year-1)/100+(year-1)/400)+days)%7的余数,余数为0(星期日),为1(星期一),为2(星期二),为6(星期六)。如2004年3月12日为(2004-1)+(2004-1)/4-(2004-1)/100+(2004-1)/400+72)%7=5,为星期五。适用于51系列单片机的一种万年历优化算法源程序一、 阳历算法具体算法见函数Void get_solar_day_date(void),这样阳历日历的星期排法就确定了。表1:月份 1 2 3 4 5 6 7 8 9 10 11 12 闰年 31 29 31 30 31 30 31 31 30 31 30 31 非闰年 31 28 31 30 31 30 31 31 30 31 30 31 变量定义:Public:Unsigned int temp_total_day;Uns

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论