stm32并行驱动12864
具体链接:
PA0~PA7接D0~D7,RS、RW、E、RST分别接PB0、PB1、PB2、PB4
采用库函数操作,程序如下:
*********************************************************
#include "stm32f10x.h"
#define RS_ON GPIO_SetBits(GPIOB,GPIO_Pin_0);
#define RS_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_0);
#define RW_ON GPIO_SetBits(GPIOB,GPIO_Pin_1);
#define RW_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_1);
#define E_ON GPIO_SetBits(GPIOB,GPIO_Pin_2);
#define E_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_2);
#define RST_ON GPIO_SetBits(GPIOB,GPIO_Pin_4);
#define RST_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_4);
#define LcdData(x) GPIOB->ODR=(GPIOB->ODR&0xff00)|(x&0x00FF);
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(10);
RS_OFF;
RW_OFF;
LcdData(WCom);
E_ON;
delay(10);
E_OFF;
}
void LcdWdata(unsigned char WData)
{
delay(10);
RS_ON;
RW_OFF;
LcdData(WData);
E_ON;
delay(10);
E_OFF;
}
void DisplayInit(void)
{
delay(10);
RST_OFF;
delay(10);
RST_ON;
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_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
myStructure.GPIO_Pin=GPIO_Pin_All;
myStructure.GPIO_Mode=GPIO_Mode_Out_PP;
myStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&myStructure);
myStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
GPIO_Init(GPIOB,&myStructure);
DisplayInit();
delay(10);
SetCursor(0,0);
delay(10);
LcdWdata(0x31);
}
*************************************************************
但是液晶屏没有任何显示!
求各位大神帮忙看下程序有没有问题!
先谢过了!
别沉了求指教啊!
谢谢分享谢谢分享谢谢分享
谢谢分享谢谢分享 谢谢分享
谢谢分享谢谢分享 谢谢分享
谢谢分享 谢谢分享谢谢分享谢谢分享
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 分 分
谢谢分享 谢谢分享 享 享
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 谢 谢
谢 谢谢分享 谢谢分享 分 分
谢谢 谢谢分享 谢谢分享 享 享
谢谢分 谢谢分享 谢谢分享 谢 谢
谢谢分 谢谢分享 谢 谢
谢谢分谢谢分享 谢 谢
谢谢谢谢 分 分
谢谢 享 享
法师大法师法