导航:首页 > 操作系统 > 凌阳单片机的毕业设计

凌阳单片机的毕业设计

发布时间:2022-06-07 18:45:21

1. 电子专业的毕业设计做哪方面的比较好

应用电子专业是相当不错的专业,它的相近专业是计算机科学.所有计算机专业能做的事,该专业一般都能做.考研时,同样可兼报计算机专业.
该专业可从事的工作多了:计算机控制系统设计与维护,计算机网络系统的设计与维护,电器设备自动化设计与维护.通信系统相关领域.公路,铁路,航空等控制信号系统设计与维护.工业企业设备电器系统自动化设计与维护等 希望对你有所帮助!!

2. 单片机原理的参考文献有哪些

单片机原理参考文献:

1、 李广弟等 单片机基础 北京航空航天出版社, 2001.7

2、 楼然苗等 51 系列单片机设计实例 北京航空航天出版社, 2003.3

3、 唐俊翟等 单片机原理与应用 冶金工业出版社, 2003.9

4、刘瑞新等 单片机原理及应用教程 机械工业出版社, 2003.7

5、 吴国经等 单片机应用技术 中国电力出版社, 2004.1

6、 李全利,迟荣强编着 单片机原理及接口技术 高等教育出版社,2004.1

7、 侯媛彬等,凌阳单片机原理及其毕业设计精选 2006年,科学出版社

8、 罗亚非,凌阳十六位单片机应用基础2003年 北京航空航天大学出版社

9、 北京北阳电子有限公司,061A凌阳单片机及其附带光盘2003年

10、 张毅刚等, MCS-51单片机应用设计,哈工大出版社,2004年第2版

11、 霍孟友等,单片机原理与应用,机械工业出版社,2004.1

12、 霍孟友等,单片机原理与应用学习概要及题解,机械工业出版社,2005.3

13、 许泳龙等,单片机原理及应用,机械工业出版社,2005.1

14、 马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,2003修订版

15、薛均义 张彦斌 虞鹤松 樊波,凌阳十六位单片机原理及应用,2003年,北京航空航天大学出版社

(2)凌阳单片机的毕业设计扩展阅读:

单片机原理是指一种在线式实时控制计算机的原理方式。在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机(比如家用PC)的主要区别。

单片机就是一个微型电脑,它是靠程序工作的,并且可以修改。通过不同的程序实现不同的功能。

3. 急需凌阳单片机贪吃蛇游戏的设计程序

1、把程序烧进单片机就可以脱机运行了,即可以独立使用了。

2、因为领养单片机是flash存储器,可以在3.3v电压下直接擦写,所以不需要编程器。只需要通过下载线把PC机端编译好的程序下载进去就行。
希望采纳

4. 想做一个基于51单片机的语音控制

51单片机做语音识别基本上不可能,你可以用凌阳单片机做,一套100多,当年毕业设计用凌阳做的成绩基本很差,不是设计不好,而是凌阳做得比较完美,把各个部件一组装,把程序一修改,就可以语音控制了,太简单了所以得低分。
建议你用凌阳单片机做,网上有专业网站介绍,而且非常简单。
具体设计太简单了,还真不好说。

5. 求基于AT89C2051单片机的水温控制系统开题报告和论文

用一个STC89S52单片机+DS18B20温感可以不?!
ds18b20可以使用密封包装,同样能放置在水中,而且精确度能在0.1℃。

我的blog,欢迎学习交流!
http://blog.163.com/jammy_lee/

6. 凌阳单片机语音控制课程设计

我这有一篇网上下的,摘 要

本文主要介绍了目前常用的单片机(61和51单片机)对语音控制小车、红外遥控小车以及循迹小车的实现。本文说明大致方案设计和着重介绍了软件设计过程。
本设计以凌阳公司生产的61单片机为主控芯片制作了语音控制小车,实现了语音采集,语音播放以及特定人的语音识别功能。在此基础上实现了声音对小车的前进、倒车、左转、右转以及停车等状态的控制。大体上实现了语音控制小车的基本功能。
红外遥控及循迹小车是以51单片机为控制芯•片实现的。该部分由3个51系列单片机系统组成。其中,一个单片机(发送单片机)负责处理红外遥控程序,一个单片机(主控单片机)负责小车电机控制和相关信息处理,还有一个单片机(接收单片机)负责处理测温和液晶显示程序。三个单片机之间通过引线实现短距离的通信,以使它们可以相互配合,各司其职,使整个系统的实现和控制更为灵活方便。
以上系统的实现可以运用于特殊环境(人员不可达)下小车的远程控制和相关的智能操作。同时也可运用于智能监控和智能决策等相关场合,为实现智能化操作和管理提供方便。

7. 谁有关于LED显示时钟温度检测控制器的毕业设计啊,借来参考一下,非常感谢

www.ledshow.net也是一个led网站
摘 要
本系统是从实际应用角度出发,针对当前市场上流行的LED产品的应用领域而设计制作的多功能电子显示屏,可用于商场导购促销显示、新闻与广告显示、车站机场班次时间资讯显示等。
本简易16行*64列LED电子显示屏根据题目设计要求,硬件部分主要包括SPCE061A单片机系统、16块8*8LED点阵显示模块构成16*64点阵、显示驱动电路、SPR4096存储器、PCF8563实时时钟电路、键盘输入控制器等部分,还外扩了液晶显示、温度实时检测、无线通讯、电机驱动屏幕旋转等电路,。本系统不仅能够实现数字、字母、汉字等预存信息的切换显示,同时还可以实现信息的定时循环、上下左右滚屏、LED显示亮度连续可调、实时时间显示、实时温度显示、无线遥控、显示屏旋转等扩展功能。另外,本系统可以和PC机通讯,通过PC机串口对显示信息进行更新。

关键词:LED电子显示屏 SPCE061A 串行通信
Abstract
The LED lattice display system is a kind of new information display media with the rapid development of the computer, micro-electronics, photoelectron technology.
This 16*64 LED display system includes SPCE061A MCU system, sixteen 8*8 LED lattice moles, display driving circuit, SPR4096 memory mole, PCF8563 as the real-time clock chip, keyboard controller et. In addition, it includes LCD circuit, real-time temperature detective, RF communication circuit. This system can display the numbers, letters, Chinese characters. It can display the information timely and circularly, up-rollingly, down rollingly left-rollingly, right-rollingly. The lightness of the displaying information can be adjusted continuously. Further more, this system can be remote controlled and communicate with PC by COM1 to update the display information.

Keywords: LED lattice display system SPCE061A serial communication

