OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4754|回复: 4

求助STM32 驱动 RA8806问题

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2013-12-26
在线时间
0 小时
发表于 2013-12-26 19:31:59 | 显示全部楼层 |阅读模式

我原来的51单片机驱动RA8806程序正常,移植到STM32却不显示字符,头大了。

51程序如下:
#include  "mcu.h"
#include  "ra8806reg.h"

sbit rs   = P3^4;
sbit wr   = P3^5;
sbit rd   = P3^6;
sbit rst  = P3^7;
sbit busy = P4^4;
sbit cs1  = P4^5;

#define BUS P1

////////////////////////////////
void delay_nms(unsigned int n)
{
 unsigned int i,j;
 for(i=n;i>0;i--)
 {
  for(j=125;j>0;j--)
  {
   ;
  }
 }
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void softrst()
{
     delay_nms(5);//2
     cs1=0;
  rd = 1;
  rst=0;
  delay_nms(15);//5
  rst=1;
  delay_nms(15);//5
 
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
unsigned char LCD_CmdRead(unsigned char Addr)

 unsigned char Data; 
 
 cs1=0;
 rs=1;
 rd=1;
 BUS=Addr;
 wr=0;
 wr=1;
 
 BUS=0XFF;
 rs=0;
 wr=1;
 rd=1;
 rd=0;
 Data=BUS;
 
 return Data;
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void LCD_CmdWrite(unsigned char cmdaddr)//8080
{  
 cs1=0;
 rd=1;
 rs=1;
 BUS=cmdaddr;
 wr=0;
 wr=1;
 cs1=1;
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

void LCD_DataWrite(unsigned char wrdata)
{
 while(busy==0);
 cs1=0;
 rd=1;
 rs=0;
 BUS=wrdata;
 wr=0;
 wr=1;
 cs1=1;
}
//******************???????¨????******************
void clearsnow(void)       //????±?·?????????·¨???????????¨????????????????????????
{
 unsigned char temp;
 temp=LCD_CmdRead(0x01);
 temp |=0x80;
 LCD_CmdWrite(0x01);
 LCD_DataWrite(temp);
}
//******************?????????¨????--????????******************
void noclearsnow(void)
 {  unsigned char temp;     //????±?·?????????·¨???????????¨????
    temp=LCD_CmdRead(0x01);
 temp &=0x7f;
    LCD_CmdWrite(0x01);
    LCD_DataWrite(temp);
 }
//******************X,Y×?±ê?¨??******************
void LCD_GotoXY(unsigned char xx,unsigned char yy)
{   LCD_CmdWrite(0x60);
 LCD_DataWrite(xx);
    LCD_CmdWrite(0x70); 
 LCD_DataWrite(yy);
}
//*************????????**************************
void LCD_Graphic(void)
{   unsigned char temp;
    temp=LCD_CmdRead(0x00);
 temp &=0xf7;
    LCD_CmdWrite(0x00);
    LCD_DataWrite(temp);
 clearsnow();      //???????????¨????
 }
//*************??×?????**************************
void LCD_Text(void)
{   unsigned char temp;
    temp=LCD_CmdRead(0x00);
 temp |=0x08;
    LCD_CmdWrite(0x00);
    LCD_DataWrite(temp);
 noclearsnow();      //??±????????¨????
 }

//***********DDRAM1 ????**************************
void Only_Show_Page1(void)
{
 unsigned char temp;
    temp=LCD_CmdRead(0x12);
    temp &=0x9f;
 temp |=0x10;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp);
}

//***********DDRAM2 ????**************************
void Only_Show_Page2(void)
{
 unsigned char temp;
    temp=LCD_CmdRead(0x12);
    temp &=0xaf;
 temp |=0x20;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp);
}
//***********DDRAM1??DDRAM2 ??????????***************
void Show_Two_Layer(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xbf;
 temp |=0x30;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp);
}
//***********DDRAM1??DDRAM2 OR·???????***************
void OR_Two_Layer(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xf3;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp);
}
//***********????DDRAM1*******************************
void Access_Page1(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xfd;
 temp |=0x01;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp);
}
//***********????DDRAM2*******************************
void Access_Page2(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xfe;
 temp |=0x02;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp);
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void displays(unsigned char x,unsigned char y,unsigned char *m)
{
    unsigned int iiii=0,pppp=0,c=0;
    LCD_Graphic();    //????????????
    LCD_GotoXY(x,y);   //???¨×?±ê??00??00
    LCD_CmdWrite(0xb0);
    for(iiii=0;iiii<80;iiii++)
    {
         for(pppp=0;pppp<40;pppp++)
            {
                  LCD_DataWrite(m[c++]);
            }  
     }

}
///////////////////////////////////////////
void lcd_inital()
{
 LCD_CmdWrite(WLCR);  //[00H] , Default --> 0x00
 LCD_DataWrite(0x04);    //????????????  disp_off????high 

 LCD_CmdWrite(MISC);  //[01H] , Default --> 0x00
 LCD_DataWrite(0x08);

 LCD_CmdWrite(ADSR);  //[03H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(INTR);  //[0FH] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(WCCR);  //[10H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(CHWI);  //[11H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(MAMR);  //[12H] , Default --> 0x11
 LCD_DataWrite(0x11);

 LCD_CmdWrite(AWRR);  //[20H] , Default --> 0x27
 LCD_DataWrite(39);

 LCD_CmdWrite(DWWR);  //[21H] , Default --> 0x27
 LCD_DataWrite(39);

 LCD_CmdWrite(AWBR);  //[30H] , Default --> 0xEF 
 LCD_DataWrite(239);

 LCD_CmdWrite(DWHR);  //[31H] , Default --> 0xEF
 LCD_DataWrite(239);

 LCD_CmdWrite(AWLR);  //[40H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(AWTR);  //[50H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(CURX);  //[60H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(BGSG);  //[61H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(EDSG);  //[62H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(CURY);  //[70H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(BGCM);  //[71H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(EDCM);  //[72H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(BTMR);  //[80H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(ITCR);  //[90H] , Default --> 0x00    ?è???÷??
 LCD_DataWrite(0x80);

 LCD_CmdWrite(PNTR);  //[E0H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(FNCR);  //[F0H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(FVHT);  //[F1H] , Default --> 0x00
 LCD_DataWrite(0x00);
}

