OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10651|回复: 1

我的AVR资料[程序篇]LCD12864的驱动源码(源码21)

[复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2010-12-24 03:20:05 | 显示全部楼层 |阅读模式

     个人使用的第二种液晶,12864.第一种是1602.以下是驱动源码(移植过来的):
 #include<mega16.h>
#include<delay.h>

#define SID PORTC.6
#define DDR_SID DDRC.6
#define PIN_SID PINC.6
#define DDR_SCLK DDRC.5
#define DDR_CS DDRC.7
#define SCLK PORTC.5
#define  CS PORTC.7 

#define CHKBIT(x,y) (x&(1<<y))//get appoint bit level
unsigned char str[]={"移植成功!!哈哈哈"};
unsigned char *unit[]={"秒","分","时","日","月","周","年"};
 unsigned char *week[]={"SU","MO","TU","WE","TH","FR","SA"};
flash unsigned char time[]={"0123456789"};

flash unsigned char  bmp1[]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,
0x7F,0xE0,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x3F,0xFF,0xFF,0x00,0x00,0x7F,0xFF,
0xFF,0x80,0x00,0x7F,0xE0,0xFF,0x80,0x00,0x7F,0xC0,0x7F,0x80,0x00,0x7F,0x8E,0x3F,
0x80,0x00,0x7F,0x9F,0x3F,0x80,0x00,0x7F,0x9F,0x3F,0x80,0x00,0x7F,0x8E,0x3F,0x80,
0x00,0x7F,0x80,0x3F,0x80,0x00,0x7F,0xC0,0x7F,0x80,0x00,0x7F,0xFF,0xFF,0x80,0x00,
0x7F,0xFF,0xFF,0x80,0x00,0x3F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1C,0x93,0x00,0x00,0x00,0x12,0x94,0x80,0x00,0x00,0x12,0x94,
0x80,0x00,0x00,0x1C,0xF4,0x80,0x00,0x00,0x10,0x94,0x80,0x00,0x00,0x10,0x94,0x80,
0x00,0x00,0x10,0x93,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//net
unsigned char flash  bmp2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xF0,0x00,0x00,0x07,0xFF,0xFC,0x00,0x00,0x0F,0x00,0x0E,0x00,0x00,0x1C,0x00,0x03,0x80,0x00,0x38,0x00,0x01,0xC0,0x00,0x70,0x00,0x00,0xE0,0x00,0xE0,0x0F,0x00,0x70,0x01,0xC0,0x3F,0xC0,0x38,0x01,0xC0,0x7F,0xE0,0x38,0x01,0x80,0xFF,0xF0,0x18,0x01,0x81,0xF8,0xF8,0x18,0x01,0x81,0xF8,0xF8,0x18,0x01,0x81,0xF8,0xF8,0x18,0x01,0x80,0xFF,0xF0,0x38,0x01,0x80,0x7F,0xE0,0x38,0x01,0xC0,0x1F,0x80,0x78,0x01,0xE0,0x00,0x00,0xF8,0x01,0xF0,0x00,0x01,0xF8,0x01,0xF8,0x00,0x03,0xF8,0x01,0xFE,0x00,0x0F,0xF8,0x01,0xFF,0x80,0x3F,0xF8,0x01,0xFF,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x41,0xC1,0xC0,0x00,0x48,0x02,0x22,0x20,0x00,0x44,0x41,0xC2,0x00,0x00,0x44,0x40,0x22,0x00,0x00,0x44,0x42,0x22,0x20,0x00,0x78,0x41,0xC1,0xC0};
/////////////////////////////////                   disc//////////////////////

 unsigned char flash bmp0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xC0,0x00,0x18,0xC0,0x38,0xE0,0x00,0x38,0xE0,0x3F,0xFF,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xFF,0xE0,0x38,0xFF,0xFF,0xF8,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x3F,0xE0,0x00,0x3F,0xE0,0x3F,0xE0,0x00,0x3F,0xE0,0x3F,0xE0,0x00,0x3F,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x38,0xE0,0x00,0x3F,0xE0,0x3F,0xE0,0x00,0x3F,0xE0,0x3F,0xE0,0x00,0x3F,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x38,0xFF,0xFF,0xF8,0xE0,0x3F,0xFF,0xFF,0xFF,0xE0,0x3F,0xE0,0x00,0x3F,0xE0,0x38,0xE0,0x00,0x38,0xE0,0x18,0xC0,0x00,0x10,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0xB0,0xC4,0x40,0x00,0x02,0x49,0x24,0x40,0x00,0x02,0x49,0x24,0x40,0x00,0x02,0x49,0x24,0x40,0x00,0x02,0x49,0x22,0x80,0x00,0x02,0x48,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
