51单片机语音回放系统课程设计报告

时间:2019-05-14 03:29:34下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《51单片机语音回放系统课程设计报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《51单片机语音回放系统课程设计报告》。

第一篇:51单片机语音回放系统课程设计报告

课 程 设 计 报 告

.语音存储与回放系统

摘要

基于微控制器的语音存储与回放系统具有录制方便、回放灵活、无磨损、可靠性强等优点,在实际生活中得到了广泛的应用,如公共设备、智能仪器仪表、小家电等。

语音存储与回放系统的实现具有多种方式,一种是利用单片集成的语音存储与回放芯片,如美国ISD公司的ISD1420等;一种是以微控制器为核心,辅以A./D转换、D/A转换以及大容量的存储器。单片集成的语音存储与回放芯片一般智能性较差,不容易解决音量的问题,同时存放录制时间有限,不能灵活的变化。因此,在多数需要语音存储与回放的场合中,采用了微控制器的语音存储与回放系统。

一、系统总体描述和设计

1.1 系统描述 1.1.1 系统功能简介

语音存储与回放系统能够将语音先行录制,然后再回放,适合应用在一些需要语音播报功能的设备上,如公交车报站器、智能小家电、智能玩具等。

在一些实际应用中,一般录制是在产品出厂时,由专业人员进行录制,而在实际应用中只需要播放,如公交车报站器。但在一些实际应用中,则需要用户既能随意录制,也能随意播放,如智能玩具。

语音存储与回放系统比较重要的两个指标是语音的最大录制时间和语音回放的质量。语音的最大录制时间是由语音存储与回放系统的存储设备的容量来决定的,一般采用RAM,即为系统的存储容量。在一般的单片机系统中,RAM的容量非常有限,需要扩展一定容量的RAM。而语音回放的质量主要由系统中A/D以及D/A来决定,A/D与D/A的精度越高,语音的质量越好,同时系统的噪声抑制能力,如带通滤波器的优劣等,也会影响到语音的质量。1.1.2 系统总体设计

语音存储与回放系统的总体原理图如图1-1所示。

语音存储与回放系统

麦克风前置放大器带通滤波器A/D键盘控制微控制器外扩存储器喇叭后置放大器带通滤波器D/A

图1 语音存储与回放系统总体原理

语音存储与回放系统主要包括微控制器、系统供电电源、键盘、麦克风、前置放大器、A/D、外扩存储器、D/A、后置放大器和喇叭。下面将介绍各个部分的总体设计与选型。

1.微控制器

微控制器主要负责录音、回放中对外部命令的响应,同时需要对存储器进行读写操作。本语音存储与回放系统采用51系列单片机,负责控制与协调其他各个模块的工作,并进行简单的数字信号处理。在整个语音存储与回放系统中,微控制器是系统的控制中心,其工作效率的高低关系到系统效率的高低以及系统运行的稳定性。而51系列单片机具有成本低,稳定性好,且运行速度基本能满足该系统的要求。在本系统中,将采用Atmel公司的AT89S52。

2.键盘

在语音存储与回放系统中,需要采用键盘对语音的录制以及回放进行控制。在分段录制与播放中,同时还需要段号的输入等。在本系统中需要的按键数量比较多,可以采用键盘管理芯片ZLG728。

3.麦克风

麦克风的选择对语音质量影响比较明显。麦克风的作用是将语音信号转化成电信号。考虑到驻极体话筒的灵敏度较高,方向性差,若采用单端放大,会有比较大的噪音,因此采用两只(配对)话筒分别接入差分放大器的正负端,可以较好的抑制背景噪声。

4.前置放大器

通常情况下,拾音器输出的是微弱的电信号,因此在拾音器的后端需要将该信号进行放大处理,能完成此功能的电路称为前置放大器。一般情况下,拾音器的输出为毫伏级的电压信号,需要进行放大到伏级的电压信号。在本系统中,采用运算放大器NE5532。

语音存储与回放系统

5.A/D 由奈奎斯特采样定理可知,A/D的采样频率必须满足信号的最高频率的2倍以上,即满足如下关系:

fsfH(1)其中,fs为采样频率,fH为被采样信号的最高频率。

一般语音信号的最高频率为3.4kHz,因此在语音存储与回放系统中,A/D的采样频率fs必须满足:

fs2fH23.4kHz6.8kHz(2)

因此我们可以选用ADC0809,ADC0809转换器的分辨率为8位,典型转换时间为100μs,单5V电源供电。

6.外扩存储器

在语音存储与回放系统中,需要录制10s以上的语音,假设采样频率为8kHz,分辨率为8位,那么1秒钟的时间至少需要8kB的存储空间,而单片机的内置存储器无法满足要求,需要外扩存储器。

外扩存储器可以选用256k*8位的SRAM,这样就可以录制至少30s的语音。也可以采用多片32k*8位的SRAM,但是需要分页存储技术来扩展容量。

7.D/A 语音的回放需要将存储的数字化信号进行D/A转换,恢复为模拟信号才能进行播放。我们可以选用DAC0832来完成数字信号到模拟信号的转换,DAC0832的分辨率为8位,其输出稳定时间为1μs,满足系统要求。

8.后置放大器

D/A输出的信号经过后置带通滤波器后,其输出通常情况下不能满足喇叭对功率的要求。完成D/A输出到喇叭的功率驱动的放大电路称为后置放大器,即为一个功率放大器,我们可以采用低电压音频功率放大器LM386来实现。

9.喇叭

喇叭是语音播放回路的最后输出阶段,喇叭质量的好坏也会关系到语音输出的质量,因此,喇叭的选择也是很重要的一个方面。我们可以选用8欧姆,0.5W的普通喇叭。

如图3所示。1.主控制器设计

三、单元电路设计

二、系统硬件设计

成的后置功率放大电路,以及状态指示等。

语音存储与回放系统