/////////////////????×????ò//////////////////////////
void clear(void)
{
  LCD_Graphic();     //????????????    
  noclearsnow();      //??±????????¨????
  LCD_CmdWrite(0xe0);
  LCD_DataWrite(0x00);
  LCD_CmdWrite(0xf0);
  LCD_DataWrite(0xa8);
  delay_nms(3);
}
//////////////????????×????ò///////////////////////
void display_all()
{
    LCD_Graphic();    //????????????
    noclearsnow();      //??±????????¨????
    LCD_CmdWrite(0xe0);
    LCD_DataWrite(0xff);     //??????0xff
    LCD_CmdWrite(0xf0);
    LCD_DataWrite(0xa8);
    delay_nms(3);
}
//////////////×°????????///////////////////////////
void display_snows(unsigned char dat1,unsigned char dat2)
{

    unsigned int iiii=0,pppp=0;
    LCD_Graphic();   //????????????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
    for(iiii=0;iiii<120;iiii++)
    {
         for(pppp=0;pppp<40;pppp++)
            {
                  LCD_DataWrite(dat1); 
            }  
   for(pppp=0;pppp<40;pppp++)
            {
                  LCD_DataWrite(dat2); 
            } 
    }
}
/////////////????????±??ò//////////////////////////////////

void display_kuang(void)
{

 unsigned int n0,n1;
    LCD_Graphic();   //????????????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
 for(n0=0;n0<40;n0++)
   LCD_DataWrite(0xff);

 for(n0=0;n0<(238);n0++)  
    {
  for(n1=0;n1<40;n1++)
  {
      if (n1==0)          LCD_DataWrite(0x80);
    else if (n1==39) LCD_DataWrite(0x01);
      else                LCD_DataWrite(0x00);
        }
 }

 for(n0=0;n0<40;n0++)
   LCD_DataWrite(0xff);
}
/////////////?­????±í??//////////////////////////////////

void display_biao(void)
{

 unsigned int n0,n1;
    LCD_Graphic();   //????????????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
 for(n0=0;n0<40;n0++)
   LCD_DataWrite(0xff);

 for(n0=0;n0<31;n0++)  
    {
  for(n1=0;n1<40;n1++)
  {
      if (n1==0)          LCD_DataWrite(0x80);
    else if (n1==39) LCD_DataWrite(0x01);
      else                LCD_DataWrite(0x00);
        }
 }

 for(n0=0;n0<40;n0++)
 LCD_DataWrite(0xff);
 for(n0=0;n0<(125);n0++)  
    {
  for(n1=0;n1<40;n1++)
  {
      if (n1==0)          LCD_DataWrite(0x80);
    else if (n1==39) LCD_DataWrite(0x01);
      else                LCD_DataWrite(0x00);
        }
 }
 for(n0=0;n0<40;n0++)
 LCD_DataWrite(0xff);
}

