NXPMK60智能车子模块初始化驱动方式.docx

上传人:b****8 文档编号:12603280 上传时间:2023-06-06 格式:DOCX 页数:50 大小:23.52KB
下载 相关 举报
NXPMK60智能车子模块初始化驱动方式.docx_第1页
第1页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第2页
第2页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第3页
第3页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第4页
第4页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第5页
第5页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第6页
第6页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第7页
第7页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第8页
第8页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第9页
第9页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第10页
第10页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第11页
第11页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第12页
第12页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第13页
第13页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第14页
第14页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第15页
第15页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第16页
第16页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第17页
第17页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第18页
第18页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第19页
第19页 / 共50页
NXPMK60智能车子模块初始化驱动方式.docx_第20页
第20页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

NXPMK60智能车子模块初始化驱动方式.docx

《NXPMK60智能车子模块初始化驱动方式.docx》由会员分享,可在线阅读,更多相关《NXPMK60智能车子模块初始化驱动方式.docx(50页珍藏版)》请在冰点文库上搜索。

NXPMK60智能车子模块初始化驱动方式.docx

NXPMK60智能车子模块初始化驱动方式

基于恩智浦MK60DN512Z系列单片机的智能模型车子程序集

作者徐挺

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

函数名称:

LCD_init()

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

voidLCD_Init(void)

{

GPIO_Init(PORTC,19,GPO,1);

GPIO_Init(PORTC,18,GPO,1);

GPIO_Init(PORTC,17,GPO,1);

GPIO_Init(PORTC,16,GPO,1);

LQTFT_RST=0;

time_delay_ms(200);

LQTFT_RST=1;

time_delay_ms(50);

LCD_write_command(0x11);//startOSC

time_delay_ms(100);

LCD_write_command(0xB1);//frameratecontrol

LCD_write_para8(0x05);

LCD_write_para8(0x3A);

LCD_write_command(0x36);//镜像控制?

LCD_write_para8(0x08);//

LCD_write_command(0xB2);

LCD_write_para8(0x05);

LCD_write_para8(0x3A);

LCD_write_command(0xB3);

LCD_write_para8(0x05);

LCD_write_para8(0x3A);

LCD_write_para8(0x05);

LCD_write_para8(0x3A);

LCD_write_command(0xB4);//inversionsetting

LCD_write_para8(0x00);//0x00=dotinversion

LCD_write_command(0xC0);//PowerControl1

LCD_write_para8(0xAA);//AVDD=5V;GVDD=4.2V

LCD_write_para8(0x0A);//GVCL=-4.2V

LCD_write_para8(0x84);//Mode=AUTO;VRHP=VRHN=0

LCD_write_command(0xC1);//PowerControl2

LCD_write_para8(0xC0);//V25=2.4V;VGH=2AVDD+VGH25-0.5=11.9V;VGL=-7.5V

LCD_write_command(0xC2);//PowerControl3

LCD_write_para8(0x0D);//

LCD_write_para8(0x00);//

LCD_write_command(0xC3);//PowerControl4

LCD_write_para8(0x8D);//

LCD_write_para8(0x2A);//

LCD_write_command(0xC4);//PowerControl5

LCD_write_para8(0x8D);

LCD_write_para8(0xEE);

LCD_write_command(0xC5);//VCOMsetting

LCD_write_para8(0x06);//

LCD_write_command(0xE0);

LCD_write_para8(0x06);

LCD_write_para8(0x1C);

LCD_write_para8(0x10);

LCD_write_para8(0x14);

LCD_write_para8(0x30);

LCD_write_para8(0x2B);

LCD_write_para8(0x24);

LCD_write_para8(0x29);

LCD_write_para8(0x28);

LCD_write_para8(0x26);

LCD_write_para8(0x2E);

LCD_write_para8(0x39);

LCD_write_para8(0x00);

LCD_write_para8(0x02);

LCD_write_para8(0x01);

LCD_write_para8(0x10);

LCD_write_command(0xE1);

LCD_write_para8(0x06);

LCD_write_para8(0x1C);

LCD_write_para8(0x10);

LCD_write_para8(0x14);

LCD_write_para8(0x30);

LCD_write_para8(0x2B);

LCD_write_para8(0x24);

LCD_write_para8(0x29);

LCD_write_para8(0x28);

LCD_write_para8(0x26);

LCD_write_para8(0x2E);

LCD_write_para8(0x39);

LCD_write_para8(0x00);

LCD_write_para8(0x02);

LCD_write_para8(0x01);

LCD_write_para8(0x10);

LCD_write_command(0x3A);//

LCD_write_para8(0x05);//RGB16-bit

LCD_write_command(0x29);//displayon

time_delay_ms(10);

LCD_display_full(RED);

}

/******************DRIVEIC寄存器寻址8080SERIES*******************************/

voidLCD_write_command(unsignedcharcmd)