目 录
一、方案比较 4
1、控制系统 4
2、点阵信息提取方案 4
3、显示驱动电路 5
二、硬件设计与论证 5
1、主控制单片机 6
2、LED显示驱动电路 6
3、数据存储器 8
4、键盘液晶显示模块 9
5、无线通信模块 9
6、时钟电路的设计 10
7、温度检测 10
8、打印机的选择 11
9、旋转底盘的设计 11
三、系统的软件设计 11
1、主程序流程图 12
2、点阵字模信息提取程序流程图 12
3、LED各显示程序 12
4、串行通信程序 12
5、PC机客户程序 12
四、系统功能测试 16
1、测试及制作中所用仪器 16
2、键盘各键功能 16
3、单元模块电路测试 16
4、系统整体功能测试 16
五、总结 17
一、方案比较
1、控制系统
LED点阵电子显示屏的设计一般有两种方案:
方案一:采用可编程逻辑器件作为核心控制器产生LED点阵的行、列驱动信号。由于该系统不仅要实现信息的显示,还要具备键盘控制器、显示亮度连续可调、实时时钟显示、与PC机通讯等功能及其他发挥功能,这就要求需要用中大规模的PLD,设计多个接口电路,开发周期长,不易进一步扩展,同时系统的成本会急剧上升(相对于第二种方案)。因此,本设计并未采用这种方案。
方案二:采用单片机系统来实现。鉴于SPCE061A单片机比传统的51系列8位单片机具有更加丰富的资源,而且数据处理速度快,同时“61板除了具备单片机最小系统电路外还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,体积小,可靠性高。本系统的设计采用双单片机系统,一个主要用于完成多功能显示控制功能,另一个主要用于实时时钟显示、实时温度检测显示、无线通讯以及其他的扩展发挥部分功能,这样提供了充足的内部空间和更多的外部接口;同时由于安装和调试工作可以并行进行,极大地缩短了总体设计和制造的时间。
2、点阵信息提取方案
要用LED点阵来显示数字、字母和汉字等信息,首先要能够提取出其字模数据,即一个16*8的点阵数字、字母的字模数据共有16个字节,一个16*16的点阵汉字的字模数据共有32个字节。首先要确定点阵信息提取方案。
方案一:固定汉字显示,就是将要显示的语句中全部汉字的字母数据依次提取出来,按顺序存放在存储器中,当有显示任务时,直接取出字模数据送至显示器即可。这种方法占用空间少,程序实现简单,显示速度快。本系统中对10组预存信息的点阵信息的提取和存储就是采用这种方案。但是,要想显示大量的汉字信息或直接对显示信息进行更新,则几乎是不可能的事。因此,要实现这样的功能就要采用第二种方案。
方案二:将标准的点阵信息字模数据的字库文件(本系统中采用汉字库文件HZK16、ASCII码库文件ASC16)装入外扩ROM存储器,采用与PC机相同的编码(机内码),先进行基于PC机的预处理,提取需显示内容的机内码,通过串口发给单片机,单片机首先进行判断,若是ASCII码,则直接计算出起始地址,在ASC16文件中指定位置取出连续的16个字节即为其字模信息;若为汉字,单片机将机内码转换为区码和位码,再计算出起始地址,在HZK16文件中指定位置取出连续的32个字节即为其字模信息,然后送到显示器去显示。另外,PC机与单片机之间串口通信只是传输机内码,而不是传输字模信息,传输信息量小,不需要复杂的通信协议。这样既可以减轻单片机的负担,而且可以根据要求随时改变显示内容,非常简单灵活。
3、显示驱动电路
常用的显示驱动方式有三种:
方案一:串行控制驱动,这种方式的好处是单元内的线路连接简单,给印刷电路板的设计带来方便,减少了布线的密度,方便以后的制作与调试,而且相对提高了每个单元的可靠性;
方案二:并行控制驱动,将显示数据通过并行(一般为8位)方式送入驱动电路,这样的好处是:相对于串行控制而言,数据的刷新速度快,在处理同等数量的数据时,对处理速度要求可以大大降低,从而提高了系统的稳定性,但也正因为“并行”使单元内的数据线路的连接更加复杂,布线后的排错难度大大增加;
方案三:采用专用集成电路(ASIC)直接驱动,由于这种专用集成电路是集行控制、列控制和外围驱动于一体,使系统的稳定性更为可靠,特别适合户外的大型或者超大型显示屏。因为这种类型的显示屏对图像显示要求高,不仅要保证图像的一致性,而且要保证图像的稳定、高亮。
本次设计的显示屏仅为16行*64列,更适合采用串行控制这种方式,这样做既省去了并行控制驱动在制版过程中十分复杂的布线,又因为没有采用专用集成电路在一定程度上降低了整个系统的成本。
二、硬件设计与论证
根据以上的系统方案比较与分析,本设计的系统总体组成框图如图1所示:
图1 系统的总体组成框图
系统整体由三大部分构成:
以单片机1#为核心的模块一:包括16*64LED点阵、驱动电路、STR4096存储器、无线数传模块、旋转底盘、光电传感器、音箱、打印机。实现功能:主要用来实现点阵的显示,包括特定标语库内容的显示,适时时间显示、适时温度显示,并实现上下左右滚屏等各种花样显示;存储器用来存储汉字和ASCII码的点阵库,并实现掉电不丢失功能;无线模块实现标语库更新和接受设置信息;底盘可实现显示屏的左右转动,摆动幅度可调;在商场导购中,光电传感器用于检测人员进出,可与自动门配合使用,音箱播放“欢迎光临”等语音信息;在广告牌应用中,打印机用于名片打印。
以单片机2#为核心的模块二:包括4*4键盘、液晶、无线数传模块。实现功能:该部分实现遥控器的功能,可以遥控设置显示屏的滚动模式,选择标语库,设置时间,设置摆头幅度;实现标语库的更新。(键盘使用说明见附录一)
以上位PC机为核心的模块三:包括上位机软件和MAX232。实现功能:上位机主要实现标语库的数据更新,上位机软件通过MAX232将更新内容(汉字或者ASCII码的机内码)送到单片机2#,然后无线传输到单片机1#实现数据更新。
以下是各单元电路的具体设计:
1、主控制单片机
采用凌阳公司的16位单片机SPCE061A作为主控制器。由于SPCE061A内置有2K字的SRAM和32K字的内存FLASH,能满足本系统数据处理及LED点阵显示所需数据的存储要求;CPU时钟频率高达49.152MHz,能满足刷新速度要求。另外,“61板”功能较强、性价比高,具有体积小、集成度高、易扩展、功耗小等优点,简化主控制系统的硬件电路设计,可靠性高,而且凌阳单片机具有C语言风格的汇编语言,有与标准C兼容的C语言,C语言函数可以与汇编函数互相调用,使其开发更加容易,实现整个系统更加简单。
2、LED显示驱动电路
本次设计中16行*64列LED电子显示屏的制作以及其显示驱动电路的设计制作都是非常关键的部分。下面主要介绍一下显示驱动电路的设计。
本LED点阵屏采用动态扫描的方式显示,即逐行扫描,工作时先将一行点阵字模通过列驱动输出,然后运用译码器选中对应行,使该行得以显示,接着再送下一行数据,再选中下一行有效,直到16行全被扫描一遍。至此,一幅完整的文字信息就显现出来。然后在反复扫描这16行直至显示新的信息。采用这种方式的优点是耗电少,成本低,寿命长,但是也存在显示亮度及内容显示稳定的问题。根据视觉滞留原理,根据视觉滞留原理,每屏的完整的显示时间应控制在20ms之内,即50Hz,人眼看上去才不会觉得闪烁。由于要扫描16 行的点阵,所以每行的时间绝不能超过20ms÷16=1.25ms,同时也不是每行的扫描时间越短越好,因为LED的亮度同电流的大小和维持时间的长短有关。LED点阵块的单点静态电流一般在10mA左右,由于占空比是1/16,所以单点的动态电流最大可以达到160mA。在维持时间恒定的情况下,电流越大(不超过额定电流),点阵亮度也越亮,而在电流恒定的情况下,需要一段维持时间来保持亮度。试验表明当输入LED的电流为15mA时,维持时间至少需要1ms,否则LED呈微亮状态。由于设计时设置SPCE061A单片机的时钟频率为24MHz,而每次传送移行的字模数据有64位,经计算传输所需的时间小于1ms,这样就能充分利用列驱动74HC595的锁存功能,即在它接收下一行待显示的数据,还没有锁存新数据的这段时间来显示本行的内容,这样就不需要额外加延时来增加显示屏的亮度。采用这个方法就不要再增加LED的列驱动器件,从而使整个硬件结构更简化,成本降低。
行信号的处理是由四十六译码器CD4514来完成译码,输出为高。由于显示屏行的组成是多个模块并联而成的,因而行驱动得功率要求比较大,而且我们进行行扫描时需要所选行为低,故加反相驱动器ULN2803来满足要求。
列信号的处理列信号的处理主要由8片8位带锁存的串入并出移位寄存器74HC595来完成。从单片机IO口串行输出的64位点阵数据随着移位时钟的作用逐位移动到对应位置,在接收到锁存信号后,将数据并行输出至LED的列线,最后在行驱动信号作用下点亮一行LED象素。
显示扫描电路的电路图如图2所示。

