一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
楼主: solojimes

cog12864驱动起来了

  [复制链接]
 楼主| 发表于 2012-1-19 10:01 | 显示全部楼层
000.jpg

这是测试成功的接线图
回复

使用道具 举报

 楼主| 发表于 2012-1-19 10:03 | 显示全部楼层
我用的是串行方式,需要接的是CS RES A0 D6 D7,其中 D6 D7分别是串行模式下的SCK SDA
回复

使用道具 举报

 楼主| 发表于 2012-1-19 10:04 | 显示全部楼层
//设计时空科技测试程序
//一般12864显示字符和汉字程序
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define  uint unsigned int
sfr  CLK_DIV =0x97;
sfr  P1M1    =0x91;
sfr  P1M0    =0x92;
sfr  P3M1    =0xB1;
sfr  P3M0    =0xB2;

sbit CS1=   P1^4;              
sbit R_S=   P1^2;
sbit RES=   P1^3;
sbit SCK=       P1^1;
sbit SDA=   P1^0;
bit     Flage1=0;

void LcdInit();
void Clear();
void Delayms(uint ms);
void Comwrite(uchar cmd);
void Datwrite(uchar dat);
void disp_ch(unsigned char c,uCol,uPage);
void Setadd(uchar xl,uchar yl);
void disp_str(unsigned char *p,unsigned char uCol,uPage);
unsigned char CurOffset;
/*
#define LEFT 0
#define RIGHT 1
#define CMD 0
#define DATA 1
*/
#define ASC_CHR_WIDTH 8
#define ASC_CHR_HEIGHT 12
typedef struct typFNT_ASC16
{
    char Index[1];
    char Msk[16];
};
code struct typFNT_ASC16  ASC_16[] =
{
"1",0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,
"2",0x00,0x00,0x08,0x04,0x84,0x44,0x38,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x00,
"3",0x00,0x00,0x08,0x04,0x44,0x44,0xB8,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x03,0x00,
"4",0x00,0x00,0x80,0x60,0x18,0xFC,0x00,0x00,0x00,0x00,0x01,0x01,0x05,0x07,0x05,0x00,
"5",0x00,0x00,0x7C,0x44,0x44,0x44,0x84,0x00,0x00,0x00,0x02,0x04,0x04,0x04,0x03,0x00,
"6",0x00,0x00,0xF0,0x48,0x44,0x44,0x80,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x03,0x00,
"7",0x00,0x00,0x0C,0x04,0x84,0x64,0x1C,0x00,0x00,0x00,0x00,0x06,0x01,0x00,0x00,0x00,
"8",0x00,0x00,0xB8,0x44,0x44,0x44,0xB8,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x03,0x00,
"9",0x00,0x00,0x38,0x44,0x44,0x44,0xF8,0x00,0x00,0x00,0x00,0x04,0x04,0x02,0x01,0x00,
"0",0x00,0x00,0xF8,0x04,0x04,0x04,0xF8,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x03,0x00,
};