图2 语音存储与回放系统的总体硬件框图

系统的总体硬件框图如图2所示,主要有AT89S52单片机系统,DC/DC、7812等组成的系统供电电源电路,NE5532组成的前置放大器,NE5532与R、C组成的前置/后置带通滤波器,ADC0809组成的A/D转换电路,IS61LV2568组成的数据存取电路,DAC0832组成的D/A转换电路,LM386组主控制器即为一个51系列单片机最小系统,单片机选择了Atmel公司的89S52,主控制电路

语音存储与回放系统

2.前置放大电路设计

由一级电压跟随器和一级同相放大器组成。

3.后置功率放大设计

语音频率的范围一般为300Hz~3.4kHz,因此需要在输入与输出回路中设计带通滤波器来滤除语音频率范围以外的频率成分,以便进一步提高语音回放的质量。

其由运算放大器NE5532与R、C组成,采用的是一级低通滤波器和一级高通滤波器的级联。由于带通滤波器的通频带范围为300Hz~3.4kHz,因此低通滤波器的上限截止频率为3.4kHz,高通滤波器的下限截止频率为300Hz。

语音存储与回放系统

4.A/D采样电路设计

5.数据存取电路设计(62256两片)

语音存储与回放系统

6.D/A转换电路设计

语音存储与回放系统

开始初始化是否录音?启动AD程序,并存储语音。是否放音?启动DA程序,并循环放音结束8

四、软件设计

1、流程图

语音存储与回放系统

2、时序图

ADC0809时序图:

语音存储与回放系统

DAC0832时序图: 存储器62256时序图:

读数据:

语音存储与回放系统

写数据:

五、结束语

1.所设计的系统基本要求:

(1)放大器1的增益为46dB,放大器2的增益为40dB,增益均可调;

(2)带通滤波器:通带为300Hz~3.4kHz ;

(3)ADC:采样频率f s=8kHz,字长=8位;

(4)语音存储时间≥10秒;

(5)DAC:变换频率f c=8kHz,字长=8位;

(6)回放语音质量良好。

语音存储与回放系统

2.实验心得体会: 对于这种动手性很强的电路设计和焊接实验,觉得与平时必修课的实验很不同。必修课的实验都是一些经典实验,条件成熟且被反复验证,只要按照讲义的步骤去做,便会顺利得到预期的结果。但动手性实验,没有老师的监督和强迫,全靠我们自觉完成。动手性实验就像为我们打开了一扇窥探科研之路的门,让我们学到了许多在经典实验中无法学到的知识和思维方式。

我们首先查阅了芯片手册,了解了关于电路各模块的原理的结构。对这个课题有了基本了解后,我们又查阅了关于如何实现芯片具体功能的方法,并结合我们的目标物,制订了尝试方案。在实验过程中,我们碰到了许多以前在经典实验中不曾出现的问题。后来向老师了解到,其实是原理图和实物并不相对应。我们才发现,讲义上给我们做的经典实验,条件都是很成熟的,基本不会出现什么偏差,而我们所要探索的问题是很难达到这种理想效果的。由于我们的知识是有限的,所以我们遇到的困难比较多,正因为如此,我也收获良多。

首先我们明白到团结合作的重要性。由于我们组只有两个人,而所作的工作又较多,所以对我们来说时间是紧迫的,而且团结也显得尤为重要,同时加上有老师的热心帮助和提点,我们的实验进度也大大加快了。

其次我们学会了科研的思维方式。在实验过程中,我们会遇到各种各样意想不到的问题,这时必须静下心来分析可能出错的步骤,可能出现的故障,逐步排除,直到找出真正的原因,再对症下药,解决问题。另外,以我们现在的知识,也许不可能一下子就创造出一个前无古人的大发明,但我们可以在已有的仪器设备或实验方法上做一些改善工作,使其更方便、更完善。通过这些小设计或创新,可以培养和提高我们的能力。

这一次的动手性实验不但锻炼了我们的实验能力,培养了我们的科研思维,而且让我们体会到科研当中的辛苦与快乐。我们会把这一次的宝贵经验运用到以后的科研工作中,为电子事业贡献自己的一份力量。

语音存储与回放系统

六、参考文献

[1] 郭天祥。新概念51单片机C语言教程——入门、提高、开发、拓展。北京:电子工业出版社,2009-1-1。

附录

程序设计代码: #include #include #include #define ramaddress XBYTE[0x0000] //外部存儲器地址 #define uchar unsigned char

#define mdata XBYTE[0x0000] #define adnum 32768 sbit we=P3^6;sbit cs=P3^2;sbit flag1=P3^1;//录音控制键 sbit flag2=P3^0;//放音控制键 sbit eoc=P3^3;sbit start=P3^4;sbit oe=P3^5;int temp=0;int luyinstop = 0;int fangyinstop = 0;

语音存储与回放系统

uchar buffer=0;uchar xdata *pt,*pt1;unsigned char sum;sbit ck = P2^7;void Timer0_Init();void main(){ unsigned char addr[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};pt=&ramaddress;//首地址

pt1 = pt;//定义存放首地址

P1=0xff;//打开P1口

ck = 0;//打来62256片选

Timer0_Init();//定时器初始化

while(1){

if(luyinstop>adnum)

{

pt=&ramaddress;

luyinstop = 0;

}

if(fangyinstop>adnum)

{

pt1=&ramaddress;

fangyinstop = 0;}

} cs=1;

语音存储与回放系统

}

void Timer0_Init()//定时器初始化 { TMOD|=0x01;TH0=(65536-3)/256;TL0=(65536-3)%256;EA=1;;ET0=1;TR0=1;}