图2 LED显示扫描驱动电路
3、数据存储器
设计题目要求能增大到10组预存信息,且显示信息具有掉电保护功能,同时考虑到要把汉字点阵字库文件HZK16(261K字节)和ASCII码点阵字库文件ASC16(4K字节)装入到ROM存储器中,以便根据机内码在字库中寻址,找到对应的字模,提取后再送到点阵显示屏显示。因为SPCE061单片机的内存Flash只有32K,还要存放程序,因此需外扩数据存储器。我们选择了凌阳“61板”的配套模组SPR4096。SPR4096是一个高性能的4M-bit(512K字节)FLASH,分为256个扇区,每个扇区为2K字节。SPR4096串行接口的工作频率可达5MHz,数据存取速度和存储容量都能够达到我们的要求。硬件图连接如图3所示:

图3 SPR4096硬件连接图
4、键盘液晶显示模块
为使用键盘作为显示屏控制器,实现多功能显示控制,我们使用智能型键盘显示控制芯片HD7279A作为4*4键盘与单片机之间的接口,其与微处理器仅需4条接口线,采用串行通信方式,占用CPU端口少,同时HD7279得到键盘码后通过中断服务程序把按键信息送给单片机,使单片机可以腾出更多时间质性其他操作。设计中我们需要用液晶模块显示遥控单片机菜单的各信息。在本系统中选用了OCM4×8C模块,可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能,既可采用并行接口,又可采用串行接口,连线较为方便。HD7229、OCM4×8C与单片机连接原理图如图4所示。
5、无线通信模块
在本设计中,我们采用了两块61板,1#板主要用于完成控制LED显示屏,2#板主要用于键盘液晶控制、实时时钟、实时温度检测显示、与PC机通讯以及其他的扩展发挥部分功能。两板之间采用无线通讯进行数据传输。为满足系统的要求我们选择了SRWF-1型微功率无线数传模块,该模块的特点是:高抗干扰能力和低误码率、完善的通讯协议、数据实时同步、看门狗实时监控、传输距离远、低功耗及休眠功能高可靠性,体积小、重量轻。

图4 键盘显示电路
SRWF-1型模块提供2个串口3种接口方式,COM1为TTL电平UART接口,COM2由用户自定义为标准的RS-232/RS-485接口(用户只需拔/插短路器再上电即可改变接口类型)。SRWF-1提供的两个串口,在使用时注意以下事项:(1)对于空中接收的数据,SRWF-1通过串口转送给终端设备时,COM1和COM2同时输出,即用户如果在COM1和COM2各连接了1个设备,他们都可同时收到数据;(2)对于由终端设备送来,准备向空中发射的数据,SRWF-1只能正确接收COM1或COM2其中1个串口送来的数据,否则将造成数据通讯混乱。如终端设备在向COM1发送1个0x12(数据正在传送)时,再向COM2发送1个0x34,模块将收到一个数据串0x12,0x34。
图5 SRWF-1与用户设备接口电路
注:没有使用的引脚可以悬空不连。但不能连接长悬空线,以免引入干扰。
6、时钟电路的设计
系统要求实现实时时间的显示,这里我们选用串行日历时钟芯片PCF8563,,与单片机的连线大为减少,极大的节省了单片机的系统资源。PCF8563与单片机的接口电路如图6所示。而且该部分电路还加了掉电保护功能,在主供电系统意外断电时,即Vcc为0V时,D1截止, 3.6V备用电源通过D2继续给PCF8563供电,保证8563的正常运行。
图6 PCF8563时钟电路
7、温度检测
本系统扩展了实时温度检测显示功能,选用DS18B20一线式数字温度传感器,通过单片机读取当前环境温度可通过键盘切换显示时间和温度。

图6 DS18B20与单片机的接口电路
8、打印机的选择
本系统还扩展了打印机功能,在广告牌应用中用来打印名片等相关信息。我们选择了北京市兴伟机电应用技术研究所研制的微型热敏/针打打印机。通过通用的ESC/P打印命令实现字符的打印。

图7 打印机接口控制时序图
9、旋转底盘的设计
针对应用的需要,系统扩展了显示屏旋转功能,用普通小型直流电机提供动力,由变速箱减速并加大驱动能力,实现显示屏幕左右摆动,并且幅度可调。

图8 直流电机驱动电路

三、系统的软件设计
本系统的软件部分主要包括主程序、点阵字模信息提取程序、LED各显示程序、串行通信程序以及PC机客户程序等。
1、主程序流程图
见图8。
2、点阵字模信息提取程序流程图
见图9。
3、LED各显示程序
LED显示屏的显示方式有静止、上下滚屏、左右滚屏等多种方式。其中上下滚屏显示程序类似,左右滚屏显示程序类似,其他多花样的显示方式程序都是在此基础上进行改动而来的。因此主要给出静态显示、上移显示、左移显示这三种典型方式的程序流程图,见图10、图11、图12。
4、串行通信程序
每当向PC机客户程序里输入新显示内容并发送给单片机时,单片机就产生串行中断,接受待显示信息的机内码,然后再利用点阵字模信息提取程序得到点阵数据送到LED显示屏显示。单片机接受数据采用中断的方式。串行中断程序流程图见图13。
5、PC机客户程序
本系统的PC机客户程序是采用Visual Basic 6.0进行开发的,主要利用其串行通信控件MSComm,其主要流程图及运行效果见图14、图15。

