公交车新型智能选站报站系统.doc_第1页
公交车新型智能选站报站系统.doc_第2页
公交车新型智能选站报站系统.doc_第3页
公交车新型智能选站报站系统.doc_第4页
公交车新型智能选站报站系统.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

_公交车新型智能选站报站系统摘 要现今各个城市、城镇的公交车越来越多,所以他们需要一个比较好的公交车选站报站系统。现有的公交车报站系统在报站功能上已经做得很完善,但他们依然还有许多不完善的地方。例如乘客要下车的时候认识路的就按按钮,而那些不知道路的只有问司机了,如果每个站都问司机,不仅乘客觉得麻烦。而且司机也感到麻烦。这样就对安全构成了危险。对于司机来说,也没有办法知道乘客需要在那些站点下车,只能每站必停,有些站点本来可以不用停车,但是因为不了解情况,也必须停车了,从而浪费不必要的时间和汽油。这样是不好的。为了克服这些不好的缺点,我们从增强乘客和司机的互动性出发,增加了选站功能,从而构成这个新型智能选站报站系统。它使用现今比较流行的单片机还有语音芯片等而设计成的。本文就是讲述怎样把单片机与语音芯片等很好的有机的结合的。关键词:单片机 语音芯片 LED 蜂鸣器 按钮AbstractNowadays each city, the cities public transportation vehicle more andmore are many, therefore they need a quite good public transportationChe Xuanzhan the newspaper station system. Existing publictransportation Che Baozhan the system already did in the newspaperstation function very much perfectly, but they still also had manyimperfect places. For example the passenger wants to alight time knewthe road presses the button, but these did not know the path only hadasks the driver, if each station all asked the driver, not only thepassenger thought the trouble. Moreover the driver also feels the trouble. Like this to safelyconstituted the danger. As for the driver, also does not have themeans to know the passenger needs to alight in these stands, only canevery time stand must stop, some stands originally may not need tostop, but because does not find out the situation, also had to stop,thus wasted the nonessential time and the gasoline. Like this is bad.In order to overcome these not good shortcoming, we from strengthenedthe passenger and drivers interaction embark, increase have chosenthe station function, thus constituted this new intelligence to choosethe station newspaper station system. It uses the nowadays quitepopular monolithic integrated circuit also to have the pronunciationchip and so on to design. How is this article narrates the monolithicintegrated circuit and the pronunciation chip and so on the very goodorganic union.Key word: Monolithic integrated circuit pronunciation chip LED buzzer button.目 录摘 要I第1章 绪论11.1引言11.2单片机发展历史概述1第2章 电路的设计与原理52.1 总体的电路52.2局布电路的介绍52.2.1晶振电路52.2.2 外部中断电路52.2.3蜂鸣器电路原理图62.2.4语音芯片72.2.5录音电路如图2-5所示122.2.6放音电路如图2-6所示。122.2.8乘客端控制电路板15第3章 软件的说明173.1软件的介绍173.2软件设计的原理173.2.1 ISD4004是典型代码173.2.2 MAX7219的典型代码203.3流程图22第4章 电路的应用与调试234.1故障的发现与排除234.2电路的改进23附录:25第 29 页 共 28 页第1章 绪论1.1引言经济的发展和环保的需要所以现在各个城市、城镇的公交车越来越多,虽然现有的公交车报站系统在报站功能上已经做得很完善,有些报站系统有语音提示,有些则利用mp3模块来存贮语音提示,公交车要进站的时候,司机按某个键就可以播放相应的进站录音,包括将进站的站点名字、礼貌用语、广告词等,还有一些报站系统利用GPS、GIS技术自动控制报站功能,有些公交车报站系统还具有LED的显示功能,能实时地显示将到达的站点名字。但是为了达到这个目的,在经济上必须付出昂贵的代价。现有的报站系统的乘客选站功能则非常的缺乏,现在的系统只是在后门设置一、两个下车按钮,快进站的时候,乘客如果需要下车就按钮,但是这种做法具有很大的缺陷,乘客必须知道公交车将要到达的地点,而对于不熟悉道路情况的乘客来说则很不方便,他们会很担心错过自己要去的站点,造成一定的心里负担。而对于司机来说,也没有办法知道乘客需要在那些站点下车,只能每站必停,有些站点本来可以不用停车,但是因为不了解情况,也必须停车,从而浪费没必要的时间和汽油。也造成乘客坐车有心里负担,尤其那些刚不认识路的乘客,他们就会十分担心错过了, 浪费时间和汽油的原因就在于乘客和司机之间相互沟通的渠道非常有限。为了克服这个缺点,从增强乘客和司机的互动性出发,增加了选站功能,构成这个新型智能选站报站系统。为了解决现有公交车报站系统中乘客和司机缺少沟通渠道的缺陷,增加乘客端选择面板,使乘客就像坐电梯可以选择楼层一样,上车后可以选择到达的目的地,免除乘客担心错过目的地所带来的心里负担,给乘客一个舒适的乘车环境。另外这个系统在分段收费的公交车上也可以发挥用途。这个系统可以在乘客选择到那里下车的时候根据设置好的数据而告诉乘客应该负的费用。这个系统使用的是MOTOROLA的单片机作为控制器,结合其他的集成芯片及电子元件,如语音芯片、按钮、七段码、独立的LED、七段码驱动器等,设计了乘客端和司机端两个控制电路。乘客端可以设置多几个。这样它的使用价值就大大提高了。1.2单片机发展历史概述嵌入式控制系统的典型代表就是单片机,这种单片机有位或者16位。单片机目前在嵌入式设备中有着极其广泛的应用,这种单片机芯片内部不仅集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口,还包含脉宽调制输出、A/D、D/A、等各种必要功能和外设,单片机的外设资源一般比较丰富,适合于控制和被控制,因此称为我们称它为微控制器。经过几代的发展,单片机正向着高性能和多品种方向发展,不仅由于它们具有CPU的功能,而且它内部资源比较多,引脚的多功能化,低电压,低功耗等优点,所以被人们所广泛采用于各个行业上。所以我选择了它。1. 3 芯片的选择与介绍MC908JL3使用HC08内核并提供了低成本、可编程的FLASH存储器。MC908JL3是正在发展的JL产品系列中的一员,包括多种时钟选择、两个16位定时器、键盘中断、低电压抑制、看门狗定时器,以及引脚封装为16 脚、20 脚、28 脚DIP 或28 脚。MC908JL16还特别集成了内置串行通信接口模块、主IIC接口和10位模数转换器。 MC68HC908JL3的特点:l 高性能HC08架构 l 对M6805、M146805和M68HC05系列的目标代码完全向上兼容 l 低功耗设计(完全静态,具有静止和等待模式)l 最大内部总线频率:5V电压下8-MHz;3V电压下4-MHz l 振荡器选项:晶体振荡器或RC振荡器 l 具有安全特性的16 KB用户程序FLASH存储器 l 512字节片上RAM l 两个16位双通道定时器(TIM1和TIM2),每个通道都具有可选输入捕捉,输出比较和PWM功能;通过TIM2进行外部时钟输入选择 l 串行通信接口模块(SCI)l 多主IIC模块(MMIIC)l 13通道10位模数转换器 (ADC)l 26个通用输入输出端口l 具有内部上拉的8个键盘中断l 11个LED驱动(电流阱);l 12个具有上拉的25mA漏极开路I/O。芯片管脚设计布局: 表1-1 管脚名称和说明管脚名称管脚说明输入/输出管脚电压水平 VDD电源正 输入 5V或3V VSS电源地 输出 0V RST复位管脚,低有效带内部上拉,Schmitt 触发电路 输入 VDD IRQ外中断输入口软件编程内部上拉,输入Schmitt 触发电路也用于芯片工作模式选择 输入VDD至VDD+VHI OSC1X_tal(晶振)或RC振荡输入 输入 模拟量 OSC2对X_tal(晶振),是OSC1信号的转换输出 输出 模拟量对RC振荡,默认为RCCLK输出同时可选为PTA6普通口,带可编程上拉输入/输出 VDDPTA(0,6)7位普通I/O口输入/输出 VDD全部可选(软件编程)键中断 输入 VDD全部可选(软件编程)上拉 输入 VDDPTB(0,7)8位普通I/O口输入/输出 VDD8位ADC转换口 ADC(0,7) 输入 模拟量PTD(0,7)8位普通I/O口输入/输出 VDDPTD(3,0)4位ADC转换口 ADC(8,11) 输入 模拟量PDT(4,5)2位TIM通道 TCH0和TCH1输入/输出 VDD纵上所述,MC68HC908JL3的28引脚有23位I/O其中12路A/D,不做A/D也可定义成普通I/O10个LED驱动25mA大电流输出2路输入捕捉或输出比较或PWM7个键盘中断口第2章 电路的设计与原理2.1 总体的电路详细见附录一。2.2局布电路的介绍2.2.1晶振电路外部晶振电路如图1-2所示,MC68HC908JL3的4号管脚OSC1是内部晶振的输入端,5号管脚OSC2是内部晶振电路的输出端。外部晶振XL最高可以接12MHz,典型值为4MHZ和8MHZ;电阻R21是反馈电阻,阻值一般为几兆到十几兆欧姆,当外部晶振的频率比较高时可以不要反馈电阻;电容C13、C14一般为6pF到30pF左右,两个电容可以相等,也可以略有差异,但是不能相差太大,略有差异有利于起振,相差太大则会导致不能起振,一般接两个相同容量的电容,由于实际的电容不可能做到绝对相同,所以数值相同的两个电容实际上也是存在差异的。 如图:晶振电路1-22.2.2 外部中断电路MC68HC08JL3的1号管脚是芯片的外部中断管脚,低电平或者下降沿有效,其方式由外中断状态和控制寄存器ISCR设置。当该管脚上输入低电平或者有一个下降沿时,并且允许外部中断请求时,单片机将产生一次外部中断请求,如果这时单片机又允许中断,则单片机将调用外部中断服务子程序。图1-3是MC68HC908JL3最简单的外部中断电路图,当按钮S2断开时,输入信号为高电平,当S2闭合时,输入信号为低电平,电容C17是一个滤波电容。图1-3 MC68HC908JL3外部中断电路图2.2.3蜂鸣器电路原理图我们这个系统采用了+5V的直流蜂鸣器,其控制电路如图1-4所示。输出信号通过NPN型三极管S8050进行电流信号的放大,三极管采用共发射极接法,蜂鸣器接在发射极极,这样可以有效的加大放大的能力。 图14 蜂鸣器电路原理图2.2.4语音芯片这个语音芯片控制简单,单片录音时间为16分钟,并且最多可以将录音内容分成独立的2400段。ISD4004语音芯片采用CMOS技术,内含晶体振荡器、防混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高密度多电平闪烁存储阵列等,因此只需很少的外围器件就可构成一个完整的声音录放系统。芯片设计是基于所有操作由微控制器控制,操作命令通过串行通信接口(SPI或Microwire)送入。采样频率可为4.0Hz、5.3Hz、6.4Hz、8.0kHz,频率越低,录放时间越长,而音质则有所下降。片内信息存于内烁存储器中,可在断电情况下保存100年(典型值)反复录音10万次。器件工作电压3V,工作电流2530mA,维持电流1A?单片录放语音时间816min,音质好,适用于移动电话机及其它便携式电子产品中。ISD4004系列芯片引脚图如图2所示。同相模拟输入(ANA IN+)-这是录音信号的同相输入端,输入放大器可用单端或差分驱动。单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3k输入阻抗决定了芯片频率的低端截止频率。在差分驱动时,信号最大幅度为峰峰值16mV。 反相模拟输入(ANA IN-)-差分驱动时,这是录音信号的反相输入端。信号通过耦合电容输入,最大幅度为峰峰值16mV,本端的标称输入阻抗为56k,单端驱动时,本端通过电容接地。两种方式下,ANA IN+和ANA IN-端的耦合电容值应用相同。 音频输出(AUD OUT)-提供音频输出,可驱动5k的负载。片选(SS)-此端为低,即选中ISD4004系列。串行输入(MOSI)-此为单行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入。 串行输出(MISO)ISD-串行输出端,ISD未选中时,本端呈高阻态。 串行时钟(SCLK)-ISD的时钟输入端,由于控制器产生,用于同步MOSI和MISO的数据传输。数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。 中断(INT)-本端为漏极开路输出,ISD在任何操作(包括快进)中检测到EOM或OVF时,本端变低并保持,中断状态在下一个SPI周期开始清除,中断状态也可用RITN指令读取。 行地址时钟(RAC)-漏极开始输出。生个RAC周期表示ISD存储器的操作进行了一行(ISD4004系列中的存储器有2400行)。8kHz采样频率的器件,RAC周期为200ms,其中175ms保持高电平,低电平为25ms。快进模式下,RAC为218.75s高电平,31.25s为低电平,该端可用于存储管理技术。 外部时钟(XCLK)-本端有内部下拉元件,芯片内部的采样时钟在出厂前已调校,误差在+1%内,在不外接时钟时,此端必须接地。 自动静噪(AM CAP)-1F电容构成内部峰值检测电路的一部分,检测出的峰值电平与内部设定的阈值作比较,决定自动静噪电路的工作与否。大信号时自动静噪电路不衰减,静音时衰减6dB。同时,1F电容也影响自动静噪电路时信号幅度的响应速度,本端接VCCA则禁止自动静噪。串行外部接口(SPI) ISD4004工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作。因此,对ISD4004而言,在时钟上升沿锁存MOSI引脚数据,在下降沿将数据送至MISO引脚。协议具体内容如下。所有串行数据传输开始于SS下降沿。SS在传输期间必须保持为低电平,在两条指令之间保持为高电平。数据在时钟上升沿移入,在下降沿移出。SS变低,输入指令和地址后,ISD行才开始录放保持。指令格式是8位控制码加16位地址码。ISD的任何操作(含快进)如果遇到EOM或OVF,则产生一个中断,该中断状态在下一个SPI周期开始时被清除。使用“读”指令会使中断状态位移出ISD的MISO引脚时,控制及地址数据也同步从MOSI端移入。所有操作在运行位(RUN)置1时开始,置0时结束。所有指令都在SS端上升沿开始执行。 OVF标志指示ISD录放操作已到达存储器的末尾。EOM标志只有放音过程中检测到内部的EOM标志时,此状态位置1,如图3所示。 以下列举了几种对ISD器件进行操作进的批令次序。*信息快进。用户不必知道确切的地址,就能快地跳过一条信息。信息快进只用于放音模式。放音速度是正常的1600倍,遇到EOM后停止,内部地址计数器加1,并接下条信息开始处。 *上电顺序。器件延时TPUD(8kHz)采样时,约25ms后才能开始操作。因此,用户发完上电指令后,必须等待TPUD,才能发出一条操作指令。例如从00处放音,应应遵循如下时序:发power up命令;等待TPUD(上电延时);发地址值为00的SETPLAY命令;发PLAY命令。器件会从00地址开始放音,当出现EOM时,立即中断,停止放音。如果从00处录音,则按以下时序:发power up命令;等待TPUD(上电延时);发power up命令;等待2倍TPUD;发地址值为00的SETREC命令;发REC命令。器件便从00地址开始录音,一直到出现OVF(存储器末尾),录音停止。 该电路正常工作时功耗为200mW,音量增大时功耗有所增加。整个电路工作稳定、可靠,输出的声音清晰,音色优美,主观上听不到循环模式下将ISD地址置零所产生的间断音。系统最大录放时间为16min,如需增加录放时间,只需增加ISD4004芯片数量,通过片选即可实现。例如,采用4片ISD4004,就能达到近一个小时的录音长度。 ISD4004在这个系统的应用如图1-5所示图1-5ISD4004外围电路2.2.5录音电路如图2-5所示图2-5 录音电路2.2.6放音电路如图2-6所示。 放音电路我们应用了功放芯片TDA2822,而且使用了这芯片的共摸输出而直接接到喇叭上。我们在输入使用了可变电阻从而可以控制音量。图2-6 录音电路2.2.7 MAX7219的介绍 MAX7219是是一种高集成化的串行输入/输出的共阴极LED显示驱动器,可同时驱动8位共阴极LED或64个独立的LED。其内部结构框图如图1所示,主要包括移位寄存器、控制寄存器、译码器、数位与段驱动器以及亮度调节和多路扫描电路等,可以数片级联,而与微处理器的连接只需3根线。MAX7219内部设有扫描电路,除了更新显示数据时从单片机接收数据外,平时独立工作,极大地节省了MCU有限的运行时间和程序资源。MAX7219芯片上包括BCD译码器、多位扫描电路、段驱动器、位驱动器和用于存放每个数据位的88静态RAM以及数个工作寄存器。通过指令设置这些工作寄存器,可以使MAX7219进入不同的工作状态。 MAX7219采用串行接口方式,只需LOAD、DIN、CLK三个管脚便可实现数据传送。DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个CLK的上升沿被移入到内部16位移位寄存器中。然后,在LOAD的上升沿数据被锁存到数字或控制寄存器中。LOAD必须在第16个时钟上降沿或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失。DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端,随CLK的下降沿输出。MAX7219的操作时序如图2所示。 MAX7219的串行数据标记为D15D0,其中低8位表示显示数据本身,最高的4位D15D12未使用,寻址内部寄存器的地址位占用D11D8,选择14个内部寄存器,见图1图1 MAX7219内部结构框图 图2 MAX7219的数据传送时序 MAX7219内部具有14个可寻址数字和控制寄存器。其中的8个数字寄存器由一个片内88双端口SRAM实现。它们可直接寻址,因此可对单个数进行更新并且通常只要V+超过2V数据就可保留下去。除8个数位寄存器之外,还有无操作、译码方式、亮度调整、扫描位数、睡眠模式和显示器测试6个控制寄存器。 图3 显示器与寄存器数据位的对应关系译码方式控制寄存器可以设置每个数位工作于BCD译码方式,或者非译码方式,控制字节的8位正好对应8个数位,该位为1表示该数位工作于BCD码方式,为0表示该数位工作于非译码方式。当采用代码BCD译码方式时,对10个数字“09”和5个字符“-,E,H,L,P”,译码器仅针对数字寄存器中数据的低四位D3D0,而不考虑D6D4位。设置小数点(SEG DP)的D7与编码方式,点亮时,D7置”1”,熄灭时,D7置“0”即可。表2是BCD码的字符编码。 当选择不译码方式时,数据位D7D0对应于LED的段线如图3所示。显示器的亮度可以通过模拟与数字两种方式进行调整,模拟方式是在Vcc与ISET引脚之间外接一个电阻RSET,这时段驱动器提供的峰值电流约为ISET引脚电流的100倍,调整该电阻的大小即可改变显示器亮度,电阻的最小值为9.53KW,此时提供的段驱动电流典型值为40mA。 亮度的数字化调整是使用亮度调整寄存器,此时芯片内启用一个脉宽调制器,它受亮度调整寄存器低半字节D3D0的控制,产生16种占空比不同的输出脉冲,形成16级亮度调整,此时以RSET设定峰值电流。寄存器数据为0H时,脉冲占空比为1/32,表示MAX7219驱动的段点亮时间仅为整周期的1/32,这是最暗的情况。数据从0H变化到FH,表示脉冲占空比由1/32变化到31/32 (注意这里的分子只有奇数),此时扫描消隐期按比例递减,亮度线性递增。因此寄存器数据为FH时最亮,消隐期仅为1/32。图4 MAX7219在MC68HC908JL3中的应用连接图MAX7219有驱动8个数码管的能力,但实际应用中不一定恰好是8个。扫描位数寄存器用于设置显示器数码管的实际扫描个数,由扫描位数寄存器的D2D0设定,其数据为0H时,表示仅扫描数位0,数据为01H时,扫描数位0与数位1,如此类推,直至数据为7H,表示8个全扫描。8个全部扫描时,扫描速率为800Hz,只扫描N个时,扫描速率为8fOSC/N。应注意扫描的位数变化对亮度有明显影响。当扫描的数码管等于或少于3个时,单个数位驱动器将消耗较大的功率,因而必须依据使用的数码管实际数量调整电阻RSET的大小,限制消耗的电流。 显示器测试寄存器有正常与测试两种设定模式,数据字节的D0位置0为正常模式,D0置1为测试模式。测试时,以31/32的占空比扫描MAX7219全部数位段,使得所有显示器的所有段以最大的亮度点亮。MAX7219与MC68HC908JL3中的应用MAX7219采用串行通信,只需通过CLK、LOAD、DIN三根线便可与多种MCU接口。M68HC908系列单片机是新一类 Motorola高性能的8位单片机,具有速度高、功能强和价格低等特点,其指令码与M68HC05完全兼容。Motorola自1999年推出该系列单片机以来,至今已推出了三十余种不同型号的MC68HC908单片机。本文以Motorola在中国大力推广的通用型芯片MC68HC908JL32为例,介绍MAX7219与MC68HC908系列单片机的接口电路,如图4所示。由于MC68HC908系列的单片机都具有一定数量的I/O管脚,所以该应用实例同样适用于其它型号的MC68HC908单片机,具有一定的代表性。 图中MC68HC908JL32的PORTB口工作于输出方式,并结合MAX7219的工作时序,对MAX7219进行控制。WRI_INSTRU为MAX7219控制子程序,它在CLK管脚产生8个时钟脉冲,并将入口参数A中的8位值在CLK的上升沿串行输出到DIN。LED_WR为MAX7219控制主程序,它首先置LOAD为低电平,然后通过两次调用WRI_INSTRU完成向MAX7219写入16位串行数据,最后再置LOAD为高电平,产生一个上升沿脉冲以满足MAX7219的数据传送时序。2.2.8乘客端控制电路板这个电路就是这样设计中主要的部分如图2-9,他是让乘客一上车就可以选择那里下车,数据是与司机端同步的,这样就达到了一个交流的作用。这个电路包括了一对一的按钮和LED,还设置了一个紧急下车按钮,还设计了一个直流峰鸣器。 图2-9 乘客端控制电路第3章 软件的说明3.1软件的介绍这个设计所使用的编程语言是C语言,根据硬件设置流程图、根据流程图而设计具体的程序,从而经过调试而达到完成软件设置的目的。3.2软件设计的原理这个报站系统的软件是在单片机芯片MC908JL3的控制下,首先是程序的初始化,把所有的变量定义。判断是乘客或者司机否按了键,按了就向ISD4004输数据,同时也向MAX7219输入数据,然而启动数码管和LED,做到了乘客端和司机端两个控制电路的LED的同是亮和灭。当司机选择了录音或者报站的时间,这将输入不同的代码到ISD4004和MAX7219中,从而达到了不同的效果。经过一个死循环,这样就可以连续的工作下去了。程式就是这样工作的。下面将介绍具体的电路。3.2.1 ISD4004是典型代码(1)void SendISD4004Data(void) for(i=0;i i; temp2 = temp2 & 0x01; ISD4004MOSI = !(!(temp2); ISD4004SCLK = 0; ISD4004SCLK = 1; 上面这个是把一个字节的数据按位送到ISD4004: 过程的先把要送到ISD4004的数据放到MOSI中,然后在SCLK中产生一个上升沿. (2)void PowerUp(void) ISD4004SS = 0; /先把SS拉低 ISD4004Data = 0x20; SendISD4004Data(); /把控制码送到ISD4004 ISD4004SS = 1; /把SS拉高,ISD4004将按照控制码的意义进行动作上面是把数据送到ISD4004的整个过程: 1)把ISD4004的片选信号SS拉低选择该片芯片. 2)把要传送到ISD4004的每位数据放到MOSI上,并紧接着在SCLK上产生一个上升沿,实现把数据一位一位的送到ISD4004中. ISD4004的控制码长度为8位或者24位. 3)控制码送完后,把SS拉高,这样ISD4004就会开始动作.(3)void Record(void) PowerUp(); /上电 Delay50mS = 0; / 等待TPUD for(;Delay50mS6;) PowerUp(); /上电 Delay50mS = 0; / 等待TPUD for(;Delay50mS6;) Delay50mS = 0; / 等待TPUD for(;Delay50mS8);/取录音高8位地址 SendISD4004Data(); /送地址高字节 ISD4004Data = 0xA0; SendISD4004Data(); /SetRecord ISD4004SS = 1; /把SS拉高,把数据送到ISD4004中 RecordAddress = RecordAddress + 100;/每条消息的最长时间为40秒 ISD4004SS = 0; /先把SS拉低 ISD4004Data = 0xB0; SendISD4004Data(); /把控制码送到ISD4004 ISD4004SS = 1; /把SS拉高,ISD4004将按照控制码的意义进行动作 ISD4004Flag = 2; /设定录音标志上面这个是ISD4004录音的过程,要ISD4004录音操作中应这样送控制码: 1)上电PowerUp,8位控制码20H。 2)等到TPUD(即上电延时)。 3)上电PowerUp 。 4)等到2倍TPUD 。 5)SetRec,16位地址值+8位控制码A0H 。 6)Rec,8位控制码B0H。(4)void Play(unsigned int Address) PowerUp(); /上电 Delay50mS = 0; / 等待TPUD for(;Delay50mS8);/取播放高8位地址 SendISD4004Data(); /送地址高字节 ISD4004Data = 0xE0; SendISD4004Data(); /SetPlay ISD4004SS = 1; /把SS拉高,把数据送到ISD4004中 ISD4004SS = 0; /先把SS拉低 ISD4004Data = 0xF0; /Play SendISD4004Data(); /把控制码送到ISD4004 ISD4004SS = 1; /把SS拉高,ISD4004将按照控制码的意义进行动作 上面这个是ISD4004的放音过程。要做到发音必须做到: 1)上电PowerUp,8位控制码20H 5)SetPlay,16位地址值+8位控制码E0H 6)Play,8位控制码F0H3.2.2 MAX7219的典型代码下面这个是向Max7219写数字或者控制寄存器的代码。要给MAX7219送数据必须把LOAD置低电平。void MaxWrite(unsigned char CtrlReg, unsigned char DataReg) MaxLOAD = 0; /LOAD /送控制数据 for(i=7;i=0;i-) MaxCLK = 0; /*clock低电平*/ /*准备数据,送到Din管脚,先送高位再送低位*/ temp2 = CtrlReg; temp2 = temp2 i; temp2 = temp2 & 0x01; MaxDIN = !(!(temp2); MaxCLK = 1; /*clock高电平,将氖菟腿爰拇嫫?/ /送数据字节 for(i=7;i=0;i-) MaxCLK = 0; /*clock低电平*/ /*准备数据,送到Din管脚,先送高位再送低位*/ temp2 = DataReg; temp2 = temp2 i; temp2 = temp2 & 0x01; MaxDIN = !(!(temp2); MaxCLK = 1; /*clock高电平,将氖菟腿爰拇嫫?/ MaxLOAD = 1; /LOAD置位,输出有效这个是初始化MAX7219的过程void InitMAX7219(void) /设置Max7219的每位为非BCD译码 CtrlReg = 0x09; DataReg = 0x00; MaxWrite(CtrlReg, DataReg); /设置亮度为最大 CtrlReg = 0x0A; DataReg = 0x0F; MaxWrite(CtrlReg, DataReg); /设置扫描界线为前7位 CtrlReg = 0x0B; DataReg = 0x06; MaxWrite(CtrlReg, DataReg); /设置工作方式为正常 CtrlReg = 0x0C; DataReg = 0x01; MaxWrite(CtrlReg, DataReg);3.3流程图第4章 电路的应用与调试4.1故障的发现与排除在调试的过程中。我们发现了一开机数码管和LED就是随机的点亮和息灭。在发现这样问题的时候我们首先检查了硬件的问题,在经过几次检查以后确定不是硬件的问题以后,我们就检查了软件。发现了在初始化的时候忘记了把MAX7219的数据清零了。经过改正以后,几乎没出现这个问题了。但在下次用的时候或者复位以后还是有出现这个问题的情况。经过在网上查找以后在发现问题多数出现在MAX7219的LOAD的管脚上。原来常见的问题是开机上电时,LED数码所有段位全部点亮,芯片处于锁死的状态,无论怎么重新载入数据都好难恢复。但使用绕线变压器作为电源的时候,这种开机锁死的情况较少,概率110,使用小功率开关电源时,开机锁死的情况较多,3060%,使用大功率开关电源时,开机锁死的情况在80以上。分析其中的原因是在于开机瞬间,电路中出现较多的紊乱信号,而MAX7219的引脚输入阻抗比较大,容易收到这些信号的影响,而且MAX7219内部电路在输入过载的情况下会出现类似运放阻塞的问题。原来解决方法就是在MAX7219的Load引脚处接一个10K的电阻到地线,这样开机时的紊乱信号就不能在Load引脚处产生足够大的电压。在实际使用中,这种方法能够100解决绕线变压器电源和小功率开关电源的影响

温馨提示

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

评论

0/150

提交评论