文件
来源网络
bsp_ST7033.h
bsp_ST7033.c
ST7033.pdf
点亮及显示.zip
bsp_ST7033.h
/******************************************************************************Copyright (C), 2014-2016, 西安XX技研电子科技有限公司File name: ST7033.hAuthor:Version:Date:Platform: Stm32F103VET6Tools: keilMDKOS Version: UCOS-II v2.86Description: // 用于详细说明此程序文件完成的主要功能,与其他模块// 或函数的接口,输出值、取值范围、含义及参数间的控// 制、顺序、独立或依赖等关系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_7void 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.cAuthor:Version:Date:Platform: Stm32F103VET6Tools: keilMDKOS Version: UCOS-II v2.86Description: // 用于详细说明此程序文件完成的主要功能,与其他模块// 或函数的接口,输出值、取值范围、含义及参数间的控// 制、顺序、独立或依赖等关系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 - PC4GPIO_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 - PB1GPIO_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 - PA7GPIO_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);//A0ST7033_SCLK_OUT(0);ST7033_MOSI_OUT(0);Delay1(2);ST7033_SCLK_OUT(1);Delay1(2);//cmdwhile(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);//A0ST7033_SCLK_OUT(0);ST7033_MOSI_OUT(1);Delay1(2);ST7033_SCLK_OUT(1);Delay1(2);//cmdwhile(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();}
