ble学习笔记四---------------------控制lcd

--------------------------------------------------控制lcd

查看lcd12864手册

JLX12864G-086 可以显示 128 列*64 行点阵单色图片

查看原理图

对照以上两图可以得出以下对应


LCD指令表


查看指令表,整理指令

Lcd的一般操作

初始化

清屏

设置起始位置

写入数据显示图象

首先要将系统时钟切换到32M的处部晶振,为了自由配置所需要的时钟,借助CLKCONCMD.OSC选择系统主时钟,借助CLOKCONCMD.OSC32K用于选择芯片32K时钟源

低功耗模式设置时,需要SLEEPCMD寄存器

在《CC253x-CC2540-41ApplicationsUser's Guide.pdf》中并没有说明SLEEPCMD第二位功能

需下载cc2430芯片的说明书??

查看用户手册

需下载cc2430芯片的说明书??

其中第6位XOSC_STB表明外部高速32M晶振是否上电并稳定起振,当稳定时该位为1

第5位HFRC_STB则表明内部16MHz高速RC振荡器是否起振,并是否稳定,当16MHz RC振荡器稳定时该位为1

CLKCONCMD


CLKCONSTA

以上寄存器在iocc2540.h头文件中定义

创建工程,如同之前的创建方式,不同的有以下地方

创建公共函数头文件

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

版权所有 (C), 2014-2020

******************************************************************************

文 件 名: common.h

版 本 号: V1.0

作者 :retacn

生成日期 : 2014年9月13日

功能描述 : 公共头文件

函数列表 :

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建文件

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

#ifndef __COMMON_H__

#define __COMMON_H__

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

* 包含头文件 *

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

#include

#ifndef BV

#define BV(n) (1 <<(n))

#endif

#definest(x) do { x } while(__LINE__ == -1)

// IO控制

#define HAL_IO_SET(port, pin, val) HAL_IO_SET_PREP(port, pin, val)

#define HAL_IO_SET_PREP(port, pin,val) st( P##port##_##pin## = val;)

#define HAL_CONFIG_IO_OUTPUT(port, pin,val) HAL_CONFIG_IO_OUTPUT_PREP(port,pin, val)

#define HAL_CONFIG_IO_OUTPUT_PREP(port,pin, val) st( P##port##SEL &= ~BV(pin); \

P##port##_##pin## = val; \

P##port##DIR |= BV(pin); )

#define HAL_CONFIG_IO_PERIPHERAL(port,pin) HAL_CONFIG_IO_PERIPHERAL_PREP(port, pin)

#define HAL_CONFIG_IO_PERIPHERAL_PREP(port,pin) st( P##port##SEL |= BV(pin); )

/* SPI settings */

#define HAL_SPI_CLOCK_POL_LO 0x00

#define HAL_SPI_CLOCK_PHA_0 0x00

#define HAL_SPI_TRANSFER_MSB_FIRST 0x20

//#define NULL (void*)0

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

* 数据类型 *

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

typedef signed charint8; //!< Signed 8 bitinteger

typedef unsigned char uint8;//!< Unsigned 8 bit integer

typedef signed shortint16; //!< Signed 16 bitinteger

typedef unsigned short uint16;//!< Unsigned 16 bit integer

typedef signed longint32; //!< Signed 32 bitinteger

typedef unsigned long uint32;//!< Unsigned 32 bit integer

typedef unsigned char bool;//!< Boolean data type

#ifdef __cplusplus

#if __cplusplus

extern "C"{

#endif

#endif /* __cplusplus */

/*软件延时*/

extern void SoftWaitUs(uint32 microSecs);

/*启动外部延时*/

extern void SysStartXOSC(void);

#ifdef __cplusplus

#if __cplusplus

}

#endif

#endif /* __cplusplus */

#endif /* __COMMON_H__ */

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

版权所有 (C), 2014-2020

******************************************************************************

文 件 名: common.c

版 本 号: V1.0

作者 :retacn

生成日期 : 2014年9月13日

功能描述 : 公共函数实现

函数列表 :

SoftWaitUs

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建文件

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

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

* 包含头文件 *

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

#include

#include "common.h"

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

函 数 名: SoftWaitUs

功能描述: 软件延时,us为单位, 系统时钟在32M时

输入参数: uint16 microSecs 延时时长

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

void SoftWaitUs(uint32 microSecs)