图8 主程序流程图 图9 点阵字模信息提取程序流程图

图10 静态显示程序流程图 图11 上移显示程序流程图

图12 左移显示程序流程图

图13 串行中断程序流程图 图14 PC机客户程序流程图

图15 PC机客户控制程序的界面
四、系统功能测试
1、测试及制作中所用仪器
GDS-820C型双踪数字示波器、UNT-T型台式数字万用表、
SK1731SL2A直流稳压电源、F10型数字合成函数信号发生器、
联想PC、烙铁等
2、键盘各键功能
1 2 3 4
5 6 7 8
9 0 ./+ C/-
确定 上 下 取消
“0—9” :数字键;
“. /+” :小数点/数据加1;
“C/-” : 删格/数据减1;
“确定” :进入菜单,保存设置
“取消” :返回上一级菜单
“上” : 菜单上翻,插入点左移
“下” : 菜单下翻,插入点右移
3、单元模块电路测试
1)LED点阵测试:用程序实现所有点阵全部点亮,显示部分点阵块无法完全点亮,更换点阵块后显示正常。
2)无线数传测试:由单片机#2无线发送1000字节数据,单片机#1接收并存储,通过开发环境查看接收数据,发送一百次,成功接收100次,经测试系统稳定;
3)与上位机通信测试:上位机循环发送1000字节数据,单片机接收并校验,接受成功后送液晶显示,然后停止发送,经测试接收时间相对于人的反映时间可以忽略。测试20次,成功接受20次。
4)键盘液晶测试:用键盘控制菜单进出,上下翻页,键盘无抖动,液晶无闪烁。
4、系统整体功能测试
各单元模块整合后,系统上电,显示屏上显示预存信息,通过2#机上的键盘可以成功控制1#机上的显示,包括预存信息切换显示、翻页、上下滚屏、左右滚屏、对流、展开等各花样显示方式、LED显示屏亮度连续可调,能成功地显示出字母、数字、汉字等信息,通过按键可以控制显示实时时间、实时温度等信息,而且断电后,重新开机,预存的显示信息与时间均可掉电保护。通过PC机的客户程序发送需更新信息数据到2#机,由2#机通过无线数传模块发送给1#机,可以成功地更新显示内容。
经过多次测试,整个系统工作稳定可靠,能够实现上述所有功能。
五、总结
我们制作的这套LED点阵电子显示屏系统不仅完成了题目要求的基本功能和发挥功能,还在实时温度检测显示、无线遥控、显示方式等方面有所创新。本系统以凌阳16位单片机SPCE061A为核心部件,最终完成了竞赛题目中要求的各项任务,包括可以控制16*64LED点阵显示屏实现信息的左右滚屏、显示屏亮度连续可调、实时时间和实时温度的显示等,在设计过程中,力求硬件线路简单,充分发挥软件在编程方面灵活的特点,来满足系统设计的要求。
在竞赛的过程中,我们遇到了许多突发性的不太好解决的问题,例如,在整个系统的调试过程中,我们体会到无论是硬件还是软件的调试都要注意模块化,要从最底层开始,逐级通过后才能进行下一步的工作;同时在联合调试的过程中,应注意各模块之间的时序配合问题,有时都是正确的模块程序却因为按照不恰当的顺序来执行从而导致程序运行结果完全出错。
通过这次比赛,我们深深的体会到了团队间的共同协作的重要性,提高了自己的动手能力和解决问题的能力。

8. 跪求基于51系列单片机的音频播放器控制系统的设计

选择凌阳的单片机比较适合。

9. 毕业论文资料收集(采纳追加1000分)

