竞赛时写的几个程序分享了液晶驱动LCD12864.docx

上传人:b****5 文档编号:2816642 上传时间:2022-11-15 格式:DOCX 页数:15 大小:19.93KB
下载 相关 举报
竞赛时写的几个程序分享了液晶驱动LCD12864.docx_第1页
第1页 / 共15页
竞赛时写的几个程序分享了液晶驱动LCD12864.docx_第2页
第2页 / 共15页
竞赛时写的几个程序分享了液晶驱动LCD12864.docx_第3页
第3页 / 共15页
竞赛时写的几个程序分享了液晶驱动LCD12864.docx_第4页
第4页 / 共15页
竞赛时写的几个程序分享了液晶驱动LCD12864.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

竞赛时写的几个程序分享了液晶驱动LCD12864.docx

《竞赛时写的几个程序分享了液晶驱动LCD12864.docx》由会员分享,可在线阅读,更多相关《竞赛时写的几个程序分享了液晶驱动LCD12864.docx(15页珍藏版)》请在冰豆网上搜索。

竞赛时写的几个程序分享了液晶驱动LCD12864.docx

竞赛时写的几个程序分享了液晶驱动LCD12864

竞赛时写的几个程序,分享了——液晶驱动LCD12864

暑假为竞赛准备的,写得不好……大家多多赐教……

       ARMLPC2103,编译环境为ADS

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

**Filename:

       LCD12864_Driver.c

**Createdby:

     LiPeng

**Createddate:

  2008-09-07

**Version:

          1.0

**Descriptions:

   TheOriginalVersion

**

**------------------------------------------------------------------------------------------------------

**SystemFunction:

  LCDDriver------液晶驱动

**          液晶型号:

12864

**使用LPC2103连接方式:

(串行)

**      SID:

P0.6(MOSI),SCLK:

P0.4(SCK0)

**      PSB:

GND(serial),/RST:

VCC,CS:

VCC

**      LEDA:

VCC,LEDK:

GND

**

**------------------------------------------------------------------------------------------------------

**Modifiedby:

**Modifieddate:

**Version:

**Descriptions:

**

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

#include"config.h"

/*系统常量定义*/

/*PINSEL0引脚功能选择寄存器常量*/

#defineSCK0  (1<<8)  //P0.4定义位,01

#defineMOSI0  (1<<12)  //P0.6定义位,01

/*SPI_SPCRSPI控制寄存器常量*/

#defineCPHA  (1<<3)  //时钟相位控制

#defineCPOL  (1<<4)  //时钟极性控制

#defineMSTR  (1<<5)  //主模式选择

#defineLSBF  (1<<6)  //字节的移动方向

#defineSPI_MODEMSTR  //选择SPI接口模式为主模式、SCK高有效空闲状态为0,上升沿采样,MSB传输在前

/*变量定义*/

uint8uiDisp_Addr=0x00;//液晶显示ddram地址

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

**Functionname:

  delay

**Descriptions:

  延时函数

**Inputparameters:

   uiDly

**Outputparameters:

  无

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

voiddelay(uint32uiDly)

{

uint32i;

for(;uiDly>0;uiDly--)

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

}

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

**Functionname:

  LCD_SPI_Initial

**Descriptions:

  SPI接口初始化

**Inputparameters:

   无

**Outputparameters:

  无

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

voidLCD_SPI_Initial()

{

PINSEL0|=(SCK0|MOSI0);//设置P0.4为SPI0串行时钟端,P0.6为SPI主出从入端

SPI_SPCCR=8;   //SPI时钟计数寄存器

SPI_SPCR=SPI_MODE;  //SPI控制寄存器

}

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

**Functionname:

  LCD_Serial_Send

**Descriptions:

  主控CPU向LCD串行发送数据或指令

**Inputparameters:

   uidata  待发送数据或指令;uimark  数据或指令标志,1为指令,0为数据

**Outputparameters:

  无

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

voidLCD_Serial_Send(uint8uidata,uint8uimark)

{

   uint8uiComorData;

switch(uimark)

{

  case0:

   uiComorData=0xfa;

   break;

  case1:

   uiComorData=0xf8;

   break;

}

SPI_SPDR=uiComorData;  //写入SPI数据寄存器,发送数据或指令判断控制字

while((SPI_SPSR&0x80)==0);//等待发送完毕(SPIF传输完成标志置位)

delay

(1);

SPI_SPDR=(uidata&0xf0);  //写入SPI数据寄存器,启动发送高4位

   while((SPI_SPSR&0x80)==0);//等待发送完毕(SPIF传输完成标志置位)

   delay

(1);

   SPI_SPDR=((uidata&0x0f)<<4);//写入SPI数据寄存器,启动发送低4位

   while((SPI_SPSR&0x80)==0);//等待发送完毕(SPIF传输完成标志置位)

   delay

(1);

}

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

**Functionname:

  LCD_Initial

**Descriptions:

  LCD初始化

**Inputparameters:

**Outputparameters:

  无

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

voidLCD_Initial()   //LCD初始化

{

LCD_Serial_Send(0x30,1);//功能设置:

基本指令集

LCD_Serial_Send(0x04,1);//点设定:

显示字符/光标从左到右移位,DDRAM地址加1

   LCD_Serial_Send(0x0c,1);//显示设定:

开显示,不显示光标位置

   LCD_Serial_Send(0x01,1);//清DDRAM

   LCD_Serial_Send(0x02,1);//DDRAM地址归位

   LCD_Serial_Send(0x80,1);//显示地址设置

}

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

**Functionname:

  LCD_Erase

**Descriptions:

  清LCDDDRAM寄存器

**Inputparameters:

**Outputparameters:

  无

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

voidLCD_Erase()

{

LCD_Serial_Send(0x01,1);

}

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

**Functionname:

  LCD_Position_Select

**Descriptions:

  选择LCDDDRAM地址

**Inputparameters:

uiline,uirow显示行和列的值

**Outputparameters:

  无

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

voidLCD_Position_Select(uint8uiline,uint8uirow)

{

if(uiline==1)

  uiDisp_Addr=0x80+uirow-1;

elseif(uiline==2)

  uiDisp_Addr=0x90+uirow-1;

elseif(uiline==3)

  uiDisp_Addr=0x88+uirow-1;

else

  uiDisp_Addr=0x98+uirow-1;

}

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

**Functionname:

  LCD_Disp_Char

**Descr

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

当前位置:首页 > 求职职场 > 简历

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

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