语音播报记事器
目 语音播报记事器 英文题目 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