/////////////????????×?????×?·?////////////////////
void display_word(unsigned char code *cha, int count )
{
 unsigned int i =0;
    LCD_Text();   //??????±?????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
    for( i =0; i < count; i++)
    {
        LCD_DataWrite(*cha); 
               ++cha;
    delay_nms(1);
       }  
}
/////////////????????×?????×?·?////////////////////
void Dis_CN(unsigned char x, unsigned char y, unsigned char code *cha, int count )
{
 unsigned int i =0;
    LCD_Text();   //??????±?????
    LCD_GotoXY(x,y);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
 for( i =0; i < count; i++)
 {
  LCD_DataWrite(*cha); 
  ++cha;
  delay_nms(1);
 }  
}

/////////////?????¨??×?±ê??????×?·???////////////////////
void LCD_ShowStr(unsigned char xxx,unsigned char yyy,unsigned char *text)
{
    LCD_Text();   //??????±?????
    LCD_GotoXY(xxx,yyy);   //?è?¨X,Y×?±ê????
    LCD_CmdWrite(0xB0);
    while(*text != '\0')         
 {
     LCD_DataWrite(*text);
     ++text;
     delay_nms(1);
    }
}
/////////////////////????·?°×????///////////////////////////////////
void reverse_data(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x00);  //??WLCR?????÷????
   temp |=0x01;
   LCD_CmdWrite(0x00);
   LCD_DataWrite(temp);    
}
/////////////////////????????????///////////////////////////////////
void normal_data(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x00);  //??WLCR?????÷????
   temp &=0xfe;
   LCD_CmdWrite(0x00);
   LCD_DataWrite(temp);    
}
///***************????·?°×????*****************************
void LCD_Inv(void)
{
 unsigned char temp; 
    temp=LCD_CmdRead(0x10);
    temp |=0x20;
    LCD_CmdWrite(0x10);
    LCD_DataWrite(temp);
}
///***************????????????*****************************
void LCD_NoInv(void)
{
 unsigned char temp; 
    temp=LCD_CmdRead(0x10);
    temp &=0xdf;
    LCD_CmdWrite(0x10);
    LCD_DataWrite(temp);
}

 /////////////////////??×?????????///////////////////////////////////
void bold_word(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x10);  //??0x10?????÷????
   temp |=0x10;
   LCD_CmdWrite(0x10);
   LCD_DataWrite(temp);    
 }
  /////////////////////??×?·?????????///////////////////////////////////
void no_bold_word(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x10);  //??wccr?????÷????
   temp &=0xef;
   LCD_CmdWrite(0x10);
   LCD_DataWrite(temp);    
}
/////////////////////×?·?·??ói±?///////////////////////////////////
void enlarge(unsigned char i)

   switch(i)
  { case 0x01:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0x00); 
   break;
    case 0x02:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0x50); 
   break;
   case 0x03:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0xa0);
   break;
   case 0x04:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0xf0);
   break;
    }
 }

//******************??????±ê******************
void Open_B(void)       //??????±ê
{
 unsigned char temp;
 temp=LCD_CmdRead(0x10);
 temp |=0x56;   //??????±ê56 
 LCD_CmdWrite(0x10);
 LCD_DataWrite(temp);

 temp=LCD_CmdRead(CHWI);
 temp |=0x20;   //??±ê????
 LCD_CmdWrite(CHWI);
 LCD_DataWrite(temp);

 temp=LCD_CmdRead( BTMR );
 temp |= 0X11;   //??????±ê11 
 LCD_CmdWrite(BTMR);
 LCD_DataWrite(temp);
}
//************************************************

//******************??±???±ê******************
void Close_B(void)       //??±???±ê
{
 unsigned char temp;
 temp=LCD_CmdRead(0x10);
 temp |=0x52;   //??±???±êD4 
 LCD_CmdWrite(0x10);
 LCD_DataWrite(temp);
}
//************************************************
//******************??????±ê******************
void B_X_Y( unsigned char x, unsigned char y )       //??±ê????
{
 unsigned char temp;
 LCD_GotoXY(x,y);
 temp=LCD_CmdRead( CURX );
 temp |= x;    
 LCD_CmdWrite(CURX);
 LCD_DataWrite(temp);

 temp=LCD_CmdRead( CURY );
 temp |= y;  
 LCD_CmdWrite(CURY);
 LCD_DataWrite(temp);
}

