首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

12864液晶模块驱动4

12864液晶模块驱动4

Write12864Command(row+x);//写地址


   Write12864Data(0x30+v/100);//百位,先将数字化成ASCII码,再写入


   Write12864Data(0x30+v%100/10);/十位/先将数字化成ASCII码,再写入

   Write12864Data(0x30+v%10);//个位,先将数字化成ASCII码,再写入

}   



//在指定的位置显示字符串(汉字和ASCII码字符)函数:

void LCD12864DisplayString( unsigned char y,unsigned char x, unsigned char *pstr)

  //y-行数值0-3x-列数值0-7pstr-字符串指针

//12864可以显示32个汉字(四行每行8个),一个地址对应一个汉字

//可以显示64ASCII码字符(四行每行16个),一个地址对应两个字符

  //为了实现自动换行功能,这个函数比较繁琐

{

     unsigned char row,n=0;

     Write12864Command(0x30);//基本指令

     Write12864Command(0x06);//地址计数器自动加以,光标右移

     switch(y)//根据行号选择行地址

     {

                 case 0:row=0x80;break;//第一行首地址

                 case 1:row=0x90;break;//第二行首地址

                 case 2:row=0x88;break;//第三行首地址

                 case 3:row=0x98;break;//第四行首地址

                 default:;

     }

     Write12864Command(row+x);//写地址

     while(*pstr!='\0')

     {

                Write12864Data(*pstr);//写字符

                pstr++;

                n++;//计数

                if((n+x*2)==16)//如果一行写完 ,继续写第二行

                {

                       if(y==0) Write12864Command(0x90);//写下一行地址

                       else if(y==1) Write12864Command(0x88);//写下一行地址

                       else if(y==2) Write12864Command(0x98);//写下一行地址

                       else ;

                }

                else if((n+x*2)==32)//如果第二行写完 ,继续写第三行

                {

                        if(y==0) Write12864Command(0x88);//写下一行地址

                        else if(y==1) Write12864Command(0x98);//写下一行地址

                        else ;

                }

                else if((n+x*2)==48)//如果第三行写完 ,继续写第四行

                {

                        if(y==0) Write12864Command(0x98);//写下一行地址

                        else ;

                }

                else ;

    }

}   

返回列表