【CC2640R2F】香瓜CC2640R2F之LCD

本文最后修改时间:2017年11月13日 15:00

 

一、本节简介

本节以simple_peripheral工程为例,介绍如何使用LCD显示。


二、实验平台

1)CC2640R2F平台

①协议栈版本:CC2640R2 SDK v1.40.00.45

②编译软件:CCS7.3.0.00019

③硬件平台:香瓜CC2640R2F开发板

④仿真器:香瓜XDS100V3下载器


三、版权声明

1)作者:甜甜的大香瓜

2)声明:喝水不忘挖井人,转载请注明出处。

3)纠错/业务合作:[email protected]

4)香瓜BLE之CC2640R2F群:557278427

5)本文出处:原创连载资料《简单粗暴学蓝牙5》

6)完整开源资料下载地址(电脑端打开):

https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

7)香瓜CC2640R2F开发板购买链接:

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4023-16963296339.8.21bfc58419sWKt&id=558653143169

8)香瓜XDS100V3下载器购买链接:

https://item.taobao.com/item.htm?spm=a230r.1.14.1.1d150040zvJBco&id=558356989143&ns=1&abbucket=6#detail


四、实验前提

1、在进行本文步骤前,请先阅读以下章节:

1)《简单粗暴学蓝牙5》的“第一章至第四章”章节​。

 

2、在进行本文步骤前,请先实现以下章节:

1)《简单粗暴学蓝牙5》的“第三章 软件的安装及使用”章节。

2) 《简单粗暴学蓝牙5》的《香瓜CC2640R2F之LED》:http://blog.csdn.net/feilusia/article/details/78087346

3) 《简单粗暴学蓝牙5》的《香瓜CC2640R2F之自定义按键》:http://blog.csdn.net/feilusia/article/details/78239447

4) 《简单粗暴学蓝牙5》的《香瓜CC2640R2F之自定义周期事件》:http://blog.csdn.net/feilusia/article/details/78245788

5) 《简单粗暴学蓝牙5》的《香瓜CC2640R2F之有源蜂鸣器》:http://blog.csdn.net/feilusia/article/details/78144258


五、基础知识

1、本文使用的是什么LCD?

答:

使用的是opengua设计的OLED。

1)图片

【CC2640R2F】香瓜CC2640R2F之LCD_第1张图片【CC2640R2F】香瓜CC2640R2F之LCD_第2张图片

2)购买地址

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-16963296341.2.5c196d0ci31tGM&id=558148641485

3)基本参数

【CC2640R2F】香瓜CC2640R2F之LCD_第3张图片


2、本文控制LCD的流程是如何的?

答:

1)硬件连接

OLED引脚 香瓜CC2640R2F开发板引脚
GND GND
VCC VCC
D0 IOID_9
D1 IOID_10
RST IOID_4
DC IOID_26
2)总线协议:IO口软件模拟SPI

3)软件控制流程

①IO初始化。

②根据时序初始化LCD。

③显示。


六、硬件原理
1、开发板对应位置

【CC2640R2F】香瓜CC2640R2F之LCD_第4张图片

需将拨码开关的左8、左9、左11、左12,共4个按键上拨。


七、实验步骤

1、编写并添加自定义的LCD驱动

1)写一个LCD驱动GUA_LCD.c(存放在“……\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\simple_peripheral\src\app\GUA”路径下)

//**********************************************************************
//name:         GUA_LCD.c
//introduce:    香瓜的LCD驱动
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
#include 
#include 

#include 
#include 
#include 
#include 

#include "Board.h"
#include "util.h"

#include "GUA_LCD.h"

/*********************宏定义************************/
#define GUA_LCD_D0                  IOID_9      //D0(SCLK)
#define GUA_LCD_D1                  IOID_10     //D1(MOSI)
#define GUA_LCD_RST                 IOID_4      //复位
#define GUA_LCD_DC                  IOID_26     //A0  H/L 命令数据选通端,H:数据,L:命令