单片机类毕业设计
·电子时钟的设计
·全自动节水灌溉系统--硬件部分
·数字式温度计的设计
·温度监控系统设计
·基于单片机的语音提示测温系统的研究
·简易无线电遥控系统
·数字流量计
·基于单片机的全自动洗衣机
·水塔智能水位控制系统
·温度箱模拟控制系统
·超声波测距仪的设计
·基于51单片机的LED点阵显示屏系统的设计与实现 16×16点阵显示屏
·基于AT89S51单片机的数字电子时钟
·基于单片机的步进电机的控制
·基于单片机的交流调功器设计
·基于单片机的数字电压表的设计
·单片机的数字钟设计
·智能散热器控制器的设计
·单片机打铃系统设计
·基于单片机的交通信号灯控制电路设计
·基于单片机的电话远程控制家用电器系统设计
·基于单片机的安全报警器
·基于单片机的八路抢答器设计
·基于单片机的超声波测距系统的设计
·基于MCS-51数字温度表的设计
·电子体温计的设计
·基于AT89C51的电话远程控制系统
·基于AVR单片机幅度可调的DDS信号发生器
·基于单片机的数控稳压电源的设计
·基于单片机的室内一氧化碳监测及报警系统的研究
·基于单片机的空调温度控制器设计
·基于单片机的可编程多功能电子定时器
·单片机的数字温度计设计
·红外遥控密码锁的设计
·基于61单片机的语音识别系统设计
·家用可燃气体报警器的设计
·基于数字温度计的多点温度检测系统
·基于凌阳单片机的语音实时采集系统设计
·基于单片机的数字频率计的设计
·基于单片机的数字电子钟设计
·设施环境中温度测量电路设计
·汽车倒车防撞报警器的设计
·篮球赛计时记分器
·基于单片机的家用智能总线式开关设计
·设施环境中湿度检测电路设计
·基于单片机的音乐合成器设计
·设施环境中二氧化碳检测电路设计
·基于单片机的水温控制系统设计
·基于单片机的数字温度计的设计
·基于单片机的火灾报警器
·基于单片机的红外遥控开关设计
·基于单片机的电子钟设计
·基于单片机的红外遥控电子密码锁
·大棚温湿度自动监控系统
·基于单片机的电器遥控器的设计
·单片机的语音存储与重放的研究
·基于单片机的电加热炉温度控制系统设计
·红外遥控电源开关
·基于单片机的低频信号发生器设计
·基于单片机的呼叫系统的设计
·基于PIC16F876A单片机的超声波测距仪
·基于单片机的密码锁设计
·单片机步进电机转速控制器的设计
·由AT89C51控制的太阳能热水器
·防盗与恒温系统的设计与制作
·AT89S52单片机实验系统的开发与应用
·基于单片机控制的数字气压计的设计与实现
·智能压力传感器系统设计
·智能定时器
·基于单片机的智能火灾报警系统
·基于单片机的电子式转速里程表的设计
·公交车汉字显示系统
·单片机数字电压表的设计
·精密VF转换器与MCS-51单片机的接口技术
·基于单片机的居室安全报警系统设计
·基于89C2051 IC卡读/写器的设计
·PC机与单片机串行通信毕业论文
·球赛计时计分器 毕业设计论文
·松下系列PCL五层电梯控制系统
·自动起闭光控窗帘毕业设计论文
·单片机控制交通灯系统设计
·基于单片机的电子密码锁
·基于51单片机的多路温度采集控制系统
·点阵电子显示屏--毕业设计
·超声波测距仪--毕业设计
·单片机对玩具小车的智能控制毕业设计论文
·基于单片机控制的电机交流调速毕业设计论文
·单片机智能火灾报警器毕业设计论文
·基于单片机的锁相频率合成器毕业设计论文
·单片机控制的数控电流源毕业设计论文
·基于单片机的数字显示温度系统毕业设计论文
·单片机串行通信发射部分毕业设计论文
·基于单片机控制直流电机调速系统毕业设计论文
·单片机控制步进电机 毕业设计论文
·基于MCS51单片机温度控制毕业设计论文
·基于单片机的自行车测速系统设计
·单片机汽车倒车测距仪
·基于单片机的数字电压表
·单片机脉搏测量仪
·单片机控制的全自动洗衣机毕业设计论文
·基于单片机的电器遥控器设计
·单片机控制的微型频率计设计
·基于单片机的音乐喷泉控制系统设计
·等精度频率计的设计
·自行车里程,速度计的设计
·基于单片机的数字电压表设计
·自行车车速报警系统
·大棚仓库温湿度自动控制系统
·自动剪板机单片机控制系统设计
·单片机电器遥控器的设计
·基于单片机技术的自动停车器的设计
·基于单片机的金属探测器设计
·ATMEIL AT89系列通用单片机编程器的设计
·单片机水温控制系统
·基于单片机的IC卡智能水表控制系统设计
·基于MP3格式的单片机音乐播放系统
·节能型电冰箱研究
·基于单片机控制的PWM调速系统
·交流异步电动机变频调速设计
·基于单片机的数字温度计的电路设计
·基于Atmel89系列芯片串行编程器设计
·基于MCS-51通用开发平台设计
·基于单片机的实时时钟
·用单片机实现电话远程控制家用电器
·中频感应加热电源的设计
·家用豆浆机全自动控制装置
·基于ATmega16单片机的高炉透气性监测仪表的设计
·用单片机控制的多功能门铃
·基于8051单片机的数字钟
·红外快速检测人体温度装置的设计与研制
·三层电梯的单片机控制电路
·交通灯89C51控制电路设计
·基于单片机的短信收发系统设计 ――硬件设计
·大棚温湿度自动控制系统
·串行显示的步进电机单片机控制系统
·微机型高压电网继电保护系统的设计
·基于单片机mega16L的煤气报警器的设计
·智能毫伏表的设计
·基于单片机的波形发生器设计
·基于单片机的电子时钟控制系统
·火灾自动报警系统
·基于PIC16F74单片机串行通信中继控制器
·遥控小汽车的设计研究
·基于单片机对氧气浓度检测控制系统
·单片机的数字电压表设计
·基于单片机的压电智能悬臂梁振动控制系统设计
·单片机的打印机的驱动设计
·单片机音乐演奏控制器设计
·自动选台立体声调频收音机
·直流数字电压表的设计
·具有红外保护的温度自动控制系统的设计
·基于单片机的机械通风控制器设计
·音频信号分析仪
·单片机波形记录器的设计
·公交车站自动报站器的设计
·基于单片机的温度测量系统的设计
·龙门刨床的可逆直流调速系统的设计
·电子秤设计与制作
·智能型充电器的电源和显示的设计
·80C196MC控制的交流变频调速系统设计
·步进电机运行控制器的设计
·自动车库门的设计
·家庭智能紧急呼救系统的设计
·单片机病房呼叫系统设计
·电子闹钟设计
·电子万年历设计
·定时闹钟设计
·计算器模拟系统设计
·数字电压表设计
·数字定时闹钟设计
·数字温度计设计
·数字音乐盒设计
·智能定时闹钟设计
·电子风压表设计
·8×8LED点阵设计
·可编程的LED(16×64)点阵显示屏
·无线智能报警系统
·温湿度智能测控系统
·单片机电量测量与分析系统
·多通道数据采集记录系统
·单片机控制直流电动机调速系统
·步进电动机驱动器设计
·DS18B20温度检测控制
·6KW电磁采暖炉电气设计
·基于电流型逆变器的中频冶炼电气设计
·新型电磁开水炉设计
·新型洗浴器设计
·中频淬火电气控制系统设计
·中型电弧炉单片机控制系统设计
·基于单片机的电火箱调温器
·LCD数字式温度湿度测量计
·单片机与计算机USB接口通信
·万年历的设计
·基于单片机的家电远程控制系统设计
·超声波测距器设计
·多路温度采集系统设计
·交通灯控制系统设计
·数字电容表的设计
·100路数字抢答器设计
·单片机与PC串行通信设计
·基于DS18B20温度传感器的数字温度计设计
·基于单片机的大棚温、湿度的检测系统
·基于MCS-96单片机的双向加力式电子天平
·智能型客车超载检测系统的设计
·语音控制小汽车控制系统设计
·万年历可编程电子钟控电铃
·基于单片机的步进电机控制系统
·基于MCS-51单片机温控系统设计的电阻炉
·基于单片机89C52的啤酒发酵温控系统
·基于单片机的温度采集系统设计
·PIC单片机在空调中的应用
·列车测速报警系统
·多点温度数据采集系统的设计
·遥控窗帘电路的设计
·基于单片机的数字式温度计设计
·87C196MC单片机最小系统单板电路模板的设计与开发
·基于87C196MC交流调速实验系统软件的设计与开发
·基于87C196MC交流调速系统主电路软件的设计与开发
·基于80C196MC交流调速实验系统软件的设计与开发
·基于单片机的水位控制系统设计
·基于单片机的液位检测
·基于单片机的定量物料自动配比系统
·智能恒压充电器设计
·单片机的水温控制系统
·基于单片机的车载数字仪表的设计
·基于单片机的室温控制系统设计
·基于MAX134与单片机的数字万用表设计
·基于单片机防盗报警系统的设计
·18B20多路温度采集接口模块
·基于单片机的乳粉包装称重控制系统设计
·基于单片机的户式中央空调器温度测控系统设计
·步进电机实现的多轴运动控制系统
·IC卡读写系统的单片机实现
·单片机电阻炉温度控制系统设计
·单片机控制PWM直流可逆调速系统设计
·单片机自动找币机械手控制系统设计
·基于89C52的多通道采集卡的设计
·基于AT89C51单片机控制的双闭环直流调速系统设计
·单片机控制的PWM直流电机调速系统的设计
·基于单片机的电阻炉温度控制系统设计
·公交车报站系统的设计
·智能多路数据采集系统设计
·基于单片机控制的红外防盗报警器的设计
·篮球比赛计时器设计
·超声波测距仪的设计及其在倒车技术上的应用
·汽车侧滑测量系统的设计
·自动门控制系统设计
·基于51单片机的液晶显示器设计
·基于AT89C51单片机的电源切换控制器的设计
·基于单片机的普通铣床数控化设计
·基于AT89C51单片机的号音自动播放器设计
·基于单片机的玻璃管加热控制系统设计
·中央冷却水温控制系统
·基于单片机的无刷直流电机控制系统设计
·锅炉汽包水位控制系统
·基于单片机的鱼用投饵机自动控制系统的设计
·空调温度控制单元的设计
·软胶囊的单片机温度控制(硬件设计)
·小型户用风力发电机控制器设计
·自动售报机的设计
·无线表决系统的设计
·微电脑时间控制器的软件设计
·基于单片机AT89S52的超声波测距仪的研制
·单片机教学实验板——软件设计
·基于16位单片机的串口数据采集
·单片机太阳能热水器测控仪的设计
·基于单片机的简单数字采集系统设计
·多电量采集系统的设计与实现
·PWM及单片机在按摩机中的应用
·基于单片机的简易GPS定位信息显示系统设计
·基于单片机的温湿度测量系统设计
·基于单片机的电子音乐门铃的设计
·开关电源的设计
·锅炉控制系统的研究与设计
·基于ARM的嵌入式温度控制系统的设计
·基于DS18B20的多点温度巡回检测系统的设计
·基于单片机的频率计设计
·仓储用多点温湿度测量系统
·基于单片机的超声波液位测量系统的设计
·基于单片机的多功能函数信号发生器设计
·噪音检测报警系统的设计与研究
·转速、电流双闭环直流调速系统设计
·基于单片机程控精密直流稳压电源的设计
·模拟电梯的制作
·基于AT89C51单片机的步进电机控制系统
·超声波倒车雷达系统硬件设计
·基于单片机实现汽车报警电路的设计
·采用单片机技术的脉冲频率测量设计
·智能豆浆机的设计
·电话远程监控系统的研究与制作
·分立式生活环境表的研究与制作(多功能电子万年历)
·高效智能汽车调节器
·全自动汽车模型的制作
·智能红外遥控暖风机设计
·蔬菜公司恒温库微机监控系统
·数字触发提升机控制系统
·基于单片控制的交流调速设计
·基于单片机的多点无线温度监控系统
·单片机控制的霓虹灯控制器
·基于单片机的数码录音与播放系统
·全自动洗衣机控制器
·空调器微电脑控制系统
·自动存包柜的设计
·基于单片机的数字钟设计
·电子万年历
·多路数据采集系统的设计
·基于单片机步进电机控制系统设计
·基于单片机的鸡雏恒温孵化器的设计
·基于FPGA和单片机的多功能等精度频率计
·基于单片机的水温控制系统
·基于单片机的智能电子负载系统设计
·智能电话报警器
·基于ADE7758的电能监测系统的设计
·基于单片机PIC16F877的环境监测系统的设计
·基于单片机控制动态扫描文字显示系统的设计
·基于单片机控制发生的数字音乐盒
·基于单片机控制文字的显示
·基于单片机控制音乐门铃
·智能电子密码锁设计
·单片机电铃系统设计
·单片机演奏音乐歌曲装置的设计
·大功率电器智能识别与用电安全控制器的设计
·单片机交通灯控制系统的设计
·智能立体仓库系统的设计
·智能火灾报警监测系统
·基于单片机的多点温度检测系统
·单片机定时闹钟设计
·湿度传感器单片机检测电路制作
·智能小车自动寻址设计--小车悬挂运动控制系统
·单片机呼叫系统的设计
·基于单片机的带智能自动化的红外遥控小车
·基于单片机AT89C51的语音温度计的设计
·基于TMS320VC33DSP开发板制作
·16×16点阵LED电子显示屏的设计
·单片机实验教学平台分析
·基于USB总线的设计与开发
·基于单片机设计的自动售货机系统设计
·数字温度计的设计
·生产流水线产品产量统计显示系统
·水位报警显时控制系统的设计
·红外遥控电子密码锁的设计
·基于MCU温控智能风扇控制系统的设计
·数字电容测量仪的设计
·基于单片机的遥控器的设计
·200电话卡代拨器的设计
·数字式心电信号发生器硬件设计及波形输出实现
·全氢罩式退火炉温度控制系统
·单片机控制单闭环直流电动机的调速控制系统
·单片机电加热炉温度控制系统
·单片机大型建筑火灾监控系统
·点阵式汉字电子显示屏的设计与制作
·基于AT89C51的路灯控制系统设计
·基于AT89C51的宽范围高精度的电机转速测量系统
·基于DSP的电机控制
·汽车倒车雷达
·基于光纤的汽车CAN总线研究
·基于AT89C51SND1C的MP3播放器
·多功能频率计的设计
·基于单片机的数字直流调速系统设计
·单片机的智能电源管理系统
·基于单片机的多功能智能小车设计
·汽车防撞主控系统设计
·单片机控制电梯系统的设计
·电子密码锁的电路设计与制作
·高精度超声波传感器信号调理电路的设计
·数字电子钟的设计与制作
·银行自动报警系统

