智能小车资料及源程序Word格式文档下载.docx

上传人:b****2 文档编号:5008233 上传时间:2023-05-04 格式:DOCX 页数:26 大小:270.75KB
下载 相关 举报
智能小车资料及源程序Word格式文档下载.docx_第1页
第1页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第2页
第2页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第3页
第3页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第4页
第4页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第5页
第5页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第6页
第6页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第7页
第7页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第8页
第8页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第9页
第9页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第10页
第10页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第11页
第11页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第12页
第12页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第13页
第13页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第14页
第14页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第15页
第15页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第16页
第16页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第17页
第17页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第18页
第18页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第19页
第19页 / 共26页
智能小车资料及源程序Word格式文档下载.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

智能小车资料及源程序Word格式文档下载.docx

《智能小车资料及源程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能小车资料及源程序Word格式文档下载.docx(26页珍藏版)》请在冰点文库上搜索。

智能小车资料及源程序Word格式文档下载.docx

1) 

性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。

Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。

2) 

接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。

3) 

速度快,是LCD12864的20倍,是LCD1602的40倍。

4) 

Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。

Nokia5110原理图:

商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。

Nokia5110和Nokia3110是兼容的,用的都是同一款驱动芯片PHILIPSPCD8544。

(1) 

SPI接口时序写数据/命令

Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。

智能避障小车原理图

一下是小车各个模块原理图逐一展示

1.12v及5v直流稳压电源

2.L298电机驱动模块

3.51单片机控制模块

4.。

声光信号产生模块

以下是

二、电机驱动模块,超声波测距避障,声光信号产生,PWM调速源程序

/*

用T0计时器中断进行对小车方向的调节

用INT0外部中断进行声光报警

用INT1外部中断进行超声避障

用T1计时器进行对时间的测量

*/

#include<

reg52.h>

stdio.h>

sbitP00=P1^0;

//循迹口

sbitP01=P1^1;

sbitP02=P1^2;

sbitP03=P0^3;

//声光信号P03接蜂鸣器,P04接LED

sbitP04=P0^4;

sbitP20=P2^0;

//电机1左轮

sbitP21=P2^1;

sbitP22=P2^2;

//电机2

sbitP23=P2^3;

voidzhuanxiang(char,char,char);

voiddelay1ms(void);

voiddelaynms(int);

unsignedinti=0,j=0;

//特殊情况旗标

voidkongzhi(void)interrupt1//PWM信号进行电机控制

{

if(P00==0&

&

P01==1&

P02==0)//小车直线快走定时0.02ms

{

TH0=0X1F;

TL0=0XEC;

P20=0;

//电机1左轮

P21=1;

P22=1;

//电机2右转

P23=0;

}

P01==0&

P02==1)//小车右转定时0.05ms

{

TL0=0XCE;

P20=1;

//电机1左轮

//电机2

i=1;

}

P02==0&

i==1)//特别

{

TH0=0X1F;

TL0=0XCE;

P22=1;

P23=0;

j=0;

}

if(P00==1&

P02==0)//小车左转定时0.05ms

{

TH0=0X1F;

//电机1

P21=1;

//电机2

P23=1;

j=1;

j==1)//特别

{

TH0=0X1F;

TL0=0XCE;

P23=1;

i=0;

}

P02==1)

{//全部检测到黑线时车停

}

voidshengguang(void)interrupt0//停车并产生声光2s

unsignedinti,j;

P20=1;

P21=1;

P22=1;

P23=1;

delaynms(500);

for(i=0;

i<

20;

i++)

P04=0;

for(j=0;

j<

100;

j++)

P03=0;

delay1ms();

P03=~P03;

}

P03=1;

//关闭声光

P04=1;

delaynms(500);

P20=0;

//继续行车

voidchaoshengbo(void)interrupt2//超声波测距避障程序

voidmain()

while

(1)

P21=1;

P22=1;

P23=1;

//小车停

P04=1;

PX0=1;

TMOD=0X10;

//T0用方式0,T1用方式1

EA=1;

//开启中断总开关

