基于两片单片机的智能多功能循迹小车项目设计.docx

上传人:b****5 文档编号:4444145 上传时间:2022-12-01 格式:DOCX 页数:65 大小:374.30KB
下载 相关 举报
基于两片单片机的智能多功能循迹小车项目设计.docx_第1页
第1页 / 共65页
基于两片单片机的智能多功能循迹小车项目设计.docx_第2页
第2页 / 共65页
基于两片单片机的智能多功能循迹小车项目设计.docx_第3页
第3页 / 共65页
基于两片单片机的智能多功能循迹小车项目设计.docx_第4页
第4页 / 共65页
基于两片单片机的智能多功能循迹小车项目设计.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

基于两片单片机的智能多功能循迹小车项目设计.docx

《基于两片单片机的智能多功能循迹小车项目设计.docx》由会员分享,可在线阅读,更多相关《基于两片单片机的智能多功能循迹小车项目设计.docx(65页珍藏版)》请在冰豆网上搜索。

基于两片单片机的智能多功能循迹小车项目设计.docx

基于两片单片机的智能多功能循迹小车项目设计

基于两片51单片机的智能多功能循迹小车的项目设计

项目作者:

戚振勇

设计时间:

2012/2/01—2012/2/26

设计地点:

振勇电子实验室(日照)

联系QQ:

820897443

 

封面--------------------------------------------------------------1

目录-----------------------------------------------------------2

一、摘要---------------------------------------------------------4

二、总设计方案

2.1硬件方面---------------------------------------------5

2.2软件方面-----------------------------------------------------5

三、硬件模块设计

3.151单片机STC89C52-----------------------------------6

3.218B20温度传感器--------------------------------------9

3.312864(带中文字库)液晶---------------------------10

3.4ISD4002—120P语音芯片-----------------------------17

3.5无线发射电路--------------------------------------------20

3.6光电循迹电路--------------------------------------------21

3.7电机驱动----------------------------------------------21

四、程序设计

4.1录音程序设计----------------------------------------------21

4.2总程序设计-------------------------------------------------22

五系统测试与结论----------------------------------------23

附录一(录音程序)---------------------------24

附录二(总程序详解)------------------------29

 

一、摘要

这个项目是本人挑战自我的一次大胆尝试,设计意图顺应现在电子产品向多功能化发展的趋势,为以后从事电子行业积累经验。

单个功能的项目已经不能适应科技高速发展的现代社会了,本项目包括了:

智能语音报时万年历、智能语音温度计、液晶显示、智能循迹小车、无线遥控等功能。

目的在于挑战自己应对复杂电路及多功能项目的能力,对该项目的具体生活意义不作过多考虑。

 

系统设计图

 

二、总体设计方案

2.1硬件方案

本设计的目的在于锻炼多个模块的协调性,以及设备的先进性,故在显示方面用了技术含量较高的12864显示,受体积限制,温度传感器采用了体积较小的18B20,时钟芯片用了DS1307,这两个芯片不仅体积小,而且占用单片机资源较小,18B20采用单总线通讯协议,只占用1个I/O口,DS1307采用I2C通讯协议,只占用2个I/O口。

在硬件连接方面,为了减少插线和体积,将各个系统焊在了同一个板上,并在各个位置焊接了指示灯,便于调试和处理问题。

电机驱动电路放在了车底部,降低了电路的复杂程度。

使之能更稳定的工作。

语音模块采用ISD4002-120p,录放时间长达两分钟,在给语音芯片录音的时候确实费了不少劲,网上很多的电路根本不能把声音录进去,要么就是录进去了声音很杂。

经过我近一周的努力,终于找到了一个好的方法,并设计了一个放大增益较大,噪声较小的电路(稍后会给出),完美的解决了语音芯片音质差的问题,士气大增。

在音响放大电路方面,网上很多资料都用LM380做放大,经过我的实际试验,LM386的放大增益太小,根本不能把声音完整的播放出来,所以我采用了TDA2030作为音响驱动,放大增益20dB。

(反馈比例为4.7:

150)

2.2软件方面