#define ASC_HZ_WIDTH 16
//#define ASC_HZ_HEIGHT 12
typedef struct typFNT_GB16
{
char Index[2];
char Msk[32];
};
code struct typFNT_GB16  GB_16[] = {

"液", 0x10,0x22,0x64,0x0C,0x80,0x04,0xC4,0x34,0x05,0xC6,0xBC,0x24,0x24,0xE6,0x04,0x00,
      0x04,0x04,0xFE,0x01,0x02,0x01,0xFF,0x42,0x21,0x16,0x08,0x15,0x23,0x60,0x20,0x00,
"晶", 0x00,0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x80,0x00,0x00,
      0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x01,0x00,
"模", 0x10,0x10,0xD0,0xFF,0x94,0x14,0xE4,0xBF,0xA4,0xA4,0xA4,0xBF,0xF4,0x26,0x04,0x00,
      0x04,0x03,0x00,0xFF,0x08,0x89,0x8B,0x4A,0x2A,0x1E,0x2A,0x2A,0x4B,0xC8,0x48,0x00,
"块", 0x20,0x20,0x20,0xFF,0x20,0x20,0x10,0x10,0xFF,0x10,0x10,0x10,0xF8,0x10,0x00,0x00,
      0x08,0x18,0x08,0x0F,0x84,0x46,0x22,0x1A,0x07,0x0A,0x12,0x22,0x43,0xC2,0x42,0x00,
"卖", 0x00,0x20,0x24,0x24,0x64,0xA4,0xA4,0x3F,0xA4,0x24,0x24,0x26,0xA4,0x60,0x00,0x00,
      0x08,0x08,0x89,0x8A,0x4E,0x48,0x29,0x18,0x0F,0x18,0x28,0x68,0xC8,0x0C,0x08,0x00,
"场", 0x10,0x10,0xFF,0x10,0x10,0x42,0x42,0xE2,0x52,0x4A,0xC6,0x42,0x42,0xE0,0x40,0x00,
      0x08,0x18,0x0F,0x44,0x24,0x10,0x0C,0x43,0x20,0x18,0x47,0x80,0x40,0x3F,0x00,0x00,
"千", 0x80,0x80,0x84,0x84,0x84,0x84,0x84,0xFC,0x82,0x82,0x83,0x82,0x80,0xC0,0x80,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
"山", 0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,
      0x00,0x7F,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,
"鸟", 0x00,0x00,0x00,0xFC,0x04,0x16,0x65,0x04,0x84,0x04,0xFE,0x04,0x00,0x00,0x00,0x00,
      0x10,0x10,0x10,0x13,0x12,0x12,0x12,0x12,0x12,0x13,0x5A,0x92,0x42,0x3F,0x02,0x00,
"飞", 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFF,0xA2,0x10,0x18,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x41,0x83,0x60,0x00,
"绝", 0x20,0x30,0x28,0xA7,0x60,0x30,0x20,0xF0,0x28,0x27,0xF4,0x2C,0x24,0xF0,0x20,0x00,
      0x22,0x66,0x23,0x12,0x12,0x12,0x00,0x7F,0x82,0x82,0x83,0x82,0x82,0x87,0xE0,0x00,
"万", 0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x44,0x44,0x44,0x44,0xE4,0x44,0x06,0x04,0x00,
      0x00,0x80,0x40,0x20,0x10,0x0E,0x01,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00,
"径", 0x00,0x10,0x88,0xC4,0x23,0x80,0x82,0x42,0x22,0x12,0x1A,0x26,0x62,0x40,0xC0,0x00,
      0x02,0x01,0x00,0xFF,0x00,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x60,0x40,0x00,
"人", 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0xC0,0x40,0x00,
"踪", 0x00,0x7E,0x22,0xE2,0x3E,0x10,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0xB4,0x0C,0x00,
      0x20,0x7E,0x20,0x3F,0x12,0x12,0x21,0x19,0x45,0x81,0x7F,0x01,0x05,0x09,0x31,0x00,
"灭", 0x02,0x02,0x82,0x72,0x02,0x02,0x02,0xFE,0x02,0x82,0x42,0x22,0x32,0x03,0x02,0x00,
      0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x04,0x08,0x10,0x20,0x60,0x20,0x00,
"孤", 0x00,0x02,0x02,0xF2,0x8A,0x46,0xFC,0x04,0xF4,0x04,0x02,0xFA,0x03,0x02,0x00,0x00,
      0x02,0x42,0x81,0x7F,0x40,0x30,0x0F,0x20,0x3F,0x20,0x70,0x0F,0x30,0x60,0x20,0x00,
"舟", 0x80,0x80,0x80,0xFC,0x84,0x86,0x95,0xE4,0x84,0x84,0x84,0xFE,0x84,0xC0,0x80,0x00,
      0x00,0x40,0x20,0x1F,0x00,0x00,0x02,0x0C,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,
"蓑", 0x04,0x14,0x14,0xD4,0x5F,0x54,0x54,0x5C,0x54,0x54,0x5F,0xD4,0x14,0x96,0x04,0x00,
      0x41,0x41,0x21,0x17,0xFD,0x45,0x25,0x0D,0x15,0x25,0x25,0x57,0xC9,0x41,0x01,0x00,
"笠", 0x10,0x90,0x88,0x87,0x8C,0x94,0xA6,0xD4,0x88,0x87,0x8C,0x94,0xC4,0x86,0x04,0x00,
      0x00,0x40,0x40,0x40,0x42,0x4C,0x70,0x40,0x60,0x58,0x46,0x40,0x40,0x60,0x40,0x00,
"翁", 0x10,0x10,0x90,0x88,0xA4,0xB3,0xA8,0x24,0xA0,0xB3,0xA4,0x88,0xD0,0x90,0x10,0x00,
      0x00,0x00,0x22,0x14,0x48,0x80,0x7F,0x00,0x22,0x14,0x48,0x80,0x7F,0x00,0x00,0x00,

};


uchar code Hanzi[]={
0xFF,
};

void Display(unsigned char sda,unsigned char sda1)
{
   unsigned char  i,j,k=0;
   for(i=0;i<8;i++)   
    {
     Comwrite(0xb0+k);   
   Comwrite(0x10);
  Comwrite(0x00);   
       for(j=0;j<64;j++)
          { Datwrite(sda);
            Datwrite(sda1);
          }
    k++;
    }
}
/*
void Hanzi_Disp(void)
{
   unsigned char  i,j,k=0;
   for(i=0;i<8;i++)   
    {
     Comwrite(0xb0+k);   
   Comwrite(0x10);
  Comwrite(0x04);   
       for(j=0;j<128;j++)
          {Datwrite(Hanzi[i*128+j]);
          }
         
    k++;
    }
}     
*/

void main()
{
   P1M1=0x00;
   P1M0=0xff;
   P3M1=0x00;
   P3M0=0xff;
   CLK_DIV=0x02;
   LcdInit();
  // while(1)
// {
//   Clear();
     /* Display(0xff,0xff);
   Delayms(5000);
      Display(0x55,0xaa);
   Delayms(5000);
      Display(0x00,0xff);
   Delayms(5000);
      Display(0xaa,0xaa);
   Delayms(5000);
      Display(0x55,0x55);
   Delayms(5000);
   //Hanzi_Disp();Delayms(5000);
   Clear();
disp_str("液晶模块卖场",0,0);
disp_str("液晶模块卖场",0,2);
disp_str("液晶模块卖场",0,4);
disp_str("液晶模块卖场",0,6);

Delayms(4000);Delayms(4000);  */
   // Clear();
//Flage1=0;
//disp_str("液晶模块卖场卖场",0,0);
//disp_str("液晶模块卖场",0,2);
// disp_str("液晶模块卖场",0,4);
  
          //Comwrite(0xd4);
// Delayms(50000);Delayms(50000);
// }
while(1)
{
   Clear();
      Display(0xff,0xff);
   Delayms(5000);
      Display(0x55,0xaa);
   Delayms(5000);
      Display(0x00,0xff);
   Delayms(5000);
      Display(0xaa,0xaa);
   Delayms(5000);
      Display(0x55,0x55);
   Delayms(5000);
   //Hanzi_Disp();Delayms(5000);
   Clear();
disp_str("模块",0,0);Delayms(1000);
disp_str("模块",96,0);Delayms(1000);
disp_str("模块",48,3);Delayms(1000);
disp_str("模块",96,0);Delayms(1000);
disp_str("模块",0,6);Delayms(1000);
disp_str("模块",96,6);Delayms(1000);
Delayms(4000);Delayms(4000);
    Clear();
Flage1=0;
disp_str("液晶模块卖场",0,0);
disp_str("液晶模块卖场",0,2);
disp_str("液晶模块卖场",0,4);
disp_str("012345678901234",0,6);
Delayms(5000);Delayms(5000);
}

}

void Delayms(uint ms)
{
uchar j;
while(ms--)
   for(j=0;j<=20;j++);   
                    
}  

void Comwrite(uchar cmd)
{
    uchar data i,j;
     CS1=0;
     R_S=0;  
        SCK=1;
for(i=0;i<8;i++)
     {
   j=cmd;
   SCK=0;
   SDA=cmd&0x80;
         SCK=1;      
   cmd=j<<1;
  }
     CS1=1;
// R_S=1;
}

void Datwrite(uchar dat)
{      
    uchar data i,j;
     CS1=0;
     R_S=1;  
        SCK=1;
for(i=0;i<8;i++)
     {
   j=dat;
   SCK=0;
   SDA=dat&0x80;
         SCK=1;      
   dat=j<<1;
  }
     CS1=1;
// R_S=0;
}
void Clear()
{
   unsigned char  i,j,m=0;
   for(i=0;i<8;i++)   
    {
     Setadd(0,i);      
     for(j=0;j<128;j++)
          Datwrite(0x00);
     }
}
void Setadd(uchar xl,uchar yl)
{    uchar i;
     xl+=4;
     i=(xl+0)&0x0f;
     xl=(xl>>4)+0x10;
     Comwrite(0xb0+yl);   
  Comwrite(xl);
   Comwrite(i);
}

void LcdInit()
{
RES=0;
Delayms(50);
RES=1;
Delayms(20);
      
Comwrite(0xaf); //
Comwrite(0x40); //  lcd@hotlcd.com
Comwrite(0xa0);
Comwrite(0xa6);
Comwrite(0xa4);
Comwrite(0xa2);
Comwrite(0xc8);
Comwrite(0x2f);

    Comwrite(0x20);
Comwrite(0x81); //
   


  /*   Comwrite(0xe2);
Comwrite(0xA2);
Comwrite(0xA1);
Comwrite(0xc0);
Comwrite(0x2c);
Comwrite(0x2e);
Comwrite(0x2F);
Comwrite(0x81); //
Comwrite(0x20);
Comwrite(0x22);
Comwrite(0xAF); //
Comwrite(0x40); // */
Clear();
}



void disp_ch(unsigned char c,uCol,uPage)
{
unsigned char k,j,ch_w;
unsigned char width;
unsigned char len;
len=sizeof(ASC_16)/sizeof(ASC_16[0]);
for(k=0;k<len;k++)
{
  if(c == ASC_16[k].Index[0] ) break;
}
if(k<len)
{
  
  if(c=='-'||c==':')
   width=ASC_CHR_WIDTH-2;
  else if(c=='|')
   width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
  else
   width=ASC_CHR_WIDTH;
  
     Setadd(uCol,uPage);
   for(j=0;j<width;j++)
   {
    ch_w=ASC_16[k].Msk[j];   
    Datwrite(ch_w);
   }
   Setadd(uCol,uPage+1);
   for(j=0;j<width;j++)
   {
    ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
    Datwrite(ch_w);
   }  
}
}

void disp_hz(unsigned char *hz,uCol,uPage)
{
unsigned char k,j,ch_w;
    //sizeof 用来求一个变量或者一种类型所占用的字节数
for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
{
  if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
   break;
}
Setadd(uCol,uPage);
for(j=0;j<ASC_HZ_WIDTH;j++)
{  
  ch_w=GB_16[k].Msk[j];
  Datwrite(ch_w);
}
Setadd(uCol,uPage+1);
for(j=0;j<ASC_HZ_WIDTH;j++)
{
  ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j];
  Datwrite(ch_w);
}
}

void disp_str(unsigned char *p,unsigned char uCol,uPage)
{
unsigned char i=0;
while(p>0)
{
  if(p < 128)
  {
   disp_ch(p,uCol,uPage);
            uCol+=8;
  }
  else
  {
   disp_hz(&p,uCol,uPage);
   uCol+=16;
   i++;
  }
  if(Flage1==1) Delayms(200);
  i++;
}
}
回复

使用道具 举报

 楼主| 发表于 2012-1-19 10:04 | 显示全部楼层
附送我 测试成功的 51程序,里面有些不要的代码我还没有删除,见笑
回复

使用道具 举报

发表于 2012-1-19 16:56 | 显示全部楼层
这东东如果做个时钟再投影到墙上、效果应OK、晚上睇不刺眼、
回复

使用道具 举报

发表于 2012-1-20 17:11 | 显示全部楼层
发现这个屏角度比较那个,要 45度才好点,正面反而不好,
回复

使用道具 举报

发表于 2012-1-23 21:14 | 显示全部楼层
这个效果不错。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-24 12:50 , Processed in 0.041031 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表