EX0=1;

//T0中断

EX1=1;

//T1中断

ET0=1;

//INT0中断

ET1=1;

//INT1中断

TR1=1;

//开启T1计时器

zhuanxiang(P00,P01,P02);

voidzhuanxiang(charP00,charP01,charP02)

if(P00==0&

P02==0)//小车直走

{//0.01ms

TL0=0XF6;

;

TR0=1;

}

P02==1)//小车右转定时0.05ms

{

TH0=0X1F;

TL0=0XCE;

}

if(P00==1&

P02==0)//小车左转定时0.05ms

{

}

if(P00==1&

P02==1)//全部检测到黑线时车停

TR0=1;

}

voiddelay1ms(void)

inti;

120;

i++);

voiddelaynms(intn)

inti,j;

n;

j++);

三、诺基亚5110液晶显示时间路程源程序

Nokia5110LCDtest

芯片型号:

AT89S52

by:

ysit1990@

data:

2012.06.20

描述:

基于网上参考例子修改测试于杭州电子科技大学集训期间

/***********************************************************************

pindescriptioni/o

VCC(3.3V)+3.3v供电电源

CLK:

LCD_CLKP2.0时钟

DA:

SDINP2.1数据输入

D/C:

LCD_DCP2.21写数据0写命令

SCE:

LCD_SCEP2.3片选信号

RSET:

LCD_RESTP2.4复位信号

GND--接地

LED+5v背光

***********************************************************************/

#include<

intrins.h>

//包含_nop_();

一机器周期延时空指令

#defineucharunsignedchar

#defineuintunsignedint

sbitLCD_CLK=P1^5;

//时钟

sbitSDIN=P1^4;

//数据

sbitLCD_DC=P1^3;

//1写数据,0写指令

sbitLCD_SCE=P1^2;

//片选

sbitLCD_REST=P1^1;

//复位,0复位

/*function

************************/

///////////SPI写操作

voidLCD_write_byte(unsignedchardat,unsignedcharcommand);

///////////5110初始化

voidLCD_init(void);

///////////清屏

voidLCD_clear(void);

//////////显示一个字符

voidLCD_write_char(unsignedcharc);

//////////显示字符串

voidLCD_write_String(unsignedcharX,unsignedcharY,unsignedchar*s);

//////////显示一个汉字

voidLCD_WRITE_ZH(unsignedcharX,unsignedcharY,unsignedcharZH[][32],unsignedcharindex);

///////////显示汉字串

voidLCD_WRITE_ZH_STRING(ucharX,ucharY,//起始坐标

ucharZHS[][32],//汉字字符串

ucharwidth,//每个字符边长

ucharindex,//起始索引号

ucharnum,//显示个数

ucharspace);

//间距

/////////////////////////画图

voidLCD_draw_bmp_pixel(ucharX,ucharY,uchar*map,ucharwidth,ucharheight);

//ASCII码的字库

ucharcodeASCII_6_8[][6]=

{

{0x00,0x3e,0x51,0x49,0x45,0x3e}//0

{0x00,0x00,0x42,0x7f,0x40,0x00}//1

{0x00,0x42,0x61,0x51,0x49,0x46}//2

{0x00,0x21,0x41,0x45,0x4b,0x31}//3

{0x00,0x18,0x14,0x12,0x7f,0x10}//4

{0x00,0x27,0x45,0x45,0x45,0x39}//5

{0x00,0x3c,0x4a,0x49,0x49,0x30}//6

{0x00,0x01,0x71,0x09,0x05,0x03}//7

{0x00,0x36,0x49,0x49,0x49,0x36}//8

{0x00,0x06,0x49,0x49,0x29,0x1e}//9

{0x00,0x00,0x36,0x36,0x00,0x00}//:

{0x00,0x38,0x44,0x44,0x44,0x20}//c

{0x00,0x7c,0x04,0x18,0x04,0x78}//m

{0x00,0x48,0x54,0x54,0x54,0x20}//s

};

/*///////////////////////////////////////////////////////////汉字字模参考*/