void timer_0()interrupt 1 {

TH0=(65536-3)/256;TL0=(65536-3)%256;if(flag2==1 && flag1==0)//录音

{

if(luyinstop

{

start=0;//ad初始化

start=1;

start=0;

while(!eoc);//等待空闲 cs=0;//打开da片选

语音存储与回放系统

we=0;//打开62256位选

buffer=P1;

*pt=buffer;//数据放入软件寄存器

pt++;

luyinstop++;

}

} if(flag2==0 && flag1==1)//放音

{

if(fangyinstop

{ start=0;//停止ad buffer=*pt1;//数据放入软件寄存器

P1=buffer;

pt1++;

fangyinstop++;

}

}

}

第二篇:单片机课程设计报告格式

《单片机课程设计》报告格式

一、封面(注明:单片机课程设计报告、课题名称、班级、姓名、指导教师、日期)

二、摘要(课题简要说明)

三、课题设计目标(功能、性能指标)、方案论证(要求作两种以上方案比较)

四、设计过程(关键电路工作原理、元器件参数选用、程序流程图、程序)

五、软硬件的安装、调试方法

六、完整电路图、性能参数测试

七、存在的问题和改进方向

八、参考文献资料

第三篇:单片机课程设计报告格式

单片机课程设计报告格式要求

统一的A4纸打印。每页约44行,每行约34字;打印正文用宋体小四号字;版面页边距上空2.5cm,下空2cm,左空2.5cm,右空2cm;页码用小五号字,底端居中。

A、封面;B、课程设计任务书;C、摘要; D、目录; E、正文;F、参考文献;G、附录(源程序代码);H、有关图纸(系统的总体原理图)

摘要(内容提要)

摘要是论文内容的简要陈述,应尽量反映主要信息,内容包括研究目的、方法、成果和结论,不含图表,不加注释,具有独立性和完整性,‚摘要‛字样位置居中。

目录

目录按三级标题编写,要求层次清晰,且要与正文标题一致。主要包括绪论、正文主体、结论、主要参考文献及附录等。

题序层次大致有以下几种格式:

1、绪论

1.1课题背景

ˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

1.2交会对接技术发展概况

ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

1.2.1俄罗斯空间交会对接发展概况

ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

1.2.2美国空间交会对接发展概况

ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

2、空间飞行器

2.1引言

ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

结论

ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

主要参考文献

为了反映报告的科学依据和作者尊重他人研究成果的严肃态度,同时向读者提供有关信息的出处,正文之后一般应列出主要参考文献(只限于那些作者亲自阅读过的,最重要的且发表在公开出版物上的文献或网上下载的资料)。报告中被引用的参考文献序号置于所引用部分的右上角。参考文献所列著作按报告中引用顺序排列,著作按如下格式著录:序号、著作者、书名、出版地、出版社、出版日期。

例1(著作):1.宋尚桂.大学通识教育的理论和模式.青岛:中国海洋大学出版社,2007年9月

例2(文章):2.朱晓刚.以人为本----美国大学通识教育理念和实践的解读.民办教育研究,2005(5)

设计报告装订顺序

(一)课程设计封面

(二)课程设计任务书

(三)摘要

(四)目录

例:

1、绪论ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ

11.1课题背景ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ1

1.2交会对接技术发展概况ˉˉˉˉˉˉˉˉˉˉˉˉˉ

31.2.1俄罗斯空间交会对接发展概况ˉˉˉˉˉˉˉˉˉ

51.2.2美国空间交会对接发展概况ˉˉˉˉˉˉˉˉˉˉ72、空间飞行器ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ20

2.1引言ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ20

2.2空间飞行器姿态表示ˉˉˉˉˉˉˉˉˉˉˉˉˉˉ23 结论ˉˉˉˉˉˉˉˉˉˉˉˉ ˉˉˉˉˉˉˉˉˉˉ50 主要参考文献ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ

51(五)正文

(六)参考文献

(七)附录

(八)有关图纸

撰写设计报告的几点要求

1、文字

设计中汉字应采用《简化汉字总表》规定的简化字,并严格执行汉字的规范,所有文字字面清晰,不得涂改。

第一层次(章)题序和标题居中放置,其余各层次(节、条、款)题序和标题一律沿版面左侧边线顶格排列。第一层次(章)题序和标题距下文双倍行距。段落开始后缩两个字。行与行之间,段落和层次标题以及各段落之间均为单倍行距。

第一层次(章)题序和标题用小二号黑体字。题序和标题之间空两个字,不加标点,下同。

第二层次(节)题序和标题用小三号黑体字。

第三层次(条)题序和标题用四号黑体字。

第四层次及以下层次题序及标题一律用小四号黑体字。

结论(结束语)作为单独一章排列,但标题前不加‚第XXX‛字样。结论是整个设计的总结,应以简练的文字说明所做的工作。

2、表格

设计中的表格可以统一编序,也可以逐章单独编序,方式应与插图及公式的编序方式统一。表序必须连续,不得重复或跳跃。表格的结构应简洁,各栏都应标注量和相应的单位。表格内数字须上下对齐,相邻栏内的数值相同时,不能用‘同上’、‘同左’和其它类似用词,应一一重新标注。表序和表题置于表格上方中间位置,无表题的表序置于表格的左上方或右上方(同一篇论文位置应一致)。

3、插图

插图要精选,图序可以连续编序,也可以逐章单独编序,方式应与表格、公式的编序方式统一,图序必须连续,不得重复或跳跃。仅有一图时,在图题前加‘附图’字样。设计中的插图以及图中文字符号应打印,无法打印时一律用钢笔绘制和标出。由若干个分图组成的插图,分图用a,b,c,……标出。图序和图题置于图下方中间位置。

4、公式

设计中重要的或者后文中须重新提及的公式应注序号并加圆括号,序号一律用阿拉伯数字连续编序或逐章编序,序号排在版面右侧,且距右边距相等。公式与序号之间不加虚线。

5、数字用法

公历世纪、年代、年、月、日、时间和各种计数、计量,均用阿拉伯数字。年份不能简写(如1999年不能写成99年)。数值的有效数字应全部写出,如:0.50∶20.0不能写作0.5∶20。

6、软件

软件流程图和原程序清单要按软件文档格式附在报告后面,特殊情况可在答辩时展示,不附在报告内。

7、计量单位的定义和使用方法按国家计量标准执行。

第四篇:单片机课程设计报告

《单片机原理与接口技术》

课程设计报告

设计题目: 基于80C51单片机系统实验板的制作

与程序设计

业:应用电子专业

级: 11应电班

名: 丁文俊

指导教师: 余静老师

2013 年 5 月20 日

目录 前 言………………………………………………………………… 2 课程设计的目的及要求…………………………………………… 3 硬件电路设计……………………………………………………… 4 软件程序设计…………………………………………………… 5 小结………………………………………………………………

参考文献 附录A 电路总图 附录B 程序清单

基于80C51单片机系统实验板的制作与程序设计

1.前言

2、课程设计的目的及要求 2.1课程设计目的

2.2课程设计要求

3、系统主要硬件电路设计

3.1 STC89C51单片机简介

MCS-51是美国Intel公司生产的一系列单片机的总称,包括多个品种,如8031、8051、8751、8032、80C52、8752等。其中8051是最典型的产品,其他单片机都是在其基础上进行功能增减而来的,所以人们习惯于用8051来称呼MCS-51系列单片机。Intel公司将MCS-51的核心技术授权给了多家公司,这些厂家生产的单片机在功能上或多或少有些改变,以满足不同的需求,其中美国的ATMEL公司生产的AT89C51是曾经在我国非常流行的51单片机。当前AT89C51/52已经停产,其替代产品为AT89S51/52。深圳宏晶公司出品的STC89C51可以直接代替传统的AT89S51和AT89C51芯片,也可以代替菲利普、华帮等其他公司的89C51,由于时代的发展,工艺的进步,STC89C51功能更强,寿命更长(4K字节Flash存储器、128字节片内RAM、支持ISP下载编程)

图2.1 STC89c51单片机

单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。

图2-2中外接晶体以及电容C2和C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30P左右,晶振频率选11.0592MHz。

为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图2-2中R9和Cl组成上电复位电路,其值R取为10K, C取为10μF.4

图2.2 最小系统结构图

3.2 电平转换电路 3.3

4、软件程序设计

5、小结

参考文献

[1] 张伟,《单片机原理及应用》,机械工业出版社,2005(这是格式)

附录

江西工业职业技术学院电子与信息工程系

课程设计指导教师评语

班级:

学生姓名:

学号:

指导教师评语(包括工作态度,遵守纪律;基本理论、知识、技能;独立工作能力和分析解决问题的能力;完成任务情况及水平):

学生成绩(五级分制):

指导教师签名:

****年**月**日

第五篇:单片机课程设计报告

课程设计报告

题 目: 自动滴灌系统设计

课程名称: 单片机原理及应用 学 院: 信息工程学院

专 业: 计算机科学与技术 班 级: 2014 级计本 1 班

学生姓名: *** 学 号: 201403031 指导教师: 巫 宗 宾

成 绩:

开课时间: 2016~2017 学年 2 学期

目录

第一章 系统概要.........................................................................................................................2 1.1系统背景............................................................................................................................2 1.2系统功能............................................................................................................................2 1.3设计要求............................................................................................................................2 第二章 系统硬件原理...............................................................................................................3 2.1AW60主要模块和特点........................................................................................................3 2.2 LCD模块............................................................................................................................3 2.3 LED模块............................................................................................................................4 第三章 系统软件设计.................................................................................................................6 3.1系统流程............................................................................................................................6 3.2主程序(main.c)............................................................................................................7 3.2中断处理程序(isr.c)..................................................................................................7 3.3构件组成............................................................................................................................9 第四章 系统测试.......................................................................................................................27 4.1测试结果..........................................................................................................................27 第五章 总结展望........................................................................................................................31 5.1总结..................................................................................................................................31 5.2展望..................................................................................................................................31 参考文献.....................................................................................................................................32

第一章 系统概要

1.1系统背景

随着科学技术的发展电子技术产业结构调整,单片机开始迅速发展,由于单片机本身的易于控制,精度高,自动化全面,市场对于智能控制系统的需求也越来越大。自动滴灌系统,就是在单片机程序的控制下实现湿度监测、滴灌控制的设备。单片机系统座位一种典型的嵌入式系统,其系统设计包括硬件设计和软件设计编程设计两个方面,其调试过程一般分为软件调试,硬件调试,系统调试。自动滴灌系统需要实现湿度采集,A/D转换,湿度显示,工作状态显示,电机驱动的功能。

1.2系统功能

首先要进行湿度监测,每隔固定的时间就采集一次湿度,在内部转换后与标准值进行比较如果湿度值低于给定值的话就切换至工作状态,滴灌结束时自动切换至结束模式,继续监测湿度。

仿真状态下湿度监测采用软件模拟实现,采集湿度信息使用LED显示,每隔5s采集一次。工作状态由LCD显示。分别有滴灌开始(“Drip-irrigation is starting..”),和滴灌结束(“Drip-irrigation has ended..”)。滴灌时间为5s。结束后切换至结束模式。

1.3设计要求

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。1

第二章 系统硬件原理

2.1AW60主要模块和特点

AW60系列主要常规模块和特点:

(1)最高达40MHz的CPU工作频率和20MHz的内部总线工作频率;时钟源选项包括晶振,谐振器,外部时钟或,内部产生的时钟。

(2)相比HC08CPU指令集,S08CPU增加了BGND指令。

(3)单线后台调试模式接口:增强的断点能力,允许单一的断点设置在线调试(在片内调试模块增加了多于两个的断点)。

(4)内含32个中断/复位源;内含2KB的片内RAM;内含60KB的片内在线可编程的Flash存储器,带有 块保护和安全选项。

(5)可选的计算机正常操作(COP)复位;低电压检测与复位或中断;非法操作码检测与复位;非法地址检测与复位。

(6)ADC:多达16个通道,10个A/D转换器与动动比较功能;两个串行通信接口SCI模块与可选的13位中断;一个串行外设接口SPI模块;集成电路互联总线IIC模块运行高达100kbps的最高总线负载;8引脚键盘中断KBI模块。

(7)Timers:1个2 通道和一个6通道16位定时器/脉冲宽度调制器模块。既有输入捕获,输出比较,脉宽调制功能。AW子系列MCU的4种封装形式只是引脚数量和形式有所区别,其他方面是一致的。

2.2 LCD模块

LCD作为电子信息产品的主要显示器件,相对于其他类型的显示器件来说有其自身的特点,主要包括:

(1)低电压,低功耗;(2)平板型结构;

(3)使用寿命长;

(4)被动显示;

(5)显示信息量大且易于彩色化; 1

(6)无电磁辐射。

点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义符号的液晶显示器。这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的阻容元件等集成一个液晶显示模板。鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的,只要设计出一种型号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示器模块。

字符型液晶显示器模块的特点如下:

(1)液晶显示屏是以若干5*8或5*11点阵块等组成的显示字符群。每个点阵块块为一个字符位,字符间距和行间距都是一个点的宽度。

(2)主控制电路为HD44780(HITACHI及其他公司的兼容电路。从程序员的角度来看LCD显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。

(3)内部具有字符发生器ROM,可显示192种字符。

(4)具有64字节的字符发生器RAM,可以定义8个5*8点阵字符或4个5*11的点阵字符。

(5)具有64字节的数据显示RAM,供显示器编程使用。(6)标准接口特性,与MC9S08系列的MCU容易接口。(7)模块结构紧凑,轻巧,装配容易。

(8)单+5V电源供电(宽温型需要加-7V驱动电源)。(9)低功耗,高可靠性。

2.3 LED模块

LED发光二极管分为共阴极和共阳极数码管,若为共阴极数码管则公共端接地,若为共阳极数码管则公共端接电源正极。如图1: 1

图1

实际应用中是多个LED共同使用,MCU通过一个称为数据口的8位数据端口来控制位段而原来8段数码管的公共端,原来接到公共电平,现在接MCU的一个引脚,由MCU来控制,通常叫做位选信号,这样MCU的8个端口就可以控制8连排的数码管了。若要控制更多数码管则需加一个译码芯片。每个时刻只让一个数码管有效,由于人的视觉暂留效应(100ms)可以达到同时显示的效果。

图2是MCU与4排8段数码管的连接:

图2 1

第三章 系统软件设计

3.1系统流程

开始初始化土壤湿度数据采集显示湿度N小于设定值Y显示滴灌开始计时结束,结束滴灌显示滴灌结束 图3 图3是系统流程图,开始时先初始化各个部件,LCD显示结束滴灌信息,LED显示为全零。后每隔五秒采集一次湿度数据用LED显示湿度。判断湿度值是否低于设定值,低于设定值的话立即启动滴灌,此时湿度上升,结束滴灌。若没有低于设定值的话,则继续监测。LED不断刷新显示当前湿度值。1

3.2主程序(main.c)

#include “includes.h” //包涵总头文件 int main(void){ work = 0;shidu = 75;enter_critical();LEDInit();//LED初始化 LCDInit();//LCD初始化 tpm_init(TPM0,TPM_CLKSRC_PLL,1000);//初始化TPM模块,1ms中断一次

light_init(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);light_init(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);tpm_enable_int(0);init_critical();for(;;){

}

} return 0;3.2中断处理程序(isr.c)

//================== //文件名称:isr.c //功能概要: 中断底层驱动构件源文件

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)1

//================== #include “includes.h” void tpm0_isr(void){ static uint_32 TPMCounter = 0;//计时器 static uint_8 LEDindex=0;//位选口声明 uint_8 LEDDataBuffer[4];//LED显示缓冲区

changeCode(shidu,LEDDataBuffer);//将湿度值转化为对应字符输出 uint_8 i;uint_8 * working;uint_8 * stop;working =(uint_8 *)“Drip-irrigation is starting......”;stop =(uint_8 *)“Drip-irrigation has ended......”;if((TPM_SC_REG(TPM0_BASE_PTR)TPM_SC_TOF_MASK){ TPMCounter++;

&

TPM_SC_TOF_MASK)

== } BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR));//中断置标志位写1清0 LEDindex++;//位选位+1 if(LEDindex>=4)LEDindex=0;//大于4位选口置0 i=LEDchangeCode(LEDDataBuffer[LEDindex]-'0');//转码 LEDshow1(LEDindex,i);if(TPMCounter>5000){

shidu = sdmn(shidu);if(shidu <= 65){ 1

} changeState(&work);//改变工作状态

if(work == 0)

{ LCDShow(stop);TPMCounter = 0;light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);} if(work == 1){

LCDShow(working);

TPMCounter = 0;shidu = 80;light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);changeState(&work);}

} }

3.3构件组成

1、TPM构件:

//=================== //文件名称:tpm.c //功能概要:tpm底层驱动构件源文件 1

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #include “tpm.h” //定时器模块0,1,2地址映射 Const TPM_MemMapPtr TPM_ARR[]={TPM0_BASE_PTR,TPM1_BASE_PTR,TPM2_BASE_PTR};//====================== //函数名称:tpm_enable_int //功能概要:使能tpm模块中断。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_enable_int(uint_8 tpmModule){ } //====================== //函数名称:tpm_disable_int //功能概要:禁止tpm模块初始化。enable_irq(tpm0_irq_no + tpmModule);//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_disable_int(uint_8 tpmModule){ } //====================== //函数名称:tpm_init //功能概要:初始化tpm模块.1