10. 求凌阳单片机语音控制程序

// 工程名称: Car_Demo
// 功能描述: 实现小车的语音控制
// 涉及的库: CMacro1016.lib
// bsrv222SDL.lib
// sacmv26e.lib
// 组成文件: main.c
// Flash.asm, hardware.asm,ISR.asm
// hardware.h,s480.h, hardware.inc
// 硬件连接: IOA0-----KEY1
// IOA1-----KEY2
// IOA2-----KEY3
// IOB8-----前进
// IOB9-----倒车
// IOB10----左拐
// IOB11----右拐
// 维护记录: 2005-12-12 v1.0
//========================================================

#include "s480.h"
#include "bsrsd.h"

#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_TimerA_Data (volatile unsigned int *)0x700A
#define P_TimerA_Ctrl (volatile unsigned int *)0x700B
#define P_TimerB_Data (volatile unsigned int *)0x700C
#define P_TimerB_Ctrl (volatile unsigned int *)0x700D
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_INT_Mask (volatile unsigned int *)0x702D
#define P_INT_Clear (volatile unsigned int *)0x7011

#define NAME_ID 0x100
#define COMMAND_GO_ID 0x101
#define COMMAND_BACK_ID 0x102
#define COMMAND_LEFT_ID 0x103
#define COMMAND_RIGHT_ID 0x104