迷迷糊糊,迷也一天、糊也一天!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2013-12-26
在线时间
0 小时
 楼主| 发表于 2013-12-26 19:32:13 | 显示全部楼层
修改后TM32 程序如下,向各位大虾请教:


#include <stm32f10x_lib.h>

#include "sys.h"
#include "delay.h"
#include "ra8806.h"

#define BUSY Cin(2)// DS0
#define RST  Cout(1)// DS0
#define CS   Cout(4)// DS0
#define RS   Cout(5)// DS0
#define WR   Cout(6)// DS0
#define RD   Cout(7)// DS0

//#define DATAOUT  GPIOC->ODR  //????//PC8~15,×÷????????
//#define DATAIN   GPIOC->IDR  //????//PC8~15,×÷????????
void LCD_Init(void)
{
 RCC->APB2ENR|=1<<4;    //????PORTC?±??      
 
 GPIOC->CRL&=0X0000000F; 
 GPIOC->CRL|=0X33333430;//PC2 ????????   C1??PC4~7???ì????
 GPIOC->ODR|=0xFE;
      
 GPIOC->CRH&=0X00000000; 
 GPIOC->CRH|=0X33333333;//PC.11 ???ì????     
    GPIOC->ODR|=0xFF<<8;      //PC.11 ??????
}