{

unsignedchari;

LQTFT_A0=0;//A0=0发送命令

LQTFT_CS=0;

for(i=0;i<8;i++)

{

LQTFT_SCK=0;

if((cmd&0x80)==0x80)//高位先发送

LQTFT_SDA=1;

else

LQTFT_SDA=0;

//LQTFT_SDA=((0x80&cmd>0)?

1:

0);

LQTFT_SCK=1;

cmd=(cmd<<1);

}

LQTFT_CS=1;

}

/*****************DRIVEIC寄存器写数据8080SERIES******************************/

voidLCD_write_para8(unsignedchardat)

{

unsignedchari;

LQTFT_A0=1;//A0=1发送数据

LQTFT_CS=0;

for(i=0;i<8;i++)

{

LQTFT_SCK=0;

if((dat&0x80)==0x80)

LQTFT_SDA=1;

else

LQTFT_SDA=0;

//LQTFT_SDA=((0x80&dat>0)?

1:

0);

LQTFT_SCK=1;

dat=(dat<<1);

}

LQTFT_CS=1;

}

/****************DRIVEICGDRAM写数据16BITS8080SERIES*****************************/

voidLCD_write_para16(unsignedintdat)

{

unsignedchari,buf;

LQTFT_A0=1;

LQTFT_CS=0;

buf=(unsignedchar)(0xFF&(dat>>8));

for(i=0;i<8;i++)

{

LQTFT_SCK=0;

if((buf&0x80)==0x80)

LQTFT_SDA=1;

else

LQTFT_SDA=0;

//LQTFT_SDA=((0x80&buf>0)?

1:

0);

LQTFT_SCK=1;

buf=(buf<<1);

}

LQTFT_CS=1;

buf=(unsignedchar)(0xFF&dat);

LQTFT_CS=0;

for(i=0;i<8;i++)

{

LQTFT_SCK=0;

if((buf&0x80)==0x80)

LQTFT_SDA=1;

else

LQTFT_SDA=0;

//LQTFT_SDA=((0x80&buf>0)?

1:

0);

LQTFT_SCK=1;

buf=(buf<<1);

}

LQTFT_CS=1;

}

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

函数名称:

LCD_SetPos()

入口参数:

起始终止坐标

出口参数:

时间:

2016/11/12

功能说明:

重新定位输入信息位置

其他说明:

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

voidLCD_SetPos(unsignedcharxs,unsignedcharys,unsignedcharxe,unsignedcharye)

{

LCD_write_command(0x2A);//ColulmaddRSTsset

LCD_write_para8(0x00);//行起始坐标高8位,始终为零

LCD_write_para8(xs);//行起始坐标低8位

LCD_write_para8(0x00);//行终止坐标高8位,始终为零

LCD_write_para8(xe);//行终止坐标低8位

LCD_write_command(0x2B);//ColulmaddRSTsset

LCD_write_para8(0x00);//列起始坐标高8位,始终为零

LCD_write_para8(ys);//列起始坐标低8位

LCD_write_para8(0x00);//列终止坐标高8位,始终为零

LCD_write_para8(ye);//列终止坐标低8位

LCD_write_command(0x2C);//GRAM接收MCU数据或命令

}

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

函数名称:

LCD_address_rst()

入口参数:

出口参数:

时间:

2016/11/12

功能说明:

重置地址

其他说明:

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

voidLCD_address_rst(void)

{

LCD_write_command(0x2a);//配置MCU可操作的LCD内部RAM横坐标起始、结束参数

LCD_write_para8(0x00);//横坐标起始地址0x0000

LCD_write_para8(0x00);

LCD_write_para8(0x00);//横坐标结束地址0x007f(127)

LCD_write_para8(0x7f);

LCD_write_command(0x2b);//配置MCU可操作的LCD内部RAM纵坐标起始结束参数

LCD_write_para8(0x00);//纵坐标起始地址0x0000

LCD_write_para8(0x30);

LCD_write_para8(0x00);//纵坐标结束地址0x009f(159)

LCD_write_para8(0x70);

LCD_write_command(0x2C);//GRAM接收MCU数据或命令

}

 

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

//延时函数

voidtime_delay(unsignedintt)