staticconstcharHanzi[][24]={

/*--文字:

支--*/

/*--宋体12;

此字体下对应的点阵为:

宽x高=16x16*/

{0xFE,0x22,0x22,0xFE,0x00,0x08,0x48,0x88,0x08,0xFF,0x08,0x00,

0x07,0x02,0x02,0x07,0x00,0x00,0x00,0x09,0x08,0x0F,0x00,0x00},//时0

{0x00,0xF9,0x02,0xF8,0x49,0x49,0x49,0x49,0xF9,0x01,0xFF,0x00,

0x00,0x0F,0x00,0x03,0x02,0x02,0x02,0x02,0x0B,0x08,0x0F,0x00},//间1

{0x9E,0x12,0xF2,0x9E,0x48,0xC4,0xAB,0x92,0xAA,0xC6,0x40,0x00,

0x0F,0x08,0x07,0x04,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00},//路0

{0x12,0xD2,0xFE,0x51,0x80,0x2F,0x29,0xE9,0x29,0x2F,0x00,0x00,

0x01,0x00,0x0F,0x00,0x08,0x09,0x09,0x0F,0x09,0x09,0x08,0x00},//程1

持--*/

宽x高=16x16--

/***********************************************************

函数名称:

LCD_write_byte

函数功能:

模拟SPI接口时序写数据/命令LCD

入口参数:

data:

写入的数据;

command:

写数据/命令选择;

出口参数:

备注:

***********************************************************/

voidLCD_write_byte(unsignedchardat,unsignedcharcommand)

unsignedchari;

LCD_SCE=0;

//5110片选有效,允许输入数据

if(command==0)//写命令

LCD_DC=0;

elseLCD_DC=1;

//写数据

for(i=0;

8;

i++)//传送8bit数据

if(dat&

0x80)

SDIN=1;

else

SDIN=0;

dat=dat<

<

1;

LCD_CLK=0;

LCD_CLK=1;

//时钟上升沿写

LCD_SCE=1;

//禁止5110

LCD_init

5110初始化

voidLCD_init(void)

//片选LCD

LCD_REST=0;

//产生一个让LCD复位的低电平脉冲

_nop_();

LCD_REST=1;

LCD_write_byte(0x21,0);

//LCD模式设置:

芯片活动,水平寻址,使用扩展指令

LCD_write_byte(0xc8,0);

//设置液晶偏置电压

LCD_write_byte(0x06,0);

//温度校正

LCD_write_byte(0x13,0);

//1:

48

LCD_write_byte(0x20,0);

//使用基本命令,V=0,水平寻址

LCD_clear();

//清屏

LCD_write_byte(0x0c,0);

//设定显示模式,正常显示

//禁止LCD

LCD_set_XY

设置LCD坐标函数

X:

0-83横坐标

Y:

0-5纵坐标

voidLCD_set_XY(unsignedcharX,unsignedcharY)

LCD_write_byte(0x80|X,0);

//X行(横坐标)

LCD_write_byte(0x40|Y,0);

//column列(纵坐标)

/*------------------------------------------

LCD_clear:

LCD清屏函数

--------------------------------------------*/

voidLCD_clear(void)

unsignedchart;

unsignedchark;

LCD_set_XY(0,0);

for(t=0;

t<

6;

t++)

for(k=0;

k<

84;

k++)

LCD_write_byte(0x00,1);

LCD_write_char

显示英文字符

c:

显示的字符

voidLCD_write_char(unsignedcharc)

c-=0x20;

//ASCII码减去0x20

for(i=0;

i<

i++)

LCD_write_byte(ASCII_6_8[c][i],1);

/*-------------------------------------------

名称:

英文字符串显示函数

参数:

*s:

英文字符串指针

---------------------------------------------*/

voidLCD_write_String(unsignedcharX,unsignedcharY,unsignedchar*s)

LCD_set_XY(X,Y);

while(*s)//等效*s!

='

\0'

LCD_write_char(*s);

s++;

}

/*-------------------------------------------------

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2