disable_irq(tpm0_irq_no + tpmModule);

//参数说明:tpmModule:模块号:0、1、2 //clk_src_sel:时钟源选择:1:PLL/FLL(推荐)、2:晶振、3:内部参考时钟。1,2可用

// int_us:中断毫秒数,中断时间间隔,单位为毫秒,10ms=10000 //函数返回:函数执行状态:0=正常;非0=异常

//====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us){

if(tpmModule>2)//防止越界值 { } //开启SIM时钟门 tpmModule=2;BSET(SIM_SCGC6_TPM0_SHIFT+tpmModule,SIM_SCGC6);//使能TPM时钟

//中断时间计算:(48000/8)*10000/1000=0x7530 10ms中断一次 switch(clk_src_sel){ case 1: //MCGPLL/2或者MCGFLL作为时钟源 BSET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);

//使能PLL为时钟源

int_us=(48000/8)*int_us/1000;break;case 2: //晶振作为时钟源

int_us=(8000/8)*int_us/1000;OSC0_CR|=OSC_CR_ERCLKEN_MASK;//开启晶振输出时钟

break;case 3: //内部参考时钟,由MCG决定 break;

default: 1

} return 1;//传参错误,返回

SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);//使能时钟选择 TPM_ARR[tpmModule]->CNT=0x00;TPM_ARR[tpmModule]->MOD=int_us;//TOF写1清0,TOIE中断使能,CMOD选择每次时钟加1,PS=0x011 选择8分频;TPM_ARR[tpmModule]->SC=TPM_SC_TOF_MASK|TPM_SC_TOIE_MASK|TPM_SC_CMOD(1)|TPM_SC_PS(3);return 0;} //====================== //函数名称:tpm_stop //功能概要:禁止tpm模块。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_stop(uint_8 tpmModule){ } Tpm.h //====================== //文件名称:tpm.c //功能概要:tpm底层驱动构件源文件

