⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864.txt

📁 液晶驱动程序 用51c语言编写实用于12864液晶芯片
💻 TXT
📖 第 1 页 / 共 2 页
字号:
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
      _nop_(); _nop_(); _nop_(); 
        break;
        }
        }
        /*---------------------------------------------------------------------------------------------------*/
        //清屏
        //screen: 0-全屏,1-左屏,2-右
        void ClearScreen(unsigned char screen)
        { unsigned char i,j;
        SelectScreen(screen);
        for(i=0;i<8;i++)
        { SetLine(i);
        for(j=0;j<64;j++)
        {
        WriteByte(0x00);
        }
        }
        }
        /*--------------------------------------------------------------------------------------------------*/
        //显示8*8点阵
        //旋转90度:字模被竖着切分
        //lin:行(0-7), column: 列(0-15)
        //address : 字模区首地址
        void Show88(unsigned char lin,unsigned char column,unsigned int address)
        { unsigned char i;
        if(column>16) {return;}
        if(column<8) SelectScreen(1); //如果列数<8(0,1,2,3,4,5,6,7)则写在第一屏上
        else {
        SelectScreen(2); //否则 (8,9,10,11,12,13,14,15)写在第二屏上
        column=column & 0x07; //防止越界
        }
        SetLine(lin);
        SetColumn(column<<3);
        for(i=0;i<8;i++) WriteByte( CBYTE[address+i] );
        }
        /*------------------------------------------------------------------------------------------------*/
        //显示8*16字符
        //旋转90度:字模被竖着切分
        //lin:行(0-3), column: 列(0-15)
        //character:字符代码(标准ASCII码)
        void ShowChar(unsigned char lin,unsigned char column,unsigned char 
      character)
        { lin=lin<<1;
        Show88(lin ,column,ASCII816[character-0x20] );
        Show88(lin+1,column,ASCII816[character-0x20]+8 );
        }
        /*-----------------------------------------------------------------------------------------------*/
        /*
        //显示8*16字符串
        //!!!只能显示在一行上即: 串长+column <=15
        //旋转90度:字模被竖着切分
        //lin:行(0-3), column: 列(0-15)
        //address : 字模区首地址
        void ShowString(unsigned char lin,unsigned char column, unsigned char 
      *string)
        { unsigned char ch;
        unsigned char i=0;
        while(*string!='\0')
        {
        ch=*string;
        if(i+column >15) break; //(只能显示在一行上即: 串长+column <=15)
        ShowChar(lin,i+column,ch);
        string++; i++;
        }
        }
        */
        /*----------------------------------------------------------------------------------------------*/
        //显示一个汉字
        //旋转90度:字模被竖着切分
        //lin:行(0-3), column: 列(0-7)
        //hzcode: 汉字代码(自定义的)
        //uchar code HZtable
        void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
        {
        lin=lin<<1; //lin*2
        Show88(lin,column,HZTable[hzcode]);
        Show88(lin,column+1,HZTable[hzcode]+8);
        Show88(lin+1,column,HZTable[hzcode]+16);
        Show88(lin+1,column+1,HZTable[hzcode]+24);
        }
        /*----------------------------------------------------------------------------------------------*/
        //显示图片
        //旋转90度 :字模被竖着切分
        //startline :开始行
        //startcolumn:开始列
        //linechar :图片行点除8(图片以8*8点阵为单位)
        //columnchar :图片列点除8(图片以8*8点阵为单位)
        //address : 字模区首地址
        void ShowPicture(unsigned char startline,unsigned char 
      startcolumn,unsigned char linechar,unsigned char columnchar,unsigned int 
      address)
        { unsigned char i,j;
        for(i=0;i  for(j=0;j  Show88(startline+i , startcolumn+j , 
      address+(i*linechar+j)*8 );
        }
        /*----------------------------------------------------------------------------------------------*/
        //显示一行字符串(汉字,字母混排,一行16字节)
        //lin:行
        //lineheadaddr: 此行汉字代码区首地址
        void ShowLine(unsigned char lin,unsigned char linehead[])
        { unsigned char i;
        unsigned char byte;
        unsigned int hzcode;
        for( i=0; i<16; )
        { byte=linehead[i];
        if(byte < 0x80) //字母
        {
        if(i>15) return; //!!编译器有问题,须强制退出
        ShowChar(lin, i , byte);
        i=i+1;
        }
        else // byte >= 0x80(汉字)
        {
        if(i>15) return; //!!编译器有问题,须强制退出
        byte=byte & 0x7f; //最高位置0,即:减去0x8000
        hzcode=(unsigned int)byte<<8; //?? //高8位
        hzcode=hzcode+linehead[i+1]; //加低8位,组合成整型数地址
        ShowHZ( lin,i,hzcode);
        i=i+2;
        }
        }
        }
        /*----------------------------------------------------------------------------------------------------*/
        //显示一屏汉字
        //pageheadaddr:此屏汉字代码地址区首地址
        void ShowPage(unsigned char pagehead[][16])
        { unsigned char i;
        for(i=0;i<4;i++) ShowLine(i,pagehead[i]); //1行8个汉字,16字节
        }
        /*----------------------------------------------------------------------------------------------------*/
        //读显示数据
        unsigned char ReadByte()
        {
        unsigned char dat;
        CheckState();
        di=1; rw=1;
        LCD12864DataPort=0xff;
        en=1; dat=LCD12864DataPort; en=0;
        return(dat);
        }
        /*----------------------------------------------------------------------------------------------------*/
        //反显一个8*8字块
        //lin:行(0-3), column: 列(0-7)
        void ReverseShow88(unsigned char lin,unsigned char column)
        { unsigned char i;
        unsigned char tab[8];
        if(column<8) SelectScreen(1); //如果列数<4(0,1,2,3),则写在第一屏上
        else SelectScreen(2); //否则 (4,5,6,7), 写在第二屏上
        //读上部8列
        column=column<<3; //每个方块8*8大小
        SetLine(lin);
        SetColumn(column);
        tab[0]=ReadByte(); //空读!!!!! //?
        for(i=0;i<8;i++) tab[i]=~ReadByte();
        //写回
        SetLine(lin);
        SetColumn(column);
        for(i=0;i<8;i++) WriteByte(tab[i]);
        }
        /*----------------------------------------------------------------------------------------------------*/
        /*----------------------------------------------------------------------------------------------------*/
        //反显一个字符
        //lin:行(0-4), column: 列(0-15)
        void ReverseShowChar(unsigned char lin,unsigned char column)
        { lin=lin<<1;
        ReverseShow88(lin ,column);
        ReverseShow88(lin+1,column);
        }
        /*----------------------------------------------------------------------------------------------------*/
        //反显一个汉字
        //lin:行(0-3), column: 列(0-7)
        ReverseShowHZ(unsigned char lin,unsigned char column)
        {
        lin=lin<<1;
        column=column<<1;
        ReverseShow88(lin ,column );
        ReverseShow88(lin ,column+1);
        ReverseShow88(lin+1,column );
        ReverseShow88(lin+1,column+1);
        }
        /*----------------------------------------------------------------------------------------------------*/
        //反显一行汉字
        //lin:行
        ReverseShow(unsigned char lin)
        { unsigned char i;
        for(i=0;i<8;i++) ReverseShowHZ(lin,i);
        }
        /*----------------------------------------------------------------------------------------------------*/
        void InitLCD() //初始化LCD
        { unsigned char i=250; //延时
        while(i--);
        //reset=0;//复位
        //reset=1;
        SelectScreen(0);
        SetOnOff(0); //关显示
        ClearScreen(1);//清屏
        ClearScreen(2);
        SelectScreen(0);
        SetOnOff(1); //开显示
        SelectScreen(0);
        SetStartLine(0); //开始行:0
        }
        /*----------------------------------------------------------------------------------------------------*/
        void Reset() //液晶复位
        {
        //reset 低复位 _|-
        reset=0;
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
      _nop_(); _nop_(); _nop_();
        reset=1;
        
        //全屏
        cs1=0;
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
      _nop_(); _nop_(); _nop_();
        cs2=0; 
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 
      _nop_(); _nop_(); _nop_();
        SendCommandToLCD(0x3F);
        }
        /*----------------------------------------------------------------------------------------------------*/
        
         
      #日志日期:2006-11-15 星期三(Wednesday) 晴  推荐指数:复制链接 举报 





        
      新人注册>>

      登录名:  口令:

      输入您的评论:(不支持HTML标签)

      验证码:      段首缩进两个汉字: 

            
      本文所属博客:享受孤独
      引用地址:  

         
      [关 闭] [返回顶部]
      本站域名:http://luoye314.blog.tianya.cn/

   


&copy; 天涯社区

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -