您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机ATMEGA16 12864LCD驱动程序(KS0108芯片) 正文
ATMEGA16 12864LCD驱动程序(KS0108芯片)

ATMEGA16 12864LCD驱动程序(KS0108芯片)

点击数:7369 次   录入时间:03-04 11:43:57   整理:http://www.55dianzi.com   AVR单片机
0x04, 0x02, 0x01, 0x02, 0x04,   // ^  
0x40, 0x40, 0x40, 0x40, 0x40,   // _  
0x00, 0x01, 0x02, 0x04, 0x00,   // ’  
0x20, 0x54, 0x54, 0x54, 0x78,   // a  
0x7F, 0x48, 0x44, 0x44, 0x38,   // b  
0x38, 0x44, 0x44, 0x44, 0x20,   // c  
0x38, 0x44, 0x44, 0x48, 0x7F,   // d  
0x38, 0x54, 0x54, 0x54, 0x18,   // e  
0x08, 0x7E, 0x09, 0x01, 0x02,   // f  
0x18, 0xA4, 0xA4, 0xA4, 0x7C,   // g  
0x7F, 0x08, 0x04, 0x04, 0x78,   // h  
0x00, 0x44, 0x7D, 0x40, 0x00,   // i  
0x40, 0x80, 0x84, 0x7D, 0x00,   // j  
0x7F, 0x10, 0x28, 0x44, 0x00,   // k  
0x00, 0x41, 0x7F, 0x40, 0x00,   // l  
0x7C, 0x04, 0x18, 0x04, 0x78,   // m  
0x7C, 0x08, 0x04, 0x04, 0x78,   // n  
0x38, 0x44, 0x44, 0x44, 0x38,   // o  
0xFC, 0x24, 0x24, 0x24, 0x18,   // p  
0x18, 0x24, 0x24, 0x18, 0xFC,   // q  
0x7C, 0x08, 0x04, 0x04, 0x08,   // r  
0x48, 0x54, 0x54, 0x54, 0x20,   // s  
0x04, 0x3F, 0x44, 0x40, 0x20,   // t  
0x3C, 0x40, 0x40, 0x20, 0x7C,   // u  
0x1C, 0x20, 0x40, 0x20, 0x1C,   // v  
0x3C, 0x40, 0x30, 0x40, 0x3C,   // w  
0x44, 0x28, 0x10, 0x28, 0x44,   // x  
0x1C, 0xA0, 0xA0, 0xA0, 0x7C,   // y  
0x44, 0x64, 0x54, 0x4C, 0x44,   // z  
0x00, 0x08, 0x36, 0x41, 0x00,  // {  
0x00, 0x00, 0x7F, 0x00, 0x00,   // |  
0x00, 0x41, 0x36, 0x08, 0x00,   // }  
0x08, 0x10, 0x08, 0x04, 0x08    // ~  
};      

void ks0108rs0 (unsigned char rs)           //写一个指令  
    {  
     E=1; RS=0; RW=0;  
     DATA=rs;  
     E=0;                                     
     delay_ms(1);                           //KS0108真是慢,写指令/数据都要适当延时  
    }   
      
void ks0108putbyte (unsigned char datas)    //写一个字节  
    {  
     if(ks0108x>127) //显示到最后列时就退出本函数,并停止写显示数据  
        return;  
     if(ks0108x<64)  //判断列地址,确定在左屏还是在右屏写数据  
       { CS1=1; CS2=0; }  
     else  
       { CS1=0; CS2=1; }      
     E=1; RS=1; RW=0; //写一个显示数据  
     DATA=datas;  
     E=0;  
     ks0108x++;       //每写一个数据,列地址就要加1  
     delay_ms(1);  
    }  

void ks0108putchar (unsigned char ASCII)    //写一个字符(就是写6个数据)  
    {  
     unsigned char i;  
     unsigned int No;  
     No=ASCII-32;      //字模数据是由空格’ ’开始,空格的ASCII的值就是32  
     No=No*5;          //每个字符的字模是5个字节  
     ks0108putbyte(0); //每个字符之间空一列  
     for(i=0;i<5;i++)  //一个字符的字模是5个字节,就是5*8点阵  
        {  
         ks0108putbyte(data[No]);  
         No++;  
        }  
    }    

void ks0108gotoxy (unsigned char x,unsigned char y) //写列/行地址  
    {   
     if(x>127) x=0;     //如果列地址超出范围就回到0列  
     if(y>  7) y=0;     //如果行地址超出范围就回到0行  
     CS1=1;             //左右屏都使能,写下相同的行地址  
     CS2=1;       
     ks0108rs0(y+184);  //写页(行)地址,共有8页,第0页地址是184     
     if(x<64)           //写列地址,共有64列,第0列地址是64  
       { CS1=1; CS2=0; ks0108rs0(x+64); }  
     else  
       { CS1=0; CS2=1; ks0108rs0(x); };       
     ks0108x=x;          //记住列/行地址  
     ks0108y=y;  

上一页  [1] [2] [3]  下一页


本文关键字:程序  AVR单片机单片机-工控设备 - AVR单片机