欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

lcm19264程序无法显示。连容易的字符或汉字也无法显示,不知道什么原因。还请大牛们多多指教

更新时间: 2014-01-05 03:14:35 责任编辑: Author_N1

 

LCM19264程序无法显示。连简单的字符或汉字也无法显示,不知道什么原因。还请大牛们多多指教。
PB15---/CS3
PB14---/CS2
PB13---/CS1
PB12---E
PB11---RW
PB10---RS
PB7-PB0 -------D7-D0
使用XRDSC-G19264DDYSWSD-1(A)显示屏。其中PB3、PB4与JTAG复用。但是已经关闭JTAG功能程序如下所示:不知道什么原因,连简单的字符都无法显示。清屏命令改成0xff。也没有显示。
#include "stm32f10x.h"
#include  "delay.h"

//#define Data_Bus(data) GPIOB->BSRR = (uint32_t)((((~data) & 0xFF)<<16) | data);

#define RS_LOW      GPIO_ResetBits(GPIOB,GPIO_Pin_10)
#define RS_HI       GPIO_SetBits(GPIOB,GPIO_Pin_10)
#define RW_LOW      GPIO_ResetBits(GPIOB,GPIO_Pin_11)
#define RW_HI       GPIO_SetBits(GPIOB,GPIO_Pin_11)
#define E_LOW       GPIO_ResetBits(GPIOB,GPIO_Pin_12)
#define E_HI        GPIO_SetBits(GPIOB,GPIO_Pin_12)
#define CS1_LOW     GPIO_ResetBits(GPIOB,GPIO_Pin_13)
#define CS1_HI      GPIO_SetBits(GPIOB,GPIO_Pin_13)
#define CS2_LOW     GPIO_ResetBits(GPIOB,GPIO_Pin_14)
#define CS2_HI      GPIO_SetBits(GPIOB,GPIO_Pin_14)
#define CS3_LOW     GPIO_ResetBits(GPIOB,GPIO_Pin_15)
#define CS3_HI      GPIO_SetBits(GPIOB,GPIO_Pin_15)

/* Instuction Table */
#define LCM_ON      0x3f
#define LCM_OFF     0x3e

#define LCD_PAGE_ADDR 0xb8 
#define LCD_COL_ADDR  0x40   


void Write_CMD(uint8_t cmd);


void Data_Bus(uint8_t data)
{
GPIOB->BSRR = (uint32_t)((((~data) & 0xFF)<<16) | data);
}

void RCC_Config(void)
{
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
}

void LCM_GPIO_Config(void)
{
  GPIO_InitTypeDef lcm_gpio;

  AFIO->MAPR |= (0x02 << 24)|(0x00 << 4);
  lcm_gpio.GPIO_Pin = GPIO_Pin_All;                      
  lcm_gpio.GPIO_Speed = GPIO_Speed_50MHz;
  lcm_gpio.GPIO_Mode  = GPIO_Mode_Out_PP;   
  GPIO_Init(GPIOB,&lcm_gpio);
}
uint16_t Read_Data()
{
  uint16_t  tmp;

  E_HI;
  delay_us(1);
  E_LOW;
    delay_us(1);

  RW_HI;
    RS_HI;   
  
  delay_ms(1);
  E_HI;
  delay_ms(1);   

  GPIOB->CRL = 0x44444444;
  tmp = GPIO_ReadInputData(GPIOB);
  GPIOB->CRL = 0x33333333;
  delay_ms(1);
  E_LOW;
  RW_LOW;
  RS_LOW;

  return tmp;
}
void Wait_Ready(void)
{   
    uint8_t test;

  E_HI;
  delay_us(1);
  E_LOW;
  delay_us(1);
  RW_HI;
    RS_LOW;
  delay_ms(1);
  E_HI;
  delay_ms(1);

  Data_Bus(0xFF);

  GPIOB->CRL = 0x44444444;
  while((test = (uint8_t)GPIO_ReadInputData(GPIOB)) & 0x80 != 0);
  GPIOB->CRL = 0x33333333;
  delay_ms(1);
  E_LOW;
  RW_LOW;
  RS_HI;
}

void Write_CMD(uint8_t cmd)
{
  Wait_Ready();
  E_HI;
  delay_us(1);
  E_LOW;
  delay_us(1);
  RS_LOW; //instruction       
    RW_LOW; 
    delay_us(1);
  E_HI;
    delay_us(1);
    Data_Bus(cmd);  
    delay_ms(1);       
    E_LOW;
    delay_us(1);
    E_HI;
    RW_HI;
    RS_HI;
}

void Write_Data(uint8_t data)
{   
  Wait_Ready();
  E_HI;
  delay_us(1);
  E_LOW;
  delay_us(1);
  RS_HI;//data
  RW_LOW;//write    
  E_HI;
    Data_Bus(data);
  delay_ms(1);   
  E_LOW;
  delay_us(1);
  E_HI;
  RW_HI;
  RS_LOW;
}
void SelectL(void)
{
  CS1_LOW;
  CS2_HI;
  CS3_HI;  
}
void SelectM(void)
{
  CS1_HI;
  CS2_LOW;
  CS3_HI;   
}
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19971/
本文WWW.DOC100.NET DOC100.NET版权所有。