#define S_NAME 0 //给我取个名字吧
#define S_ACT1 1 //前进
#define S_ACT2 2 //倒车,请注意
#define S_ACT3 3 //左拐
#define S_ACT4 4 //右拐
#define S_RDY 5 //Yeah
#define S_AGAIN 6 //请再说一遍
#define S_NOVOICE 7 //没有听到任何声音
#define S_CMDDIFF 8 //说什么暗语呀
#define S_NOISY 8 //说什么暗语呀
#define S_START 9 //准备就绪,开始辨识
#define S_GJG 10 //拐就拐
#define S_DCZY 11 //倒车,请注意

extern unsigned int BSR_SDModel[100]; //外部变量BSR_SDModel[100],辨识器自带
extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);
extern void F_FlashErase(unsigned int sector);
unsigned int uiTimeset = 3; //运行时间定时,调整该参数控制运行时间
unsigned int uiTimecont; //运行时间计时

//=============================================================
// 语法格式: void Delay();
// 实现功能: 延时
// 参数: 无
// 返回值: 无
//=============================================================
void Delay()
{
unsigned int i;
for(i=0;i<0x3Fff;i++)
{
*P_Watchdog_Clear=0x0001;
}
}

//=============================================================
// 语法格式: void PlaySnd(unsigned SndIndex,unsigned DAC_Channel);
// 实现功能: 语音播放函数
// 参数: SndIndex-播放语音资源索引号
// DAC_Channel-播放声道选择
// 返回值: 无
//=============================================================
void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)
{
BSR_StopRecognizer(); //停止识别器
SACM_S480_Initial(1); //初始化为自动播放
SACM_S480_Play(SndIndex, DAC_Channel, 3); //开始播放一段语音
while((SACM_S480_Status()&0x0001)!= 0) //是否播放完毕?
{
SACM_S480_ServiceLoop(); //解码并填充队列
*P_Watchdog_Clear=0x0001; //清看门狗
}
SACM_S480_Stop(); //停止播放
BSR_InitRecognizer(BSR_MIC); //初始化识别器
}

//=============================================================
// 语法格式: int TrainWord(int WordID,int SndID);
// 实现功能: 训练一条指令
// 参数: WordID-指令编码
// SndID-指令提示音索引号
// 返回值: 无
//=============================================================
int TrainWord(unsigned int WordID,unsigned int SndID)
{
int Result;
PlaySnd(SndID,3); //引导训练,播放指令对应动作
while(1)
{
Result = BSR_Train(WordID,BSR_TRAIN_TWICE); //训练两次,获得训练结果

if(Result==0)break;
switch(Result)
{
case -1: //没有检测出声音
PlaySnd(S_NOVOICE,3);
return -1;
case -2: //需要训练第二次
PlaySnd(S_AGAIN,3);
break;
case -3: //环境太吵
PlaySnd(S_NOISY,3);
return -3;
case -4: //数据库满
return -4;
case -5: //检测出声音不同
PlaySnd(S_CMDDIFF,3);
return -5;
case -6: //序号错误
return -6;
default:
break;
}
}
return 0;
}

//=============================================================
// 语法格式: void TrainSD();
// 实现功能: 训练函数
// 参数: 无
// 返回值: 无
//=============================================================
void TrainSD()
{
while(TrainWord(NAME_ID,S_NAME) != 0) ; //训练名称
while(TrainWord(COMMAND_GO_ID,S_ACT1) != 0) ; //训练第1个动作
while(TrainWord(COMMAND_BACK_ID,S_ACT2) != 0) ; //训练第2个动作
while(TrainWord(COMMAND_LEFT_ID,S_ACT3) != 0) ; //训练第3个动作
while(TrainWord(COMMAND_RIGHT_ID,S_ACT4) != 0) ; //训练第4个动作
}

//=============================================================
// 语法格式: void StoreSD();
// 实现功能: 存储语音模型函数
// 参数: 无
// 返回值: 无
//=============================================================
void StoreSD()
{ unsigned int ulAddr,i,commandID,g_Ret;
F_FlashWrite1Word(0xef00,0xaaaa);
F_FlashErase(0xe000);
F_FlashErase(0xe100);
F_FlashErase(0xe200);
ulAddr=0xe000;//********
for(commandID=0x100;commandID<0x105;commandID++)
{
g_Ret=BSR_ExportSDWord(commandID);
while(g_Ret!=0) //模型导出成功?
g_Ret=BSR_ExportSDWord(commandID);
for(i=0;i<100;i++) //保存语音模型SD1(0xe000---0xe063)
{
F_FlashWrite1Word(ulAddr,BSR_SDModel[i]);
ulAddr+=1;
}
}
}

//=============================================================
// 语法格式: void StoreSD();
// 实现功能: 装载语音模型函数
// 参数: 无
// 返回值: 无
//=============================================================
void LoadSD()
{ unsigned int *p,k,jk,Ret,g_Ret;
p=(int *)0xe000;
for(jk=0;jk<5;jk++)
{
for(k=0;k<100;k++)
{
Ret=*p;
BSR_SDModel[k]=Ret; //装载语音模型
p+=1;
}
g_Ret=BSR_ImportSDWord();
while(g_Ret!=0) //模型装载成功?
g_Ret=BSR_ImportSDWord();
}
}

//=============================================================
// 语法格式: void GoAhead();
// 实现功能: 前进子函数
// 参数: 无
// 返回值: 无
//=============================================================
void GoAhead() //前进
{
PlaySnd(S_ACT1,3); //提示
*P_IOB_Data=0x0100; //前进
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}
//=============================================================
// 语法格式: void BackUp();
// 实现功能: 后退子函数
// 参数: 无
// 返回值: 无
//=============================================================
void BackUp() //倒退
{
PlaySnd(S_DCZY,3); //提示
*P_IOB_Data=0x0200; //倒退
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}

//=============================================================
// 语法格式: void TurnLeft();
// 实现功能: 左转子函数
// 参数: 无
// 返回值: 无
//=============================================================
void TurnLeft() //左转
{
PlaySnd(S_GJG,3);
*P_IOB_Data=0x0900; //右转
Delay(); //延时
*P_IOB_Data=0x0500; //左转
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}
//=============================================================
// 语法格式: void TurnRight();
// 实现功能: 右转子函数
// 参数: 无
// 返回值: 无
//=============================================================
void TurnRight() //右转
{
PlaySnd(S_GJG,3); //语音提示
*P_IOB_Data=0x0500; //左转
Delay(); //延时
*P_IOB_Data=0x0900; //右转
*P_INT_Mask |= 0x0004; //以下为中断定时操作
__asm("int fiq,irq");
uiTimecont = 0;
}

//=============================================================
// 语法格式: void Stop();
// 实现功能: 停车子函数
// 参数: 无
// 返回值: 无
//=============================================================
void Stop() //停车
{
*P_IOB_Data=0x0000; //停车
PlaySnd(S_RDY,3); //语音提示
}

