本人是刚刚入门的新手想请教各位大神如何用这个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]);
}
}
}
此帖出自
小平头技术问答
一周热门 更多>