#define GUA_LCD_X_WIDTH             128
#define GUA_LCD_Y_WIDTH             64
#define GUA_LCD_MAX_BUF             25
#define GUA_LCD_HAL_MAX_CHARS       16

#define GUA_LCD_SCL_1()             PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_D0, 1)
#define GUA_LCD_SCL_0()             PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_D0, 0)
#define GUA_LCD_SDA_1()             PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_D1, 1)
#define GUA_LCD_SDA_0()             PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_D1, 0)
#define GUA_LCD_RST_1()             PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_RST, 1)
#define GUA_LCD_RST_0()             PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_RST, 0)
#define GUA_LCD_DC_1()              PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_DC, 1)
#define GUA_LCD_DC_0()              PIN_setOutputValue(GUA_HlcdPins, GUA_LCD_DC, 0)

/*********************内部变量************************/
static PIN_State  GUA_LcdPins;
static PIN_Handle GUA_HlcdPins = NULL;

//IO配置
static PIN_Config GUA_LcdPinsCfg[] =
{
    GUA_LCD_D0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    GUA_LCD_D1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    GUA_LCD_RST | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    GUA_LCD_DC  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    PIN_TERMINATE
};

/*********************内部函数************************/
/*
//16*16的点阵字体取模方式:共阴——列行式——逆向输出
static const GUA_U8 GUA_F16x16[] =
{
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

//8*16的点阵
static const GUA_U8 GUA_F8X16[]=
{
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//  0
    0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,// ! 1
    0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// " 2
    0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,// # 3
    0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,// $ 4
    0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,// % 5
    0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,// & 6
    0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ' 7
    0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,// ( 8
    0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,// ) 9
    0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,// * 10
    0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,// + 11
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,// , 12
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,// - 13
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,// . 14
    0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,// / 15
    0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,// 0 16
    0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// 1 17
    0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,// 2 18
    0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,// 3 19
    0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,// 4 20
    0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,// 5 21
    0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,// 6 22
    0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,// 7 23
    0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,// 8 24
    0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,// 9 25
    0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,// : 26
    0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,// ; 27
    0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,// < 28
    0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,// = 29
    0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,// > 30
    0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,// ? 31
    0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,// @ 32
    0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,// A 33
    0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,// B 34
    0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,// C 35
    0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,// D 36
    0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,// E 37
    0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,// F 38
    0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,// G 39
    0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,// H 40
    0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// I 41
    0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,// J 42
    0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,// K 43
    0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,// L 44
    0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,// M 45
    0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,// N 46
    0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,// O 47
    0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,// P 48
    0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,// Q 49
    0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,// R 50
    0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,// S 51
    0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// T 52
    0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,// U 53
    0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,// V 54
    0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,// W 55
    0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,// X 56
    0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,// Y 57
    0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,// Z 58
    0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,// [ 59
    0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,// \ 60
    0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,// ] 61
    0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ^ 62
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,// _ 63
    0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ` 64
    0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,// a 65
    0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,// b 66
    0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,// c 67
    0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,// d 68
    0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,// e 69
    0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// f 70
    0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,// g 71
    0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,// h 72
    0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// i 73
    0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,// j 74
    0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,// k 75
    0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,// l 76
    0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,// m 77
    0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,// n 78
    0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,// o 79
    0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,// p 80
    0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,// q 81
    0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,// r 82
    0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,// s 83
    0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,// t 84
    0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,// u 85
    0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,// v 86
    0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,// w 87
    0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,// x 88
    0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,// y 89
    0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,// z 90
    0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,// { 91
    0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,// | 92
    0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,// } 93
    0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// ~ 94
};
*/