{

while(microSecs--)

{

/* 32 NOPs == 1 usecs */

asm("nop"); asm("nop"); asm("nop");asm("nop"); asm("nop");

asm("nop"); asm("nop"); asm("nop");asm("nop"); asm("nop");

asm("nop"); asm("nop"); asm("nop");asm("nop"); asm("nop");

asm("nop"); asm("nop"); asm("nop");asm("nop"); asm("nop");

asm("nop"); asm("nop"); asm("nop");asm("nop"); asm("nop");

asm("nop"); asm("nop"); asm("nop");asm("nop"); asm("nop");

asm("nop"); asm("nop");

}

}

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

函 数 名: SysStartXOSC

功能描述: 启动外部晶振

输入参数: void

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

void SysStartXOSC(void)

{

SLEEPCMD &= ~0x04; // 启动所有晶振

while(!(SLEEPSTA & 0x40)); // 等待晶振稳定

CLKCONCMD= (CLKCONCMD & 0x80) | 0x49; // 使用16M晶振作为主时钟

while((CLKCONSTA & ~0x80) != 0x49 ); // 等待主时钟切换到16M晶振

CLKCONCMD = (CLKCONCMD & ~0x80) ; // 使用外部32K晶振作为休眠时钟

while( (CLKCONSTA & 0x80) != 0 ); // 等待睡眠时钟切换到外部32K晶振

CLKCONCMD= (CLKCONCMD & 0x80) ; // 使用32M晶振作为主时钟

while( (CLKCONSTA & ~0x80) != 0 ); // 等待主时钟切换到32M晶振

SLEEPCMD|= 0x04; // 关闭未使用的晶振

}

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

版权所有 (C), 2014-2020

******************************************************************************

文 件 名: Lcd12864.h

版 本 号: V1.0

作者 :retacn

生成日期 : 2014年9月13日

功能描述 : Lcd12864.c 的头文件

函数列表 :

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建文件

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

#ifndef __LCD12864_H__

#define __LCD12864_H__

#include "common.h"

#ifdef __cplusplus

#if __cplusplus

extern "C"{

#endif

#endif /* __cplusplus */

/*清屏*/

extern void LCD12864_Clear(void);

/*显示字符*/

extern void LCD12864_DisChar(uint8 line,uint8 col, char ch);

/*显示字符串*/

extern void LCD12864_DisStr(uint8 line,char* pStr);

/*屏幕初始化*/

extern void LCD12864_Init(void);

#ifdef __cplusplus

#if __cplusplus

}

#endif

#endif /* __cplusplus */

#endif /* __LCD12864_H__ */


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

版权所有 (C), 2014-2020

******************************************************************************

文 件 名: Lcd12864.c

版 本 号: V1.0

作者 :retacn

生成日期 : 2014年9月13日

功能描述 : LCD12864驱动

//control

P0.1 - LCD_MODE

P1.2 - LCD_CS

//spi

P1.5 - CLK

P1.6 - MOSI

函数列表 :

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建文件

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

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

* 包含头文件 *

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

#include

#include "Lcd12864.h"

#include "common.h"

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

* 宏定义 *

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

/* LCD lines */

/*显示屏的最大行数*/

#define LCD12864_MAX_LINE 64

/*显示屏的最大列数*/

#define LCD12864_MAX_ROW 128

/*一个字符所占行数*/

#define HAL_LCD_FONT_LINES 8

/*一个字符所占列数*/

#define HAL_LCD_FONT_ROWS 6

/* LCD Max Chars and Buffer */

/*最大行数*/

#define HAL_LCD_MAX_LINES (LCD12864_MAX_LINE/HAL_LCD_FONT_LINES) // 6*8点阵最大行数

/*最大列数*/

#define HAL_LCD_MAX_CHARS(LCD12864_MAX_ROW/HAL_LCD_FONT_ROWS) // 6*8点阵最大列数

/* LCD Control lines */

/*寄存器选择*/

#define HAL_LCD_RS_PORT 0

#define HAL_LCD_RS_PIN 1

/*片选*/

#define HAL_LCD_CS_PORT 1

#define HAL_LCD_CS_PIN 2

/* LCD SPI lines */

#define HAL_LCD_CLK_PORT 1

#define HAL_LCD_CLK_PIN 5

#define HAL_LCD_MOSI_PORT 1

#define HAL_LCD_MOSI_PIN 6

// 定义LCD12864显示屏 命令

/*显示开关*/

