#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);
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);
}
一周热门 更多>