总体思想是将18B20的温度信号和1307的时钟信号进行处理,在液晶屏上实时的显示出来。

并在遥控按键按下的时候控制语音芯片工作,将时钟信号和温度信号变成声音信号准确的读出来。

循迹方面单独用另一块单片机控制,通过传感器送回来的信号分析黑线的位置,进而控制两边的电机的转速(PWM调速)。

整个项目采用C51语言编程。

三、硬件模块设计

3.1STC89C53RC单片机

此次温度及设计没有采用使用较为广泛的AT89C51系列单片机,而是采用

STC89C53RC单片机控制电路。

这一使用增进了我们对不同单片机的了解,为我

们熟练掌握各种单片机打下了基础。

此款单片机的主要性能如下:

增强型6时钟/机器周期,12时钟/机器周期8051CPU。

工作电压:

5.5V-3.4V。

工作频率范围:

0-40MHz,相当于普通8051的0~80MHz。

实际工作频率可达

48MHz。

用户应用程序空间15K字节。

片上集成512字节RAM。

通用I/O口(36个),复位后为:

P1/P2/P3/P4是准双向口/弱上拉,P0口是

开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口使用时,需加

上拉电阻。

ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器。

可通过串口

(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片。

EEPROM功能。

看门狗。

内部集成MAX810专用复位电路(D版本才有),外部晶体20M以下时,可省

外部复位电路。

共3个16位定时器/计数器。

外部中断2路,下降沿中断或低电平触发中断,PowerDown模式可由外部中

断低电平触发中断方式唤醒。

通用异步串行口(UART)。

工作温度范围:

-40-+85℃。

封装:

PDIP-40。

单片机复位电路及晶振电路:

晶振电路:

复位电路:

 

 

51单片机DIP40封装图

3.218B20温度传感器

温度传感器的种类众多,在应用与高精度、高可靠性的

拉斯)公司生产的DS18B20温度传感器当仁不让。

超小的体积

抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢

电子爱好者来说,DS18B20的优势更是我们学习单片机技术

产品的不二选择。

DS18B20的主要特征:

全数字温度转换及输出。

先进的单总线数据通信。

最高12位分辨率,精度可达土0.5摄氏度。

12位分辨率时的最大工作周期为750毫秒。

可选择寄生工作方式。

检测温度范围为–55°C~+125°C(–67°F~+257°F)。

内置EEPROM,限温报警功能。

64位光刻ROM,内置产品序列号,方便多机挂接。

多样封装形式,适应不同硬件系统。

测温部分电路设计:

3.312864(带中文字库)液晶部分

用户指令集

1、指令表1:

(RE=0:

基本指令集)

指令

指令码

说明

执行时间(540KHZ)

RS

RW

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

清除显示

0

0

0

0

0

0

0

0

0

1

将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”

4.6ms

地址归位

0

0

0

0

0

0

0

0

1

X

设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容

4.6ms

进入点

设定

0

0

0

0

0

0

0

1

I/D

S

指定在资料的读取与写入时,设定游标移动方向及指定显示的移位

72us

显示状态

开/关

0

0

0

0

0

0

1

D

C

B

D=1:

整体显示ON

C=1:

游标ON

B=1:

游标位置ON

72us

游标或显示移位控制

0

0

0

0

0

1

S/C

R/L

X

X

设定游标的移动与显示的移位控制位元;这个指令并不改变DDRAM的内容

72us

功能设定

0

0

0

0

1

DL

X

0

RE

X

X

DL=1(必须设为1)

RE=1:

扩充指令集动作

RE=0:

基本指令集动作

72us

设定CGRAM地址

0

0

0

1

AC5

AC4

AC3

AC2

AC1

AC0

设定CGRAM地址到地址计数器(AC)

72us

设定DDRAM

地址

0

0

1

AC6

AC5

AC4

AC3

AC2

AC1

AC0

设定DDRAM地址到地址计数器(AC)

72us

读取忙碌标志(BF)和地址

0

1

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

读取忙碌标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值

0us

写资料到RAM

1

0

D7

D6