#define LCD_CMD_DISPLAY_ON 0xAF

#define LCD_CMD_DISPLAY_OFF 0xAE

/*显示开始行*/

#define LCD_CMD_BEGIN_LINE 0x40

/*页地址*/

#define LCD_CMD_PAGE_LINE 0xB0

/*列地址高四位和低四位*/

#define LCD_CMD_ROW_HIG 0x10

#define LCD_CMD_ROW_LOW 0x00

#define LCD_CMD_READ_STATE 0x00

/*显示列地址增减*/

#define LCD_CMD_ROW_ADDR_NORMAL 0xA0 // 从左到右

#define LCD_CMD_ROW_ADDR_REVERSE 0xA1 //从右到左

/*显示正显或反显*/

#define LCD_CMD_DISPLAY_NORMAL 0xA6

#define LCD_CMD_DISPLAY_REVERSE 0xA7

/*显示全部点阵*/

#define LCD_CMD_DISPLAY_POINT_ALL 0xA5

#define LCD_CMD_DISPLAY_POINT_NORMAL 0xA4

/*LCD偏压比设置*/

#define LCD_CMD_BIAS_SET 0xA2 //0XA2:BIAS=1/9 (常用) 0XA3:BIAS=1/7

/*软件复位*/

#define LCD_CMD_SOFT_RESET 0xE2

/*行扫描顺序*/

#define LCD_CMD_LINE_NORMAL 0xC0 //从上到下

#define LCD_CMD_LINE_REVERSE 0xC8 // 从下到上

/*电源控制*/

#define LCD_CMD_POWER_ONE 0x2C

#define LCD_CMD_POWER_TWO 0x2E

#define LCD_CMD_POWER_THREE 0x2F

/*设置vLCD电阻比例*/

#define LCD_CMD_CONTRAST_ONE_LEVEL 0x22 // 0x20-0x27

/*内部设置液晶电压模式*/

#define LCD_CMD_CONTRAST_TWO_CMD 0x81 // 0x00-0x3F

/*静态图标显示*/

#define LCD_CMD_STATIC_PICTURE_ON 0xAD

/*SPI interface control */

#define LCD_SPI_BEGIN() HAL_CONFIG_IO_OUTPUT(HAL_LCD_CS_PORT, HAL_LCD_CS_PIN, 0); /* chip select */

#define LCD_SPI_END()\

{\

asm("NOP");\

asm("NOP");\

asm("NOP");\

asm("NOP");\

HAL_CONFIG_IO_OUTPUT(HAL_LCD_CS_PORT,HAL_LCD_CS_PIN, 1); /* chipselect */ \

}

/* clear the received and transmit bytestatus, write tx data to buffer, wait till transmit done */

#define LCD_SPI_TX(x) { U1CSR &= ~(BV(2) |BV(1)); U1DBUF = x; while( !(U1CSR & BV(1)) ); }

/* Control macros */

#define LCD_DO_WRITE()HAL_CONFIG_IO_OUTPUT(HAL_LCD_RS_PORT,HAL_LCD_RS_PIN, 1);

#define LCD_DO_CONTROL()HAL_CONFIG_IO_OUTPUT(HAL_LCD_RS_PORT,HAL_LCD_RS_PIN, 0);

static void LCD12864_Dat(uint8 data);

static void LCD12864_Cmd(uint8 cmd);

/*全体ASCII 列表:5x7点阵库*/