//版权所有:苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #ifndef TPM_H 1

TPM_ARR[tpmModule]->SC&=~TPM_SC_CMOD(3);

#define TPM_H

#include “common.h” #include “sysinit.h” //中断号

#define tpm0_irq_no 17 #define tpm1_irq_no 18 #define tpm2_irq_no 19 //时钟选择

#define TPM_CLKSRC_PLL 1 #define TPM_CLKSRC_OSC 2 #define TPM_CLKSRC_IRC 3 //模块号 #define TPM0 0 #define TPM1 1 #define TPM2 2

//====================== //函数名称:tpm_enable_int //功能概要:使能tpm模块中断。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_enable_int(uint_8 tpmModule);//====================== //函数名称:tpm_disable_int //功能概要:禁止tpm模块初始化。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无 1

//====================== void tpm_disable_int(uint_8 tpmModule);//====================== //函数名称:tpm_init //功能概要:初始化tpm模块.//参数说明:tpmModule:模块号:0、1、2 //clk_src_sel:时钟源选择:1:PLL/FLL(推荐)、2:晶振、3:内部参考时钟。1,2可用

// int_us:中断毫秒数,中断时间间隔,单位为毫秒,10ms=10000 //函数返回:函数执行状态:0=正常;非0=异常

//====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us);//====================== //函数名称:tpm_stop //功能概要:禁止tpm模块。

//参数说明:tpmModule:模块号:0、1、2 //函数返回:无

//====================== void tpm_stop(uint_8 tpmModule);#endif

2、LED构件

//===================== // 文件名称:led.c // 功能概要:led构件源文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #include “led.h” //led位选端口 struct GPIO led_cs[4]= 1

{

{LED_CS0_PORT,LED_CS0}, {LED_CS1_PORT,LED_CS1}, {LED_CS2_PORT,LED_CS2}, {LED_CS3_PORT,LED_CS3}, };//led数据端口 struct GPIO led_d[8]= {

{LED_D1_PORT,LED_D1}, {LED_D2_PORT,LED_D2}, {LED_D3_PORT,LED_D3}, {LED_D4_PORT,LED_D4}, {LED_D5_PORT,LED_D5}, {LED_D6_PORT,LED_D6}, {LED_D7_PORT,LED_D7}, {LED_D8_PORT,LED_D8}, };

//====================== //函数名称:LEDInit //函数返回:无 //参数说明:无 //功能概要:LED初始化。

//====================== void LEDInit(){ uint_8 i = 0;//定义8根数据线为输出,初始输出0 for(i = 0;i < 8;i++)gpio_init(led_d[i].gpio_port, led_d[i].gpio_pin, 1, 0);1

//定义4位选线定义为输出,初始输出0 for(i = 0;i < 4;i++)gpio_init(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1, 0);} //====================== //函数名称:LEDshow1 //函数返回:无

//参数说明:i:指定LED哪一位显示,c:显示的内容 //功能概要:指定LED的第i位显示c。

//====================== void LEDshow1(uint_8 i, uint_8 c){ uint_8 temp;uint_8 j;//位选全部置0 for(j=0;j<=3;j++)gpio_set(led_cs[j].gpio_port, led_cs[j].gpio_pin, 0);//数据上线 for(j=0;j<=7;j++){ temp =(c>>j)& 0x01;

gpio_set(led_d[j].gpio_port, led_d[j].gpio_pin, temp);} //选择的位选置1 gpio_set(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1);}

//显示码表

const uint_8 Dtable[24] = 1

// 0 1 2 3 4 5 6 7 8 9 {0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, // 11 12 13 14 15 16 17 18 19 20 // 0.1.2.3.4.5.6.7.8.9.0xBF,0x86,0xDB,0x4F,0x66, 0x6D,0x7D,0x07,0xFF,0x6F, // 21 22 23(全亮)24(全灭)// E F 0x79,0x71, 0xFF, 0x00};//====================== //函数名称:LEDchangeCode //函数返回:返回数据num对应的显示码 //参数说明:num:需要转换成显示码的数字 //功能概要:数字转成显示码

