文件
来源网络
bsp_ST7033.h
bsp_ST7033.c
ST7033.pdf
点亮及显示.zip
bsp_ST7033.h
/******************************************************************************
Copyright (C), 2014-2016, 西安XX技研电子科技有限公司
File name: ST7033.h
Author:
Version:
Date:
Platform: Stm32F103VET6
Tools: keilMDK
OS Version: UCOS-II v2.86
Description: // 用于详细说明此程序文件完成的主要功能,与其他模块
// 或函数的接口,输出值、取值范围、含义及参数间的控
// 制、顺序、独立或依赖等关系
Others: // 其它内容的说明
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
1. ....
History: // 修改历史记录列表,每条修改记录应包括修改日期、修改
// 者及修改内容简述
1. Date:
Author:
Modification:
2. ...
******************************************************************************/
#include "stm32f10x.h"
#include "ucos_ii.h"
#include "string.h"
#include "xprintf.h"
#define GPIO_ST7033_CS_PORT GPIOC
#define GPIO_ST7033_CS_PIN GPIO_Pin_4
#define GPIO_ST7033_A0_PORT GPIOC
#define GPIO_ST7033_A0_PIN GPIO_Pin_5
#define GPIO_ST7033_RST_PORT GPIOB
#define GPIO_ST7033_RST_PIN GPIO_Pin_0
#define GPIO_ST7033_BL_PORT GPIOB
#define GPIO_ST7033_BL_PIN GPIO_Pin_1
#define GPIO_ST7033_SCLK_PORT GPIOA
#define GPIO_ST7033_SCLK_PIN GPIO_Pin_5
#define GPIO_ST7033_MISO_PORT GPIOA
#define GPIO_ST7033_MISO_PIN GPIO_Pin_6
#define GPIO_ST7033_MOSI_PORT GPIOA
#define GPIO_ST7033_MOSI_PIN GPIO_Pin_7
void LcdInit(void);
void LcdBacklightOn(void);
void LcdBacklightOff(void);
void LcdDisplayAll(void);
void LcdClearAll(void);
bsp_ST7033.c
/******************************************************************************
Copyright (C), 2014-2016, 西安XX技研电子科技有限公司
File name: ST7033.c
Author:
Version:
Date:
Platform: Stm32F103VET6
Tools: keilMDK
OS Version: UCOS-II v2.86
Description: // 用于详细说明此程序文件完成的主要功能,与其他模块
// 或函数的接口,输出值、取值范围、含义及参数间的控
// 制、顺序、独立或依赖等关系
Others: // 其它内容的说明
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
1. ....
History: // 修改历史记录列表,每条修改记录应包括修改日期、修改
// 者及修改内容简述
1. Date:
Author:
Modification:
2. ...
******************************************************************************/
#include "ST7033.h"
unsigned char LcdBuf[96];
/*******************************************************************************
ST7033: 3-line SPI, GPIO模拟
*******************************************************************************/
/*
*********************************************************************************************************
* 函 数 名: ST7033_GPIO_init
* 功能说明: MCU和ST7033连接的管脚初始化
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_GPIO_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* enable GPIO clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//ST7033_CS - PC4
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//ST7033_RESET - PB0
//ST7033_BL_CTRL - PB1
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//ST7033_SCLK - PA5
//ST7033_MOSI - PA7
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void ST7033_CS_OUT(unsigned char status)
{
if(status > 0)
{
GPIO_ST7033_CS_PORT->BSRR = GPIO_ST7033_CS_PIN;
}
else
{
GPIO_ST7033_CS_PORT->BRR = GPIO_ST7033_CS_PIN;
}
}
void ST7033_BL_OUT(unsigned char status)
{
if(status > 0)
{
GPIO_ST7033_BL_PORT->BSRR = GPIO_ST7033_BL_PIN;
}
else
{
GPIO_ST7033_BL_PORT->BRR = GPIO_ST7033_BL_PIN;
}
}
void ST7033_A0_OUT(unsigned char status)
{
if(status > 0)
{
GPIO_ST7033_A0_PORT->BSRR = GPIO_ST7033_A0_PIN;
}
else
{
GPIO_ST7033_A0_PORT->BRR = GPIO_ST7033_A0_PIN;
}
}
void ST7033_RST_OUT(unsigned char status)
{
if(status > 0)
{
GPIO_ST7033_RST_PORT->BSRR = GPIO_ST7033_RST_PIN;
}
else
{
GPIO_ST7033_RST_PORT->BRR = GPIO_ST7033_RST_PIN;
}
}
void ST7033_SCLK_OUT(unsigned char status)
{
if(status > 0)
{
GPIO_ST7033_SCLK_PORT->BSRR = GPIO_ST7033_SCLK_PIN;
}
else
{
GPIO_ST7033_SCLK_PORT->BRR = GPIO_ST7033_SCLK_PIN;
}
}
void ST7033_MOSI_OUT(unsigned char status)
{
if(status > 0)
{
GPIO_ST7033_MOSI_PORT->BSRR = GPIO_ST7033_MOSI_PIN;
}
else
{
GPIO_ST7033_MOSI_PORT->BRR = GPIO_ST7033_MOSI_PIN;
}
}
void Delay1(int dly)
{
int tmp;
tmp = dly;
while(tmp--);
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_wr_cmd
* 功能说明: 向ST7033发送命令
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_wr_cmd(unsigned char cmd)
{
unsigned char i = 0;
ST7033_CS_OUT(0);
Delay1(2);
//A0
ST7033_SCLK_OUT(0);
ST7033_MOSI_OUT(0);
Delay1(2);
ST7033_SCLK_OUT(1);
Delay1(2);
//cmd
while(i < 8)
{
ST7033_SCLK_OUT(0);
if(cmd & 0x80)
{
ST7033_MOSI_OUT(1);
}
else
{
ST7033_MOSI_OUT(0);
}
Delay1(2);
ST7033_SCLK_OUT(1);
Delay1(2);
cmd = cmd << 1;
i++;
}
ST7033_CS_OUT(1);
Delay1(2);
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_wr_data
* 功能说明: 向ST7033发送断码数据
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_wr_data(unsigned char data)
{
unsigned char i = 0;
ST7033_CS_OUT(0);
Delay1(2);
//A0
ST7033_SCLK_OUT(0);
ST7033_MOSI_OUT(1);
Delay1(2);
ST7033_SCLK_OUT(1);
Delay1(2);
//cmd
while(i < 8)
{
ST7033_SCLK_OUT(0);
if(data & 0x80)
{
ST7033_MOSI_OUT(1);
}
else
{
ST7033_MOSI_OUT(0);
}
Delay1(2);
ST7033_SCLK_OUT(1);
Delay1(2);
data = data << 1;
i++;
}
ST7033_CS_OUT(1);
Delay1(2);
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_init
* 功能说明: ST7033上电初始化
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_init(void)
{
ST7033_RST_OUT(0);
OSTimeDly(50);
ST7033_RST_OUT(1);
OSTimeDly(30);
ST7033_wr_cmd(0xE2);
ST7033_wr_cmd(0x2F);
ST7033_wr_cmd(0xB0);
ST7033_wr_cmd(0x10);
ST7033_wr_cmd(0x00);
ST7033_wr_cmd(0xF1);
ST7033_wr_cmd(0xAC);
ST7033_wr_cmd(0xF0);
ST7033_wr_cmd(0xA4);
ST7033_wr_cmd(0xAF);
ST7033_wr_cmd(0xA1);
ST7033_wr_cmd(0xC8);
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_clear
* 功能说明: 清除全部断码内容,然后清除屏幕
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_clear(void)
{
unsigned char i;
ST7033_wr_cmd(0xB0);
ST7033_wr_cmd(0x10);
ST7033_wr_cmd(0x00);
for(i = 0; i < 96; i++)
{
ST7033_wr_data(0x00);
}
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_display_all
* 功能说明: 置位全部断码,然后显示全部元素
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_display_all(void)
{
unsigned char i;
ST7033_wr_cmd(0xB0);
ST7033_wr_cmd(0x10);
ST7033_wr_cmd(0x00);
for(i = 0; i < 96; i++)
{
ST7033_wr_data(0x0F);
}
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_display_data
* 功能说明: 对全部断码进行修改,然后刷新
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_display_data(unsigned char *data)
{
unsigned char i;
ST7033_wr_cmd(0xB0);
ST7033_wr_cmd(0x10);
ST7033_wr_cmd(0x00);
for(i = 0; i < 96; i++)
{
ST7033_wr_data(*data);
data++;
}
}
/*
*********************************************************************************************************
* 函 数 名: ST7033_display_specified
* 功能说明: 对特定位置(location)的total个字节的断码进行修改,然后刷新
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void ST7033_display_specified(unsigned char location, unsigned char *data, unsigned char total)
{
unsigned char i;
unsigned char high, low;
if(location >= 96)
{
return;
}
low = location & 0x0F;
high = location >> 4;
high |= 0x10;
//xprintf("0x%2x:0x%2x \r\n", high, low);
ST7033_wr_cmd(0xB0);
ST7033_wr_cmd(high);
ST7033_wr_cmd(low);
for(i = 0; i < total; i++)
{
//xprintf("data:0x%2x \r\n", *data);
ST7033_wr_data(*data);
data++;
}
}
/*
*********************************************************************************************************
* 函 数 名: LcdInit
* 功能说明: LCD初始化,因为用到了OSTimeDly(),所以此函数的调用必须在UC0S-II的 systick 初始化之后
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void LcdInit(void)
{
LcdBacklightOn();
ST7033_GPIO_init();
ST7033_init();
//ST7033_clear();
ST7033_display_all();
}
/*
*********************************************************************************************************
* 函 数 名: LcdBacklightOn
* 功能说明: 打开LCD背光
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void LcdBacklightOn(void)
{
ST7033_BL_OUT(1);
}
/*
*********************************************************************************************************
* 函 数 名: LcdBacklightOff
* 功能说明: 关闭LCD背光
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void LcdBacklightOff(void)
{
ST7033_BL_OUT(0);
}
/*
*********************************************************************************************************
* 函 数 名: LcdDisplayAll
* 功能说明: 显示LCD的全部元素
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void LcdDisplayAll(void)
{
ST7033_display_all();
}
/*
*********************************************************************************************************
* 函 数 名: LcdClearAll
* 功能说明: 清除LCD的全部元素
* 形 参:
* 返 回 值:
*********************************************************************************************************
*/
void LcdClearAll(void)
{
ST7033_clear();
}