关于mini12864st7565串行描点绘图的问题

2019-03-24 17:36发布

本人是刚刚入门的新手想请教各位大神如何用这个lcd来描点。开发板是htm-52,买的时候卖家也有送一些教程但是他们的代码就是直接用字模软件来转换,以下是他们给我驱动程序,所以我想请教一下如何改这个驱动程序来可以用这个mini12864来描点画图。谢谢各位了!
void LcdWriteCmd(cmd)
{
char i;
lcd_CS=0;
lcd_RS=0;
for(i=0;i<8;i++){
   lcd_SCLK=0;
   if(cmd&0x80) lcd_SID=1; //ÖÃêy¾YÏß
   else       lcd_SID=0;
   lcd_SCLK=1;  //2úéúê±ÖóéÏéyÑØ
   cmd <<= 1;
}
lcd_CS=1;
}

/*******************************************************************************
* oˉ êy Ãû         : LcdWriteData
* oˉêy1|Äü                   : D′èëò»¸öêy¾Yμ½12864
* êä    èë         : dat
* êä    3ö         : ÎT
*******************************************************************************/

void LcdWriteData(dat)
{       
char i;
lcd_CS=0;
lcd_RS=1;
for(i=0;i<8;i++){
   lcd_SCLK=0;
   if(dat&0x80) lcd_SID=1; //ÖÃêy¾YÏß
   else       lcd_SID=0;
   lcd_SCLK=1;  //2úéúê±ÖóéÏéyÑØ
   dat <<= 1;
}
lcd_CS=1;
}

void lcd_delay(int i){ //LCDרóÃÑóê±oˉêy
int j,k;
for(j=0;j<i;j++)
for(k=0;k<1;k++);
}

/*******************************************************************************
* oˉ êy Ãû         : LCD12864_Init
* oˉêy1|Äü                   : 3õê¼»ˉ12864
* êä    èë         : ÎT
* êä    3ö         : ÎT
* Ëμ    Ã÷         : LCD12864μÄÃüáîÖ¸áî¿éòÔ2é¿′ày3ìÎļt¼DÏÂμÄ¡¶ST7565pêy¾YêÖ2á¡·
*                  * μÄμú51ò3μÄλÖá£
*******************************************************************************/

void Lcd12864_Init()
{
        code unsigned char con_d2 = 0x16; //¶Ô±è¶èϸμ÷ĬèÏÖμ,¿ééèÖ÷¶Î§ 0x00¡«0x3f
  lcd_RST=0;     lcd_delay(1000);//μíμçƽ¸′λ
  lcd_RST=1;     lcd_delay(20);  //¸′λíê3é
       
  LcdWriteCmd(0xe2); lcd_delay(5);   //èí¸′λ

  LcdWriteCmd(0x2c); lcd_delay(5);  //éyÑ12½¾Û Boost ON
  LcdWriteCmd(0x2e); lcd_delay(5);  //éyÑ12½¾Û Voltage Regular ON
  LcdWriteCmd(0x2f); lcd_delay(5);  //éyÑ12½¾Û Voltage Follower ON

  LcdWriteCmd(0x24);  //′Öμ÷¶Ô±è¶è£¬¿ééèÖ÷¶Î§ 0x20¡«0x27
  LcdWriteCmd(0x81);  //΢μ÷¶Ô±è¶è,′ËDD¼°ÏÂDDDè½ô¸ú
  LcdWriteCmd(con_d2);//0x1a,΢μ÷¶Ô±è¶èμÄÖ죬¿ééèÖ÷¶Î§ 0x00¡«0x3f

  LcdWriteCmd(0xa2);  //1/9 Æ«Ñ1±è(bais set)
  LcdWriteCmd(0xc8);  //DDé¨ÃèË3Dò£o0xc8′óéÏμ½ÏÂ,0xc0′óÏÂμ½éÏ
  LcdWriteCmd(0xa0);  //áDé¨ÃèË3Dò£o0xa0′ó×óμ½óò,0xa1′óóòμ½×ó

  LcdWriteCmd(0x40);  //Æeê¼DD£oμúò»DD¿aê¼
  LcdWriteCmd(0xaf);  //¿aÏÔê¾       

}

/*******************************************************************************
* oˉ êy Ãû         : LcdClearScreen
* oˉêy1|Äü                   : ÇåÆá12864
* êä    èë         : ÎT
* êä    3ö         : ÎT
*******************************************************************************/
void LcdClearScreen(void)
{
        unsigned char i, j;

        for(i=0; i<8; i++)
        {
                LcdWriteCmd(0xB0+i); //yÖáμØÖ·

                //--ÔúD′èëêy¾YÖ®oóX×ø±êμÄ×ø±êêÇ»á×Ô¶ˉ¼ó1μÄ£¬ÎòÃÇ3õê¼»ˉê1óÃ0xA0
    //xÖá×ø±ê′ó0x10,0x00¿aê¼
                LcdWriteCmd(0x10);
                LcdWriteCmd(0x00);                                                          
               
                //XÖáóD128룬¾íò»12Ë¢128′Σ¬X×ø±ê»á×Ô¶ˉ¼ó1£¬ËùòÔÎòÃÇ2»óÃÔùéèÖÃ×ø±ê
                for(j=0; j<128; j++)
                {
                        LcdWriteData(0x00);  
                }
        }
}

/*******************************************************************************
* oˉ êy Ãû: LcdFullPic
* oˉêy1|Äü: ÏÔê¾è«Æáí¼Æ¬
* êä    èë: ÎT
* êä    3ö: ÎT
*******************************************************************************/
void LcdFullPic(const unsigned char *pic)
{
        unsigned char i, j;

        for(i=0; i<8; i++)
        {
                LcdWriteCmd(0xB0+i); //yÖáμØÖ·

                //--ÔúD′èëêy¾YÖ®oóX×ø±êμÄ×ø±êêÇ»á×Ô¶ˉ¼ó1μÄ£¬ÎòÃÇ3õê¼»ˉê1óÃ0xA0
    //xÖá×ø±ê′ó0x10,0x00¿aê¼
                LcdWriteCmd(0x10);
                LcdWriteCmd(0x00);                                                          
               
                //XÖáóD128룬¾íò»12Ë¢128′Σ¬X×ø±ê»á×Ô¶ˉ¼ó1£¬ËùòÔÎòÃÇ2»óÃÔùéèÖÃ×ø±ê
                for(j=0; j<128; j++)
                {
                        LcdWriteData(pic[i*128 + j]);  
                }
        }
}


此帖出自小平头技术问答
0条回答

一周热门 更多>