D5

D4

D3

D2

D1

D0

写入资料到内部的RAM(DDRAM/CGRAM/IRAM/GDRAM)

72us

读出RAM的值

1

1

D7

D6

D5

D4

D3

D2

D1

D0

从内部RAM读取资料(DDRAM/CGRAM/IRAM/GDRAM)

72us

指令表—2:

(RE=1:

扩充指令集)

指令

指令码

说明

执行时间(540KHZ)

RS

RW

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

待命模式

0

0

0

0

0

0

0

0

0

1

将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”

72us

卷动地址或IRAM地址选择

0

0

0

0

0

0

0

0

1

SR

SR=1:

允许输入垂直卷动地址

SR=0:

允许输入IRAM地址

72us

反白选择

0

0

0

0

0

0

0

1

R1

R0

选择4行中的任一行作反白显示,并可决定反白与否

72us

睡眠模式

0

0

0

0

0

0

1

SL

X

X

SL=1:

脱离睡眠模式

SL=0:

进入睡眠模式

72us

扩充功能设定

0

0

0

0

1

1

X

1

RE

G

0

RE=1:

扩充指令集动作

RE=0:

基本指令集动作

G=1:

绘图显示ON

G=0:

绘图显示OFF

72us

设定IRAM地址或卷动地址

0

0

0

1

AC5

AC4

AC3

AC2

AC1

AC0

SR=1:

AC5—AC0为垂直卷动地址

SR=0:

AC3—AC0为ICONIRAM地址

72us

设定绘图RAM地址

0

0

1

AC6

AC5

AC4

AC3

AC2

AC1

AC0

设定CGRAM地址到地址计数器(AC)

72us

备注:

1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。

具体指令介绍:

1、清除显示

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

L

L

L

H

功能:

清除显示屏幕,把DDRAM位址计数器调整为“00H”

2、位址归位

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

L

L

H

X

功能:

把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM

3、位址归位

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

L

H

I/D

S

功能:

把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:

执行该命令后,所设置的行将显示在屏幕的第一行。

显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。

Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。

4、显示状态开/关

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

H

D

C

B

功能:

D=1;整体显示ONC=1;游标ONB=1;游标位置ON

5、游标或显示移位控制

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

H

S/C

R/L

X

X

功能:

设定游标的移动与显示的移位控制位:

这个指令并不改变DDRAM的内容

6、功能设定

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

H

DL

X

0RE

X

X

功能:

DL=1(必须设为1)RE=1;扩充指令集动作RE=0:

基本指令集动作

7、设定CGRAM位址

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

H

AC5

AC4

AC3

AC2

AC1

AC0

功能:

设定CGRAM位址到位址计数器(AC)

8、设定DDRAM位址

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

H

AC6

AC5

AC4

AC3

AC2

AC1

AC0

功能:

设定DDRAM位址到位址计数器(AC)

9、读取忙碌状态(BF)和位址

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

H

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

功能:

读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值

10、写资料到RAM

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

H

L

D7

D6

D5

D4

D3

D2

D1

D0

功能:

写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)

11、读出RAM的值

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

H

H

D7

D6

D5

D4

D3

D2

D1

D0

功能:

从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)