void LCD_In(void)
{
 RCC->APB2ENR|=1<<4;    //????PORTC?±??      
 GPIOC->CRH&=0X00000000; 
 GPIOC->CRH|=0X44444444;//PC8~15    
// GPIOC->ODR|=0xFF<<8;   //PC8~15    
}
void LCD_OUT(void)
{
 RCC->APB2ENR|=1<<4;    //????PORTC?±??      
 GPIOC->CRH&=0X00000000; 
 GPIOC->CRH|=0X33333333;//PC8~15  
// GPIOC->ODR|=0xFF<<8;   //PC8~15   
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void softrst(void)
{
     delay_ms(1);//2
     CS=0;
  delay_us(1);
  RD = 1;
  delay_us(1);
  RST=0;
  delay_ms(2);//5
  RST=1;
  delay_ms(2);//5
  
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 
unsigned char LCD_CmdRead(unsigned char Addr)
{  
 unsigned char Data;  
 
 CS=0;delay_us(1);
 RS=1;delay_us(1);
 RD=1;delay_us(1);
 GPIOC->ODR= Addr << 8;
 WR=0;delay_us(1);
 WR=1;delay_us(1);
 
 GPIOC->ODR= 0xFF << 8;
 RS=0; delay_us(1);
 WR=1;delay_us(1);
 RD=1;delay_us(1);
 RD=0;delay_us(1);
 LCD_In( );delay_us(1);
 Data=(GPIOC->IDR&0xFF00) /0x100;
 LCD_OUT( ); delay_us(1);
 
 return Data;
}
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void LCD_CmdWrite(unsigned char cmdaddr)//8080
{  
 CS=0;delay_us(1);
 RD=1;delay_us(1);
 RS=1;delay_us(1);
 GPIOC->ODR= cmdaddr << 8;
 WR=0;delay_us(1);
 WR=1;delay_us(1);
 CS=1;delay_us(1);
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

void LCD_DataWrite(unsigned char wrdata)
{
 while(BUSY==0);delay_us(1);
 CS=0;delay_us(1);
 RD=1;delay_us(1);
 RS=0;delay_us(1);
 GPIOC->ODR= wrdata << 8;
 WR=0;delay_us(1);
 WR=1;delay_us(1);
 CS=1;delay_us(1);
}
//******************???????¨????******************
void clearsnow(void)       //????±?·?????????·¨???????????¨????????????????????????
{
 unsigned char temp;
 temp=LCD_CmdRead(0x01);
 temp |=0x80;
 LCD_CmdWrite(0x01);
 LCD_DataWrite(temp); 
}
//******************?????????¨????--????????******************
void noclearsnow(void)
 {  unsigned char temp;     //????±?·?????????·¨???????????¨????
    temp=LCD_CmdRead(0x01);
 temp &=0x7f;
    LCD_CmdWrite(0x01);
    LCD_DataWrite(temp); 
 }
//******************X,Y×?±ê?¨??******************
void LCD_GotoXY(unsigned char xx,unsigned char yy)
{   LCD_CmdWrite(0x60); 
 LCD_DataWrite(xx);
    LCD_CmdWrite(0x70);  
 LCD_DataWrite(yy);
}
//*************????????**************************
void LCD_Graphic(void)
{   unsigned char temp;
    temp=LCD_CmdRead(0x00);
 temp &=0xf7;
    LCD_CmdWrite(0x00);
    LCD_DataWrite(temp); 
 clearsnow();      //???????????¨????
 }
//*************??×?????**************************
void LCD_Text(void)
{   unsigned char temp;
    temp=LCD_CmdRead(0x00);
 temp |=0x08;
    LCD_CmdWrite(0x00);
    LCD_DataWrite(temp); 
 noclearsnow();      //??±????????¨????
 }

//***********DDRAM1 ????**************************
void Only_Show_Page1(void)
{
 unsigned char temp;
    temp=LCD_CmdRead(0x12);
    temp &=0x9f;
 temp |=0x10;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp); 
}

//***********DDRAM2 ????**************************
void Only_Show_Page2(void)
{
 unsigned char temp;
    temp=LCD_CmdRead(0x12);
    temp &=0xaf;
 temp |=0x20;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp); 
}
//***********DDRAM1??DDRAM2 ??????????***************
void Show_Two_Layer(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xbf;
 temp |=0x30;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp); 
}
//***********DDRAM1??DDRAM2 OR·???????***************
void OR_Two_Layer(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xf3;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp); 
}
//***********????DDRAM1*******************************
void Access_Page1(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xfd;
 temp |=0x01;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp); 
}
//***********????DDRAM2*******************************
void Access_Page2(void)
{
 unsigned char temp; 
 temp=LCD_CmdRead(0x12);
    temp &=0xfe;
 temp |=0x02;
    LCD_CmdWrite(0x12);
    LCD_DataWrite(temp); 
}

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void displays(unsigned char x,unsigned char y,unsigned char *m)
{
    unsigned int iiii=0,pppp=0,c=0;
    LCD_Graphic();    //????????????
    LCD_GotoXY(x,y);   //???¨×?±ê??00??00
    LCD_CmdWrite(0xb0); 
    for(iiii=0;iiii<80;iiii++)
    {
         for(pppp=0;pppp<40;pppp++)
            {
                  LCD_DataWrite(m[c++]); 
            }   
     } 


///////////////////////////////////////////
void lcd_inital(void)

 LCD_CmdWrite(WLCR);  //[00H] , Default --> 0x00
 LCD_DataWrite(0x04);    //????????????  disp_off????high 

 LCD_CmdWrite(MISC);  //[01H] , Default --> 0x00
 LCD_DataWrite(0x08);

 LCD_CmdWrite(ADSR);  //[03H] , Default --> 0x00 
 LCD_DataWrite(0x00);

 LCD_CmdWrite(INTR);  //[0FH] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(WCCR);  //[10H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(CHWI);  //[11H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(MAMR);  //[12H] , Default --> 0x11 
 LCD_DataWrite(0x11);

 LCD_CmdWrite(AWRR);  //[20H] , Default --> 0x27
 LCD_DataWrite(39);

 LCD_CmdWrite(DWWR);  //[21H] , Default --> 0x27
 LCD_DataWrite(39);

 LCD_CmdWrite(AWBR);  //[30H] , Default --> 0xEF 
 LCD_DataWrite(239);

 LCD_CmdWrite(DWHR);  //[31H] , Default --> 0xEF
 LCD_DataWrite(239);

 LCD_CmdWrite(AWLR);  //[40H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(AWTR);  //[50H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(CURX);  //[60H] , Default --> 0x00 
 LCD_DataWrite(0x00);

 LCD_CmdWrite(BGSG);  //[61H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(EDSG);  //[62H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(CURY);  //[70H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(BGCM);  //[71H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(EDCM);  //[72H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(BTMR);  //[80H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(ITCR);  //[90H] , Default --> 0x00    ?è???÷??
 LCD_DataWrite(0x80);

 LCD_CmdWrite(PNTR);  //[E0H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(FNCR);  //[F0H] , Default --> 0x00
 LCD_DataWrite(0x00);

 LCD_CmdWrite(FVHT);  //[F1H] , Default --> 0x00
 LCD_DataWrite(0x00);
}

