为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

语音播报记事器

2017-12-06 50页 doc 118KB 105阅读

用户头像

is_624976

暂无简介

举报
语音播报记事器语音播报记事器 题 目 语音播报记事器 英文题目 The pronunciation disseminates the news record 学生姓名 班 级 指导教师 专 业 自动化 二零零六 年 六 月 毕业设计(论文) 摘要 摘要 本设计以单片机为基础,能够完成对语音信息的录制、播放以达到对人们的提醒。其中包括整机硬件电路的设计和全部软件部分的设计。 该语音播报系统由LED显示电路模块、按键电路模块、蜂鸣电路模块、语音录放模块和串行时钟模块组成。主机是以Intel公司的8051单片机为核心芯片,外...
语音播报记事器
语音播报记事器 目 语音播报记事器 英文题目 The pronunciation disseminates the news record 学生姓名 班 级 指导教师 专 业 自动化 二零零六 年 六 月 毕业(论文) 摘要 摘要 本设计以单片机为基础,能够完成对语音信息的录制、播放以达到对人们的提醒。其中包括整机硬件电路的设计和全部软件部分的设计。 该语音播报系统由LED显示电路模块、按键电路模块、蜂鸣电路模块、语音录放模块和串行时钟模块组成。主机是以Intel公司的8051单片机为核心芯片,外接主要芯片包括语音芯片ISD1420和串行时钟芯片DS1302。能够实现显示当前时间、录制和播放语音信息、调整当前时间、设置闹钟时间并且在到闹钟时间后,能够以语音的形式进行提醒并以蜂鸣提示。 该设计的主要特点是:设计以语音的形式进行提醒,改变了以人们以单纯无声的书本记录,并且设计能够显示和修改当前的年份、月份、星期,完全可以作为一般的钟表来使用。此外,文章力求语言流畅、条理清晰、深入浅出,能为一般的读者所读懂。 关键词 单片机;语音信息;闹钟 i 毕业设计(论文) Abstract Abstract This design take the monolithic integrated circuit as a foundation, can complete to pronunciation information transcribing,the broadcast by achieves to people's reminder. Including entire machine hardware electric circuit design and complete software partial designs. This pronunciation disseminates news the system by the LED display circuit module, the pressed key electric circuit module, the buzzing electric circuit module, the pronunciation recording and sending out module and the serial clock module is composed. The main engine is take the Intel Corporation's 8051 monolithic integrated circuits as the core chip, outside meets the main chip including pronunciation chip ISD1420 and serial clock chip DS1302. It can realize the demonstration current time, transcribing and the broadcast pronunciation information, the adjustment current time, the establishment alarm clock time and in after the alarm clock time, can carry on the reminder by the pronunciation form and prompt by the buzzing. This design main characteristic is: The design carries on the reminder by the pronunciation form, changed by the people by the pure silent books record, and designs can demonstrate and revise the current year, month, the week, definitely may take the common clock and watch uses. In addition, this article makes every effort the language smoothly, orderliness is clear, explains the profound in simple language, can read for the common reader. Key word Single-chip Microcomputer;information of pronunciation;alarm clock ii 毕业设计(论文) 目录 目录 摘要 绪论 ................................................................... 1 1. 系统的性能指标及要求 ................................................ 2 1.2 语音播报记事器的功能及主要组成 .................................... 2 1.3 系统主要设计框图 .................................................. 2 2. 系统硬件构成与实现 .................................................. 4 2.1 LED显示模块设计 .................................................. 4 2.2 按键电路模块设计 .................................................. 7 2.3 蜂鸣电路模块设计 .................................................. 9 2.4 语音录放模块设计 .................................................. 9 2.4.1 ISD1420芯片的介绍 ............................................ 9 2.4.2 ISD1420芯片与单片机的连接 ................................... 10 2.5 串行时钟模块设计 ................................................. 11 2.5.1 DS1302芯片 的介绍 ........................................... 11 2.5.2 时钟芯片与单片机的硬件连接 ................................... 12 3. 系统软件的总体构成与实现 ........................................... 13 3.1 语音播报定时器系统软件设计及框图 ............................. 13 3.2 电子播报记事器的主程序设计 ....................................... 14 4.1录音与放音模块设计 ............................................... 16 4.1.1 录音与放音选择模块设计 ....................................... 16 4.1.3 放音模块设计 ................................................. 17 4.1.4 录放音控制模块设计 ........................................... 18 4.2当前时间的调整与闹钟的时间设置模块设计 ........................... 19 4.2.1 当前时间的调整与闹钟的时间设置选择模块设计 ................... 19 4.2.2 调整当前时间程序设计 ......................................... 20 4.2.3 闹钟设置子程序 ............................................... 23 4.3 LED动态显示模块设计 ............................................. 24 4.4 产生一分钟时间模块设计 ........................................... 26 4.5键盘接收模块的设计 ............................................... 28 结论 .................................................................. 30 致 谢 ................................................................ 31 iii 毕业设计(论文) 目录 参考文献 .............................................................. 32 附录1 ................................................................. 33 附录2 ................................................................. 52 iv 毕业设计(论文) 绪论 绪论 计算机的发展经历了从电子管、晶体管、集成电路、到大规模集成电路共4个发展阶段。微型计算机是大规模集成技术发展的直接产物,属于第四代计算机。随着微型机的研制成功,不久就出现了单片微型计算机,又称单片机或微控制器。它在一块芯片上集成了中央处理器、只读存储器、随机存储器、定时/记数器以及I/O接口电路等主要计算机部件。换言之,它就是把微型计算机所有的功能部件都集成在一块芯片上了,故国内常称其为单片机。由于单片机体积小、质量轻、功耗低、价格便宜、控制能力强、运行稳定可靠,自问世以来,在各领域得到了广泛的应用。尤其是在近几年的工业控制、自动检测、智能仪器仪表、家用电器等领域发挥着不可替代的作用,使它不断拓宽应用范围,增添了新的活力。 随着电子技术的迅速发展,人类生活亦得到了根本性的改变。如果说微型计算机的出现使现代科学研究得到了质的飞跃,那么可以毫不夸张地说,单片机技术的出现则是给现代工业控领域带来了一次新的技术革命。 在这种瞬息万变的新形势下,全球的信息化使人们足不出户便可以获取全方位的知识和信息,与此同时人们的生活节奏也随之加快,竞争变得日趋激烈。因此,能够合理的安排和利用时间在日常的学习和工作中就显得尤为重要了。但是在充满压力的生活中,往往很容易因一时的疏忽就耽误已安排好的事情造成迟到或其他事件,甚至产生了严重的后果和经济损失。此时,若有一台智能语音记事器,将各种约定时间记录下来,按时进行语音提醒,就可以避免迟到、缺席事件的发生,从而给我们的工作和学习带来很大的方便。 单片机技术的发展为这一设想提供了技术基础。 在以MCS,51系列单片机为核心器件组成的一个语音提示系统中,其所具有的日历、能够随时对当前时间进行调整、随时输入定时播报(闹钟)时间等功能满足了人们的要求,使人们不再担心会忘记重要的约会。 1 毕业设计(论文) 系统性能指标及要求 1. 系统的性能指标及要求 为了使人们在日常生活中不会忘记已安排好的日程,本设计语音播报记事器采用了主意提示的方法去提醒人们,满足了人们的要求。 1.2 语音播报记事器的功能及主要组成 在通常情况下,人们总是通过如下的方式提醒自己:将将要发生的事情记录下来,这种发法虽然有效,但到时又难免忘记;再者就是将将要发生的事情的时间刻录在电子表类的仪器上,等时间到时,仪器便以蜂鸣的形式进行提醒,但如果时间太久了,虽然知道了事情的时间,却又容易想不起是什么事情。所以本设计语音播报记时器将采用语音播报的形式对人们进行主动提醒,不管时间有多久,它也能准确、及时地进行时间和语音播报的提醒。 本系统以8051单片机为核心器件,以语音芯片ISD1420和串行时钟DS1302芯片为辅助芯片,并通过一定的硬件电路连线,能够完成对语音的录制与播放,能够对当前时间进行调整各对提醒时间的设定,并且同时能以四位时钟LED显示出来。 有了这样的设计,相信人们在百忙的生活中就不会因一时的疏忽而耽误一些重大事宜。 本设计具备了语音的录入和提示功能,改变了以往的无声书本的记录方法,当你有什么重要的事情而又担心忘记时,你就可以对其进行录音,并设置好提醒时间,到时,它就会将录音内容播报出来,并在最后进行蜂鸣提醒。 除了具备电子记事本的功能外,本系统也可以当作钟表来使用,因为它具有四位LED数码管,可对当前时间进行显示,当时间发生差错时,还可以按照一定的方法进行调整,不会因时间无法调整而进行错误提醒。 有了语音播报记事器,你也不用担心会出现在录制了一次事情后而没有办法再次录制的情况,因为本设计能够进行五组录音,当某件事情已过去时,可以将以前的语音信息覆盖,再次进行录音。 此外,本系统对时间的设置是随意的,因为该设计具有标准的日历/时钟,即年、月、日、星期、时、分和秒,遇到闰年还可以自动修正。 有了这样的设计,相信人们在百忙的生活中就不会因一时的疏忽而耽误一些重大事宜。 1.3 系统主要设计框图 根据设计要求与设计思路,本系统采用单片机作为核心控制部件,采用可擦除、可分段语音处理芯片ISD1420记录语言以及其他外围电路组成语音提示系统。系统由实时时钟、语音录放控制、当前时间调整、提醒时间设置、LED译码/驱动、时间显示和语音处理等模块组成。系统设计框图如图1,1所示: 2 毕业设计(论文) 系统性能指标及要求 实时时钟RTC LED译码/ 4位时钟型 驱动模块 LED显示 单 提醒时间设置 片 扬声器 语音处理 机 模块 当前时间调整 送话器 语音录放控制 蜂鸣器控制 图1,1 系统设计框图 仅有这些硬件模块还达不到我们预期设计的目的,因此,我们要加入编程以实现电路设计的简洁优化,这其中包括系统对各组语音录放不同存放地址的设置及实现,对具体时间的规定和调整(如每星期的天数设定、每天的小时固定数字显示设定等),对记事器的定时中断等,从而达到预期的数据采集及传送的效果。 3 毕业设计(论文) 系统硬件构成与实现 2. 系统硬件构成与实现 在本章的硬件设计电路中,主要阐述了LED显示电路模块、按键电路模块、蜂鸣电路模块、语音录放模块和串行时钟模块六个模块。其中介绍了模块中所用到的主要芯片、硬件连线电路原理和各模块所实现的功能。 2.1 LED显示模块设计 为实现单片机应用系统中的人机对话,即人对应用系统的状态干预、数据输入或应用系统向人们显示运行状态结果等,需加入显示器、键盘等外围设备,这就是用来完成人机对话活动的人机通道。 在本系统的设计中,由系统硬件设计框图可知,这样的人机对话通道的显示电路由LED显示器、段驱动电路和位驱动电路组成。 (1)LED显示器的介绍 11 12 a D1 7 b 4 9 c D2 2 d dp , ,1 8 e D3 10 f 5 6 g D4 3 dp 图2,1 4,LED显示器引脚原理图 如图2-1所示,本设计中采用4位一体的时钟型LED显示器,简称“4,LED”,“:”的前2位显示“小时”的十位和个位 ,“:”的后2位显示“分”的十位和个位。 从其引脚可知,它是一个共阴极接法的4位时钟型LED显示器。4位一体时钟型LED显示器的内部结构如图2,2所示。它是由4个单独的LED和一个“:” LED组成,每个LED的段输出引脚在内部并联后,引出到器件的外部。 4 毕业设计(论文) 系统硬件构成与实现 段码输入端 abcdefgdpabcdefgdpabcdefgdpabcdefgdp dpdpdpdp D1D2D3D4位码输入端 图2,2 4,LED显示器内部结构原理图 (2)LED的段驱动芯片的介绍 在本设计中,可以选择74LS48作为段驱动电路。该芯片具有锁存、译码、驱动的功能。即在输入端输入要显示字型的BCD码,在输出端就可以得到具有一定驱动能力的7段显示字型码。 图2,3给出了74LS48的引脚图。引脚图中大写字母A、B、C、D为BCD码的输入端,小写字母a、b、c、d、e、f、g为字型码输出端。表2,1给出了74LS48BCD [3]段锁存/译码/驱动器的输入与输出信号的对应关系, 74LS48的作用是接收来自单片机的BCD码型的输入信号,经过锁存、译码和放大后,输出7段字型码到LED显示器,完成对BCD码到7段字型码的锁存、译码和驱动的功能。 116Bvdd215Cf314LTg413BI/RBOa512RBIb611Dc710Ad89VSSe 图2,3 74LS48芯片引脚图 5 毕业设计(论文) 系统硬件构成与实现 表2,1 74LS48BCD,7段码器输入/输出端信号对照表 输入端输出端电平 显示 输入端电平 输出端电平 显示 字型 电平 字型 DCBA DCBA g f e d c b a g f e d c b a 0000 011 1111(3FH) 0101 110 1011(6DH) 0 5 0001 000 0110(06H) 0110 111 1011(7DH) 1 6 0010 101 1011(5BH) 0111 000 0111(07H) 2 7 0011 100 1111(4FH) 1000 111 1111(7FH) 3 8 0100 110 0110(66H) 1001 110 1111(6FH) 4 9 (3)LED的位驱动芯片的介绍 本设计中采用的LED位驱动芯片是ULN2003,其引脚图如图2,4所示,其中IN1,IN7引脚是输入端,OUT1,OUT7引脚是输出端。该芯片的输入端引脚IN1、IN2、IN3 、IN4与单片机的P1口连接,输出端引脚OUT1、OUT2、OUT3、OUT4与LED显示器的4个位码引脚D1,D4相连接。ULN2003接收来自单片机的位码输入信号,经过反相放大后输出,送到LED显示器位码引脚,完成对位码信号的反向和驱动。 116IN1OUT1215IN2OUT2314IN3OUT3413IN4OUT4512IN5OUT5611IN6OUT6710IN7OUT789COMM 图2,4 ULN2003芯片的引脚图 (4)LED驱动电路与单片机的连接 单片机的P1口作为LED的输出接口,其低四位作为LED的段码输出信号,高四位 [1]作为LED位码的输出控制信号。硬件电路连接如图2,5所示。驱动中的上拉电阻保证了LED的可靠导通与截止。 6 毕业设计(论文) 系统硬件构成与实现 VCC VCCR11U1P1520R152916PSENWRR123017ALE/PRD1K11TXD100109R4RXDRESTVT25RBI18414X2BI/RBOg19315X1LTf9012289P27e2731P13610P26EA/VPDd26P12211P25Cc2514P11112P24T0Bb2415P10713P23T1Aa23P22221274LS48P21INT012112113D1P20INT1DISP1a7328P17bD2P07P1794337P16cP06P162346P15dP05P15110355P14U7eD3P04P148364P13P14115fP03P13IN1OUT15373P12P15214gD4P02P12IN2OUT263382P11P16313pP01P11IN3OUT3391P10P17412P00P10IN4OUT4511IN5OUT58051610IN6OUT679IN7OUT7 ULN2003 图2,5 LED驱动电路与单片机的连接 驱动电路的工作原理为:当P1口的低四位输出段码信号的BCD码后,通过74LS48芯片的锁存、译码和驱动,在其输出端输出具有一定驱动能力的七段字型码,并通过ULN2003的反向后驱动达到明确有序的动态显示的目的。P1口的控制信号及4,LED的显示状态如表2,2所示。 表 2,2 4,LED动态扫描显示状态 点亮 P1口输出控制字 74LS48输出段码 2003输出位码 g f e d c b a 顺序 D1 D2 D3 D4 位码 段码 1 1000 0000B(80H) 011 1111B(3FH) 0111 2 0100 0001B(41H) 000 0110B(06H) 1011 3 0010 0010B(22H) 101 1011B(5BH) 1101 4 0001 0011B(13H) 100 1111B(4FH) 1110 由于74LS48是BCD码7段译码器,对小数点位没有驱动作用,因此,必须给4,LED显示器中的“:”符号设计一个驱动电路。dp(“:”)的驱动电路由VT2、R11、R12器件组成,该电路的工作原理是:当VT2的基极为低电平时,VT2导通,dp段被点亮。即“:”与LED数码管的第二位一起被点亮;当VT2的基极为高电平时,VT2截止,dp段熄灭。 2.2 按键电路模块设计 本设计应用系统工作时应具备两项基本功能,一是随时输入定时(闹钟)时间,二是随时对当前时间进行调整。要实现这两项功能,可以接入键盘输入电路。 (1)键盘结构的介绍 7 毕业设计(论文) 系统硬件构成与实现 在本设计中选择的独立式键盘为五个按键,如图2,6所示,电路由按键和六个电阻组成,按键分别命名为“PLAY”、“REC”、“SET”、“ALM”、“,1”、“RET”键。 (2)键盘与单片机的接口电路设计 如图2,6所示,将“,1”键、“RET”键直接与单片机的P3.0与P3.1口连接;“SET”与“ALM”通过74LS08相与后连接到INT1口,“REC”与T0口通过74LS08相与后连接到INT0口,其中T0、T1口作为基本输入输出口使用。 PLAYS1 R71KRSTS2 R8200VCCU1C102916PSENWR,301722uFALE/PRD11TXD109RXDRESTC9R13B122PF18X21K19X1C828VCC12KHzP2722PF2731P20P26EA/VP26P21P2525142P22P24T024153RECS3P20P23T174LS08231P21P2222125SETS4P22P21INT021136P20INT174LS084ALMS5328P07P17337+1S6P06P16346P05P15355RETS7P04P14364P03P13373P02P12382P01P11391P00P10 8051 图2,6 按键与单片机的硬件连接 “PLAY”键所实现的功能是进行语音信息的播放, “REC”键是进行语音信息的录制。如果在单片机的INT0口产生一个中断,单片机先判断T0口是否是低电平,如果是,表明 “PLAY”键被按下了,就执行放音操作,如果不是,则表明按下的是“REC”键,程序转到录音操作。这两键可与“,1”、“RET”键的配合使用对进行不同地址段的录放、音选择。 “,1”键用来选择录音的段数,“RET”用来确认录、放音段已完成。 “ALM”键所实现的功能是进行闹钟时间的设置,“SET”键则是对当前时间进行调整。如果在单片机的INT0口产生一个中断,单片机先判断T1口是否是低电平,如果是,表明“ALM”键被按下了,单片机就去执行设置闹钟时间的操作,如果不是,表明按下的是“SET”键,则单片机就是执行对当前时间调整的操作。这两键可与“,1”、“RET”键同时完成各自的功能,“,1”键用来对调整位进行加1操作,“RET”用来确认调整位已修改完。 8 毕业设计(论文) 系统硬件构成与实现 键盘的硬件电路设计只能保证六个按键信号的可靠进入,要想完成键盘的输入功能,还要靠软件编程来具体实现。设置当前时间和闹钟时间的中断服务程序,请参考软件设计一节INTA、INTB子程序设计。 2.3 蜂鸣电路模块设计 本设计中选择了蜂鸣器来实现定时(闹钟)时间的声音提醒,其电路如图2,7所示,在单片机P2.7口通过限流电阻R9接入蜂鸣器(HA)作为三极管VT1的发射极负载,当P2.7,0时,VT1导通时,蜂鸣器中有电流通过,发出蜂鸣音。反之蜂鸣器 U12916不发声。 PSENWR3017ALE/PRD11TXDVCC109RXDREST 189012X219X1R928P272731100P26EA/VPVT126P252514P24T02415P23T123P222212P21INT0HA22113P20INT1GND328P07P17337P06P16346P05P15355P04P14364P03P13373P02P12382P01P11391P00P10 8051 图2,7 蜂鸣电路原理图 2.4 语音录放模块设计 在本设计中选用了ISD1420作为系统的语音芯片,在确保语音质量好的情况下使其元器件达到最少。 2.4.1 ISD1420芯片的介绍 ISD1420语音录放电路芯片由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。 电路外形图引出端功能说明: (1)A0-A7:地址输入端或控制命令输入端。当A7、A6同时为高电平时,A4-A0为控制命令;否则,A0-A7为地址。 (2)DGND:数字信号地线。 (3)AGND:模拟信号地线。 (4)SP-,SP+:音频信号输出端,连接8,16Ω扬声器。 (5)V+:模拟信号电源,,5V. (6)MIC:话筒参考输入端,通过电容耦合,连接驻极体话筒。 9 毕业设计(论文) 系统硬件构成与实现 (7)MICREF:话筒参考输入端。 (8)AGC:自动增益控制端,调整芯片内部前置放大器增益,使录入信号不失真。 (9)ANA IN:模拟信号输入端。 ANA OUT:模拟信号输出端。 (10)PLAYL:放音控制电平触发端。该端为低电平时,芯片进入放音同期;当该端为高电平时,停止放音。 (11)PLAYE:放音控制脉冲触发端。该端输入由高电平向低电平跳变的下降沿时,芯片进入放音周期。 (12)RECLED:录音显示端。该端接发光二极管,在录音时作悄音指示灯。 (13)XCLK:时钟控制端 (14)REC:录音控制端。该端为低电平时,芯片进入录音状态,录音期间该端必须保持低电平,REC信号的优先级高于PLAYL和PLAYE两种放音信号。 其芯片引脚如图2,8所示。 112828A0A0V+V+222727A1A1RECREC332626A2A2XCLKXCLK442525A3A3RECLEDRECLED552424A4A4PLAYEPLAYE662323A5A5PLAYLPLAYL772222NCNCNCNC882121NCNCANA OUTANA OUT992020A6A6ANA INANA IN10101919A7A7AGCAGC11111818NCNCMIC REFMIC REF12121717DGNDDGNDMICMIC13131616AGNDAGNDV+V+14141515 SP-SP-SP+SP+ 图 2,8 ISD1420的外部引脚图 在芯片的引脚中,模拟语音信号从MIC和MICREF两个端口输入,经放大器放大后又从ANAOUT端输出,然后通过外接耦合电容输入到ANAIN端,该信号再经适当放大后就可被时钟信号采样存储到EEPROM中。 2.4.2 ISD1420芯片与单片机的连接 为实现语音播报的录入和播放功能,我们在此接入了ISD1420语音芯片,并采用锁存器74LS377对其控制锁存达到良好的语音信息的录制与播报。其硬件电路图如图2,9所示。 10 毕业设计(论文) 系统硬件构成与实现 VD1GREEC7U20.001uF128A0VCCD216VCCA1VCCAQ0GND312A2VSSDQ1413A3VSSAQ2514A4SP+R10Q3615A5SP-Q4920R1A6ANA IN4.7KQ510,1KA7C2Q62321PLAYLOUTR14Q7240.1uFPLAYE2718RECMIC REFYS1VCC17GND1MIC VD2R625192RECLEDAGC26R31KXCLKREDHA1,10K1KC1GNDISD1420C3R25.1K220uF0.1uFPLAYS1C40.1uF,C6R4R54.7uFMIC1U1470K10K2916C5PSENWR3017ALE/PRD11GNDTXD1090.1uFRXDREST18X219X128P272731P26EA/VP26P252514P24T02415P23T1U323P22P0032Q02212D0Q0P21INT0P0145Q12113D1Q1P20INT1P0276Q2D2Q2P0389Q3P07328D3Q3P07P17P041312Q4P06337D4Q4P06P16P051415Q5P05346D5Q5P05P15P061716Q6P04355D6Q6P04P14P071819Q7P03364D7Q7P03P13P02373P02P12P2611P01382CLKP01P111P00391EP00P1074LS3778051 图2,9 语音芯片与单片机的连接 2.5 串行时钟模块设计 播报记事器除了有播放和录入的功能外,还具有作为时钟的显示功能及中断控制。 2.5.1 DS1302芯片 的介绍 DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能, DS1302的引脚如图2,10所示。 V1V2 X1SCLK X2I/O GNDRST 图 2,10 DS1302的外部引脚图 DS1302中当复位端RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。否则将会终止此次数据传送,且I/O引脚变为高阻态。上电运行时,在Vcc?2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字如表2,3所示。 11 毕业设计(论文) 系统硬件构成与实现 表2,3 DS1302寄存器地址及命令字 时钟/日历 读操作 写操作 RAM 读操作 写操作 秒 81H 80H 第1个字节 C1H C0H 分 83H 82H 第2个字节 C3H C2H 小时 85H 84H „„ „„ „„ 日 87H 86H „„ „„ „„ 月 89H 88H „„ „„ „„ 星期 8BH 8AH „„ „„ „„ 年 8DH 8CH 第30个字 FDH FCH 节 控制寄存 8FH 8EH 第31个字 FFH FEH 器 节 2.5.2 时钟芯片与单片机的硬件连接 DS1302与单片机的通信仅需要三根线,即RST(复位线)、I/O(数据线)及SCLK(串行时钟线),DS1302与CPU连接的电路原理如图2,11所示,V1在单片机电源与电池供电的系统中提供低电源并提供低功率的电池备份。当V1在双电源系统中提供主电源时,V2连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据,DS1302由V1和V2两者中较大者供电。 U12916PSENWR 3017ALE/PRD11TXD109RXDREST 18X219X1VCC28 P272731P26EA/VP26P25C1122514 X1P24T05.6pFB232415VccX2P23T11523RSTP22C1286221232.768KHz VbatI/OP21INT05.6pF72113SCLP20INT1BT1328P07P17GND 3V337P06P164DS1302346P05P15355P04P14 364P03P13GND373P02P12382P01P11 391P00P108051 图2,11 时钟芯片DS1302与单片机的硬件连接原理图 当单片机中的T1定时器发生中断时,单片机便将P2.2置高电平,使得DS1302的RST处于高电平,由此DS1302便将当前时间传送到单片机中的显示缓冲区,因T1每分钟中断一次,所以每隔一分钟,4,LED显示器便刷新一次重新显示当前时间。 12 毕业设计(论文) 系统软件总体构成与实现 3. 系统软件的总体构成与实现 因为对语音播报记事器进行软件设计,要涉及到很多的子程序,如录音、放音、定时等,所以我针对上面的问题考虑用模块化设计方法进行软件的设计,其优点是: (1)每个模块的程序结构简单,任务明确,易于编写、调试和修改。 (2)程序可读性好,对程序修改可局部进行,其他部分可以保持不变,便于功能扩充和版本升级。 (3)对于使用频繁的子程序可以建立子程序库,便于多个模块调用。 (4)便于分工合作,多个程序员同时进行程序的编写和调试工作,加快软件研制进度。 3.1 语音播报定时器系统软件设计方案及框图 根据设计要求,首选要确定软件设计方案,思考软件设计中应包括哪些功能,其次是规划为了完成这些功能需要分成多少个功能模块,以及每一个程序模块的具体任务是什么。由于对每个模块进行划分时有很大的灵活性,但也不能随意划分。划分模块时应遵循下述原则: 1)每个模块应具有独立的功能,能产生一个明确的结果。 ( (2)模块之间的控制参数应尽量简单,数据参数应尽量少。控制参数是模块进入和退出的条件及方式,数据参数是指模块间的信息交换方式、交换量的多少及交换的频繁程度。 (3)长度适中。模块语句的长度通常在20,100条较合适。模块太长时,和调试比较困难;模块太短则信息交换太频繁,也不合适。 (4)根据模块的划分原则,将该程序划分成五个模块,如图3-1所示。 主 程 序 当前L 定 时间E 时 键 录 定时D一盘 放 时间显分控 示 制 音设置 钟 中 断 图3-1 主程序及其子程序模块 13 毕业设计(论文) 系统软件总体构成与实现 3.2 电子播报记事器的主程序设计 主程序的内容一般包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序调用等等。 (1)程序的起始地址 MCS,51系列单片机复位后,(PC),0000H,而0003H,002BH分别为各中断源的入口地址,所以,编程时应在0000H处写一跳转指令。 当CPU接收到中断请求信号予以响应后,CPU把当前的PC内容压入栈中进行保护,然后转入相应的中断服务程序入口处执行。一般应在相应的中断服务程序入口处写一条跳转指令,并以跳转指令的目标地址作为中断服务程序的起始地址进行编程。以/INT0为例,中断矢量地址为0003H,中断服务程序从INTA标号地址开始。 (2)主程序的初始化内容 对主程序初始化,其实是对将要用到的MCS,51系列单片机内部部件或扩展芯片 、IP进行进行初始化,使其工作状态得到一个初始设定。如应对特殊功能寄存器IE初始化,因为8051复位后,IE、IP中的内容均为00H,所以应对其进行初始化编程, [1]以开放CPU中断,允许某些其他中断源中断和设置中断优先级等。 对于本设计,用T0、T1、INT0、INT1四个中断,其中: T0中断: T0定时中断,达到LED动态扫描的目的。 T1中断: T1定时中断,达到每分钟从DS1302中读取当前时间的目的。 INT0中断:接受外部中断信息,达到语音信息的录制与播报的目的。 INT1中断:接受外部中断信息,达到对当前时间的调整和闹钟时间的设置的目的。 (3)代码转换程序 由于日常我们都是识别十进制数(BCD码),而计算机它只识别二进制数,因此,在程序设计中经常要涉及代码的转换。即将当前时间的二进制数转换成BCD码,并送到显示缓冲区最终显示出来。 (4)在主程序中进行各项初始化设置后,首先CPU会先查询当前有没有对闹钟设初值,如果有,就把此闹钟时间与当前时间相比较,看看是否到了闹钟所定的时间,如果到了,就进行语音提示,如果没有到,CPU就对P3.0口进行扫描,判断“,1”键有没有按下,如果按下, 4,LED就会显示当前的年份、月份、日期、星期、小时、分钟,满足人们的查询要求。 (5)程序设计框图参照图3-2所示。 14 毕业设计(论文) 系统软件总体构成与实现 开始 设置各级中断服 务程序入口地址 N 设置堆栈指针 “+1”键按下否, Y 设置起始日期 显示当前年份 设置显示缓冲区 Y “RET”键按下否, DS1302初始化 N N 定时器T0、T1初始化“+1”键按下否, Y 设置中断优先级 显示当前月、日 显示当前小时、分钟 Y “RET”键按下否, N 有定时时间否, N N Y “+1”键按下否, N 定时时间到否, Y Y 显示当前星期 语音提示 N “RET”键按下否, 蜂鸣提醒 Y 图3-2 主程序流程图 15 毕业设计(论文) 系统软件各模块的设计与实现 4.系统软件各模块的设计与实现 本设计中大部分具体的操作都以子程序的形式出现在程序中,从功能上来讲主要包括“录放音”、“当前时间调整及时钟设置”、“LED动态显示”、“定时一分钟中断”及“键盘接受”五个模块。 4.1录音与放音模块设计 4.1.1 录音与放音选择模块设计 对INTO外部中断,不能直接接入是因为INT0的外部中断有两个,所以直接接入是不可以的,我们采用对T0口进行扫描,从而解决了这一问题。 由硬件电路图可以看出来,有两种方法可以使INT0口产生中断,一是当“PLAY”键按下时,另一种是“REC”键按下时。当CPU接收到INT0口产生的中断时,先对T0口进行扫描,如果T0口为低电平,表明“PLAY”键被按下了,CPU则进行放音操作;如果T0口为高电平,表明按下的是“REC”键,CPU则去执行录音操作。 其程序流程图如图3,3所示。 INTA服务程序 关中断 保护现场 跳转到放 N “REC”键按下否, 音子程序 Y 跳转到录音子程序 恢复现场 开中断 RETI返回 图3-3 录音与放音选择模块设计的程序流程图 4.1.2 录音模块设计 在录音控制中,录音顺序号位显示后通常应先调整,并通过“RET”键来判断是否需要进行调整,如果“RET”键按下了,表明不进行调整,如果没有按下,则表明 16 毕业设计(论文) 系统软件各模块的设计与实现 需要进行调整。调整时,用“,1”键来完成调整 ,每按下一次,被调整值就做加1调整,调整结束后,按下“RET”键进行确认。之后,便根据顺序号,在相应的起始地址开始录音,在录音完成后,按下“RET”键来表明录音操作已完成。 其程序流程图如图3,4所示。 录音子程序 调整录音顺序号 显示录音顺序号 调用录放音子程序录 Y 顺序号,1, 入从40H的语音信息 N Y 调用录放音子程序录 顺序号,2, 入从48H的语音信息 N Y 调用录放音子程序录 顺序号,3, 入从50H的语音信息 Y 调用录放音子程序录 顺序号,4, 入从58H的语音信息 调用录放音子程序录 入从60H的语音信息 RET返回 图3,4 录音程序流程图 4.1.3 放音模块设计 放音子程序的实现方法与录音控制子程序的实现方法大体相同,就不作介绍了,其程序流程图如图3-5所示。 17 毕业设计(论文) 系统软件各模块的设计与实现 放音子程序 调整放音顺序号 显示放音顺序号 调用录放音子程序播Y 顺序号,1, 放80H的语音信息 N Y 调用录放音子程序播 顺序号,2, 放88H的语音信息 N 调用录放音子程序播Y 顺序号,3, 放90H的语音信息 N Y 调用录放音子程序播 顺序号,4, 放98H的语音信息 调用录放音子程序播 放A0H的语音信息 RET返回 图3,5 放音程序流程图 4.1.4 录放音控制模块设计 本模块的设计所实现的功能是使74LS377在P2.6口产生一个上升沿脉冲,使得 74LS377在这个上升沿脉冲时将单片机送到D端的地址锁存到Q端,并等待ISD1420 取走该地址,完成单片机对语音芯片ISD1420传送地址的不同时序的控制。 其程序流程图如图3,6所示。 18 毕业设计(论文) 系统软件各模块的设计与实现 录放音控制子程序 将P2.6口置低电平 将单片机A中的内容送到P0口 将P2.6口置高电平 产生一上升沿脉冲 将P0口的地址锁存 到74LS377的Q端 RET返回 图3-6 录放音控制程序流程图 4.2当前时间的调整与闹钟的时间设置模块设计 语音播报的主要特点之一就是可以对其播报事件的时间随时设定,并做好相应的时间调整,下面将主要论述到如何来实现这一功能以达到预期的目的。 4.2.1 当前时间的调整与闹钟的时间设置选择模块设计 同INT0口一样,INT1口也要接入两个外部中断,其实现方法与INT0中断选择相同,其流程图如图3,7所示。 INTB服务程序 关中断 保护现场 Y 跳转到设置 “ALM”键按下否, 闹钟子程序 N 跳转到当前时 间调整子程序 恢复现场 开中断 RETI返回 图3,7 时间的调整与闹钟的时间设置选择程序流程图 19 毕业设计(论文) 系统软件各模块的设计与实现 4.2.2 调整当前时间程序设计 该子程序主要实现的功能是对当前时间进行调整。在实现其功能时,将调整年、星期、调整月、日和调整小时、分的值又分为了三个子程序。 程序先显示29H单元存放的数,同时可以通过“,1”键进行调整,并且以“RET”键来进行确认。程序还对29H单元中存放的数进行判断,看是否在1,3之间,如果不是就将其置1,并使其在1,3之间循环。 取29H中的数分别进行比较,如果29H单元中存放的数字是1,程序便转入到对年、星期值的调整;如果29H单元中存放的数字是2,程序便转入到对月、日值的调整;如果29H单元中存放的数字是3,程序便转入到对时、分值的调整。如果不是以上值,程序便转入到对小时、分钟值的调整。其流程图如图3,8所示。 当前时间调整子程序 显示29H中调整序号 按“,1”键调整序号 N (29H),4, Y (29H)=1 N “RET”按下否, Y N (29H),1, Y 调整年、星期的值 N (29H),2, Y 调整月、日的值 调整小时、分钟的值 RET返回 图3,8 调整当前时间程序设计流程图 20 毕业设计(论文) 系统软件各模块的设计与实现 (1)调整年、星期的子程序先显示年份的后两位,并通过“RET”键来判断是否需要进行调整,如果“RET”键按下了,表明不进行调整,如果没有按下,则表明需要进行调整。调整时,用“,1”键来完成调整 ,每按下一次,被调整值就做加一调整,调整结束后,按下“RET”键进行确认。这时,就进入到对星期的调整,其调整方法与年份的调整相同。 其流程图如图3,9所示。 调整年份、星期的子程序 显示年份的后两位 Y “RET”键按下否, N 按“,1”键进行调整 显示星期几 Y “RET”键按下否, N 按“,1”键进行调整 N (37H),8, Y (37H),1 RET返回 图3-9 调整年、星期的子程序流程图 (2)调整月份、日期的子程序先显示月份,并通过“RET”键来判断是否需要进行调整,如果“RET”键按下了,表明不进行调整,如果没有按下,则表明需要进行调整。调整时,用“,1”键来完成调整 ,每按下一次,被调整值就做加一调整。因为每年只有12个月,所以不能出现12个月以上的数字,所以将月份的值设置有0,12之间。当月份调整完后,按下“RET”键进行确认。程序就转入到对日期进行调整的部分。因为2月份只有28天,所以不能出现28以上的数字。所以当月份是二时,必须将日期控制在1,28之间,其他月份限制在1,31之间,在调整结束后,按“RET” 21 毕业设计(论文) 系统软件各模块的设计与实现 键进行确认。 其程序流程图如图3,10所示。 Y “RET”键按下否, N 调整月、日的子程序 按“,1”键进行调整 显示月份 N (36H),2, Y Y “RET”键按下否, N (35H),29, N Y 按“,1”键进行调整 (35H),1 N (36H),13, Y (36H),1N (35H),32, Y (35H),1 显示日期 RET返回 图3-10 调整月份、日期的子程序流程图 (3)调整小时、分的子程序先显示当前小时,并通过“RET”键来判断是否需要进行调整,如果“RET”键按下了,表明不进行调整,如果没有按下,则表明需要进行调整。调整时,用“,1”键来完成调整,每按下一次,被调整值就做加一调整。因为每天只有24个小时,所以其值只能在0,23之间,调整完毕后,按下“RET”键进行确认。程序就转入到对分钟的调整部分,因为一个小时只有60分钟,所以不能出现60,因此必须将分钟的值控制在0,59之间。 其流程图如图3,11所示。 22 毕业设计(论文) 系统软件各模块的设计与实现 调整小时、分的子程序 显示小时 Y “RET”键按下否, N 按“,1”键进行调整 N (34H),24, Y (34H),0 显示分钟 Y “RET”键按下否, N 按“,1”键进行调整 N (33H),60, Y (33H),0 RET返回 图3-11 调整小时、分的子程序流程图 4.2.3 闹钟设置子程序 闹钟设置子程序实现的功能是对闹钟时间进行设定。先显示闹钟的顺序号,如果 需要调整,则配合使用“,1”键和“RET”键对其进行调整。然后对当前小时,和分 钟进行调整,因为其调整方法与前面大体相同,这里就不再说明。 其程序流图如图3,12所示。 23 毕业设计(论文) 系统软件各模块的设计与实现 闹钟时间设置子程序 显示闹钟顺序号 调整闹钟顺序号 显示小时 按“,1”键调整 N (3BH),24, Y (3BH),0 N “RET”键按下否, Y 显示分钟 按“,1”键调整 N (3AH),60, Y (3AH),0 N “RET”键按下否, Y RET返回 图3-12 闹钟设置程序流程图 4.3 LED动态显示模块设计 在采用动态扫描方式时,要使得LED显示的比较均匀,以有足够的亮度,需要设置适当的扫描频率。当扫描频率在70Hz左右时,能够产生足够的图形和较好的显示效果。一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。 在单片机中,定时功能既可以由硬件(定时/计数器)实现,也可以通过软件定时程序实现。软件延时程序占用CPU的时间,因此,它降低了CPU的利用率;硬件定 24 毕业设计(论文) 系统软件各模块的设计与实现 时是利用单片机内定时器定时,启动以后定时器可与CPU并行工作,不占用CPU的时间,使CPU有较高的工作效率。 本设计中,采用硬件定时和软件定时并用的方式,即用定时器0溢出中断功能10ms实现定时,通过软件延时程序1ms的定时。 1.T0定时器中断服务程序的功能 (1)从显示缓冲区分别取出4位LED显示器显示数据的位码和段码,送到P1口,依次显示每一位,每一位的显示时间为1ms,显示4位需要4ms的时间。 (2)在设置当前时间或输入闹钟时间时,当前调整位应具有闪烁功能,用来显示当前调整位是哪一位。因此,在每一位显示之前都要判断,该位是否闪烁位,然后决定进行正常显示还是闪烁显示。 (3)LED显示器的每一位的显示时间是1ms,延时1ms子程序是典型的软件定时程序。 2. 定时器T0的计数初值 设时钟频率为6MHz,1个机器周期时间为2μs.T0定时器产生10ms的定时,可以计算出计数值和计数初值: 计数值,定时时间/机器周期时间,10ms/2μs,5000 计数初值,65536,5000,60536,EC78H 初值寄存器的初值为:TH0,0ECH,TL0,78H 工作方式寄存器TMOD,×1H。 T0定时器中断服务程序流程图如图3,13所示。 25 毕业设计(论文) 系统软件各模块的设计与实现 T0中断服务程序 保护现场 关T0中断服、开其他中断 设置段、位码缓冲区指针 设置显示位数 Y 是闪烁位否, N 将位码和段码值送P1端口 显示某位、延时1ms 显示位数,1 修改显示缓冲区指针显示位数减1 N 显示完否, Y T0计数器置初值 恢复现场、开中断 中断返回(RETI) 图3-13 LED动态显示程序流程图 4.4 产生一分钟时间模块设计 本设计采用了T1定时器与软件定时相结合的方法,产生了一分钟,它所实现的功能是每分钟从DS1302中读出当前时间。 (1)一分钟的产生 选择定时器T1,工作方式1,定时100ms,T1定时100 ms中断1次利用的是第0组工作寄存器,其中利用R2寄存器加1,R2等于10时,时间正好是1s,再利用R3寄存器计数60次,即一分钟,便得到了一分钟的时间值。同时,还需要给R2、R3寄存器进行设置。 R2:累计1S时间寄存器。T1每中断一次R2,R2,1,计数十次向R3进位,并将 26 毕业设计(论文) 系统软件各模块的设计与实现 R2清0。 R3:累计一分钟时间寄存器。当R2向R3进位达到60次时,便是一分钟了,这 里便可以从DS1302中读取当前时间了。 (2)计算定时器T1的计数初值 当时钟频率,6MHz时 计数值,定时时间/机器周期时间,100ms/2μs,50000 计数初值,65536,50000,15536,3CB0H 初值寄存器的初值(TH),3CH,(TL),B0H 工作方式计数器TMOD,1×H 程序设计流程图如图3,14所示。 T1中断服务程序 置T1计数器初值 关中断 保护现场 选择0区工作寄存器 R2,R2,1 N R2,10, Y R2,0 R3,R3,1 N R3,60, Y 跳转到RD1302子 程序读出当前时间 恢复现场 开中断 RETI中断返回 图3-14 一分钟程序设计流程图 27 毕业设计(论文) 系统软件各模块的设计与实现 4.5键盘接收模块的设计 程序设计思路:键盘接收子程序是由INTA和INTB两个子程序组成,两个子程序的功能是实现录音、调整当前时间和设置闹钟时间。 1.INTA子程序功能是实现录、放音功能模块的选择。根据按键电路设计可知: ”键或“PLAY”键任一键被按下时,产生一个INT0中断请求,CPU先对T0当“REC 口进行扫描,看“PLAY”键是否按下,如果T0口为高电平,表明“PLAY”键没有按下,CPU就响应录音中断请求;当T0口为低电平时,表明“PLAY”键被按下了,CPU就去响应放音中断请求。 2.在程序中,将录音段数分为5段,由数码管显示,利用“,1”键和“RET”键 ”键用来对录音的段数进行加1调整,“RET”键用来进行确认。 进行配合使用,“,1 3.INTB子程序功能是实现对当前时间进行调整和对闹钟时间进行设置。这两项功能分别由“SET”键和“ALM”键进行控制,它们通过74LS08相与后作用于INT1 NT1口产生一个外部中断时,CPU先扫描T1口,看“ALM”键是否被按下,口,当在I 如果T1口为高电平,则表明“ALM”键没有被按下,CPU则去执行调整当前时间的子程序,如T1口为低电平,则表明“ALM”键被按下了,CPU则去执行设置闹钟时间的子程序。 4.利用“,1”键和“RET”进行配合使用,每次对“,1”键的按下次数进行累加,当“RET”键按下时,调整值被确认,转去处理下一位。 5.每次进入该程序后,对4位当前时间值或闹钟时间值调整一次,从左到右排列顺序为1,4,不循环。 6.键盘接收的时间值为BCD码方式,将它们转化成二进制数后,存储在相应的空间,同时对计时单元进行修改,使当前时间得到调整。 7.按键去抖动处理,由于机械触点的弹性作用,在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5,10ms,而按键稳定闭合时间的长短则是由操作人员的按键动作快慢决定的,一般为零点几秒到数秒,键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合公作一次处理,键抖动可用硬件或软件两种方法消除,本设计采用软件方法,其程序流程图如图3,15所示。 28 毕业设计(论文) 系统软件各模块的设计与实现 开始 N 有键闭合, Y 调延时12ms子程序 N 有键闭合, Y 确定有键闭合 图3-15 按键去抖动程序设计流程图 29 毕业设计(论文) 结论 结论 在本论文中,本人按照“提出问题、分析问题、解决问题、总结问题”的写作思路,详细的阐述了语音播报系统的硬件、软件设计的全过程,并且从这些过程中分析提炼出了相关的技术难点以及相对应的解决思路,在完成这一切的同时,我从两个角度方面完成了所做的设计:其一,如何实现语音播报;其二,在完成既定功能的同时,如何开发出其它补充功能。在这过程中,我提炼出了具有普遍意义的类似开发过程的若干条准则。 本论文的创新点就是将以前的无声记录提醒或蜂鸣提醒换成了形象的语音提醒,使提醒更加有效、及时、准确。 本论文完成了软硬件主要功能模块的设计,为进一步设计开发及功能扩展打下了良好的基础。由于时间关系和水平有限,设计中存在着一些缺陷和不足,还有待于在今后的进一步设计过程中不断完善。 该系统现在已经设计完成,我相信该系统的设计完成必将对人们的生活起到积极的作用,使人们不必因再忘记什么重要约会而尴尬不已。 我在整个系统的设计、调试工作中积累了大量的实践经验,必将为以后参加科研和工作起到积极的推动作用~ 30 毕业设计(论文) 致谢 致 谢 本文的工作能得以顺利的完成完全离不开大家对我的关心和帮助,在此,谨向他们表示我最诚挚的感谢。 首先由衷感谢我的指导老师罗先喜老师,本文是在他的指导下完成的,导师严谨的治学作风和精益求精的治学态度给我留下了深刻的印象。在此谨向我的指导老师致以深深的敬意和感谢~ 感谢与我同组的毕永锋同学,在毕业设计的这段时间里,是我们经常共同讨论和学习才得以把课题做得更好~ 本人在四年的本科生学习期间,始终得到了电子与机械工程学院所有老师无微不至的关怀,是他们给了我许多帮助和指导使我能够在四年的时间里能够学有所成,同时本人的一些同学也在本人的学习过程中提出一些有益的建议和无私的帮助,在此也一并感谢~感谢支持过和关心过我的人们~ 31 毕业设计(论文) 参考文献 参考文献 [1] Rengang Chen;Strydom,J.T;Van Wyk,J.D. Design of plonar integrated passive module for zero-voltage-switched asymmetrical half-bridge PWM converter[J]. IEEE Transactions on Industry Applications the Industry of l and Electronic Engineers.2002,(6):1112-1116. Electrica [2] 丁元杰.单片微机原理及应用.第2版.机械工业出版社,2004:4—289 [3] 周荷琴 吴秀青.微型计算机原理与接口技术.第3版.中国科技大学出版社, 2004:126—155、263--300 [4] 阎石.数字电子技术基础.第4版.高等教育出版社,1998:150--159 [5] 孙和平.单片微机原理与接口技术.冶金工业出版社,2002 [6] 沈红卫.单片机应用系统设计实例与分析.北京航空大学出版社,2003 [7] 吴金戎.8051单片机实践与应用.清华大学出版社,2002 .MCS,51系列单片机实用接口技术.北京航空航天大学出,1999 [8] 李华 [9] 李朝表.单片机原理及接口技术.北京航空航天大学出版社,2002 [10] 胡汉才.单片机原理及系统设计.清华大学出版社,2002 [11] 公茂法.单片机人机接口实例集.北京航空航天大学出版社,2002 [12] 余锡存.单片机接口及接口技术.西安电子科技大学出版社,2000 [13] 马中梅.单片机的C语言程序设计.北京航空航天大学出版社,1999 [14] 肖红兵.跟我学用单片机.北京航空航天大学出版社,2002 32 毕业设计(论文) 附录 附录1 系统源程序: SCL EQU P2.0 DATA EQU P2.1 RST EQU P2.2 ORG 0000H LJMP MAIN ORG 0003H LJMP INTA ORG 000BH LJMP T0-SEV ORG 0013H LJMP INTB ORG 001BH LJMP T1-SEV ORG 0030H MAIN: MOV SP, #60H MOV R7, #10H MOV R0, #30H ;设置显示缓冲区 MOV A, #0 MOV @R0, A INC R0 DJNZ R7, LOP MOV 35H, #01H MOV 36H, #01H MOV 37H, #01H MOV 38H, #01H MOV 3CH, 33H MOV 3DH, 34H MOV 3EH, #01H MOV 44H, #10H MOV 45H, #20H MOV 46H, #40H 33 毕业设计(论文) 附录 MOV 67H, #80H CLR RS1 CLR RS0 MOV R5, #00H MOV R6, #00H MOV R7, #06H LCALL SET1302 SETB RS1 CLR RS0 ;选择工作寄存器2组 MOV R0, #4AH MOV TMOD, #10H MOV TH1, #3CH MOV TL1, #0B0H ;设置定时/计数器1初值 MOV TH0, #40H MOV TL0, #098H ;设置定时/计数器0初值 MOV IP, #08H ;定时/计数器1为优先级中断 MOV TCON, #40H MOV IE, #8DH ;定时/计数器1允许中断 LOP: LCALL CHANGE LCALL DISPLAY SETB RS1 CLR RS0 MOV 3AH, @R0 INC R0 MOV 3BH, @R0 MOV A, 3AH CJNE A, #0, NT MOV A, 3BH CJNE A, #0, NT NTM: INC R0 INC R0 CJNE R0, #59H, LOP MOV R0, #4AH SJMP BBX NT: MOV A, 3BH 34 毕业设计(论文) 附录 CJNE A, 34H, NTM DEC R0 DEC R0 MOV 39H, @R0 INC R0 INC R0 INC R0 INC R0 CJNE R0, #59H, NT1 MOV R0, #4AH NT1: MOV A, 39H CJNE A, #05H, BBXX LCALL YUYIN CLR P2.7 SJMP LP-0 BBX: SETB P2.7 SJMP LP-0 BBXX: LCALL YUYIN SJMP LP-0 LP-0: JB P3.0, LP-6 LCALL DISPLAY JB P3.0, LP-0 LP-1: JNB P3.0, LP-1 SETB P2.7 MOV 5EH, #06H LP-1A: MOV 3CH, 35H MOV 3DH, 36H LCALL CHANGE LCALL DISPLAY LP-1B: JB P3.0, LP-1B LCALL DISPLAY JB P3.0, LP-1B LP-1D: JNB P3.0, LP-D SJMP LP-2 LP-1C: MOV A, 5EH 35 毕业设计(论文) 附录 CJNE A, #00H, LP-1A LJMP FUZHI LP-2: MOV 5EH, #06H LP-3A: MOV 3CH, 38H MOV 3DH, #20H LCALL CHANGE LCALL DISPLAY LP-3B: JB P3.0, LP-3C LCALL DISPLAY JB P3.0, LP-3C 3D: JNB P3.0, LP-3D LP- SJMP LP-4 LP-3C: MOV A, 5EH CJNE A, #00H, LP-3A LJMP FUZHI LP-4: MOV 5EH, #06H LP-5A: MOV 3CH, 37H MOV 3DH, #0BBH LCALL CHANGE LCALL DISPLAY LP-5B: JB P3.0, LP-5C LCALL DISPLAY JB P3.0, LP-5B LP-5D: JNB P3.0, LP-5D LJMP FUZHI LP-5C: MOV A, 5EH CJNE A, #00H, LP-5A LJMP FUZHI LP-6: JB P3.1, LP-6A SJMP LP-6B LP-6A: LJMP LOP LP-6B: LCALL DISPLAY JB P3.0, LP-6 LP-7: LCALL DISPLAY JNB P3.0, LP-7 36 毕业设计(论文) 附录 SETB P2.7 MOV 3CH, 32H MOV 3DH, #0FFH LCALL CHANGE LCALL DISPLAY JB P3.1, LP-7 LCALL DISPLAY JB P3.1, LP-7 LP-8: LCALL DISPLAY JNB P3.1, LP-8 FUZHI: MOV 3CH, 33H MOV 3DH, 34H LJMP LOP CHANGE: MOV A, 3DH PUSH A ANL A, #0FH ;保留3DH单元中的低字节 MOV 42H, A POP A SWAP A ANL A, #0FH ;保留3DH单元中的高字节 MOV 43H, A MOV A ,3CH PUSH A ANL A, #0FH ;保留3CH单元中的低字节 MOV 40H, A POP A SWAP A ANL A, #0FH ;保留3CH单元中的高字节 MOV 41H, A RET YUYIN: MOV A, 3FH CJNE A, #0, CC1 CLR P3.4 MOV 3FH, #01H CC1: RET 37 毕业设计(论文) 附录 ;4位LED动态扫描显示子程序 DISPLAY: SETB RS1 SETB RS0 ;选择工作寄存器3组 MOV R2, #04H ;显示指针 MOV R0, #40H MOV R1, #44H GO-ON: MOV A, @R1 ADD A, @R0 MOV P1, A LCALL DELAY1 INC R0 INC R1 DJNZ R2, GO-ON RET DELAY1:MOV R3, #14H AGAIN: MOV R4, #19H DELAY: DJNZ R4, DELAY DJNZ R3, AGAIN RET ;T1定时中断程序,定时1min中 断一次,读出当前时间 T1-SEV:MOV TH1, #3CH MOV TL1, #0B0H CLR EA PUSH A ;恢复现场 PUSH B PUSH PSW CLR RS1 CLR RS0 INC R5 CJNE R5, #14H, EN MOV R5, #0 DEC 5EH MOV 30H, 33H LCALL RD1302 MOV A, 33H 38 毕业设计(论文) 附录 CJNE A, 30H, CLR3FH SJMP EN1 CLR3FH:MOV 3FH, #0 EN1: MOV 3CH, 33H MOV 3DH, 34H EN: POP PSW POP B POP A SETB EA RETI ;当前时间、定时时间设置程序 INTB: SETB P3.0 SETB P3.1 CLR TR1 CLR ET1 CLR EX0 CLR EX1 SETB EA SETB ET0 SETB PT0 PUSH A ;保护现场 PUSH B PUSH PSW JB P3.5, TIME LJMP ALARM ;跳转到设置闹钟子程序 TIME: MOV 31H, #02H MOV 29H, 34H MOV 48H, #03H MOV 3CH, 33H MOV 3DH, 34H LCALL CHANGE LP0: JB P3.0,NEXT0 LCALL DISPLAY JB P3.0, LP0 LP1: LCALL DISPLAY JNB P3.0, LP1 39 毕业设计(论文) 附录 MOV A, 29H ADD A, #01H DA A MOV 29H, A MOV A, 48H CJNE A, #03H, XX1 ;29H单元中的数是否为3 MOV 3DH, 34H MOV 3CH, 33H LCALL CHANGE LCALL DISPLAY LJMP LO1 XX1: CJNE A, #02H, XX2 ;对时,分值调整 MOV 3DH, 36H MOV 3CH, 35H LCALL CHANGE LCALL DISPLAY LJMP LO3 XX2: MOV 3DH, 38H ;对月,日值调整 MOV 3CH, 37H LCALL CHANGE LCALL DISPLAY LJMP LO5 NEXT0: JNB P3.1, LF1 LJMP L1 LF1: LCALL DISPLAY JB P3.1, NEXT0 LD1: LCALL DISPLAY JNB P3.1, LD1 MOV A, 48H CJNE A, #03H, X1 MOV 3CH, 33H MOV 3DH, 34H LCALL CHANGE MOV 29H, 33H DJNZ 31H, LB1 40 毕业设计(论文) 附录 DEC 48H MOV 31H, #02H MOV 29H, 36H MOV 3DH, 36H MOV 3CH, 35H LCALL CHANGE LJMP L1 LB1: LJMP L1 X1: MOV A, 48H CJNE A, #02H, X2 MOV 3CH, 35H MOV 3DH, 36H LCALL CHANGE MOV 29H, 35H DJNZ 31H, LC1 DEC 48H MOV 31H, #02H MOV 29H, 38H MOV 3DH, 38H MOV 3CH, 37H LCALL CHANGE LJMP L1 LC1: LJMP L1 X2: MOV A, 48H CJNE A, #01H, X3 MOV 3CH, 37H MOV 3DH, 38H LCALL CHANGE MOV 29H, 37H DEC 31H DEC 48H LJMP L1 X3: LJMP LL LO1: MOV A, 31H ;对年,星期值调整 CJNE A, #02H, LO2 41 毕业设计(论文) 附录 MOV 3CH, 33H MOV A, 29H CJNE A, #24H, LA1 MOV 29H, #00H LA1: MOV 34H, 29H MOV 3DH, 34H LCALL CHANGE LJMP L1 LO2: MOV 3DH, 34H MOV A, 29H CJNE A, #60, LA2 MOV 29H, #0 LA2: MOV 33H, 29H ;小时修改子程 MOV 3CH, 33H LCALL CHANGE LJMP L1 LO3: MOV A, 31H CJNE A, #02H, LO4 MOV 3CH, 35H MOV A, 29H CJNE A, #13, LA3 MOV 29H, #00H LA3: MOV 36H, 29H ;年修改子程 MOV 3DH, 36H LCALL CHANGE LJMP L1 LO4: MOV A, 36H ;日期修改 MOV 3DH, 36H MOV A, 29H CJNE A, #30H, LA4 MOV 29H,#00H SJMP LA4 A1: MOV A, 29H CJNE A, ,32H, LA4 MOV 29H, #00H 42 毕业设计(论文) 附录 LA4: MOV 35H, 29H MOV 3CH, 35H LCALL CHANGE LJMP L1 LO5: MOV A, 31H ;月,日值调整子程 CJNE A, #02H, LO6 MOV 3CH, 37H MOV 38H, 29H MOV 3DH, 38H LCALL CHANGE LJMP L1 LO6: MOV A, 29H ;星期修改子程 CJNE A, #08H, LA6 MOV 29H, #00H LA6: MOV 3DH, 38H MOV 37H, 29H MOV 3CH, 37H LCALL CHANGE L1: LCALL DISPLAY LJMP LP0 LL: MOV 32H, #00H LCALL SET1302 LJMP ET ;定时时间设置子程序 ALARM: SETB P3.5 MOV 39H, #01H LCALL SEARCH PP0: MOV 3CH, #0ABH LCALL CHANGE NEXTA: LCALL DISPLAY JB P3.1, NEXTA LCALL DISPLAY JB P3.1, NEXTA LD11B: LCALL DISPLAY JNB P3.1, LD11B 43 毕业设计(论文) 附录 LCALL SEARCH MOV 3DH, 3BH MOV 3CH, 3AH LCALL CHANGE MOV 31H, #02H MOV 29H, 3BH LP0B: JB P3.0, NEXTB LCALL DISPLAY JB P3.0, LP0B LP1B: LCALL DISPLAY JNB P3.0, LP1B MOV A, 29H ADD A, #01H DA A MOV 29H, A SJMP LO1B NEXTB: LCALL DISPLAY JB P3.1, LQB LCALL DISPLAY JB P3.1, NEXTB LD1B: LCALL DISPLAY JNB P3.1, LD1B MOV 29H, 3AH DJNZ 31H, LO1B SJMP LLB LO1B: MOV A, 31H DJNE A, #02H, LO2B MOV A, 29H CJNE A, #24H, LA1B ;闹钟小时时间是否为24 MOV 29H, #00H LA1B: MOV 3BH, 29H ;改变小时 MOV 3DH, 3BH LCALL CHANGE SJMP LQB LO2B: MOV A, 29H ;改变分钟 44 毕业设计(论文) 附录 CJNE A, #60H, LA2B MOV 29H, #00H LA2B: MOV 3AH, 29H MOV 3CH, 3AH LCALL CHANGE L1B: MOV A, 31H CJNE A, #00H, LP0B LLB: LCALL WRIT INC 39H MOV A, 39H CJNE A, #6, PA0 SJMP ET PA0: LJMP PP0 ET: POP PSW POP B POP A MOV TH1, #3CH MOV TL1, #0B0H SETB TR1 SETB ET1 SETB PT1 SETB EX0 SETB EX1 CLR TR0 CLR ET0 RETI WRIT: CLR RS1 SETB RS0 MOV A, 39H MOV B, #3 MUL AB ADD A, #46H MOV R1, A MOV R0, #39H MOV R2, #3 45 毕业设计(论文) 附录 MORE: MOV A, @R0 MOV @R1, A INC R0 INC R1 DJNZ R2, MORE RET SEARCH:CLR RS1 SETB RS0 MOV A, 39H MOV B, #3 MUL AB ADD A, #46H MOV R1, 0 MOV R0, #39H MOV R2, #2 INC R0 INC R1 MORE1: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, MORE1 RET INTA: SETB P3.0 SETB P3.1 CLR TR1 CLR ET1 CLR EX0 CLR EX1 PUSH A PUSH B PUSH PSW JB P3.4, RECORD LJMP PLAY ;录音子程序 46 毕业设计(论文) 附录 RECORD: MOV 3EH, #01H RECORD1:MOV 3CH, 3EH MOV 3DH, #0AFH LCALL CHANGE ;调整录音顺序号 NEXA: LCALL DISPLAY ;显示录音顺序号 JB P3.1, NEXA LCALL DISPLAY JB P3.1, NEXA MOV A, 3EH CJNE A, #01H, TRY1 ;录音顺序号不等时转至TRY1子程 LJMP REC1 TRY1: CJNE A, #02H, TRY2 LJMP REC2 TRY2: CJNE A, #03H, TRY3 LJMP REC3 TRY3: CJNE A, #04H, TRY4 LJMP REC4 TRY4: CJME A, #05H, TR4 LJMP REC5 TRY5: LJMP ETB REC1: MOV 58H, #40H ;录入从40H的语音信息 LCALL CLRP0 REC11: LCALL RECM CJNE A, #48H, REC11 ;寄存器中从40H的信息是否录入完 LCALL LCRP0 INC 3EH SJMP NE1 REC2: MOV 58H, #48H ;录入从48H的语音信息 LCALL CLRP0 REC22: LCALL RECM CJNE A, #50H, REC22 ;寄存器中从48H的信息是否录入完 LCALL CLRP0 INC 3EH SJMP NE1 REC3: MOV 58H, #50H ;录入从50H的语音信息 47 毕业设计(论文) 附录 LCALL CLRP0 REC33: LCALL RECM CJNE A, #58H, REC33 LCALL CLRP0 INC 3EH SJMP NE1 REC4: MOV 58H, #58H ;录入从58H的语音信息 LCALL CLRP0 REC44: LCALL RECM CJNE A, #60H, REC44 LCALL CLRP0 INC 3EH SJMP NE1 REC5: MOV 58H, #60H ;录入从60H的语音信息 LCALL CLRP0 REC55: LCALL A, #68H, REC55 LCALL CLRP0 INC 3EH SJMP NE2 NE1: NB P3.1, RECORD2 LCALL DISPLAY JNB P3.1, NE1 SJMP NE1 NE2: JB P3.1, ETB1 LJMP ETB ETB1: LCALL DISPLAY JNB P3.1, NE2 SJMP NE2 RECORD2:JNB P3.1, RECORDX LJMP RECORD1 RECORDX:LCALL DISPLAY SJMP RECORD2 ;放音控制子程序 PLAY: SETB P3.4 MOV A, 39H ;设置39H控制顺序号 48 毕业设计(论文) 附录 CJNE A, #01H, TPL1 SJMP PLAY1 TPL1: CJNE A, #02H, TPL2 SJMP PLAY2 TPL2: CJNE A, #03H, TPL3 SJMP PLAY3 TPL3: CJNE A, #04H, TPL4 SJMP PLAY4 TPL4: CJNE A, #05H, TPL5 SJMP PLAY5 TPL5: LJMP ETB PLAY1: MOV 58H, #80H ;播放从80H的语音信息 LCALL CLRP0 PLAY11:LCALL PLAYM CJNE A, #88H, PLAY11 LCALL CLRP0 LJMP ETB PLAY2: MOV 58H, #88H ;播放从88H的语音信息 LCALL CLRP0 PLAY22: CALL PLAYM CJNE A, #90H, PLAY22 LCALL CLRP0 LJMP ETB PLAY3: MOV 58H, #90H ;播放从90H的语音信息 LCALL CLRP0 PLAY33:LCALL PLAYM CJNE A,#98H, PLAY33 LCALL CLRP0 LJMP ETB PLAY4: MOV 58H, #98H ;播放从98H的语音信息 LCALL CLRP0 PLAY44:LCALL PLAYM CJNE A, #0A0H, PLAY44 LCALL CLRP0 LJMP ETB 49 毕业设计(论文) 附录 PLAY5: MOV 58H, #0A0H ;播放从OAOH的语音信息 LCALL CLRP0 PLAY55:LCALL PLAYM CJNE A, #0A8H, PLAY55 LCALL CLRP0 ETB: MOV 3CH, 33H MOV 3DH, 34H POP PSW POP B POP A MOV TH1, #3CH MOV TL1, #0B0H SETB TR1 SETB ET1 SETB PT1 SETB EX0 SETB EX1 SETB EA RETI RECM: MOV 3CH, #0FCH MOV 3DH, 3DH, #0FFH LCALL CHANGE LCALL DISPLAY CLR P2.6 MOV A, 58H ORL A, #0C0H MOV P0, A SETB P2.6 NOP NOP CLR P2.6 MOV A, 58H MOV P0, A SETB P2.6 LCALL DEL500 50 毕业设计(论文) 附录 INC 58H MOV A, 58H RET ;录放音控制程序 PLAYM: MOV 3CH, 39H MOV 3DH, #0AAH LCALL CHANGE CLR P2.6 MOV A, 58H ;开始将A中的内容送到P0口 ORL A, 0C0H MOV P0, A SETB P2.6 NOP NOP CLR P2.6 MOV A, 58H MOV P0, A SETB P2.6 LCALL DEL500 INC 58H MOV A, 58H RET CLRP0: CLR P2.6 ;P2.6置低电平 MOV P0, #0C0H SETB P2.6 LCALL DISPLAY RET DEL500:SETB RS1 SETB RS0 MOV R5, #74H LLOP: LCALL DISPLAY DJNZ R5, LLOP RET 51
/
本文档为【语音播报记事器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索