const static uint8 aucAsciiTable5x7[][5]={

0x00,0x00,0x00,0x00,0x00,//space

0x00,0x00,0x4f,0x00,0x00,//!

0x00,0x07,0x00,0x07,0x00,//"

0x14,0x7f,0x14,0x7f,0x14,//#

0x24,0x2a,0x7f,0x2a,0x12,//$

0x23,0x13,0x08,0x64,0x62,//%

0x36,0x49,0x55,0x22,0x50,//&

0x00,0x05,0x07,0x00,0x00,//]

0x00,0x1c,0x22,0x41,0x00,//(

0x00,0x41,0x22,0x1c,0x00,//)

0x14,0x08,0x3e,0x08,0x14,//*

0x08,0x08,0x3e,0x08,0x08,//+

0x00,0x50,0x30,0x00,0x00,//,

0x08,0x08,0x08,0x08,0x08,//-

0x00,0x60,0x60,0x00,0x00,//.

0x20,0x10,0x08,0x04,0x02,///

0x3e,0x51,0x49,0x45,0x3e,//0

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

0x42,0x61,0x51,0x49,0x46,//2

0x21,0x41,0x45,0x4b,0x31,//3

0x18,0x14,0x12,0x7f,0x10,//4

0x27,0x45,0x45,0x45,0x39,//5

0x3c,0x4a,0x49,0x49,0x30,//6

0x01,0x71,0x09,0x05,0x03,//7

0x36,0x49,0x49,0x49,0x36,//8

0x06,0x49,0x49,0x29,0x1e,//9

0x00,0x36,0x36,0x00,0x00,//:

0x00,0x56,0x36,0x00,0x00,//;

0x08,0x14,0x22,0x41,0x00,//<

0x14,0x14,0x14,0x14,0x14,//=

0x00,0x41,0x22,0x14,0x08,//>

0x02,0x01,0x51,0x09,0x06,//?

0x32,0x49,0x79,0x41,0x3e,//@

0x7e,0x11,0x11,0x11,0x7e,//A

0x7f,0x49,0x49,0x49,0x36,//B

0x3e,0x41,0x41,0x41,0x22,//C

0x7f,0x41,0x41,0x22,0x1c,//D

0x7f,0x49,0x49,0x49,0x41,//E

0x7f,0x09,0x09,0x09,0x01,//F

0x3e,0x41,0x49,0x49,0x7a,//G

0x7f,0x08,0x08,0x08,0x7f,//H

0x00,0x41,0x7f,0x41,0x00,//I

0x20,0x40,0x41,0x3f,0x01,//J

0x7f,0x08,0x14,0x22,0x41,//K

0x7f,0x40,0x40,0x40,0x40,//L

0x7f,0x02,0x0c,0x02,0x7f,//M

0x7f,0x04,0x08,0x10,0x7f,//N

0x3e,0x41,0x41,0x41,0x3e,//O

0x7f,0x09,0x09,0x09,0x06,//P

0x3e,0x41,0x51,0x21,0x5e,//Q

0x7f,0x09,0x19,0x29,0x46,//R

0x46,0x49,0x49,0x49,0x31,//S

0x01,0x01,0x7f,0x01,0x01,//T

0x3f,0x40,0x40,0x40,0x3f,//U

0x1f,0x20,0x40,0x20,0x1f,//V

0x3f,0x40,0x38,0x40,0x3f,//W

0x63,0x14,0x08,0x14,0x63,//X

0x07,0x08,0x70,0x08,0x07,//Y

0x61,0x51,0x49,0x45,0x43,//Z

0x00,0x7f,0x41,0x41,0x00,//[

0x02,0x04,0x08,0x10,0x20,// 斜杠

0x00,0x41,0x41,0x7f,0x00,//]

0x04,0x02,0x01,0x02,0x04,//^

0x40,0x40,0x40,0x40,0x40,//_

0x01,0x02,0x04,0x00,0x00,//`

0x20,0x54,0x54,0x54,0x78,//a

0x7f,0x48,0x48,0x48,0x30,//b

0x38,0x44,0x44,0x44,0x44,//c

0x30,0x48,0x48,0x48,0x7f,//d

0x38,0x54,0x54,0x54,0x58,//e

0x00,0x08,0x7e,0x09,0x02,//f

0x48,0x54,0x54,0x54,0x3c,//g

0x7f,0x08,0x08,0x08,0x70,//h

0x00,0x00,0x7a,0x00,0x00,//i

0x20,0x40,0x40,0x3d,0x00,//j

0x7f,0x20,0x28,0x44,0x00,//k

0x00,0x41,0x7f,0x40,0x00,//l

0x7c,0x04,0x38,0x04,0x7c,//m

0x7c,0x08,0x04,0x04,0x78,//n

0x38,0x44,0x44,0x44,0x38,//o

0x7c,0x14,0x14,0x14,0x08,//p

0x08,0x14,0x14,0x14,0x7c,//q

0x7c,0x08,0x04,0x04,0x08,//r

0x48,0x54,0x54,0x54,0x24,//s

0x04,0x04,0x3f,0x44,0x24,//t

0x3c,0x40,0x40,0x40,0x3c,//u

0x1c,0x20,0x40,0x20,0x1c,//v

0x3c,0x40,0x30,0x40,0x3c,//w

0x44,0x28,0x10,0x28,0x44,//x

0x04,0x48,0x30,0x08,0x04,//y

0x44,0x64,0x54,0x4c,0x44,//z

0x08,0x36,0x41,0x41,0x00,//{

0x00,0x00,0x77,0x00,0x00,//|

0x00,0x41,0x41,0x36,0x08,//}

0x04,0x02,0x02,0x02,0x01,//~

};