/////////////////????×????ò//////////////////////////
void clear(void)

  LCD_Graphic();     //????????????     
  noclearsnow();      //??±????????¨????
  LCD_CmdWrite(0xe0);
  LCD_DataWrite(0x00);
  LCD_CmdWrite(0xf0);
  LCD_DataWrite(0xa8);
  delay_ms(3);
}
//////////////????????×????ò///////////////////////
void display_all()
{
    LCD_Graphic();    //????????????
    noclearsnow();      //??±????????¨????
    LCD_CmdWrite(0xe0);
    LCD_DataWrite(0xff);     //??????0xff
    LCD_CmdWrite(0xf0);
    LCD_DataWrite(0xa8);
    delay_ms(3);
}
//////////////×°????????///////////////////////////
void display_snows(unsigned char dat1,unsigned char dat2)
{

    unsigned int iiii=0,pppp=0;
    LCD_Graphic();   //????????????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0); 
    for(iiii=0;iiii<120;iiii++)
    {
         for(pppp=0;pppp<40;pppp++)
            {
                  LCD_DataWrite(dat1);  
            }   
   for(pppp=0;pppp<40;pppp++)
            {
                  LCD_DataWrite(dat2);  
            }  
    } 
}
/////////////????????±??ò//////////////////////////////////

void display_kuang(void)
{

 unsigned int n0,n1;
    LCD_Graphic();   //????????????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
 for(n0=0;n0<40;n0++)
   LCD_DataWrite(0xff);

 for(n0=0;n0<(238);n0++)  
    {
  for(n1=0;n1<40;n1++)
  {
      if (n1==0)          LCD_DataWrite(0x80);
    else if (n1==39) LCD_DataWrite(0x01);
      else                LCD_DataWrite(0x00);
        }
 }

 for(n0=0;n0<40;n0++)
   LCD_DataWrite(0xff);
}
/////////////??????±í??//////////////////////////////////

void display_biao(void)
{

 unsigned int n0,n1;
    LCD_Graphic();   //????????????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê????
 LCD_CmdWrite(0xb0);
 for(n0=0;n0<40;n0++)
   LCD_DataWrite(0xff);

 for(n0=0;n0<31;n0++)  
    {
  for(n1=0;n1<40;n1++)
  {
      if (n1==0)          LCD_DataWrite(0x80);
    else if (n1==39) LCD_DataWrite(0x01);
      else                LCD_DataWrite(0x00);
        }
 }

 for(n0=0;n0<40;n0++)
 LCD_DataWrite(0xff);
 for(n0=0;n0<(125);n0++)  
    {
  for(n1=0;n1<40;n1++)
  {
      if (n1==0)          LCD_DataWrite(0x80);
    else if (n1==39) LCD_DataWrite(0x01);
      else                LCD_DataWrite(0x00);
        }
 }
 for(n0=0;n0<40;n0++)
 LCD_DataWrite(0xff);
}

/////////////????????×?????×?·?////////////////////
void display_word(unsigned char *cha, int count )
{
 unsigned int i =0;
    LCD_Text();   //??????±?????
    LCD_GotoXY(0x00,0x00);   //?è?¨X,Y×?±ê???? 
 LCD_CmdWrite(0xb0); 
    for( i =0; i < count; i++)
    {
        LCD_DataWrite(*cha);  
               ++cha;
    delay_ms(1);
       }   
}
/////////////????????×?????×?·?////////////////////
void Dis_CN(unsigned char x, unsigned char y, unsigned char  *cha, int count )
{
 unsigned int i =0;
    LCD_Text();   //??????±?????
    LCD_GotoXY(x,y);   //?è?¨X,Y×?±ê???? 
 LCD_CmdWrite(0xb0); 
 for( i =0; i < count; i++)
 {
  LCD_DataWrite(*cha);  
  ++cha;
  delay_ms(1);
 }   
}