{

unsignedinti,j;

for(j=0;j

for(i=0;i<1000;i++);

}

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

函数名称:

LCD_display_full()

入口参数:

color为常用的需要显示的颜色(已经提前定义),color为

NULL时,则可将不常用颜色放入dat中加以显示

出口参数:

时间:

2012-09-09

功能说明:

全屏显示单色画面

其他说明:

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

voidLCD_display_full(unsignedintcolor)

{

unsignedinti,j;

LCD_SetPos(0,0,XMAX,YMAX);

for(i=0;i

{

for(j=0;j

{

LCD_write_para16(color);

}

}

}

voidLCD_CLS(void)

{

LCD_display_full(BLACK);

}

 

/****************显示图片********************************/

voidshow_pic(unsignedcharxs,unsignedcharys,unsignedcharxe,unsignedcharye,unsignedchar*ppic)

{

unsignedinti,j,k=0;

LCD_SetPos(xs,ys,xe,ye);

for(i=0;i

{

for(j=0;j

{

LCD_write_para16(((unsignedint)ppic[k])<<8|ppic[k+1]);

k+=2;

}

}

}

 

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

【函数】OV7725_Init

【功能】摄像头初始化

【参数】fps帧率

【返回值】无

【实例】推荐使用50帧的

【注意事项】注意K60性能有限,太高帧率会出问题

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

voidOV7725_Init(uint8_tfps)

{

uint8_tid[2];//存放摄像头id

uint8_tack=0;//检验所有寄存器操作是否出错

uint16_twidth=OV7725_IMAGEW,height=OV7725_IMAGEH;

uint16_thstart,vstart,hsize;

//摄像头寄存器设置

GPIO_Init(PORTE,4,GPI_UP,1);//配置为GPIO功能

GPIO_Init(PORTE,5,GPI_UP,1);//配置为GPIO功能

EXTI_Init(PTC,6,rising_down);//行中断

EXTI_Init(PTC,7,falling_up);//场中断

GPIO_Init(PORTD,8,0,0);

GPIO_Init(PORTD,9,0,0);

GPIO_Init(PORTD,10,0,0);

GPIO_Init(PORTD,11,0,0);

GPIO_Init(PORTD,12,0,0);

GPIO_Init(PORTD,13,0,0);

GPIO_Init(PORTD,14,0,0);

GPIO_Init(PORTD,15,0,0);//注意不要使用灯PD15

OV7725_SoftwareReset();//寄存器恢复初始值

time_delay_ms(50);

/*7725最大分辨率640*480*/

ack+=OV7725_Init_Regs();//先按官方的默认初始化VGA后面需要再改

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_COM2_REG,0x03);//输出驱动能力Bit[4]:

睡眠模式Bit[1:

0]:

驱动能力00:

1x01:

2x10:

3x11:

4x

#if1//RGB模式

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_COM7_REG,0x46);//使用QVGA和RGB565格式

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_COM3_REG,0x00);//Bit[6]:

0水平镜像关1水平镜像开注意开启水平镜像时最好开启0x32寄存器的Bit[7]:

镜像图像边缘对齐-在镜像模式下应该设置为1

hstart=(0x3fU<<2U);//图像水平开始位置使用VGA时为0x23

vstart=(0x03U<<1U);//图像垂直开始位置使用VGA时为0x07

#else//灰度模式

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_COM7_REG,0x43);//使用QVGA和BayerRAW格式

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_COM3_REG,0x00);

hstart=0x3fU<<2U;//图像水平开始位置

vstart=0x03U<<1U;//图像垂直开始位置

#endif

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_CNST_REG,0x20);

OV7725_SetFPS(fps);

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_EXHCL_REG,0x00);//虚拟像素插入LSB用于在水平方向插入虚拟像素的LSB

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_ADVFL_REG,0x00);//垂直同步插入虚拟行(1位等于1行)的LSB

ack+=SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_ADVFH_REG,0x00);//垂直同步插入虚拟行的MSB

/*Resolutionandtiming.*/

hsize=width+16;

/*设置输出图片大小.*/

//水平起始位置高位因为寄存器是8位的最大255,像素最大640*480放不下,用了10位数据,这里是高8位,剩下的两位放在OV7725_HREF_REG中

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_HSTART_REG,hstart>>2U);

//水平宽度高位因为寄存器是8位的最大255,像素最大640*480放不下,用了10位数据,这里是高8位,剩下的两位放在OV7725_HREF_REG中

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_HSIZE_REG,hsize>>2U);

//垂直起始位置高位因为寄存器是8位的最大255,像素最大640*480放不下,用了9位数据,这里是高8位,剩下的两位放在OV7725_HREF_REG中

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_VSTART_REG,vstart>>1U);

//垂直高度高位因为寄存器是8位的最大255,像素最大640*480放不下,用了9位数据,这里是高8位,剩下的两位放在OV7725_HREF_REG中

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_VSIZE_REG,height>>1U);

//水平输出宽度高位因为寄存器是8位的最大255,像素最大640*480放不下,用了10位数据,这里是高8位,剩下的两位放在OV7725_EXHCH_REG中

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_HOUTSIZE_REG,width>>2U);

//垂直输出高度高位因为寄存器是8位的最大255,像素最大640*480放不下,用了9位数据,这里是高8位,剩下的两位放在OV7725_EXHCH_REG中

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_VOUTSIZE_REG,height>>1U);

//水平宽度和垂直高度的低位

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_HREF_REG,

((vstart&1U)<<6U)|((hstart&3U)<<4U)|((height&1U)<<2U)|((hsize&3U)<<0U));

//水平输出和垂直输出的低2位和低1位

SCCB_RegWrite(OV7725_SCCB_ADDR,OV7725_EXHCH_REG,((height&1U)<<2U)|((width&3U)<<0U));

}

 

/*

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

当前位置:首页 > 自然科学 > 物理

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

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