把程序下载进去没有任何显示,程序如下:#include<stm32f4xx.h> 
 
#define uint unsigned int 
#define uchar unsigned char 
 
void Delay(uint z); 
 
//我用的是 D.8 D.9 D.10 D.11 
#define RS      GPIO_Pin_11 
#define RW      GPIO_Pin_12 
#define EN      GPIO_Pin_13 
#define CS1     GPIO_Pin_14    
#define CS2     GPIO_Pin_15 
 
/*--  文字:  欢  --*/ 
/*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/ 
/*--  宽度不是8的倍数,现调整为:宽度x高度=16x12  --*/ 
uchar huan[] = {0x02,0x00,0xFA,0x00,0x0B,0xE0,0x8C,0x20,0x58,0x40,0x51,0x00, 
                 0x21,0x00,0x21,0x00,0x52,0x80,0x52,0x80,0x84,0x40,0x08,0x20,}; 
 
void RCC_Configuration(void)   //推挽输出模式 ,管脚配置,不多解释,库函数有 
{   
  GPIO_InitTypeDef GPIO_InitStructure;         
  
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);   
  GPIO_InitStructure.GPIO_Pin = RS|RW|EN|CS1|CS2;          
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;                          
  GPIO_Init(GPIOB, &GPIO_InitStructure); 
   
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);   
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3| 
                                GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;                  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;                          
  GPIO_Init(GPIOD, &GPIO_InitStructure); 
}  
 
/*写指令函数*/ 
void LCD_write_cmmand(uchar cmd) 
{ 
      GPIO_ResetBits(GPIOB,RS); 
      GPIO_ResetBits(GPIOB,RW); 
      GPIO_ResetBits(GPIOB,EN); 
       
      GPIO_Write(GPIOD, cmd); 
      Delay(5); 
      GPIO_SetBits(GPIOB,EN); 
      Delay(5); 
      GPIO_ResetBits(GPIOB,EN); 
} 
 
/*写数据函数*/ 
void  LCD_write_data(uchar dat) 
{ 
      GPIO_SetBits(GPIOB,RS); 
      GPIO_ResetBits(GPIOB,RW); 
      GPIO_ResetBits(GPIOB,EN); 
       
      GPIO_Write(GPIOD, dat); 
      Delay(5); 
      GPIO_SetBits(GPIOB,EN); 
      Delay(5); 
      GPIO_ResetBits(GPIOB,EN); 
} 
 
void set_page(uchar page)              //设置页,要那一页直接是那个数字就行了 
{                                      //总共有8页,一页是8行点阵点,即128*8  
    page = 0xb8 | page;                //页得首地址为0xB8 1011 1XXX  
    LCD_write_cmmand(page);  
}  
 
void set_line(uchar startline)         //设置显示的起始行 
{  
     startline = 0xc0 | startline;     //起始行地址为0xc0  
     LCD_write_cmmand(startline);          //设置从哪一行开始,共0--63 11XX XXXX  
} 
 
void set_column(uchar column)          //设置显示的列 
{  
    column = column & 0x3f;            //列的最大值为64,因为分成两个屏了 
    column = 0x40 | column;            //列的首地址为0x40; 01XX XXXX  
    LCD_write_cmmand(column);              //设置列位置 
}  
 
void setonoff(uchar onoff)   //显示开关函数,1为开,0为关 
{  
    onoff = 0x3e | onoff;    //0x3e是关显示,0x3f是开显示0011 111X onoff只能为0或者1; 
    LCD_write_cmmand(onoff);  
}  
 
void selectscreen(uchar screen)        //选屏 
{  
    switch(screen)  
    {  
      case 0:                          //全屏 
        GPIO_ResetBits(GPIOB,CS1); 
        GPIO_ResetBits(GPIOB,CS2); 
      break;   
      case 1:                          //选左半屏 
        GPIO_ResetBits(GPIOB,CS1); 
        GPIO_SetBits(GPIOB,CS2); 
      break;                
      case 2:                          //选右半屏   
        GPIO_SetBits(GPIOB,CS1); 
        GPIO_ResetBits(GPIOB,CS2); 
      break;  
      default: 
      break;  
    }  
}  
 
void clearscreen(uchar screen)    //清屏 
{  
    uchar i,j;  
    selectscreen(screen);  
    LCD_write_cmmand((0xb8)+0);  
    LCD_write_cmmand((0x40)+0);  
    for(i=0;i<8;i++)                     //控制页数0--7,共8页 
    {  
        set_page(i);   
        for(j=0;j<64;j++)                //控制列数0-63,共64列 
        {  
          LCD_write_data(0x00);               //写入0,地址指针自加1  
        }  
    }  
}  
 
/*LCD初始化函数*/ 
void LCD_init()            //lcd的初始化 
{  
    // LCD_busy();         //忙检测 
    Delay(100);  
    selectscreen(0);       //两个屏都选 
    setonoff(0);           //关显示 
    selectscreen(0);       //选屏 
    setonoff(1);           //开显示 
    clearscreen(0);        //清屏 
    set_line(0);           //开始行为0  
    // set_column(0);      //开始列为0  
    //  set_page(0);       //开始页为0  
}  
 
/*显示函数*/ 
void display(uchar ss,uchar page,uchar column,uchar *p)    
{  
    uchar i;  
    selectscreen(ss);      //选屏 
    Delay(2);  
    set_page(page);        //写上半页 
    set_column(column);    //控制列 
    for(i=0;i<16;i++)      //控制16列的数据输出,因为一个汉字是16*16点阵的 
    {  
      LCD_write_data(p[i]);     //汉字的上半部分 
      //LCD_write_data(*p); 
    }  
    set_page(page+1);      //写下半页 
    set_column(column);    //控制列 
    for(i=0;i<16;i++)      //控制16列数据的输出 
    {  
      LCD_write_data(p[i+16]);  //汉字的下半部分 
    }  
}  
 
/*主函数*/ 
void main()  
{  
    LCD_init();                //lcd初始化 
//    clearscreen(0);  
//    set_line(0);  
    while(1)  
    {  
      display(0,0,4,huan);     //欢 
    }  
}  
 
/*延时函数*/ 
void Delay(uint z) 
{ 
  uint x,y; 
  for(x=z;x>0;x--) 
    for(y=110;y>0;y--); 
} 
 |