为什么LCD12864没有什么显示的数据

#include "stm32f10x.h"
#include "delay.h"
#include "lcd12864.h"
#include "string.h"

//Ò»×Ö·ûÕ¼Ò»×Ö½Ú Ò»×Ö½ÚÕ¼8λ
//µ±Ê±ÖÓÏßΪµÍʱ Êý¾Ý¸Ä±ä²Å»áÓÐЧ Ϊ¸ßʱ Êý¾Ý±£³Ö²»±ä



//LCDµÄµØÖ·
u8 LCD_addr[4][8]={
	{0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87},  		//µÚÒ»ÐÐ
	{0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97},		//µÚ¶þÐÐ
	{0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F},		//µÚÈýÐÐ
	{0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F}		//µÚËÄÐÐ
	};

//Êý¾Ý´«Êä 8×Ö½Ú   1010  1110
void SendByte(u8 byte)
{
    u8 i; 
	  for(i = 0;i < 8;i++)
   {
     if((byte << i) & 0x80)  //0x80(1000 0000)  Ö»»á±£Áô×î¸ßλ
		{
		    sid = 1;           // Òý½ÅÊä³ö¸ßµçƽ£¬´ú±í·¢ËÍ1
		}
		else
		{
			sid = 0;         // Òý½ÅÊä³öµÍµçƽ£¬´ú±í·¢ËÍ0
		}
		/*»ò		
		sid =	(Dbyte << i) & 0x80;			
		ÉÏÃæÄÇÑùΪÁË·½±ãÀí½â
		*/
		sclk = 0;   //ʱÖÓÏßÖÃµÍ  ÔÊÐísid±ä»¯
		delay_us(5); //ÑÓʱʹÊý¾ÝдÈë
		sclk = 1;    //À­¸ßʱÖÓ£¬Èôӻú¶Ásid
	}   
}

//дÃüÁî  
void Lcd_WriteCmd(u8 Cmd)
{
    delay_ms(1);    //ÓÉÓÚÎÒÃÇûÓÐдLCDÕýæµÄ¼ì²â£¬ËùÒÔÖ±½ÓÑÓʱ1ms£¬Ê¹Ã¿´ÎдÈëÊý¾Ý»òÖ¸Áî¼ä¸ô´óÓÚ1ms ±ã¿É²»ÓÃдæ״̬¼ì²â
    SendByte(WRITE_CMD);            //11111,RW(0),RS(0),0  дÁ¬Ðø5¸öÒ»²ÅÄÜʱÖÓͬ²
	//¿ªÊ¼Êý¾Ý´«Êä»òÃüÁî´«Êä  
	//Êý¾Ý±»²ð·Ö³É2×Ö½Ú´«Êä
    SendByte(0xf0&Cmd);      //¸ßËÄλ 1111 0000 
	
    SendByte(Cmd<<4);   //µÍËÄλ(ÏÈÖ´ÐÐ<<)ÏÈÓÒÒÆ4λ ºóÃæ4λ×Ô¶¯²¹0
}
//дÊý¾Ý
void Lcd_WriteData(u8 Dat)
{
    delay_ms(1);     //ÓÉÓÚÎÒÃÇûÓÐдLCDÕýæµÄ¼ì²â£¬ËùÒÔÖ±½ÓÑÓʱ1ms£¬Ê¹Ã¿´ÎдÈëÊý¾Ý»òÖ¸Áî¼ä¸ô´óÓÚ1ms ±ã¿É²»ÓÃдæ״̬¼ì²â
    SendByte(WRITE_DAT);            //11111,RW(0),RS(1),0
    SendByte(0xf0&Dat);      //¸ßËÄλ
    SendByte(Dat<<4);   //µÍËÄλ(ÏÈÖ´ÐÐ<<)
}


//LCD Êý¾Ý/ʱÖÓ  Òý½Å¶¨Òå
void lcd_GPIO_init(void)
{
		GPIO_InitTypeDef  GPIO_InitStructure;//Òý½Å½á¹¹Ì嶨Òå
	
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//ʹÄÜGPIOEʱÖÓ
	
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5|GPIO_Pin_6;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//ÆÕͨÊä³öģʽ
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
	
  	GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯
		
	
	  sid = 1;
		sclk=1;
	 	RS=1;
	
}