//6*8的点阵
static const GUA_U8 GUA_F6x8[92][6] =
{
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
    0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
    0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
    0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
    0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
    0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
    0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
    0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
    0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
    0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
    0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
    0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
    0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
    0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
    0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
    0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
    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, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
    0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
    0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
    0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
    0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
    0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
    0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
    0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
    0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
    0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
    0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
    0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
    0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
    0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
    0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
    0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
    0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
    0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
    0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
    0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
    0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
    0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
    0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
    0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
    0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
    0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
    0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
    0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
    0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
    0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
    0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
    0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
    0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
    0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
    0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
    0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
    0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
    0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
    0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
    0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
    0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
    0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
    0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
    0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
    0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
    0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
    0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
    0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
    0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
    0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
    0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
    0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
    0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
    0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
    0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
    0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
    0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
    0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
    0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
    0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
    0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
    0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
    0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
    0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
    0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};

//字转数组
static void GUA_LCD_itoa(GUA_U32 uiNum, GUA_U8 *buf, GUA_U8 uiRadix)
{
    GUA_U8 c, i;
    GUA_U8 *p, rst[32];

    p = rst;
    for (i = 0; i < 32; i++, p++)
    {
        /* Isolate a digit */
        c = uiNum % uiRadix;
        /* Convert to Ascii */
        *p = c + ((c < 10) ? '0' : '7');
        uiNum /= uiRadix;

        if (!uiNum)
            break;
    }

    for (c = 0; c <= i; c++)
    {
        /* Reverse character order */
        *buf++ = *p--;
    }
    *buf = '\0';
}

//字转数组
static GUA_U8 * GUA_LCD_ltoa(GUA_U32 l, GUA_U8 *buf, GUA_U8 radix)
{
#if defined (__TI_COMPILER_VERSION)
    return ( (GUA_U8*)ltoa( l, (GUA_C *)buf ) );
#elif defined( __GNUC__ )
    return ( (GUA_C*)ltoa( l, buf, radix ) );
#else
    GUA_U8 tmp1[10] = "", tmp2[10] = "", tmp3[10] = "";
    GUA_U16 num1, num2, num3;
    GUA_U8 i;

    buf[0] = '\0';

    if ( radix == 10 )
    {
        num1 = l % 10000;
        num2 = (l / 10000) % 10000;
        num3 = (GUA_U16)(l / 100000000);

        if (num3)
            GUA_LCD_itoa(num3, tmp3, 10);

        if (num2)
            GUA_LCD_itoa(num2, tmp2, 10);

        if (num1)
            GUA_LCD_itoa(num1, tmp1, 10);

        if (num3)
        {
            strcpy((GUA_C*)buf, (GUA_C const*)tmp3);
            for (i = 0; i < 4 - strlen((GUA_C const*)tmp2); i++)
                strcat((GUA_C*)buf, "0");
        }
        strcat((GUA_C*)buf, (GUA_C const*)tmp2);

        if (num3 || num2)
        {
            for (i = 0; i < 4 - strlen((GUA_C const*)tmp1); i++)
                strcat((GUA_C*)buf, "0");
        }
        strcat((GUA_C*)buf, (GUA_C const*)tmp1);
        if (!num3 && !num2 && !num1)
            strcpy((GUA_C*)buf, "0");
    }
    else if ( radix == 16 )
    {
        num1 = l & 0x0000FFFF;
        num2 = l >> 16;

        if (num2)
            GUA_LCD_itoa(num2, tmp2, 16);

        if (num1)
            GUA_LCD_itoa(num1, tmp1, 16);

        if (num2)
        {
            strcpy((GUA_C*)buf,(GUA_C const*)tmp2);
            for (i = 0; i < 4 - strlen((GUA_C const*)tmp1); i++)
                strcat((GUA_C*)buf, "0");
        }

        strcat((GUA_C*)buf, (GUA_C const*)tmp1);
        if (!num2 && !num1)
            strcpy((GUA_C*)buf, "0");
    }
    else
        return NULL;

    return buf;
#endif
}

//LCD延时1ms
static void GUA_LCD_DLY_Ms(GUA_U32 ms)
{                         
    GUA_U32 a;
    while(ms)
    {
        a=1800;
        while(a--);
            ms--;
    }
    return;
}

//LCD写数据
static void GUA_LCD_WrDat(GUA_U8 dat)
{
    GUA_U8 i=8, temp=0;

    GUA_LCD_DC_1();
    for(i=0;i<8;i++)
    {
        GUA_LCD_SCL_0();

        temp = dat&0x80;
        if (temp == 0)
        {
            GUA_LCD_SDA_0();
        }
        else
        {
            GUA_LCD_SDA_1();
        }
        GUA_LCD_SCL_1();
        dat<<=1;    
    }
}

//LCD写命令
static void GUA_LCD_WrCmd(GUA_U8 cmd)
{
    GUA_U8 i=8, temp=0;

    GUA_LCD_DC_0();
    for(i=0;i<8;i++)
    { 
        GUA_LCD_SCL_0();

        temp = cmd&0x80;
        if (temp == 0)
        {
            GUA_LCD_SDA_0();
        }
        else
        {
            GUA_LCD_SDA_1();
        }

        GUA_LCD_SCL_1();
        cmd<<=1;;        
    }     
}

//LCD设置坐标
static void GUA_LCD_Set_Pos(GUA_U8 x, GUA_U8 y)
{ 
    GUA_LCD_WrCmd(0xb0+y);
    GUA_LCD_WrCmd(((x&0xf0)>>4)|0x10);
    GUA_LCD_WrCmd((x&0x0f)|0x01);
}

//LCD全屏
static void GUA_LCD_Fill(GUA_U8 bmp_dat)
{
    GUA_U8 y,x;

    for(y=0;y<8;y++)
    {
        GUA_LCD_WrCmd(0xb0+y);
        GUA_LCD_WrCmd(0x01);
        GUA_LCD_WrCmd(0x10);

        for(x=0;x 126)
        {
            x=0;
            y++;
        }

        GUA_LCD_Set_Pos(x,y);

        if(c > 0 && c < 92)
        {
            for(i=0;i<6;i++)
            GUA_LCD_WrDat(GUA_F6x8[c][i]);
        }
        x+=6;
        j++;
    }
}

/*
//显示8*16一组标准ASCII字符串,显示的坐标(x,y),y为页范围0~7
static void GUA_LCD_P8x16Str(GUA_U8 x, GUA_U8 y,GUA_U8 ch[])
{
    GUA_U8 c=0,i=0,j=0;

    while (ch[j]!='\0')
    {
        c =ch[j]-32;

        if(x>120)
        {
            x=0;
            y++;
        }

        GUA_LCD_Set_Pos(x,y);
        for(i=0;i<8;i++)
            GUA_LCD_WrDat(GUA_F8X16[c*16+i]);

        GUA_LCD_Set_Pos(x,y+1);
        for(i=0;i<8;i++)
            GUA_LCD_WrDat(GUA_F8X16[c*16+i+8]);

        x+=8;
        j++;
    }
}

//显示16*16点阵 ,显示的坐标(x,y),y为页范围0~7
static void GUA_LCD_P16x16Ch(GUA_U8 x, GUA_U8 y, GUA_U8 N)
{
    GUA_U8 wm = 0;
    GUA_U32 adder = 32*N;

    GUA_LCD_Set_Pos(x , y);
    for(wm = 0;wm < 16;wm++)
    {
        GUA_LCD_WrDat(GUA_F16x16[adder]);
        adder += 1;
    }

    GUA_LCD_Set_Pos(x,y + 1);
    for(wm = 0;wm < 16;wm++)
    {
        GUA_LCD_WrDat(GUA_F16x16[adder]);
        adder += 1;
    }
}
*/