///////////////////////////////////////////////////////mov///////////////////////////////////////////////

 unsigned char flash bmp3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x80,0x00,0x00,0x03,0xFF,0xE0,0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x07,0x00,0x70,0x00,0x00,0x07,0x00,0x70,0x00,0x07,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFF,0xFC,0x3F,0xC0,0xFF,0x81,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0xFF,0x81,0xFC,0x1F,0xC1,0xFF,0x81,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

///////////////////////////////////box //////////////////////////////////////
 unsigned char flash bmp4[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC3,0xF0,0x00,0x00,0x07,0xE3,0xF8,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x06,0x7E,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x06,0x00,0x18,0x00,0x00,0x7E,0x01,0xF8,0x00,0x00,0xFE,0x03,0xF8,0x00,0x00,0xF8,0x07,0xF0,0x00,0x00,0x70,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0x26,0x4C,0x00,0x00,0x55,0x28,0x12,0x00,0x00,0x55,0x08,0x50,0x00,0x00,0x55,0x27,0x50,0x00,0x00,0x55,0x21,0x50,0x00,0x00,0x54,0xE9,0x52,0x00,0x00,0x00,0x26,0x4C,0x00,0x00
};///////////////////music
 unsigned char flash bmp5[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x78,0x78,0x00,0x00,0x00,0x00,0xC0,0x0C,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x06,0x00,0x01,0x80,0x00,0x00,0x04,0x18,0x60,0x80,0x00,0x00,0x08,0x24,0x90,0x40,0x00,0x00,0x00,0x0F,0xF0,0x20,0x00,0x00,0x10,0x0A,0x10,0x20,0x00,0x00,0x10,0x2B,0xF0,0x20,0x00,0x00,0x10,0x24,0x80,0x10,0x00,0x00,0x20,0x04,0x00,0x10,0x00,0x00,0x20,0x3C,0xF0,0x10,0x00,0x00,0x20,0xE0,0x0C,0x00,0x00,0x00,0x08,0x80,0x04,0x00,0x00,0x00,0x4C,0x30,0x38,0x20,0x00,0x00,0x09,0x00,0x00,0x28,0x00,0x00,0x16,0x00,0x00,0x48,0x00,0x00,0x09,0x80,0x01,0x04,0x00,0x02,0x14,0x00,0x06,0x80,0x00,0x02,0x14,0x00,0x38,0x42,0x00,0x04,0x15,0x10,0x00,0x00,0x00,0x04,0x25,0xA0,0x00,0x40,0x00,0x04,0x14,0x20,0x00,0x40,0x00,0x04,0x12,0x20,0x00,0x40,0x00,0x03,0x50,0xC0,0x00,0x5A,0x00,0x00,0x28,0x00,0x00,0xA4,0x00,0x00,0x04,0x00,0x01,0x20,0x00,0x00,0x3A,0x00,0x02,0xA0,0x00,0x00,0x4D,0x80,0x0D,0x50,0x00,0x00,0x42,0x38,0x32,0x08,0x00,0x00,0x50,0xCF,0xCC,0x68,0x00,0x00,0x20,0xF0,0x38,0x10,0x00,0x00,0x1F,0xF8,0x7F,0xE0,0x00,0x00,0x03,0xC0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};  //qq//                          
 unsigned  char flash bmp6[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0x00,0x0F,0xFF,0xF8,0x00,0x00,0x3C,0x47,0x3E,0x00,0x00,0x78,0xC3,0x9F,0x00,0x01,0xFF,0xFF,0xFF,0x80,0x03,0xC7,0xFF,0xC3,0xC0,0x03,0x83,0x81,0xC1,0xC0,0x07,0x87,0x81,0xE1,0xE0,0x07,0xFF,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFF,0xE0,0x03,0x83,0x80,0xC0,0xC0,0x03,0x83,0x81,0xC1,0xC0,0x03,0xCF,0xFF,0xFB,0x80,0x01,0xFF,0xFF,0xFF,0x00,0x00,0xF8,0xE3,0x1E,0x00,0x00,0x3E,0xF7,0x7C,0x00,0x00,0x0F,0xFF,0xF0,0x00,0x00,0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x10,0x00,0x01,0x20,0xF0,0x10,0x00,0x01,0x21,0x08,0xFF,0x00,0x01,0x23,0xFC,0x10,0x00,0x01,0x22,0x00,0x10,0x00,0x01,0x22,0x08,0x10,0x00,0x01,0x21,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //net

//net
////////////////////////////////////////////////////
//                 declaration
void PutStr(unsigned char row,unsigned char col, unsigned char *puts);
/////////////////////////////////////////////////
//             DS1302

 

/////////////////////////////////////////////////
//               DS1302  end
//////////////////////////////////////////////////
 unsigned  char flash *bmp[]={bmp1,bmp2,bmp3,bmp4,bmp5,bmp6};
unsigned char  flash  AC_TABLE[32]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f
};
void delay_nus(unsigned int t){while(t--);}
void SendByte(unsigned char Dbyte)
{                
         unsigned char i;
  DDR_SID=1;  //SID OUTPUT
         for(i=0;i<8;i++)
         {
                 SCLK=0;
         //SCLK=0
                 if(Dbyte&0x80)
                 SID=1;
      else SID=0;
    
                 SCLK=1;//                 SCK = 1;
       
     Dbyte=Dbyte<<1;
         }
  
 
}