const uint8 asciiTableSize = sizeof(aucAsciiTable5x7 ) / sizeof( aucAsciiTable5x7[0]);

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

函 数 名: LCD12864_Cmd

功能描述: 发送控制命令

输入参数: uint8 cmd

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

static void LCD12864_Cmd(uint8 cmd)

{

LCD_SPI_BEGIN();

LCD_DO_CONTROL();

LCD_SPI_TX(cmd);

//LCD_SPI_WAIT_RXRDY();

LCD_SPI_END();

}

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

函 数 名: LCD12864_Dat

功能描述: 发送数据

输入参数: uint8 data

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

static void LCD12864_Dat(uint8 data)

{

LCD_SPI_BEGIN();

LCD_DO_WRITE();

LCD_SPI_TX(data);

// LCD_SPI_WAIT_RXRDY();

LCD_SPI_END();

}

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

*@fn HalLcd_HW_Init

*

*@brief Initilize HW LCD Driver.

*

*@param None

*

*@return None

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

void LCD12864_Init(void)

{

PERCFG |= 0x02; // 设置UART alt2 为 SPI

// 配置引脚为SPI功能

HAL_CONFIG_IO_PERIPHERAL(HAL_LCD_CLK_PORT, HAL_LCD_CLK_PIN);

HAL_CONFIG_IO_PERIPHERAL(HAL_LCD_MOSI_PORT, HAL_LCD_MOSI_PIN);

/* Configure SPI */

U1UCR = 0x80; // 清除原来的数据

U1CSR = 0x00; // SPI 主机模式

// 高位在前,第一个上升沿发送数据,波特率为2M

U1GCR =HAL_SPI_TRANSFER_MSB_FIRST | HAL_SPI_CLOCK_PHA_0 | HAL_SPI_CLOCK_POL_LO | 0x0F;

U1BAUD = 0xFF;

// CS RS 配置为输出

HAL_CONFIG_IO_OUTPUT(HAL_LCD_RS_PORT, HAL_LCD_RS_PIN, 1);

HAL_CONFIG_IO_OUTPUT(HAL_LCD_CS_PORT, HAL_LCD_CS_PIN, 1);

SoftWaitUs(15000); // 15 ms

LCD12864_Cmd(LCD_CMD_SOFT_RESET); //软复位

SoftWaitUs(15000);// 15 ms

LCD12864_Cmd(LCD_CMD_POWER_ONE); //升压步聚1

SoftWaitUs(15);// 15 us

LCD12864_Cmd(LCD_CMD_POWER_TWO); //升压步聚2

SoftWaitUs(15);// 15 us

LCD12864_Cmd(LCD_CMD_POWER_THREE); //升压步聚3

SoftWaitUs(150);// 15 us

LCD12864_Cmd(LCD_CMD_CONTRAST_ONE_LEVEL); //粗调对比度,可设置范围0x20~0x27

LCD12864_Cmd(LCD_CMD_CONTRAST_TWO_CMD); //微调对比度

LCD12864_Cmd(0x3a); //0x1a,微调对比度的值,可设置范围0x00~0x3f

LCD12864_Cmd(LCD_CMD_BIAS_SET); // 1/9偏压比(bias)

LCD12864_Cmd(LCD_CMD_LINE_NORMAL); //行扫描顺序:从上到下

LCD12864_Cmd(LCD_CMD_ROW_ADDR_REVERSE); //列扫描顺序:从左到右

LCD12864_Cmd(LCD_CMD_BEGIN_LINE); //起始行:第一行开始

LCD12864_Cmd(LCD_CMD_DISPLAY_ON); //打开显示

LCD12864_Cmd(LCD_CMD_DISPLAY_POINT_NORMAL);

LCD12864_Cmd(LCD_CMD_DISPLAY_NORMAL); //设置为正显模式

SoftWaitUs(150);// 150 us

LCD12864_Clear();

}

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

函 数 名: LCD12864_SetAddr

功能描述: 设置起始地址

输入参数: uint8 line

uint8 col

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

static void LCD12864_SetAddr(uint8 line,uint8 col)