//**********************************************************************
//name:         GUA_LCD_Init
//introduce:    香瓜LCD驱动初始化
//parameter:    none
//return:       none
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
void GUA_LCD_Init(void)
{
    //IO初始化
    if(GUA_HlcdPins == NULL)
    {
        GUA_HlcdPins = PIN_open(&GUA_LcdPins, GUA_LcdPinsCfg);
    }

    //初始化
    GUA_LCD_SCL_1();
    GUA_LCD_RST_0();
    GUA_LCD_DLY_Ms(250);
    GUA_LCD_RST_1();

    GUA_LCD_WrCmd(0xae);//--turn off oled panel
    GUA_LCD_WrCmd(0x00);//---set low column address
    GUA_LCD_WrCmd(0x10);//---set high column address
    GUA_LCD_WrCmd(0x40);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
    GUA_LCD_WrCmd(0x81);//--set contrast control register
    GUA_LCD_WrCmd(0xcf);// Set SEG Output Current Brightness
    GUA_LCD_WrCmd(0xa1);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
    GUA_LCD_WrCmd(0xc8);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
    GUA_LCD_WrCmd(0xa6);//--set normal display
    GUA_LCD_WrCmd(0xa8);//--set multiplex ratio(1 to 64)
    GUA_LCD_WrCmd(0x3f);//--1/64 duty
    GUA_LCD_WrCmd(0xd3);//-set display offset    Shift Mapping RAM Counter (0x00~0x3F)
    GUA_LCD_WrCmd(0x00);//-not offset
    GUA_LCD_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency
    GUA_LCD_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec
    GUA_LCD_WrCmd(0xd9);//--set pre-charge period
    GUA_LCD_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
    GUA_LCD_WrCmd(0xda);//--set com pins hardware configuration
    GUA_LCD_WrCmd(0x12);
    GUA_LCD_WrCmd(0xdb);//--set vcomh
    GUA_LCD_WrCmd(0x40);//Set VCOM Deselect Level
    GUA_LCD_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)
    GUA_LCD_WrCmd(0x02);//
    GUA_LCD_WrCmd(0x8d);//--set Charge Pump enable/disable
    GUA_LCD_WrCmd(0x14);//--set(0x10) disable
    GUA_LCD_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)
    GUA_LCD_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7)
    GUA_LCD_WrCmd(0xaf);//--turn on oled panel
    GUA_LCD_Fill(0x00); //初始成黑屏

    //设置偏移值
    GUA_LCD_Set_Pos(0,0);
}

//**********************************************************************
//name:         GUA_LCD_WriteValue
//introduce:    香瓜LCD的写数据的函数
//parameter:    nGUA_Value:数据
//              nGUA_Format:10(10进制)或16(16进制)
//              nGUA_Line:GUA_LCD_LINE0~GUA_LCD_LINE7
//return:       none
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
void GUA_LCD_WriteValue(GUA_U32 nGUA_Value, GUA_U8 nGUA_Format, GUA_U8 nGUA_Line)
{
    GUA_U8 naGUA_Buf[GUA_LCD_MAX_BUF];

    GUA_LCD_ltoa(nGUA_Value, &naGUA_Buf[0], nGUA_Format);
    GUA_LCD_WriteString((GUA_C*)naGUA_Buf, nGUA_Line);
}

//**********************************************************************
//name:         GUA_LCD_WriteString
//introduce:    香瓜LCD的写字符串的函数
//parameter:    pGUA_Str:字符串
//              nGUA_Line:GUA_LCD_LINE0~GUA_LCD_LINE7
//return:       none
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
void GUA_LCD_WriteString(GUA_C *pGUA_Str, GUA_U8 nGUA_Line)
{
    GUA_LCD_FillLine(nGUA_Line, 0);
    GUA_LCD_P6x8Str(0, nGUA_Line, (GUA_U8 *)pGUA_Str);
}