//===================== uint_8 LEDchangeCode(uint_8 num){ return Dtable[num];} LED.h //====================== // 文件名称:led.h // 功能概要:led构件头文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//======================

#ifndef led_H //防止重复定义(开头)#define led_H #include “GPIOapp.h” //LED数据口分别接PORTB的{11,10,9,8,3,2,1,0}引脚 1

#define LED_D1_PORT PORTB #define LED_D1 11 #define LED_D2_PORT PORTB #define LED_D2 10 #define LED_D3_PORT PORTB #define LED_D3 9 #define LED_D4_PORT PORTB #define LED_D4 8 #define LED_D5_PORT PORTB #define LED_D5 3 #define LED_D6_PORT PORTB #define LED_D6 2 #define LED_D7_PORT PORTB #define LED_D7 1 #define LED_D8_PORT PORTB #define LED_D8 0 //LED位选口分别接PORTB的{19,18,17,16}引脚 #define LED_CS0_PORT PORTB #define LED_CS0 19 #define LED_CS1_PORT PORTB #define LED_CS1 18 #define LED_CS2_PORT PORTB #define LED_CS2 17 #define LED_CS3_PORT PORTB #define LED_CS3 16 //====================== //函数名称:LEDInit //函数返回:无 //参数说明:无 1

//功能概要:LED初始化。

//====================== void LEDInit();//====================== //函数名称:LEDshow1 //函数返回:无

//参数说明:i:指定LED哪一位显示,c:显示的内容 //功能概要:指定LED的第i位显示c。

//====================== void LEDshow1(uint_8 i, uint_8 c);//====================== //函数名称:LEDchangeCode //函数返回:返回数据num对应的显示码 //参数说明:num:需要转换成显示码的数字 //功能概要:数字转成显示码

//====================== uint_8 LEDchangeCode(uint_8 num);#endif //防止重复定义(结尾)

3、LCD构件

//====================== // 文件名称:lcd.c // 功能概要:lcd构件头文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)//====================== #include “lcd.h”//lcd控制位和数据位端口及引脚号 struct GPIO LCD[11]= { {LCD_RS_PORT,LCD_RS}, 1

{LCD_RW_PORT,LCD_RW}, {LCD_E_PORT,LCD_E}, {LCD_D0_PORT,LCD_D0}, {LCD_D1_PORT,LCD_D1}, {LCD_D2_PORT,LCD_D2}, {LCD_D3_PORT,LCD_D3}, {LCD_D4_PORT,LCD_D4}, {LCD_D5_PORT,LCD_D5}, {LCD_D6_PORT,LCD_D6}, {LCD_D7_PORT,LCD_D7}, };//内部函数原型说明

extern void LCDCommand(uint_8 cmd);//====================== //函数名称:LCDInit //函数返回:无 //参数说明:无

//功能概要:LCD初始化。

//====================== void LCDInit(){ uint_32 i = 0; //定义数据口和控制口为输出 for(i = 0;i < 11;i++){ gpio_init(LCD[i].gpio_port, LCD[i].gpio_pin, 1,0);} //设置指令,RS,R/W = 00, 写指令代码

gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);1

//功能设置-//设置指令

LCDCommand(0x38);//5*7点阵模式,2行显示,8位数据总线 LCDCommand(0x08);//关显示,关光标显示,不闪烁

LCDCommand(0x01);//清屏

for(i=0;i<40000;i++)asm(“NOP”);//延时 LCDCommand(0x06);LCDCommand(0x14);//光标右移一个字符位,AC自动加1 LCDCommand(0x0C);//开显示,关光标显示,不闪烁 } //====================== //函数名称:LCDShow //函数返回:无

//参数说明:需要显示的数据 //功能概要:液晶显示data中的数据。

//====================== void LCDShow(uint_8 data[32]){ uint_8 i;LCDInit();//LCD初始化 //显示第1行16个字符

gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位为DD RAM地址(0x00)LCDCommand(0x80);//写16个数据到DD RAM gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//将要显示在第1行上的16个数据逐个写入DD RAM中 1

for(i = 0;i < 16;i++){ } //显示第2行16个字符

gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位为DD RAM地址(0x40)LCDCommand(0xC0);gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//将要显示在第2行上的16个数据逐个写入DD RAM中 for(i = 16;i < 32;i++){ } } //====================== //函数名称:LCDCommand //函数返回:无

//参数说明:cmd:待执行的命令

//功能概要:执行给定的cmd命令,且延时。

//====================== void LCDCommand(uint_8 cmd){

uint_8 i;uint_16 j;uint_8 temp;LCDCommand(data[i]);LCDCommand(data[i]);//等待延迟防止重复调用此函数而LCD卡死 1

for(j=0;j<1600;j++);asm(“NOP”);//数据送到LCD的数据线上 for(i = 3;i < 11;i++){ gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, 0);} for(i = 3;i < 11;i++){ temp = 0x01 &(cmd>>(i-3));gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, temp);} //给出E信号的下降沿(先高后低),使数据写入LCD gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 1);for(j=0;j<25;j++)asm(“NOP”);gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 0);} LCD.h //====================== // 文件名称:lcd.h // 功能概要:lcd构件头文件

// 版权所有: 苏州大学飞思卡尔嵌入式中心(sumcu.suda.edu.cn)// 版本更新: 2013-03-17 V1.2 //====================== #ifndef LCD_H #define LCD_H #include “GPIOapp.h” //LCD寄存器选择信号引脚 #define LCD_RS_PORT PORTD #define LCD_RS 7 //LCD读写信号引脚 1

#define LCD_RW_PORT PORTD #define LCD_RW 6 //LCD读写信号引脚

#define LCD_E_PORT PORTD #define LCD_E 5 //LCD数据引脚