unsigned char ReceiveByte(void)
{
         unsigned char i,temp1,temp2;
   DDR_SID=0; //SID INPUT
    SID=0;                    
         temp1=temp2=0;
         for(i=0;i<8;i++)
         {
                 temp1=temp1<<1;
                
       SCLK=0;      //SCLK=0;

                SCLK=1;          //SCLK=1
   
                 SCLK=0;         //SCLK=0

                 if(PIN_SID==1) temp1++;
         }
  
  
  
  
         for(i=0;i<8;i++)
         {
                 temp2=temp2<<1;
                 SCLK=0;      //SCLK=0;

                 SCLK=1;        //SCLK=1

                 SCLK=0;     //SCLK=0;

                 if(PIN_SID==1) temp2++;
         }  
  DDR_SID=1;
   temp2=(0xf0&temp1)+(0x0f&temp2)  ;            //SID OUTPUT
         return (temp2);
}

void CheckBusy( void )
{
         do    SendByte(0xfc);     //11111,RW(1),RS(0),0
         while(0x80&ReceiveByte());
}

void WriteCommand( unsigned char Cbyte )
{
         CS=1;                                   // CS = 1;
         CheckBusy();
         SendByte(0xf8);          //11111,RW(0),RS(0),0
         SendByte(0xf0&Cbyte);          //
         SendByte(0xf0&Cbyte<<4);
     CS=0;
}

void WriteData( unsigned char Dbyte )
{
         CS=1;
         CheckBusy();
         SendByte(0xfa);          //11111,RW(0),RS(1),0
         SendByte(0xf0&Dbyte);
         SendByte(0xf0&Dbyte<<4);
            CS=0;

}