//LCD³õʼ»¯
void Lcd_Init(void)
{ 
    delay_ms(50);   	//µÈ´ýÒº¾§×Լ죨ÑÓʱ>40ms£©
	  Lcd_WriteCmd(0x30);        //¹¦ÄÜÉ趨:Ñ¡Ôñ»ù±¾Ö¸Á  £¬Ñ¡Ôñ8bitÊý¾ÝÁ÷
    delay_ms(1);//ÑÓʱ>137us 
    Lcd_WriteCmd(0x0c);        //¿ªÏÔʾ
    delay_ms(1);	//ÑÓʱ>100us
    Lcd_WriteCmd(0x01);        //Çå³ýÏÔʾ£¬²¢ÇÒÉ趨µØÖ·Ö¸ÕëΪ00H
    delay_ms(30);	//ÑÓʱ>10ms
	  Lcd_WriteCmd(0x06);        //ÿ´ÎµØÖ·×Ô¶¯+1£¬³õʼ»¯Íê³É
}

//lCD´«ÊäÏÔʾÊý¾Ý
void LCD_Display_Words(uint8_t x,uint8_t y,uint8_t *str)
{ 
	Lcd_WriteCmd(LCD_addr[x][y]); //д³õʼ¹â±êλÖÃ
	while(*str>0)//×Ö·ûһλһλµÄ´«Êä
    { 
      Lcd_WriteData(*str);    //дÊý¾Ý
      str++;     
    }
}


void LCD_Clear(void)//ÇåÆÁº¯Êý
{
		Lcd_WriteCmd(0x01);			//ÇåÆÁÖ¸Áî
		delay_ms(2);				//ÑÓʱÒÔ´ýÒº¾§Îȶ¨¡¾ÖÁÉÙ1.6ms¡¿
}





#ifndef _LCD_H
#define _LCD_H
#include "stm32f10x.h"
#include "sys.h"
#define WRITE_CMD	0xF8//дÃüÁî  Ö®Ç°ÏÈд0x80 1111 1 RW/0 RS/0 0  д ÃüÁî
#define WRITE_DAT	0xFA//дÊý¾Ý  ֮ǰÏÈд0xFA 1111 1 0 1 0   дÊý¾Ý


//R/WÊý¾Ý  Ϊ¸ßʱºò ¶ÁÊý¾Ý   ΪµÍµÄʱºòΪ   дÊý¾Ý
//Rs  ΪÊý¾ÝÃüÁîµÄѡͨ¶Ë¿Ú   1 ʱ Êý¾Ýλ   0 ʱ  ÃüÁîλ
// En ʹÄÜÐźŠ  ʱÖÓÏß    

//Êý¾Ýλ²Ù×÷ÊÇRSΪ¸ßµçƵ RS=1 ²ÅÄܶÔÊý¾Ý¶Áд²Ù×÷²Ù×÷
//  RS=1 µÄÌõ¼þÏ  R/w   =1   ½øÐжÁÊý¾Ý²Ù×÷
//  R/w =0 дÊý¾Ý²Ù×÷

//PSBΪ´®ÐÐģʽ    0ʱºòΪ´®ÐÐģʽ
//Rst  ¸´Î»
//vo  Ϊ±³¹âÌõ¼þ   Ò»°ãΪ¸ßµçƵ
//Vout  ¸ºµçѹ


//´®ÐÐÖг䵱Êý¾ÝÏß   R/W  EN³äµ±Ê±ÖÓÏß
 
#define sid PAout(4)
#define sclk PAout(5)
#define RS PAout(6)
void SendByte(u8 byte);
void Lcd_WriteCmd(u8 Cmd);
void Lcd_WriteData(u8 Dat);
void lcd_GPIO_init(void);
void Lcd_Init(void);

void LCD_Display_Words(uint8_t x,uint8_t y,uint8_t *str);
void LCD_Clear(void);
#endif





#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "lcd12864.h"


int main(void)
{ 

	delay_init(); 

	lcd_GPIO_init();
  Lcd_Init();

	LCD_Display_Words(2,0,"dj:");
	LCD_Display_Words(3,0,"zj:");
	Lcd_WriteCmd(0x03);
	Lcd_WriteData(0x30);
  while(1)
  {
	 
  }
}

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^