#define LCD_D0_PORT PORTD #define LCD_D0 4 #define LCD_D1_PORT PORTD #define LCD_D1 3 #define LCD_D2_PORT PORTD #define LCD_D2 2 #define LCD_D3_PORT PORTD #define LCD_D3 1 #define LCD_D4_PORT PORTD #define LCD_D4 0 #define LCD_D5_PORT PORTC #define LCD_D5 17 #define LCD_D6_PORT PORTC #define LCD_D6 16 #define LCD_D7_PORT PORTC #define LCD_D7 13 //====================== //函数名称:LCDInit //函数返回:无 //参数说明:无

//功能概要:LCD初始化。

//====================== extern void LCDInit();1

//====================== //函数名称:LCDShow //函数返回:无

//参数说明:data[32]:需要显示的数组 //功能概要:LCD显示数组的内容。

//====================== extern void LCDShow(uint_8 data[32]);#endif //防止重复定义(结尾)

4、辅助函数 /* * qzh.h * * Created on: Jun 5, 2017 * Author: administrator */

#ifndef QZH_H_ #define QZH_H_ #include “GPIOapp.h” void changeState(int*);//改变工作状态函数 int sdmn(int);//湿度变化模拟函数

void changeCode(int,uint_8 s[4]);//LED显示转码函数 #endif /* QZH_H_ */ /* * fun.c * * Created on: Jun 5, 2017 1

* Author: administrator */ #include“qzh.h” void changeState(int *a){

} int sdmn(int a){ } void changeCode(int a,uint_8 s[4]){

} 1

if(*a == 0){ } else { } *a = 0;*a = 1;return a-=5;uint_8 c[10] = {'0','1','2','3','4','5','6','7','8','9'};s[3] = c[a%10];s[2] = c[a/10];s[1] = c[a/100];s[0] = c[a/1000];

第四章 系统测试

4.1测试结果

图4 图4 是开始是湿度显示是72%,工作状态显示为停止。1

图5 图5 是第二次采集湿度显示为69%,工作状态显示为停止。1

图6 图6 是第三次采集湿度显示为66%度,已经逼近设定值65%,此时工作状态显示为停止。1

图7 再次采集时湿度低于65%,滴灌立即开始,湿度上升至75%。1

第五章 总结展望

5.1总结

通过本次课程设计,对中断处理有了更加深入的理解。对于计时器,LED和LCD的工作原理也有了更深的认识。LCD在试验中遇到的问题不大,主要问题在于中断处理函数的编写和LED显示上,LED显示是每次中断显示一个数,所以要每次中断显示,才能使得四个值看起来是同时显示的且没有闪烁效果。

其次LED的显示是要求是字符,所以在显示湿度是加上了转码函数加以转换。这里又涉及到了参数为数组的函数的写法,因为学过好几种语言,其传递方式偶所不同所以在这里也出现了不少问题。

通过此次课程设计不仅对单片机应用有了很好的实践经验,而且也帮助巩固了以前的知识。

5.2展望

1、滴灌系统可以增加通信模块,使得所有者可以实时监测农作物生长环境,也可以远程操控进行滴灌等功能。

2、滴灌系统可以增加温度监测,土壤酸碱性监测,空气CO2浓度监测,并配套处理设备使得对农作物的管理更加智能化。

1

参考文献

[1] 王宜怀、张书奎、王林、吴瑾著.嵌入式技术基础与实践(第3版),北京:清华大学 出版社,2011.[2] 田泽.嵌入式系统开发与应用.北京:北京航天航空大学出版社,[3] 王宜怀、陈建明、蒋银珍著.基于32位ColdFire构建嵌入式系统.北京:电子工业出

版社,2006.[4] 王粉花、王志良.嵌入式系统与单片机实践教程.北京:清华大学出版社,2010.32 1

下载51单片机语音回放系统课程设计报告word格式文档
下载51单片机语音回放系统课程设计报告.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机课程设计报告

    单片机课程设计报告题目:小直流电机调速实验教学单位: 机 电 工 程 系专业: 机械设计制造及其自动化班级: 0803班学号: 0811050342姓名: 程怀虎2011 年 11月(以下内容用宋体,五号,单......

    单片机课程设计报告(范文)

    片 机 课 程 设 计 报学号、姓名:年级、专业:培养层次:课程名称:授课学时学分:考试成绩:授课或主讲教师签字:单 告1 单片机最小系统功能说明单片机的最小系统是由组成单片机系统必......

    单片机课程设计报告

    单片机课程设计报告 课程名称:单片机原理及接口课程设计 题目:基于 学院:电气信息学院 专业班级:测控技术与仪器 姓名:江让 学号: 指导老师:刘升老师  时间: C51单片机的ADC0809数模......

    单片机课程设计报告

    DS18B20测温及按键控制 课 程 设 计 课程名称 单片机基础课程设计 题目名称 18B20测温及按键控制 学生学院 **** 专业班级 **** 班号 **** 学生组员 ****** 指导教师 *****......

    CAD课程设计51单片机最小系统报告

    目录 第一章、 功能要求„„„„„„„„„„„„„„„2 第二章、 原理图设计„„„„„„„„„„„„„„3 2.1 元器件的绘制„„„„„„„„„„„„„„„3 2.2 绘制......

    单片机课程设计

    单片机课程设计 课题: 简易电子琴设计 学院:电气与信息工程学院 专业:电子信息工程 姓名:李琳琳 学号:093411106 指导老师:田巍 河南城建学院 2014年01 月01 日......

    单片机课程设计

    课 程 设 计 设计题目: 基于单片机的8*8点阵显示数字设计 学生姓名: 指导教师: 二级学院: 专业: 班级: 学号: 目 录 摘要„„„„„„„„„„„„„„„„„„„„„„„„„„......

    单片机课程设计

    基于单片机的火灾智能报警控制系统的设计前言在各种灾害中,火灾是最经常、最普通地威胁公众安全和社会发展的灾害之一。人类能够对火进行利用和控制,是文明进步的一个重要标志......