{

uint8 ucLine, ucRow;

//line += 5;

col += 4;

if((line >= LCD12864_MAX_LINE) || (col >= LCD12864_MAX_ROW))

{

return;

}

ucLine = LCD_CMD_PAGE_LINE | (line&0x0f);

LCD12864_Cmd(ucLine);

SoftWaitUs(15);

ucRow = LCD_CMD_ROW_HIG | (col>>4);

LCD12864_Cmd(ucRow);

SoftWaitUs(15); // 15 us

ucRow = LCD_CMD_ROW_LOW | (col&0x0f);

LCD12864_Cmd(ucRow);

SoftWaitUs(15); // 15 us

}

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

函 数 名: LCD12864_Dis5X8

功能描述: 将一个字符用5*8的点阵显示

输入参数: char ch

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

static void LCD12864_Dis5X8(char ch)

{

uint8ucCnt;

if((ch >= 0x20)&&(ch < 0x7f))

{

uint8 ucChar = ch - 0x20;

for(ucCnt=0; ucCnt<5; ucCnt++)

{

LCD12864_Dat( aucAsciiTable5x7[ucChar][ucCnt]);

}

//LCD12864_Dat(0x00);

}

else if(ch==0x00) //不需要显示,清空指定位置

{

for(ucCnt=0; ucCnt<5; ucCnt++)

{

LCD12864_Dat(0x00);

}

}

LCD12864_Dat(0x00);

}

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

函 数 名: LCD12864_Clear

功能描述: 清屏

输入参数: void

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

void LCD12864_Clear(void)

{

uint8 ucLine, ucRow;

for(ucLine=0; ucLine

{

LCD12864_SetAddr(ucLine, 0);

for(ucRow=0; ucRow

{

LCD12864_Dat(0x00);

}

}

}

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

函 数 名: LCD12864_DisChar

功能描述: 在指定位置显示一个字符

输入参数: uint8 line

uint8 col

char ch

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

void LCD12864_DisChar(uint8 line, uint8col, char ch)

{

if (( line < HAL_LCD_MAX_LINES)&&(col

{

LCD12864_SetAddr(line, col*HAL_LCD_FONT_ROWS);

LCD12864_Dis5X8(ch);

}

}

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

函 数 名: LCD12864_DisStr

功能描述: 将字符串显示到指定行

输入参数: uint8 line 显示的行 0~7

char* pStr 显示的字符串首地址

输出参数: 无

返 回 值:

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建

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

void LCD12864_DisStr(uint8 line, char*pStr)

{

uint8 ucCnt = 0;

for ( ucCnt = 0 ; ucCnt < HAL_LCD_MAX_CHARS; ucCnt++ )

{

if ( '\0' == pStr[ucCnt])

{

break;

}

LCD12864_DisChar( line, ucCnt, pStr[ucCnt]);

}

for ( ; ucCnt

{

LCD12864_DisChar( line, ucCnt, 0);

}

}

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

*end of file *

*----------------------------------------------*/’

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

版权所有 (C), 2014-2020

******************************************************************************

文 件 名: LCD.c

版 本 号: V1.0

作者 :retacn

生成日期 : 2014年9月13日

功能描述 : LCD12864驱动测试

函数列表 :

修改历史 :

1.日期 : 2014年9月13日

作者 :retacn

修改内容 : 创建文件

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

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

* 包含头文件 *

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

#include

#include "Lcd12864.h"

int main(void)

{

SysStartXOSC(); // 启动外部晶振

LCD12864_Init(); // LCD初始化

//最大显示列数

LCD12864_DisStr(0, "hello retacn this the"); // 行最多显示字符

LCD12864_DisStr(1, "hello retacn"); // 显示字符

LCD12864_DisStr(2, "hello retacn"); // 显示字符

LCD12864_DisStr(3, "hello retacn"); // 显示字符

LCD12864_DisStr(4, "hello retacn"); // 显示字符

LCD12864_DisStr(5, "hello retacn"); // 显示字符

LCD12864_DisStr(6, "hello retacn"); // 显示字符

LCD12864_DisStr(7, "hello retacn"); // 显示字符

LCD12864_DisStr(8, "hello retacn"); // 显示字符

while(1);

return 0;

}


参考:

http://bbs.elecfans.com/jishu_431223_1_1.html

你可能感兴趣的:(ble学习笔记四---------------------控制lcd)