淮安信息职业技术学院
毕业论文
| 题 目 | 语音可录放经营叫卖器的设计 |
| 学生姓名 | 李典 |
| 学 号 | 15077029 |
| 系 部 | 电子工程系 |
| 专 业 | 应用电子技术 |
| 班 级 | 150770 |
| 指导教师 | 【李思政】 【高级工程师】 |
| 顾问教师 | 【姓名】 【专业技术职务】 |
摘 要
ISD1420 系列芯片是较为常用了语音录放集成电路,一般多用于语音电话、
留言机等设备。更可于单片机实现接口,进行语音分段录放音的功能,可用于
自动报时器,汽车自动报站器等设备,如果采用具有语音处理的16 位或32 位
处理器实现同样的功能将会增大开发的周期和成本,会使本来简单的系统更加
的复杂。
ISD1420 为美国ISD 公司出品的优质单片语音录放集成电路,由振荡器、语
音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组
成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。录音内容存入永久存储单元,提供零功率信息存储,这个独一无二的方法是借助于美国ISD 公司的专利——直接模拟存储技术(DAST TM)实现的。利用它,语音和音频信号被直接存储,以其原本的模拟形式进入EEPROM
存储器。直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现。
不仅语音质量优胜,而且断电语音保护,本设计将利用ISD1420,ATS51单片机以及音频放大器LM386设计一个语音叫卖器。
关键词:ISD1420 单片机 LM386 叫卖器
第一章 绪论
1.1设计概述
本设计是在指导老师给定课题的基础上经过思考创新而设计出来的基于单片机控制的语音叫卖器设计。内容丰富,运用灵活。课题运用ISD1420语音芯片,LM386音频功放,以及曾经学习过的ATS51单片机芯片设计而成的经典电路。
1.2 设计背景
ISD1420 系列芯片是较为常用了语音录放集成电路,一般多用于语音电话,留言机等设备。更可于单片机实现接口,进行语音分段录放音的功能,可用于自动报时器,汽车自动报站器等设备,如果采用具有语音处理的16 位或32 位
处理器实现同样的功能将会增大开发的周期和成本,会使本来简单的系统更加的复杂。
1.3 设计要求
1.熟悉电路的工作原理;
2.掌握该电路中元器件的识别方法;
3.掌握电路的调试方法;
4.熟悉电路简单的故障分析方法;
5.论文符合其格式、字数的基本要求,内容要求充实、作图严谨规范等。
1.4 设计意义
1. 增加产品销售量;
2.提高公共服务档次,符合建设国际城市的目标;
3.可免除生意人口干舌燥的叫喊,非常实用等。
第二章 系统方案设计与研究
2.1设计过程
整个电路设计可分为以下几个单元电路:按键指令输入电路、录音电路、语音处理电路、音频放大电路、数码管显示电路等。
2.2方案设计
方案一:
采用基本的硬件电路,主芯片ISD1420直接控制整个语音电路,用LM386作为音频放大芯片,电路结构简单,一般较为常用。主要运用与简单语音报警器,温度报警器等等。
方案二:
在原来课题设计的基础上,利用单片机作为控制芯片实现分段录放功能,利用单片机控制的ISD1420芯片将会彻底发挥其优势,可以选择录放的起始段,清除等功能,是目前广泛爱好者语音电路的首选方案。
2.3方案选定
本设计采用方案二,处理器选择ATS51单片机,语音芯片选择ISD1420,放大芯片为LM386,用微处理器对ISD 芯片的分段录放音控制时,才算是发挥了芯片的优势。
第三章 ATS51概述
单片机(ats51)外观
3.1 ATS51
ATS51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位处理器和ISP Flash存储单元,功能强大的微型计算机的ATS51可为许多嵌入式控制应用系统提供高性价比的解决方案。
3.2ATS51的特点
特点:40个引脚,4k Bytes Flash片内程序存储器;
128 bytes的随机存取数据存储器(RAM);
32个外部双向输入/输出(I/O)口;
5个中断优先级2层中断嵌套中断;
2个16位可编程定时计数器;
2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,ATS51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
3.3主要特性
• 8031 CPU与MCS-51 兼容
• 4K字节可编程FLASH存储器(寿命:1000写/擦循环)
• 全静态工作:0Hz-33MHz
• 三级程序存储器保密锁定
• 128*8位内部RAM
• 32条可编程I/O线
• 两个16位定时器/计数器
• 6个中断源
• 可编程串行通道
• 低功耗的闲置和掉电模式
• 片内振荡器和时钟电路
3.4 管脚说明
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3.0 RXD(串行输入口) P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。C51的P0/P1/P2/P3口作为输入时都是准双向口。接下来让我们再看另一个问题,从图中可以看出这四个端口还有一个差别,除了P1口外P0P2P3口都还有其他的功能。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
第四章 ISD1420芯片
4.1概述
ISD1420 系列芯片是较为常用了语音录放集成电路,一般多用于语音电话、
留言机等设备。更可于单片机实现接口,进行语音分段录放音的功能,可用于
自动报时器,汽车自动报站器等设备,如果采用具有语音处理的16 位或32 位
处理器实现同样的功能将会增大开发的周期和成本,会使本来简单的系统更加
的复杂。
开发简单的语音录放系统时,ISD 的芯片将成为开发工程师的不二选择。
4.2了解ISD1420
ISD1420 为美国ISD 公司出品的优质单片语音录放集成电路,由振荡器、语
音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。录音内容存入永久存储单元,提供零功率信息存储,这个独一无二的方法是借助于美国ISD 公司的专利——直接模拟存储技术(DAST TM)实现的。利用它,语音和音频信号被直接存储,以其原本的模拟形式进入EEPROM存储器。直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现。不仅语音质量优胜,而且断电语音保护。
目前,ISD1400 系列有下列型号:ISD1408、ISD1410、ISD1412、
ISD1416、ISD1420。录放时间分别为:8秒、10秒、12秒、16秒、20 秒。(ISD14XX——其中型号的后两位表示其录音的时间长度,单位是秒)
4.3 芯片特点
●所需外围元件少,电路简单,操作方便。
●采用直接模拟量存贮技术DAST(Direct Analog Strorage Technology),
再现优质原声。
●零功率信息存贮,省掉备用电源。
●信息可保存10 年以上,可反复录放达10万次之多。
●语音固化无需专用编程或开发装置。
●较强的选址能力,可把存储器分成160段来进行管理。
●具有自动省电模式,此时仅需0.5μA 的保持电流。
●单一电源供电。
4.4电气特性
●工作电压VDD:5V.
●静态电流ISTB:典型值0.85μA,最大值为2μA.
●工作电流IOP:典型值15mA,最大值30mA.
A0~A7:地址输入端;
VCCD:数字电路电源;
VCCA:模拟电路电源;
VSSD:数字地;
VSSA:模拟地;
SP+:喇叭(+);
SP-:喇叭(-);
SCLK:外接时钟(可选);
ANA IN:模拟量输入;
ANA OUT:模拟量输出;
AGC:自动增益控制;
MIC:驻极体话筒输入;
MIC REF:驻极体话筒参考输入;
PLAYE:边沿触发放音;
PLAYL:电平触发放音;
REC:录音触发;
RECLED:发光二极管接口;
NC:空脚
4.5 ISD1420经典电路
ISD1400芯片可以和少量的外围元件构成一个最小化的录放音电路。下面是经
典的最小化录放音电路图
这个最小化系统有一个LED指示灯、三个微动开关,可以对芯片的录音、播放、停止进行控制。S3(RECORD)为录音键,按住它时LED灯点亮,此时为录音状态,当录放达到最大时间值或中途放开S3 录音按键即停止录音。S2(PLAYL)为放音键,按一下它就可以播放录音,当放音达到录音的尾声时或中途按下了S1停止键则停止放音。S1为停止键,当放音过程中按下S1停止键停止放音。如果有待机时按住S1 则开始放音,放音直到录音的尾声或中途放开S1 键。当芯片处于录音状态时LED点亮,当芯片放音结束时LED会闪亮一下。
只要按电路图接好电路,一般不用调试就可以使用。
第五章 硬件电路模块设计
5.1 设计原理
输出
ISD1420
语音芯片
LM386
音频放大
ATS51
单片机
5.2 最小系统设计
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.下面给出一个51单片机的最小系统电路图
在智能化仪器仪表中,控制核心均为微处理器,而单片机以高性能、高速度、体积小、价格低廉、稳定可靠而得到广泛应用,是设计智能化仪器仪表的首选微控制器。单片机结合简单的晶体振荡电路和复位电路即可构成单片机最小系统,它是智能化仪器仪表的基础,也是测控、监控的重要组成部分。
5.3 复位电路
复位电路和时钟电路是维持单片机最小系统运行的基本模块。复位电路通常分为两种:上电复位和手动复位。[2]
上电复位 手动复位
有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。
5.4 时钟电路
高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。
合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。并联2个30pF陶瓷电容帮助起振。
5.5 按键电路
1.查询工作方式
这种方式是直接在主程序中插入键盘检测子程序,主程序每执行一次,则键盘检测子程序就对键盘进行检测一次。如果没有键按下,则跳过键识别,直接执行其他程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值。然后根据编码值进行相应的处理,处理完后再回到主程序执行。键盘扫描子程序流程如图所示 。
键盘扫描流程图
2.中断工作方式
如图所示,就是中断工作方式,当有中断的时候,就去执行扫描程序,没有中断的时候,CPU可以去做其他的事情。这样可以提高CPU的效率。
键盘中断工作方式
5.6显示电路
两位数码管分别与单片机的P1口和P3口连接实现静态显示。
5.7音频放大电路
将语音信号经过ISD1420后送到LM386音频放大,之后输出。
第六章 软件设计
6.1程序起始
;----------------------------------------------------------程序入口
ORG 0000H
JMP ISD_START
ORG 000BH
JMP TT0
ORG 0030H
;----------------------------------------------程序开始
ISD_START:
MOV R1,#8
MOV R0,#WRAM
RAM1:
MOV @R0,#0
INC R0
DJNZ R1,RAM1
SETB ISDPLAYL
SETB ISDRED
SETB ISDPLAYS
SETB KEYSET
MOV R2,#3
MOV TMOD,#01H ;定时计数器工作方式
MOV TH0,#9EH ;初值(9E58H--25MS)
MOV TL0,#58H ;
SETB ET0 ;开T0允许
SETB EA ;开总中断
6.2录音程序
LOOP: ;录音部分
JB KEYRED,N1
CALL DL20MS
JB KEYRED,N1
MOV ISDDAT,WRAM
MOV WBIT1,WRAM
MOV WBIT3,WRAM
CLR ISDRED
SETB TR0 ;启动定时器
M0:
JNB P1.6,M1 ;地址极限值保护
JNB P1.7,M1
JMP M2
M1:
JNB KEYRED,M0
M2:
SETB ISDRED
CLR TR0
6.3放音程序
在录音板上按一下录音键,并录入第一个段音。完成后LED上显示了第二段的起始地址,按重放键放音,感觉满意后记下这个数据,开始下一段录音。
如果感觉不满意则按清除键回到上次的地址位重新录音。录好后,在放音时只要给出放音的起始地址即可放音,当放音结束后RECLED 将输出一个低电平脉冲。程序查寻此脉冲并停止放音或开始另一段放音。
程序如下:
PLAY EQU P3.3 ;语音播放__
STOPIN EQU P3.0 ;语音停止信号输入__
MOV SPDAT,#00H;放入放音地址
CLR PLAY ;开始放音
JB STOPIN,$;查寻停止反馈
SETB PLAY;有停止信号,停止放音
CALL DL20MS;延时等待芯片恢复
MOV SPDAT,#27H;放入第二段放音地址
CLR PLAY
JB STOPIN,$
SETB PLAY
CALL DL20MS
第七章 总结与展望
把论文结束的瞬间,觉得自己又回到了在学校学习,拿着书本翻阅资料,不懂的会追根究底,工作了,看书时间就少了,也没有那么多的时间将问题深思熟虑,考的不周全,学习的感觉很棒,吸收知识很充实。
经过最后半个月的打理,毕业设计总归完成了。可以说完成的很累,在这些要被驱逐出学校的日子里,我真的学到了好多好多,面对前边的路有点飘飘然的感觉。我喜欢设计,这是我三年大学生活对我作出的努力的体现。就这样,我是积极地去做我的毕业设计,就算是为我设计之路的坟头上添上的最后一把土吧!
本设计中所阐述的仅仅是一种简易的自制语音电路设计。现实生活中很多领域都会用到,而这款自制的语音叫卖器又克服了很多缺点,因此经济又实用。
本来想原原本本的按照李的要求,直接用原有的电路图做毕业设计,后来做出来了,发现似乎太过于简单化,我是一个追求创新的人,大学里我一半的学习成果来自于课堂,另一半来自于我的课外阅读,我喜欢阅读搜索一些电子方面的材料,自学过cadence电路设计,AVR单片机,PIC单片机,Photoshop等,现在准备学习ARM嵌入式系统以及MSP430单片机,总结下来,我自学的只是一点皮毛,肤浅的东西,苦于没有指导老师。本来还兴奋的思考着,工作两年以后考研呢,现在觉得有点天方夜谭了,呵呵,下面还是谈谈设计吧。
总之,不论工作还是学习,都要理论联系实际,运用相关的理论知识,通过对电路原理的介绍和探究,得出其制作方案与实践应用原理,并重点研究了其相关的核心技术和应用理论。相信,在现实生活中该理论一定能得到很好的应用和更为广阔的发展。
一开始做毕业设计时那才叫新鲜啊,所以我很积极,课题下来一周后,我完成了第一版本,可想而知,含金量太低,太老套,没有创新的观点,所以我选择放弃这一个版本,之后我便开始追求我所谓的创新毕业设计,也就是在课题的基础上发挥一下,呵呵。还有,就是之前觉得吧,毕业设计只是对这几年来所学知识的单纯总结,只要有点专业基础就会很简单,但现在才发现毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高,同时学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质,而自己需要学习的东西还有很多。
在毕业设计过程中,我也上网查阅了许多资料,掌握了科技文献的检索方法,大大提高了自己获得新知识,新信息的能力。我也深深的体会到,实践必须在充分理解电路原理的基础上,才能做到目标明确,操作准确。反过来,分析调试过中的得失,能加深对理论的理解。我也将许多遗忘的知识又给温习了。
通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
本课题在选题及研究过程中得到李思政老师悉心指导和同学的热心帮助。为我指点迷津,帮助我开拓思路使我可以顺利完成设计。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
致 谢
时光匆匆如流水,转眼便是大学毕业。人最宝贵的年华有几个三年,在这里我度过了让我真正成长成熟的三年,记得刚进学校是我是多么的无助与陌生,三年的异地大学生活使我变的成熟,坚强和。
感谢我的所有任课老师,他们严谨细致、认真讲解,他们循循善诱的教导和不拘一格的思路给予我无尽的启迪。
三年的大学生活中,它们不管在生活还是学习上都给我很大的帮助,让我从腼腆的小男孩变成能面对社会的毕业生。
首先向跟随我们三年的班主任谭伟东老师致以最诚挚的感谢,他不仅是我的老师,更是我的益友,在我的三年大学生活中他不仅给予我们学习上的帮助还给我生活上很多帮助,锻炼我的各方面能力,使我步入社会时能很快很好的融入。还要感谢的是在我平时学习中给我很大帮助的老师们,他们渊博的知识,严谨的治学,让我不仅学到了扎实的专业知识,还教会了我如何做人,面对问题养成了沉着冷静,努力解决。上班了,面对自己不熟悉的环境,我要适应,上班了没有很多的时间看书,更没有多少时间来做毕业设计,在我现在做这个设计时,离我离开学校有半年多了,很多知识我们已经忘掉了,在这里我要感谢李思政老师,在百忙之中抽出时间辅导我,帮助我做毕业设计辅导,使我节省和很多时间,顺利完成毕业设计。
最后要感谢的是我的父母,因他们的给予我才能在这校园里完成我的大学梦想,使我的人生阅历提高,增长见识,提高了自己个方面的素质和涵养。也要感谢我的同学。,因为我们团结我们才能高效的完成毕业设计。在未来的日子里,我会更加努力的学习和工作,不辜负父母对我的殷殷期望!我一定会好好孝敬和报答他们!
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
参考文献
1.电子技术基础.西安交通大学,2008.8 40-55
2.PIC单片机原理与应用.机械工业出版社2010.1 19-39
3.51单片机及其C语言程序开发实例.清华大学出版社.2008.12 (完整)
4.李平、李亚荣、关天民.ISD1420的高响度语音电路设计.大连交通大学,2005.1
5.唐明道.杨林武.ISD1420单片语音录放电路应用.电子技术杂志1998
附录1 元件清单
| 元件名称 | 型号 | 数量 |
| J1 | Connector2脚插槽 | 1 |
| J2 | Connector4脚插槽 | 1 |
| J4 | Connector7脚插槽 | 1 |
| C16、C17、C18、C19、C20、C22 | 0.1UF | 6 |
| C15 | 4.7UF | 1 |
| R9 | 5.1K | 1 |
| R7、R12、R10 | 10K | 3 |
| C12、C13、C14 | 30P | 3 |
| R11 | 100K | 1 |
| C1、C3、C4 | 100uF | 3 |
| C2、C5 | 104 | 2 |
| R11、R12 | 200 | 2 |
| C21 | 220UF | 1 |
| R1 | 330 | 1 |
| R8 | 470K | 1 |
| U3 | 7805 | 1 |
| U1 | ATS51 | 1 |
| U4 | LM386 | 1 |
| Y1 CRYSTAL | 12M | 1 |
| D5、D6 | IN4148 | 2 |
| U2 | ISD1420 | 1 |
| D7 | LED | 1 |
| MICROPHONE2 | 扬声器 | 1 |
| SPEAKER | 话筒 | 1 |
| 数码管 | 共阳极 | 2 |
| 按键 | 四脚弹簧 | 5 |
附录3 源程序
程序名: ISD1402 语音芯片分段录放音调试
编写人: 李典
初写时间: 2010年6月
程序功能: 实现对ISD1420 语音芯片的分段录放音
实现方法: 用定时器产生最小125MS的录音长度值
CPU说明: S51 24-PC 12MHZ晶振
修改日志:
NO.1-2010.6.10 增加了地址极限保护功能,防止录音出错。
-------------------------------------------*/
;------------------------------------------初定义
ISDDAT EQU P1 ;语音地址线
KEYRED EQU P3.3 ;录音按键
ISDRED EQU P3.0 ;录音使能(低有效)
KEYPLAYL EQU P3.4 ;长放音键
ISDPLAYL EQU P3.2 ;长放音使能
KEYPLAYS EQU P3.5 ;短放音按键
ISDPLAYS EQU P3.1 ;短放音使能
KEYSET EQU P3.6 ;
XX EQU P1.7 ;调试用灯
STOPIN EQU P3.7 ;放音停止脉冲输入
LED1 EQU P0 ;静态数码管第一位 ;数码管显示第一位(十位)
LED2 EQU P2 ;静态数码管第二位 ;数码管显示第二位(个位)
WRAM EQU 20H ;录音地址寄存器 ;数码管显示值寄存器
WBIT1 EQU 21H ;放弃此次录音寄存器;
WW EQU 22H ;
WBIT3 EQU 23H ;
;-------------------------------------------------------------------程序入口
ORG 0000H
JMP ISD_START
ORG 000BH
JMP TT0
ORG 0030H
;----------------------------------------------程序开始
ISD_START:
MOV R1,#8
MOV R0,#WRAM
RAM1:
MOV @R0,#0
INC R0
DJNZ R1,RAM1
SETB ISDPLAYL
SETB ISDRED
SETB ISDPLAYS
SETB KEYSET
MOV R2,#3
MOV TMOD,#01H ;定时计数器工作方式
MOV TH0,#9EH ;初值(9E58H--25MS)
MOV TL0,#58H ;
SETB ET0 ;开T0允许
SETB EA ;开总中断
MOV ISDDAT,#0FFH
MOV WRAM,#00H
CALL DISPLAY
MOV WBIT1,#0
LOOP: ;录音部分
JB KEYRED,N1
CALL DL20MS
JB KEYRED,N1
MOV ISDDAT,WRAM
MOV WBIT1,WRAM
MOV WBIT3,WRAM
CLR ISDRED
SETB TR0 ;启动定时器
M0:
JNB P1.6,M1 ;地址极限值保护
JNB P1.7,M1
JMP M2
M1:
JNB KEYRED,M0
M2:
SETB ISDRED
CLR TR0
N1: ;回放刚才录音
JB KEYPLAYL,N2
CALL DL20MS
JB KEYPLAYL,N2
MOV ISDDAT,WBIT1
CLR ISDPLAYS
CALL DL60MS
SETB ISDPLAYS
N2: ;加地址功能,设定放音地址
JB KEYPLAYS,N3
CALL DL20MS
JB KEYPLAYS,N3
INC WBIT1
MOV ISDDAT,WBIT1
CALL DISPLAY2
CALL DL60MS
N3: ;清除刚才录音
JB KEYSET,N4
CALL DL20MS
JB KEYSET,N4
MOV ISDDAT,WBIT3
MOV WRAM,WBIT3
MOV WBIT1,WBIT3
CALL DISPLAY
N4:
JMP LOOP
;-------------------------------------------数码管显示程序
DISPLAY:
MOV WW,WRAM
JMP GO
DISPLAY2:
MOV WW,WBIT1
GO:
MOV A,WW ;静态数码管显示
MOV DPTR,#TAB1
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV LED1,A
MOV A,WW
ANL A,#0FH
MOVC A,@A+DPTR
MOV LED2,A
RET
;----------------------------------LED数码管显示表(0-F) TAB1
TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0A7H,0A1H,86H,8EH
;---------------------------------------------------------T0中断
TT0:
MOV TH0,#9EH ;重装初值(25MS)
MOV TL0,#58H ;
DJNZ R2,TT0EXIT ;1位的录音时长(125MS)
MOV R2,#3 ;
INC WRAM
CALL DISPLAY
TT0EXIT:
RETI ;T0中断结束
;-----------------------------------延时子程序
DL20MS: ;20毫秒延时,主要用于去抖动。(100,100)
MOV R6,#100
DL20MS_1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DL20MS_1
RET
DL60MS: ;60 毫秒延时
CALL DL20MS
CALL DL20MS
CALL DL20MS
RET
DL05S: ;1秒延时,用在了开始等待。(50)
MOV R5,#50
DL05S_1:
CALL DL20MS
DJNZ R5,DL05S_1
RET
;---------------------------------------结束
END下载本文