1、青岛科技大学本科毕业设计(论文)前言随着计算机新技术不断地涌现和VLSI(超大规模集成电路)设计技术的迅猛发展,计算机无论在系统体系结构还是在性能上都发生了巨大的变化。计算机一方面向着高速、智能化的巨型机方向发展,另一方面向着嵌入式微型机的方向发展。其中,微型计算机以其性能和容量不断提高,而价格不断下降的趋势,使其在社会各个领域乃至家庭生活中发挥着越来越大的作用。然而单片机的出现可以说是对计算机技术的又一次飞跃。单片机出现至今才短短20年时间,纵观20年来单片机发展里程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更
2、具个性的发展趋势。单片机以其寿命长、运行速度快、低电压、低功耗、低噪音、技术可靠等许多的优势已经逐渐成为了市场上的主力部队。同时随着微电子技术的高速发展,许多技术应运而生。其中,各种语音处理系统不断被开发出来,在各行业得到广泛应用,如语音报站器、自动解说装置、采访录音笔等等,为人类的生产、生活提供了极大的便利。随着电子技术的快速发展,语音处理技术越来越多地在工业,交通,通信等领域得到应用。语音处理的理论和技术也日趋完善和成熟。人们对语音技术的实际需求也越来越迫切,使得语音处理实用化产品不断出现。操作方便、定时准确、多功能化的语音提示定时器也随之被广泛关注。传统的定时器功能单一已不能满足现代化生
3、产生活的需要,本设计中的语音提示定时器是基于凌阳SPCE061A单片机而设计的,具有操作方便、定时准确、语音实时提示等优点。凌阳SPCE061A是一款16位单片机 ,它包含了DSP功能,有很强的信息处理能力,具备运算速度高的优势1。同时它提供了各种音频压缩编码的算法API函数库,使得编程变得简单明了。凌阳SPCE061A的这些特性为处理语音信号提供了极大的方便,使得其在数字录音系统、语音提示、语音报警、语音信箱等领域中有着广泛地应用。设计目的及背景随着科学技术的飞速发展、科技的进步、生活水平的提高以及生活节奏的加快,人们对于时间的定时、报时等功能的要求越来越高,人们把工作重心放在了一个特定的时
4、间段内,希望得到一个特定、恒定的工作时间段,电子产品及其所采用的元器件于是不断更新换代以满足人们的需求。当今,语音提示定时器以其操作方便,定是准确,可多功能化等优点而被广泛应用。最先用于定时的装置是古时的沙漏和水漏,这种粗糙的定时装置已经可以满足当时日常生活的需求了。沙漏最在出现于14世纪的欧洲很普遍,那时的人们随身携带,作为钟表使用。但是到了现在,沙漏在作为工艺品的同时,却很难满足精确计时的要求了。人们为了达到准确控制时间的目的,便开始改进这种定时器,于是便诞生了钟表。有记载的最古老的机械钟出现于13世纪90年代,那时的钟面只有小时和刻的刻度。1876年,英国外科医生索加发明了一种定时装置,
5、这种装置每周上一次发条,作为用机械钟的动力,然后用机械钟来控制控制煤气阀门的开关。现在发条式机械钟仍然很普遍,包括怀表、闹铃。到了1918年,人们发明了电子时钟后,就不用上发条来作为动力了。起初,人们最先用电能代替机械能,发明出了石英指针式电子钟。1965年,日本青年山崎淑夫发明了液晶显示数字式电子钟。而现在,高级的电子时钟的误差几乎从不超过一秒。而为了得到精准的时间,科学家们用“原子钟”作为世界时间的计量具。这个量具的基本单位是原子时秒,即铯原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间。然而这个“终极装置”过于精确,以至于只能适用于理论科学上,世界上绝
6、大多数人对此仅仅是了解而已。而且这个标准在相当一段时间内不会应用到定时器上。无论是沙漏、水漏,还是机械钟、电子钟,这些装置都是定时器的前身。近代战争时期,科技迅速发展,军队需要定点、定时地对敌人进行打击,完成任务。于是人们将定时器用在了军事方面,制成了定时炸弹,定时雷管。这种武器可以得到出敌不被、意想不到的打击效果,而定时器的功能却因此深入人心。在我看来,“定时炸弹”却是用来解释定时器的最好方式:规定的时限一到,即被触发!定时器的出现确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。到了现在,为了满足人们日常生活中更多的需求,定时器开始走入了普通家庭。不少家用电器都安装了定时
7、器来控制开关或工作时间,像洗衣机的定时搅拌、微波炉的定时烘烤、空调机和电冰箱的定时供冷以及电视机和PC机的定时关机等等,这些功能使人们的生活愈发简单、便捷了许多。1核心部件和开发平台1.1 凌阳SPCE061A单片机简介1.1.1 SPCE061A模块结构随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化发展,作为高新技术之一的单片机以其体积小、功能强、价格低廉、使用灵活等优势,显示出了很强的生命力。进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。随着单片机集成的发展,其应
8、用领域的不断扩展台湾凌阳科技公司推出的一种新型16位单片机SPCE061A。该单片机的问世,使得16位单片机的科技含量及应用跃上一个新的台阶。SPCE061A是一款16位结构的微控制器,其结构和组成概览如图1-1、图1-2所示。SPCE061A主要包括输入/输出端口、定时器/计数器、数/模转换、模/数转换、串行设备输入输出、通用异步串行接口、低电压监测和复位等部分,并且内置在线仿真电路ICE接口,较高的处理速度使其能够快速的处理复杂的数字信号。ICE_SCKMIC_INAUD1AUD2IOA15IOA0IOB15IOB0 32引脚通用输入输出端口ICE_ENICE_SDAXI/RXOVCP16
9、位微处理器nSPTM+ICEFLASHRAM双16位定时器/记数器时基中断控制锁相环震荡器CPU时钟实时时钟低电压检测/低电压复位7通道10位ADC单通道ADC+AGC双通道10DAC串行输入输出接口IOB0(SCK)IOB1(SDA)图1-1 SPCE061A的结构Fig.1-1 The Block of SPCE061A图1-2 SPCE061结构框图Fig.1-2 The Block Diagram of SPCE061AOSCO NCOSCI NCXTEST NCVDD NCXICE NCXICECLK PVPPXICESDA IOB11VSS IOB12PVIN IOB13DAC1
10、IOB14DAC2 IOB15VREF2 SLEEPVSS VSSAGC XROMTOPI IOA15MICOUT IOA14MICN IOA13PFUSE IOA12NC IOA11NC IOA10NC IOA9IOB10 VDDHIOB9 VDDHIOB8 VSSIOB7 VSSIOB6 IOA7IOB5 IOA6NC IOA5NC IOA4NC IOA3IOB4 IOA2IOB3 IOA1IOB2 IOA0IOB1 NCIOB0 NCRESB VSSVDD VMICVCP VDDVSS VRTNC VCMVDDHIOA8NCMICPSPCE061A12131415161718192021
11、2223242526272829303132747372717069686766656463626160595857565554757677787980818283841234567891011535251504948474645444342414039383736353433图1-3 SPCE061A引脚排列图 Fig.1-3 The Pin Arrangement Diagram of SPCE061AXICECLKMICOUTXICESDA1.1.2芯片管脚排列及功能芯片管脚排列如图1-3所示,管脚功能如列表1-1所示。表1-1 SPCE061A管脚功能表Tab 1-1 The Pin
12、Function Table of SPCE061AIOA0IOA15(4148,5360)I/OA口,16个IOB0IOB15(51,8176,6864)I/OB口,16个OSCI 13振荡器输入,采用石英晶振时,接晶振OSCO 12振荡器输出,采用石英晶振时,接晶振RES-B 6复位信号输入端,低电平有效ICE-EN 16ICE使能端,接在线调试器PROBE的使能脚ICE-ENICE-CLK 17ICE时钟端,接在线调试器PROBE的使能脚ICE-CLKICE-SDA 18ICE数据端,接在线调试器PROBE的使能脚ICE-SDAPVIN 20程序保密设定电源输入脚PFUSE 29程序保密
13、设定输入脚DAC1 21音频输出通道1DAC2 22音频输出通道2VREF2 232V参考电压输出脚AGC 25语音输入自动增益控制引脚OPI 26Microphone第二级运放输入脚MICOUT 27Microphone第二级运放输出脚MICN 28Microphone正向输入脚MICP 33Microphone负向输入脚VRT 35A/D转换参考电压输入脚VCM 34ADC参考电压输出脚VMIC 37Microphone电源SLEEP 63睡眠状态指示,当CPU进入睡眠状态时,输出高电平VCP 8锁相环压控振荡器阻容输入端XROMT PVPP XTEST 61.69.14出厂测试用管脚,使
14、用时悬空即可VDDH 51.52.75I/O电平参考电压输入端,当输入参考电压为5V/3.3V时,I/O输入、输出高电平为5V/3.3VVDD 7琐相环PLL电源VSS 9琐相环PLL地VSS 19.24模拟信号地VSS 38.49.50.62数字信号地VDD 15.36数字信号电源1.1.3 SPCE061A特点 凌阳单片机有以下特点1: (1)体积小、集成度高、可靠性好且易于扩展在SPCE061A把各功能部件模块化地集成在1个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。另外,模块化的结构易于系列扩展,以适应不同用户的需求; (2)低功耗、低电压SP
15、CE061A采用CMOS制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。另外,SPCE061A的工作电压范围大(2.6 3.6 V),能在低电压时正常工作,且能用电池供电。这对于其在野外作业等领域中的应用具有特殊的意义; (3)高性能价格比SPCE061A片内带有高寻址能力的ROM、静态RAM和多功能的I/O口。另外,凌阳科技CPU的指令系统提供出具有较高运算速度的16位16位的乘法运算指令和内积运算指令,使得SPCE061A运用在复杂的数字信号处理方面既很便利,又比专用的DSP芯片廉价; (4)具有较强的中断处理能力SPCE061A中断系统支持10个中断向量及
16、10余个中断源,适合实时应用领域; (5)功能强、效率高的指令系统SPCE061A的指令系统,指令格式紧凑,执行迅速。为缩短开发产品商品化的时间,指令结构提供出对高级语言的良好支持。1.1.4 SPCE061A的应用随着单片机功能集成的发展,其应用领域也逐渐地由传统的控制扩展为控制处理、数据处理以及DSP等领域,凌阳科技的16位单片机SPCE061A就是为此而设计的。SPCE061A的全双工异步通讯的串行接口,可实现多机通讯,组成了分布式控制系统。A/D、D/A转换接口与CPU的DSP运算功能结合在一起,可实现语音识别功能,使其方便地运用于数字声音和语音识别应用领域。具体在下列应用领域大有用武
17、之地:语音识别类产品、智能语音交互式玩具、高级亦教亦乐类玩具、儿童电子故事书类产品、通用语音合成器类产品、需较长语音持续时间类产品等。 1.2集成开发环境IDE凌阳科技将软件编译、链接以及下载SPCE061A程序代码的各种工具集成在一个Windows操作系统下,做成了一个功能强大的集成开发环境nSPTM IDE(integrated development environment)。nSPTM IDE在Windows环境下操作,支持C语言和汇编语音,集编译、编程、链接、调试和仿真为一体,且集成开发环境IDE具有友好的交互界面、下拉菜单、快捷键和快速访问命令列表等,使编程、调试操作更加方便且高效
18、。此外,它的软件仿真功能可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序。nSPTM IDE具有项目管理功能。它能为用户建立一个项目文件,里面可以包含不同的元组和文件,提供用户程序及资源文档的编辑和管理,并提供环境要素的设置途径,为用户最后的程序及库的编制(包括编译、汇编以及链接等)提供了一个良好的调试环境。nSPTMIDE对项目进行了编制后,还能对程序进行无误及优化处理。用户程序中的语法错误通过编译而排除后,便可借助nSPTMIDE的集成调试器来运行、调试程序,从而查找出程序中存在的逻辑错误。在调试器中用户能够以连续、单步及断点等运行方式来运行程序,并借助一些调试窗口来查看变量、寄存器
19、及内存等,以观察或了解程序运行的各个细节、判断程序的正误。22系统总体方案设计2.1 定时器的工作原理 定时器是单片机系统中最基本、最常用的部件之一。在单片机中,定时器其实充当了闹钟的角色,用来精确的确定某一时间间隔。定时器的出现使我们拥有了既可精确计时,又能及时提醒的“闹钟”,这就大大简化了单片机编程设计。定时器中包含一个计数部件,CPU每隔一定时间自动向这个计数部件发出一个信号,使它的数值加1(或减1)。计数部件可以记录的最大数值时有限的,例如,一个8位的定时器,其最大的计数值是255,如果计数达到了最大值,当CPU再次发出计数信号时,计数将会发生溢出,从最大值变回0(也可以通过设置使其溢
20、出后变成一个非0的数)。由于计数的过程是CPU自动控制的,无需程序的干预,因此只需设定一个计数频率(也就是设置CPU每隔多长时间发出一个计数信号),就可以根据计数值来判断和控制某段过程的执行时间了6。SPCE061A提供了两个16位的定时器:TimerA和TimerB,它们也可以作为计数器使用。它们的计数部件可以记录的最大数值时65535。这两个定时器的使用方法非常简单,只需对单片机中的几个寄存器进行控制就可以了。两个定时器可以分别设置工作状态而互不影响。其中,TimerA为通常计数器;TimerB为多功能计数器。TimerA的时钟源由时钟源A和时钟源B进行“与”操作而形成;TimerB的时钟
21、源仅为时钟源A1。定时器发生溢出后会产生一个溢出信号。一方面,它会作为定时器中断信号传输给CPU中断系统;另一方面,它又会作为4位计数器计数的时钟源信号,输出一个具有4位可调的脉宽调制占空比输出信号APWMO或者BPWMO(分别从IOB8和IOB9输出),并来控制马达或者其他一些设备的速度。此外,定时器溢出信号还可以用于触发ADC输入的自动转换过程和DAC输出的数据锁存。2.2系统方案论证方案一:采用目前比较通用的MCS-51单片机。此单片机的运算能力强,软件编程灵活,自由度大。虽然该系统采用单片机为核心,能够实现对外围电路的智能控制,但需要外扩RAM、ROM组成基本处理系统,外加专门的语音芯
22、片构成语音输出电路,同时由于端口资源的限制,必须扩展接口(这里采用8255芯片实现),这就使得整个系统硬件电路变得复杂。整个系统如图2-1所示:MCS-518255KEYRAMROM语音芯片LCD图2-1 采用MCS-51的系统图Fig 2-1 The System of MCS-51方案二:采用MCS-51单片机扩展方案虽然能够实现所要求的功能,但是系统较为复杂,给开发带来很多麻烦,可采用集成的实现方案。凌阳单片机可以实现语音播放,在软件以及硬件上是非常有特点的。首先是硬件方面,SPCE061A内部具有一个16*16的硬件乘法器,可以直接用来做乘积运算;而软件方面提供了S480A2000S2
23、40等函数库,可以有效的处理语音数据,在失真不大的情况下,将运算量降到最小。综上两方面,凌阳的SPCE061A可以很好的完成语音播放以及录音的功能。另外,SPCE061A还内置有在线仿真接口,这为编程及在线调试提供了方便的条件。而且该芯片性价比很高,其内部置有16位乘法器、内积滤波运算等功能,其价格却只有8位单片机的价格,因此此芯片具有开发成本较低的优势。同时,凌阳音频还很有特色,有自己的语音格式,压缩比最大可达80:15。目前,较常用的音频格式有5: 表2-1音频格式列表Tab.2-1 The Table of Audio Format模块名称语音压缩编码率类型资料采样率SACM_A2000
24、16Kbit/s,20Kbit/s,24Kbit/s16KHzSACM_S480/S7204.8Kbit/s,7.2Kbit/s16KHzSACM_S2402.4Kbit/s24KHzSACM_MS01音乐合成(16Kbit/s,20Kbit/s,24Kbit/s)16KHzSACM_DVR(A2000)16Kbit/s的资料率,8K的采样率,用于ADC信道录音功能16KHz采用SPCE061A实现本设计的功能在原理上讲非常简单,就是通过SPCE061A自带的A/D、D/A转换。首先通过A/D采集语音信号进来,通过软硬件压缩为数据存在芯片内部的FLASH上,然后同样通过软硬件解压缩该数据,再通
25、过D/A转换为模拟信号,通过喇叭就播放出来了。采用SPCE061A的方案如图2-2所示: SPCE061A电源音频录入扬声器(SPY0030)图2-2 采用SPCE061A的系统图Fig 2-2 The System of SPCE061A鉴于上面的分析考虑,我们采用方案二。 2.3系统硬件的组成2.3.1语音系统设计思路凌阳 SPCE061A是 16位 DSP特色单片机,有很强的信息处理能力,具备运算速度高等优势。这为语音的录取、播放、合成及辨识提供了良好条件,所以采用SPCE061A可以方便的实现语音的录放。该单片机内置有2路DA转换,8路AD转换及在线仿真等丰富的功能。其中AD转换为音频
26、转化通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。2路10位精度的DA,只需要外接功放即可完成语音的播放。此外,凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准的C语言,可以实现C语言与凌阳汇编语言的相互调用。并且提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音录放,这些都为软件的开发提供了方便的条件。2.3.2语音系统的硬件电路组成语音录放系统以凌阳16位单片机为核心,外接一个电源和一个扬声器组成。由SPCE061A的IO口完成地址线、数据线和控制线扩展功能。硬件连接框图见图2-3所示: SPCE061A电源音频录
27、制音频播放键盘输入部分图2-3 语音系统硬件组成Fig 2-3 The Hardware Components of Voice System其中,键盘输入部分使用三个按键,用于设置定时时间和控制语音的录制与播放;电源部分使用3节5号电池供电,由J10端口接入;音频录制部分主要是用于语音的录取;音频播放部分用于播放语音。2.3.3 SPCE061A最小系统SPCE061A最小系统包括SPCE061A芯片及外围的基本模块,其中外围的基本模块包括:晶振输入模块、锁相环外围电路、复位电路、指示灯等,如图2-4所示:图2-4 SPCE061A最小系统电路图Fig.2-4 The Minimum Sys
28、tem Circuit Diagram of SPCE061A2.3.4 电源模块SPCE061A采用3节5号电池供电,由J10端口接入。其电路如图2-5所示,其中SPCE061的内核供电为3.3V,而I/O端口的电压可以选择3.3V也可以选择5V。所以,在板子上具有两种工作电压:5V和3.3V。对应的引脚中15、36和7必须是3.3V,对于I/O端口的电压51、52、75可以使3.3V也可以是5V, 在电源模块中有一个端口电平选择跳线,这两种电平的选择通过跳线J5来选择。如图中的J5。图2-5 电源电路图Fig.2-5 The Power Circuit2.3.5音频输出模块SPCE061A
29、有8个10位模数转换通道,其中7个通道用于将模拟量信号转换为数字量信号,可能直接通过引线(IOA06)输入。另外有一个通道只作为语音输入通道,通过内置有自动增益控制放大器的麦克风通道(MIC IN)输入。实际上可以把ADC看作是一个实现模数信号转换的编码器。SPCE061A为音频输出提供了2个10位的数模转换器,即DAC1和DAC2。DAC1,DAC2转换输出的模拟量电流信号分别通过AUD1和AUD2管脚输出。音频输出部分原理图如图2-6所示,可以直接接听喇叭输出的声音。其中SPY0030是凌阳公司开发的专门用于语音放大的芯片。芯片将声音处理后输出,经SPY0030音频放大输出,通过扬声器还原
30、为声音。图2-6 音频输出电路图Fig.2-6 The Circuit of Audit OutputSPCE061A内置2路10位DAC,只需要外接功放电路即可完成语音的播放。可以接耳机也可以直接听喇叭输出的声音。2.4系统软件设计由于使用了凌阳SPCE061A单片机,使得外围电路变得简单。硬件电路确定后,根据硬件电路的特点和结构,设计并编写相应程序。同硬件设计一样,软件设计也是分块进行的。整个程序主要包括以下部分的程序:主程序、键盘扫描程序、语音录制程序以及语音播放程序等部分。各部分程序由主程序调用,组成一个整体。2.4.1主程序设计程序按照模块化设计,所有功能可通过调用子程序来由主程序实
31、现,主程序流程图如图2-7所示:录音开始录音初始化NY定时 停止系统初始化键盘扫描取键值语音录入保存至存储器置为停止模式调用程序设定时间开始计时工作到时间?语音提示图2-7 主程序流程图Fig.2-7 The Flowchart of Main Program2.4.2键盘扫描程序由于机械触点的弹性作用,在键被按下或弹起时会出现电压抖动,从最初按下到接触稳定要经过数毫秒的弹跳时间。为保证键识别的准确,必须进行去抖动处理,去抖动有硬件和软件两种方法硬件方法就是加去抖动电路,从根本上避免抖动;软件方法有很多种,本例中主要是利用主程序的循环扫描,主程序循环一次,扫描一次按键,当连续N次扫描到的键值都
32、一样时,则说明是稳定的按键值。键盘扫描程序流程图如图2-8所示:有键按下初始化键扫描按键处理进入睡眠2Hz中断唤醒键唤醒无键按下图2-8 键盘扫描程序流程图Fig.2-8 The Diagram of Scanner Keyboard2.4.3语音录制程序设计凌阳的SPCE061A是16位单片机,具有DSP功能,有很强的信息处理能力,具备运算速度高等优势,这些无疑为语音的录制和播放提供了条件。SPCE061A的A/D转换器有8个通道,其中有1个通道是MIC-IN输入,它专门用于对语音信号进行采样。语音信号经MIC转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。S
33、PCE061A内部自动增益控制电路AGC能随时跟踪、见识监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使削波减至最小。A/D转换器对输入的音频信号进行8kHz采样,并按照凌阳音频编码格式进行编码,每秒将占用16kbits的存储器空间。系统扩张了一块电量为1Mbits的SRAM存储器HM628128A来存储语音数据。语音录制存储的流程主要包括以下几个方面:(1)语音采样:在定时中断的控制下,以一定的速率(8kHz)进行A/D转换;(2)压缩编码:将采集到的数据以某种算
34、法压缩编码;(3)存储:将编码后的数据保存到存储介质中。语音录制存储流程如图2-9所示: 录音循环 Y N 中断服务 初始化存储空间间开始录音初始化初始化编码算法空间已满?数据编码从编码队列获取数据保存至存储器开始定时中断AD采样并填充样本队列返回语音样本队列语音资源图2-9 语音录制流程图Fig.2-9 The Diagram of Voice Recording2.4.4语音播报程序设计语音播放的流程主要包括以下几个过程:(1)数据提取:语音数据送入解压缩队列;(2)数据解码:解压缩数据并送入输出队列;(3)转换为模拟信号:在定时中断的控制下进行数模转换;(4)转换为声音:模拟信号经滤波、
35、放大,通过扬声器输出。语音播放流程如图2-10所示:开始语音资源 播放循环 Y N 中断服务播放初始化开始播放播放完毕?解码,填入播放队列停止播放播放队列从播放队列取出数据送DAC输出返回定时中断图2-10语音播放流程图Fig.2-10 The Diagram of Voice Playing语音录放程序见附录。 3系统调试3.1调试方法调试的主要过程包括:(1) 系统硬件电路的诊断和检查;(2) 程序的输入与修改;(3) 硬件电路、程序的运行与调试;(4) 程序固化到EPROM中。3.1.1 硬件调试硬件调试是利用开发系统、基本测试仪器(万用表、示波器等),通过执行开发系统有关命令或运行适当
36、的测试程序(也可以是与硬件有关的用户程序段),检查用户系统硬件工作是否正常。硬件调试可分静态调式与动态调试两步进行。1)静态调试静态调试是在用户系统未加电工作时的一种硬件检查。具体步骤如下:(1)目测。主要是检查印刷电路板上的印制线是否有断线、有无毛刺、是否与其它线或焊盘粘连、焊盘有无脱落、金属化过孔是否连通等。(2)万用表检测。主要是检查他们的通断状态是否与设计相符,再检查各种电源线与地线之间是否有短路现象,仔细检查并排除。(3)加电检查。它是在对印刷板加电前,检查所有插座或器件的电源额定值是否与电源电压相符,再加电检查各点电压是否正常。(4)联机调试。在静态检查印刷板、连接、器件等部分无物
37、理性故障后,我们可将用户系统与单片机开发系统用仿真电缆连接起来,联机检查上述连接是否正确、可靠。2)动态调试动态调试是在用户系统工作的情况下,发现和排除系统硬件中存在的器件内部故障、器件间连接逻辑错误的一种检查方法。3.1.2 软件调试软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除的过程。软件调试一般采用先独立后联机、先分块后组合、先单步后连续的调试方法。(1)先独立后联机。就是说把不依赖于硬件的那些软件先进行单独的调试,形成与硬件无关和依赖于硬件的两大类用户程序块。在具有交叉汇编软件的主机或与主机联机的仿真机上,与硬件无关的程序块调试就可以与硬件调试
38、同步地进行,或借助开发机的仿真功能进行调试。等两者都完成后,再将两大程序块组合在一起调试。(2)先分块和组合。在对付规模较大、任务较多时,即使形成了与硬件无关和依赖于硬件两大部分,但这两部分程序仍较为庞大,所以,我们还要将其分为一个个小模块进行单独调试。(3)先单步后连续。调试好程序模块的关键是实现对错误的正确定位。准确发现程序(或硬件电路)中错误的有效方法是采用单步加断点运行方式调试程序,单步运行可以了解被调试程序中每条指令的执行情况,分析指令运行结果可以知道该指令执行的正确性,并进一步确定是由于硬件错误、数据错误还是程序设计错误等引起了该指令的执行错误,从而发现并排除故障。3.2 调试过程
39、根据硬件的选择、电路的搭接进行软件的设计和编程。用3根10芯的扁平线和数据单双芯线将单片机的I/O口和搭接的硬件电路连接起来,将外置喇叭、电源与相应的硬件连接起来,最后根据软件所能实现的功能,对硬件进行修改和调试。调试成功后使用下载线将程序从PC机上下载到系统中,从而完成整个系统的设计。如图3-1所示:图3-1 调试硬件连接图Fig.3-1 The Diagram of Debugging在调试过程中,首先双击桌面IDE图标,进入系统开发环境。新建项目文件,用鼠标左键单击File下拉菜单中的New,弹出New对话框。如图3.2所示: 图3-2 开发环境新建项目文件界面Fig.3-2 The I
40、nterface of New Projiect Document在该窗口中选中Project标签并在File的文本框中键入项目名称,如本设计中使用61_speechtimer作为项目名称。在Location下的文本框中输入项目的存取路径或利用该文本框右端的浏览按钮制定项目的存储位置。之后单击New对话框里的OK按钮,则项目建立完成。在新建项目下,点击菜单 File下拉菜单New,弹出New对话框,如图3.3所示。单击nSPTM IDE C File,在File下的文本框内键入文件名称,单击OK按钮。有时根据编程需要,需要建里汇编文件,这里只需单击nSPTM IDE ASM File,在File下的文本框内键入文件名称,单击OK按钮既可。图3-3 开发环境新建C文件界面Fig.3-3 The Interface of New C File新建C文件之后,main.c的编辑窗口就显示出来,在编辑窗口编辑所写程序代码既可。如图3-4所示: 图3-4 开发环境编辑界面Fig.3-4 Editing Interface编写完主程序后,需要编译代码,单击工具栏中的 按钮,或者单击Build菜单栏中