//**********************************************************************
//name:         GUA_LCD_WriteStringValue
//introduce:    香瓜LCD的写字符串带数据的函数
//parameter:    pGUA_Str:字符串
//              nGUA_Value:数据
//              nGUA_Format:10(10进制)或16(16进制)
//              nGUA_Line:GUA_LCD_LINE0~GUA_LCD_LINE7
//return:       none
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
void GUA_LCD_WriteStringValue(GUA_C *pGUA_Str, GUA_U32 nGUA_Value, GUA_U8 nGUA_Format, GUA_U8 nGUA_Line)
{
    GUA_U8 nGUA_Len;
    GUA_U8 naGUA_Buf[GUA_LCD_MAX_BUF] = {0};

    nGUA_Len = (GUA_U8)strlen( (GUA_C*)pGUA_Str);
    memcpy(naGUA_Buf, pGUA_Str, nGUA_Len);
    naGUA_Buf[nGUA_Len] = ' ';
    GUA_LCD_ltoa(nGUA_Value, &naGUA_Buf[nGUA_Len + 1], nGUA_Format);
    GUA_LCD_WriteString((GUA_C*)naGUA_Buf, nGUA_Line);
}

//**********************************************************************
//name:         GUA_LCD_ClearLine
//introduce:    香瓜LCD的清除行的函数
//parameter:    nGUA_Line:GUA_LCD_LINE0~GUA_LCD_LINE7
//return:       none
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
void GUA_LCD_ClearLine(GUA_U8 nGUA_Line)
{
    GUA_LCD_FillLine(nGUA_Line, 0);
}

2)写一个LCD驱动头文件GUA_LCD.h(存放在“……\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\simple_peripheral\src\app\GUA”路径下)

//**********************************************************************
//name:         GUA_LCD.h
//introduce:    香瓜的LCD驱动的头文件
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
#ifndef _GUA_LCD_H_
#define _GUA_LCD_H_

/*********************宏定义************************/
//类型宏
#ifndef GUA_C
typedef char GUA_C;
#endif

#ifndef GUA_U8
typedef unsigned char GUA_U8;
#endif

#ifndef GUA_8
typedef signed char GUA_8;
#endif

#ifndef GUA_U16
typedef unsigned short GUA_U16;
#endif

#ifndef GUA_16
typedef signed short GUA_16;
#endif

#ifndef GUA_U32
typedef unsigned long GUA_U32;
#endif

#ifndef GUA_32
typedef signed long GUA_32;
#endif

#ifndef GUA_U64
typedef unsigned long long GUA_U64;
#endif

#ifndef GUA_64
typedef signed long long GUA_64;
#endif

//LCD的可写行
typedef enum
{
    GUA_LCD_LINE0 = 0,
    GUA_LCD_LINE1,
    GUA_LCD_LINE2,
    GUA_LCD_LINE3,
    GUA_LCD_LINE4,
    GUA_LCD_LINE5,
    GUA_LCD_LINE6,
    GUA_LCD_LINE7,
    GUA_LCD_LINE_COUNT
}GUA_LCD_LINE;

/*********************函数声明************************/
extern void GUA_LCD_Init(void);
extern void GUA_LCD_WriteValue(GUA_U32 nGUA_Value, GUA_U8 nGUA_Format, GUA_U8 nGUA_Line);
extern void GUA_LCD_WriteString(GUA_C *pGUA_Str, GUA_U8 nGUA_Line);
extern void GUA_LCD_WriteStringValue(GUA_C *pGUA_Str, GUA_U32 nGUA_Value, GUA_U8 nGUA_Format, GUA_U8 nGUA_Line);
extern void GUA_LCD_ClearLine(GUA_U8 nGUA_Line);

#endif

2、工程中添加驱动文件GUA_LCD.c和GUA_LCD.h

注:拖拽至CCS工程的Application文件夹下

【CC2640R2F】香瓜CC2640R2F之LCD_第5张图片

添加文件过程中,选项选择如下

【CC2640R2F】香瓜CC2640R2F之LCD_第6张图片

【CC2640R2F】香瓜CC2640R2F之LCD_第7张图片


3、应用层调用
1)添加头文件(simple_peripheral.c中)

//GUA
#include "GUA_LCD.h"
//GUA

2)添加初始化代码(simple_peripheral.c的SimpleBLEPeripheral_init函数末尾中)

