微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 自己设计的STM32并行驱动LCE,大家帮忙看下有什么错误!

自己设计的STM32并行驱动LCE,大家帮忙看下有什么错误!

时间:10-02 整理:3721RD 点击:
#include "stm32f10x.h"
#define RS_ON      GPIO_SetBits(GPIOB,GPIO_Pin_1);
#define RS_OFF     GPIO_ResetBits(GPIOB,GPIO_Pin_1);
#define RW_ON      GPIO_SetBits(GPIOB,GPIO_Pin_5);
#define RW_OFF     GPIO_ResetBits(GPIOB,GPIO_Pin_5);
#define E_ON       GPIO_SetBits(GPIOB,GPIO_Pin_6);
#define E_OFF      GPIO_ResetBits(GPIOB,GPIO_Pin_6);
//#define LcdData(x) GPIOB->ODR=(GPIOB->ODR&0xff00)|(x&0x00FF);
void LcdData(unsigned char Data)
{
GPIO_Write(GPIOB,Data<<7);
}
void delay(unsigned int ms)
{
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<8000;y++);
}

void LcdWcom(unsigned char WCom)
{
delay(100);
RS_OFF;
RW_OFF;
LcdData(WCom);

  • E_ON;

delay(100);
E_OFF;
}
void LcdWdata(unsigned char WData)
{
delay(100);
RS_ON;
RW_OFF;
LcdData(WData);
E_ON;
delay(100);
E_OFF;
}
void DisplayInit(void)
{
delay(100);
LcdWcom(0x30);
LcdWcom(0x0c);
LcdWcom(0x01);
}
void SetCursor(unsigned char x,unsigned char y)
{
unsigned char i;
switch(x)
{
case 0x00: i=0x80;
break;
case 0x01: i=0x90;
break;
case 0x02: i=0x88;
break;
case 0x03: i=0x98;
break;
default: break;
}
i=y+i;
LcdWcom(i);
}
int main(void)
{
GPIO_InitTypeDef myStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
myStructure.GPIO_Pin=GPIO_Pin_All;
myStructure.GPIO_Mode=GPIO_Mode_Out_OD;
myStructure.GPIO_Speed=GPIO_Speed_50MHz;
//myStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
GPIO_Init(GPIOB,&myStructure);
           delay(100);
DisplayInit();
delay(5);
SetCursor(0,0);
delay(5);
LcdWdata(0x31);
}

感谢小编分享~
好人一生平安~
顶顶更健康~
为了不后悔~
我看~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top