/////////////?????¨??×?±ê??????×?·???////////////////////
void LCD_ShowStr(unsigned char xxx,unsigned char yyy,unsigned char *text)

    LCD_Text();   //??????±?????
    LCD_GotoXY(xxx,yyy);   //?è?¨X,Y×?±ê???? 
    LCD_CmdWrite(0xB0);
    while(*text != '\0')          
 {
     LCD_DataWrite(*text);
     ++text; 
     delay_ms(1);
    }
}
/////////////////////????·?°×????///////////////////////////////////
void reverse_data(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x00);  //??WLCR?????÷????
   temp |=0x01;
   LCD_CmdWrite(0x00);
   LCD_DataWrite(temp);     
}
/////////////////////????????????///////////////////////////////////
void normal_data(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x00);  //??WLCR?????÷????
   temp &=0xfe;
   LCD_CmdWrite(0x00);
   LCD_DataWrite(temp);     
}
///***************????·?°×????*****************************
void LCD_Inv(void)
{
 unsigned char temp; 
    temp=LCD_CmdRead(0x10);
    temp |=0x20;
    LCD_CmdWrite(0x10);
    LCD_DataWrite(temp); 
}
///***************????????????*****************************
void LCD_NoInv(void)
{
 unsigned char temp; 
    temp=LCD_CmdRead(0x10);
    temp &=0xdf;
    LCD_CmdWrite(0x10);
    LCD_DataWrite(temp); 
}

 /////////////////////??×?????????///////////////////////////////////
void bold_word(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x10);  //??0x10?????÷????
   temp |=0x10;
   LCD_CmdWrite(0x10);
   LCD_DataWrite(temp);     
 }
  /////////////////////??×?·?????????///////////////////////////////////
void no_bold_word(void)
{  unsigned char temp;
   temp=LCD_CmdRead(0x10);  //??wccr?????÷????
   temp &=0xef;
   LCD_CmdWrite(0x10);
   LCD_DataWrite(temp);     
}
/////////////////////×?·?·??ói±?///////////////////////////////////
void enlarge(unsigned char i)
{  
   switch(i)
  { case 0x01:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0x00);  
   break;
    case 0x02:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0x50);  
   break;
   case 0x03:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0xa0); 
   break;
   case 0x04:
   LCD_CmdWrite(0xf1);
   LCD_DataWrite(0xf0); 
   break;
    }
 }

//******************??????±ê******************
void Open_B(void)       //??????±ê
{
 unsigned char temp;
 temp=LCD_CmdRead(0x10);
 temp |=0x56;   //??????±ê56  
 LCD_CmdWrite(0x10);
 LCD_DataWrite(temp); 

 temp=LCD_CmdRead(CHWI);
 temp |=0x20;   //??±ê????
 LCD_CmdWrite(CHWI);
 LCD_DataWrite(temp);

 temp=LCD_CmdRead( BTMR );
 temp |= 0X11;   //??????±ê11  
 LCD_CmdWrite(BTMR);
 LCD_DataWrite(temp); 
}
//************************************************

//******************??±???±ê******************
void Close_B(void)       //??±???±ê
{
 unsigned char temp;
 temp=LCD_CmdRead(0x10);
 temp |=0x52;   //??±???±êD4  
 LCD_CmdWrite(0x10);
 LCD_DataWrite(temp); 
}
//************************************************
//******************??????±ê******************
void B_X_Y( unsigned char x, unsigned char y )       //??±ê????
{
 unsigned char temp;
 LCD_GotoXY(x,y);
 temp=LCD_CmdRead( CURX );
 temp |= x;     
 LCD_CmdWrite(CURX);
 LCD_DataWrite(temp); 

 temp=LCD_CmdRead( CURY );
 temp |= y;   
 LCD_CmdWrite(CURY);
 LCD_DataWrite(temp);
}

int main ( void)
{
 Stm32_Clock_Init(9);  //?????±???è??
 delay_init(72);      //???±??????
 LCD_Init( );
 while(1)
 {
   enlarge(1);    //×?????·??ó????16X16???ó?ó??
  bold_word(); //????
  LCD_ShowStr(0x20,0x24,"0123456789");
  delay_ms(1800);
 }
}
迷迷糊糊,迷也一天、糊也一天!
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2013-12-26
在线时间
0 小时
 楼主| 发表于 2013-12-26 19:32:58 | 显示全部楼层
头次发帖,汉字没显示出来,不好意思
迷迷糊糊,迷也一天、糊也一天!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-26 20:58:34 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2013-12-26
在线时间
0 小时
 楼主| 发表于 2013-12-27 07:39:36 | 显示全部楼层
看来得,烧香拜佛了
迷迷糊糊,迷也一天、糊也一天!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 17:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表