12、待命模式(12H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

L

L

L

H

功能:

进入待命模式,执行其他命令都可终止待命模式

13、卷动位址或IRAM位址选择(13H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

L

L

H

SR

功能:

SR=1;允许输入卷动位址SR=0;允许输入IRAM位址

14、反白选择(14H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

L

H

R1

R0

功能:

选择4行中的任一行作反白显示,并可决定反白的与否

15、睡眠模式(015H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

L

L

H

SL

X

X

功能:

SL=1;脱离睡眠模式SL=0;进入睡眠模式

16、扩充功能设定(016H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

L

H

H

X

1RE

G

L

功能:

RE=1;扩充指令集动作RE=0;基本指令集动作G=1;绘图显示ONG=0;绘图显示OFF

17、设定IRAM位址或卷动位址(017H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

L

H

AC5

AC4

AC3

AC2

AC1

AC0

功能:

SR=1;AC5~AC0为垂直卷动位址SR=0;AC3~AC0写ICONRAM位址

18、设定绘图RAM位址(018H)

CODE:

RWRSDB7DB6DB5DB4DB3DB2DB1DB0

L

L

H

AC6

AC5

AC4

AC3

AC2

AC1

AC0

功能:

设定GDRAM位址到位址计数器(AC)

显示坐标关系

1、图形显示坐标

水平方向X—以字节单位

垂直方向Y—以位为单位

2、汉字显示坐标

X坐标

Line1

80H

81H

82H

83H

84H

85H

86H

87H

Line2

90H

91H

92H

93H

94H

95H

96H

97H

Line3

88H

89H

8AH

8BH

8CH

8DH

8EH

8FH

Line4

98H

99H

9AH

9BH

9CH

9DH

9EH

9FH

液晶连接图

3.4ISD4002—120P语音芯片

ISD4002系列语音芯片采用多电平直接模拟存储(hipCorder)专利技术,声音

不需要A/D转换和压缩,每个采样直接存储在片内的闪烁存储器中避免了A/

D转换的误差,能够真实、自然地还原语音、音乐及效果声,避免了一般固体和

压缩造成的量化噪声和金属声.本文所设计的系统使用的芯片型号为

ISD4002-120P,单片录放时间为120s。

ISD4002工作于SPI串行接口。

SPI协议

是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的

下降沿动作.因此,对ISD4002而言,在时钟上升沿锁存MOSI引脚数据,在下降

沿将数据送至MISO引脚。

协议具体内容如下:

所有串行数据传输开始于SS下降沿;

SS在传输期间必须保持为低电平,在两条指令之间保持为高电平;

数据在时钟上升沿移入,在下降沿移出;

SS变低,输入指令和地址之后ISD才开始录放动作;

指令格式是IO位地址码加6位控制码;

ISD的任何操作(含快进)如果遇到EOM或OVF则产生一个中断,该中断

状态在下一个SPI周期开始时被清除;

使用读指令会使中断状态为移出ISD的MISO引脚时,控制及地址数据也同

步从MOSI移入;

所有操作在运行位(RUN)置“1”时开始,置“0”时结束;所有指令都在

ss上升沿开始执行。

芯片的引脚图如下所示:

ISD4002—120P设计电路图:

录音电路设计:

3.5无线发射电路

 

无线解码接收电路:

3.6光电循迹电路

在这里我用了1M欧的电阻,符合我的电路特点,网上很多写几十K甚至几K的都不能从实际上应用成功,这就是理论与实际的差距吧。

3.7电机驱动电路

为了分开单片机与驱动电路,在这里应用了光电耦合器(光耦817),并有四个发光二级管提示驱动方式。

3.8电源

由于本系统耗电较大,所以采用了分离式供电。

即电机驱动和单片机电源分开供电,但是两个电源必须共地。

四、程序设计

4.1录音程序设计:

根据ISD4002的特点,我们设计程序,将0-9等语音信号储存到从0000H开始的地址中。

对应关系如下:

地址

储存语音信号

0000H

现在时间是

0010H

现在车速是

0020H

1

0030H

2

0040H

3

0050H

4

0060H

5

0070H

6

0080H

7

0090H

8

00A0H

9

00B0H

00C0H

00D0H

00E0H

00F0H

欢迎使用振勇电子产品

录音程序详解:

见附录一

4.2总程序详解:

见附录二。

五、系统测试与结论

经多天艰苦调试,功能已经全部实现了。

只是由于程序过于复杂,导致整个系统稳定性不佳,容易出错,还有待于进一步改进。

欢迎大家批评指正。

共同进步。

 

参考文献:

【1】2010年山东大学创新科技大赛《智能语音数字温度计技术报告》。

都洪涛,黄浩龙,卢繁著。

【2】新概念《51单片机C语言教程》郭天祥著。

【3】网友文章:

《玩转12864》。

 

附录一、录音程序详解

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitss=P1^0;//ss为允许通讯位

sbitsclk=P1^1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1