//=============================================================
// 语法格式: void BSR(void);
// 实现功能: 辨识子函数
// 参数: 无
// 返回值: 无
//=============================================================
void BSR(void)
{
int Result; //辨识结果寄存
Result = BSR_GetResult(); //获得识别结果

if(Result>0) //有语音触发?
{
*P_IOB_Data=0x0000; //临时停车
switch(Result)
{
case NAME_ID: //识别出名称命令
Stop(); //停车待命
break;
case COMMAND_GO_ID: //识别出第一条命令
GoAhead(); //执行动作一:直走
break;
case COMMAND_BACK_ID: //识别出第二条命令
BackUp(); //执行动作二:倒车
break;
case COMMAND_LEFT_ID: //识别出第三条命令
TurnLeft(); //执行动作三:左转
break;
case COMMAND_RIGHT_ID: //识别出第四条命令
TurnRight(); //执行动作四:右转
break;
default:
break;
}
}
}
//=============================================================
// 语法格式: void IRQ5(void);
// 实现功能: 中断服务子函数
// 参数: 无
// 返回值: 无
//=============================================================
void IRQ5(void)__attribute__((ISR)); //运动定时控制
void IRQ5(void)
{
if(uiTimecont++ == uiTimeset)
{
*P_IOB_Data = 0x0000;
}
*P_INT_Clear = 0x0004;
}

//=============================================================
// 语法格式: int main(void);
// 实现功能: 主函数
// 参数: 无
// 返回值: 无
//=============================================================
int main(void)
{ unsigned int BS_Flag; //Train标志位

*P_IOA_Dir=0xff00; //初始化IOA,IOA0~7下拉输入
*P_IOA_Attrib=0xff00;
*P_IOA_Data=0x0000;

*P_IOB_Dir=0x0f00; //初始化IOB,IOB8~11同向输出
*P_IOB_Attrib=0x0f00;
*P_IOB_Data=0x0000;

BSR_DeleteSDGroup(0); //初始化存储器RAM
BS_Flag=*(unsigned int *)0xe000; //读存储单元0xe000
if(BS_Flag==0xffff) //没有经过训练(0xe000内容为0xffff)
{
TrainSD(); //训练
StoreSD(); //存储训练结果(语音模型)
}
else //经过训练(0xe000内容为0x0055)
{
LoadSD(); //语音模型载入识别器
}

PlaySnd(S_START,3); //开始识别提示
BSR_InitRecognizer(BSR_MIC); //初始化识别器

while(1)
{
BSR();
if((*P_IOA_Data)&0x0004) //是否重新训练
{
F_FlashErase(0xe000);
while(1);
}
}
}

//============================================================
// 文件名称:flash.asm
// 实现功能: SPCE061 32K flash 的读写
// 维护记录: 2003-6-9 V1.0
//============================================================

.INCLUDE hardware.inc

.DEFINE C_FLASH_SIZE 0x8000
.DEFINE C_FLASH_BLOCK_SIZE 0x100
.DEFINE C_FLASH_MATCH 0xAAAA
.DEFINE C_FLASH_PAGE_ERASE 0x5511 //擦除一页
.DEFINE C_FLASH_MASS_ERASE 0x5522 //
.DEFINE C_FLASH_1WORD_PGM 0x5533 //写一个字
.DEFINE C_FLASH_SEQUENT_PGM 0x5544 //写多个字
.DEFINE C_FLASH_MAIN_BLOCK 0x5555
.DEFINE C_FLASH_INFORM_BLOCK 0x5566

.CODE
//============================================================================================
//语法:void F_FlashWrite1Word(int addr,int Value )
//描述:写一个字到FLASH中
//参数:addr-被写数据的存储地址 Value-被写数据
//返回:无
//===============================================================================================
.PUBLIC _F_FlashWrite1Word
.DEFINE P_Flash_Ctrl 0x7555
_F_FlashWrite1Word: .proc
push bp to [sp]
bp = sp+1
r1 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r1
r1 = C_FLASH_1WORD_PGM //5533
[P_Flash_Ctrl] = r1
r1 = [bp+3] //flash address
r2 = [bp+4] //data
[r1] = r2

pop bp from [sp]
retf
.ENDP

//=============================================================================================
//语法:F_FlashWrite(int sector,int &num, int size)
//描述:顺序写多个字
//参数:sector-被写数据的起始地址 &num-被写数据 size-写数据的数量
//返回:无
//=============================================================================================
.PUBLIC _F_FlashWrite
_F_FlashWrite: .proc
push bp to [sp]
bp = sp+1
r1 = [bp+3] //flash base address
r2 = [bp+4] //data
r3 = [bp+5] //多个字节
r4 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r4
L_FlashWriteLoop:
r4 = C_FLASH_SEQUENT_PGM //5544
[P_Flash_Ctrl] = r4
r4 = [r2++]
[r1++] = r4

r3 -= 1
jnz L_FlashWriteLoop
[P_Flash_Ctrl] = r3 //写结束
pop bp from [sp]
retf
.ENDP

// ============================================================================================
//语法:void F_FlashErase(sector)
//描述:擦除256字节
//参数: sector-擦除页的起始地址
//返回:无
// ============================================================================================
.PUBLIC _F_FlashErase
_F_FlashErase: .proc
push bp to [sp]
bp = sp + 1
r1 = C_FLASH_MATCH //AAAA
[P_Flash_Ctrl] = r1
r1 = C_FLASH_PAGE_ERASE //5511
[P_Flash_Ctrl] = r1
r1 = [bp+3] //擦除一页
[r1] = r1

pop bp from [sp]
retf
.ENDP
.END

//============================================================
// 文件名称:ISR.asm
// 实现功能: 语音播放/识别中断服务
// 维护记录: 2003-9-9 V1.0
//============================================================
.include hardware.inc

.public _FIQ;

.external _BSR_FIQ_Routine
.external F_FIQ_Service_SACM_S480

.text
_FIQ:
push R1,R5 to [sp]; // 寄存器压栈保护
R1 = C_FIQ_TMA;
[P_INT_Clear] = R1;
call _BSR_FIQ_Routine //语音识别中断服务
call F_FIQ_Service_SACM_S480; //语音播放中断服务
pop R1,R5 from [sp];
reti;

阅读全文

与凌阳单片机的毕业设计相关的资料

热点内容
家用编译机 浏览:547
电子加密货币最新政策 浏览:377
androidcanvas撤销 浏览:269
安卓手机怎么把图标全部下移 浏览:185
饥荒被服务器踢出怎么进 浏览:170
c编译器哪款好 浏览:732
快手宝哥发明什么app 浏览:822
张艳玲编译 浏览:66
android展开收起动画 浏览:237
linuxxz文件 浏览:160
在游戏中心里面怎么玩到解压神器 浏览:484
电脑发到手机里面照片怎么解压 浏览:74
虚拟pdf打印机64位 浏览:413
支付宝AES加密和解密 浏览:379
编译实验原理下载 浏览:131
加密防伪溯源系统私人定做 浏览:222
扫码给电动车充电的app叫什么 浏览:760
关闭命令提醒 浏览:356
云账本app服务器 浏览:499
python输入数字循环 浏览:370