//GUA
    //LCD初始化
    GUA_LCD_Init();

    //LCD测试
    GUA_LCD_WriteString("opengua", GUA_LCD_LINE0);              //写字符串
    GUA_LCD_WriteString("QQ Group:", GUA_LCD_LINE1);            //写字符串
    GUA_LCD_WriteValue(557278427, 10, GUA_LCD_LINE2);           //写数据
    GUA_LCD_WriteStringValue("GUA age:", 27, 10, GUA_LCD_LINE7);//写字符串+数据
    GUA_LCD_ClearLine(GUA_LCD_LINE7);                           //清除该行
//GUA

3)修改按键处理函数(替换simple_peripheral.c的GUA_HandleKeys函数)

//GUA
//**********************************************************************
//name:         GUA_HandleKeys
//introduce:    应用层按键处理函数
//parameter:    GUA_Keys:键值
//return:       none
//author:       甜甜的大香瓜
//email:        [email protected]
//QQ group:     香瓜BLE之CC2640R2F(557278427)
//shop:
//https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
//changetime:   2017.10.28
//**********************************************************************
static void GUA_HandleKeys(uint8 GUA_Keys)
{
  //UP按键
  if(GUA_Keys & GUA_KEY_UP_VALUE)
  {
    //LED1亮
    GUA_Led_Set(GUA_LED_NO_1, GUA_LED_MODE_ON);

    //蜂鸣器响
    GUA_Beep_Set(GUA_BEEP_MODE_ON);

    //LCD显示
    GUA_LCD_WriteString("UP is pressed", GUA_LCD_LINE7);

    //启动定时器
    Util_startClock(&GUA_periodicClock);
  }

  //DOWN按键
  if(GUA_Keys & GUA_KEY_DOWN_VALUE)
  {
    //LED2亮
    GUA_Led_Set(GUA_LED_NO_2, GUA_LED_MODE_ON);

    //蜂鸣器响
    GUA_Beep_Set(GUA_BEEP_MODE_ON);

    //LCD显示
    GUA_LCD_WriteString("DOWN is pressed", GUA_LCD_LINE7);

    //启动定时器
    Util_startClock(&GUA_periodicClock);
  }

  //LEFT按键
  if(GUA_Keys & GUA_KEY_LEFT_VALUE)
  {
    //LED3亮
    GUA_Led_Set(GUA_LED_NO_3, GUA_LED_MODE_ON);

    //蜂鸣器响
    GUA_Beep_Set(GUA_BEEP_MODE_ON);

    //LCD显示
    GUA_LCD_WriteString("LEFT is pressed", GUA_LCD_LINE7);

    //启动定时器
    Util_startClock(&GUA_periodicClock);
  }

  //RIGHT按键
  if(GUA_Keys & GUA_KEY_RIGHT_VALUE)
  {
    //LED4亮
    GUA_Led_Set(GUA_LED_NO_4, GUA_LED_MODE_ON);

    //蜂鸣器响
    GUA_Beep_Set(GUA_BEEP_MODE_ON);

    //LCD显示
    GUA_LCD_WriteString("RIGHT is pressed", GUA_LCD_LINE7);

    //启动定时器
    Util_startClock(&GUA_periodicClock);
  }

  //SELECT按键
  if(GUA_Keys & GUA_KEY_SELECT_VALUE)
  {
    //LED全亮
    GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_ON);

    //蜂鸣器响
    GUA_Beep_Set(GUA_BEEP_MODE_ON);

    //LCD显示
    GUA_LCD_WriteString("SELECT is pressed", GUA_LCD_LINE7);

    //启动定时器
    Util_startClock(&GUA_periodicClock);
  }
}
//GUA
每个按键都有对应的LCD显示。

八、注意事项

暂无


九、实验结果

仿真并全速运行,可以看到上电显示如下:


【CC2640R2F】香瓜CC2640R2F之LCD_第8张图片

当按下五个不同按键时,会有对应的按键显示。其中“UP”键按键效果如下:

【CC2640R2F】香瓜CC2640R2F之LCD_第9张图片

因此,LCD显示成功。






你可能感兴趣的:(BLE-CC2640R2F)