unsigned char ReadData( void )
{
         CheckBusy();
         SendByte(0xfe);          //11111,RW(1),RS(1),0
         return ReceiveByte();
}


void LcmInit( void )
{       DDR_SCLK=1;
         DDR_SID=1;
     DDRA.7=1;
         WriteCommand(0x30);
         WriteCommand(0x03);
         WriteCommand(0x0C);
         WriteCommand(0x01);
         WriteCommand(0x06);
}

void LcmClearTXT( void )
{
         unsigned char i;
         WriteCommand(0x30);
         WriteCommand(0x80);
         for(i=0;i<64;i++)
            WriteData(0x20);
}

void LcmClearBMP( void )
{
         unsigned char i,j;
         WriteCommand(0x34);
         WriteCommand(0x36);
         for(i=0;i<32;i++)
         {
                 WriteCommand(0x80|i);
                 WriteCommand(0x80);
                 for(j=0;j<32;j++)
                    WriteData(0);
         }
}
void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{        
              unsigned char temp;

         WriteCommand(0x30);
         WriteCommand(AC_TABLE[8*row+col]);
         while(*puts != '\0')
         {
                 if(col==8)
                 {
                         col=0;
                         row++;
                 }
                 if(row==4) row=0;
                 temp=8*row+col;
                 WriteCommand(AC_TABLE[temp]);
                 WriteData(*puts);
                 puts++;
                 WriteData(*puts);
                 puts++;
                 col++;
   
         }
}

 /*x0,y0 起始坐标,x为字节步进,y为位步进,     小图标  */              

void PutBMP2(unsigned char x0,unsigned char y0,unsigned char x1, unsigned char y1,flash  unsigned char* puts,unsigned char flag)

{
unsigned int x=0;
         unsigned char i,j;
         WriteCommand(0x34);
         WriteCommand(0x36);
   //score=(x1*y1)/2;
         for(i=y0;i<y1+y0;i++) 
         {
                 WriteCommand(0x80|i);
                 WriteCommand(0x80|x0); 
                 for(j=x1;j>0;j--)   
                 {                 
                    if(flag==0) 
           WriteData(255-puts[x]);
                    else  WriteData(puts[x]);
                         x++;
                 }
    
     // y=x-x1;
     /* for(j=x0;j<x0+x1;j++)   
                 {                   
                         WriteData(puts[y+score]);
                     
                         y++;
                 }*/
         } 
}/*全屏壁纸*/
void PutBMP_allscreen(unsigned char *puts)
{         
         unsigned int x=0,y=0;
         unsigned char i,j;
         WriteCommand(0x34);
         WriteCommand(0x36);
         for(i=0;i<32;i++) 
         {
                 WriteCommand(0x80|i);
                 WriteCommand(0x80); 
                 for(j=0;j<16;j++)   
                 {                    
                         WriteData(puts[x]);
                     
                         x++;
                 }
      y=x-16;
      for(j=0;j<16;j++)   
                 {                   
                         WriteData(puts[y+512*1]);
                     
                         y++;
                 }
         } 
}


void main()
{           unsigned char i;

         LcmInit();
         LcmClearTXT();
         LcmClearBMP();
   delay_nus(200);
   //ds1302_init();
  
   while(1)
   {
   for(i=0;i<4;i++){PutBMP2(i*4,0,5, 32, bmp1,1);  }
      //v_BurstR1302T(print);
     // delay_nus(100);
    //  showtime(print);
  
  
  
   }
// PutStr(0,0,str);
// for(i=0;i<4;i++){PutBMP2(i*4,0,5, 32, bmp,1);  }

 

}

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-8-15
在线时间
3 小时
发表于 2016-8-17 09:53:45 | 显示全部楼层
翻了好久终于找到12864的程序了 谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 18:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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