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

📄 main.c

📁 Nokia3310 LCD 51系列单片机控制源代码
💻 C
字号:
#include "SST89E564RD.H"

#define  uchar  unsigned char
#define  uint   unsigned int


/*---------------------------------------------
void delay(int t)
{
    TR0=0;
    TMOD=TMOD&0xf1;
    TMOD=TMOD|0x01;
    TH0=0xf8;TL0=0xcc;
    TR0=1;
    for(;t>0;t--)
    {
        while(!TF0){};
        TF0=0;
        TR0=0;
        TH0=0xf8;TL0=0xcc;
        TR0=1;
    }
}


void main(void)  
{

   while(1)

   {
      P0=~P0;
	  delay(10);      
   }
}
----------------------------------------------*/

/*            3310液晶显示屏C51测试程序
                 2004/07/31/BD2YA
接脚资料:
Pin Signal Description Port
1:VDD
Power Input. Logic supply voltage range VDD to GND : 2.7 to 3.3 V
2:SCLK
Serial clock. Input for the clock signal: 0.0 to 4.0 Mbits/s.
3:SDIN
Serial data. Input for the data line.
4:D/C
Mode Select. To select either command/address or data input.
5:SCE
Chip enable input. The enable pin allows data to be clocked in. The signal is active LOW.
6:GND
Ground
7:VOUT
Ouptut voltage. Add external 1-10 uF electrolytic capacitor from VOUT to GND
8:RES
External reset. This signal will reset the device and must be applied to properly
initialize the chip. The signal is active LOW.
控制芯片:
PCD8544  */

 


//#include <reg51.h>
//#define uchar unsigned char
//#define uint unsigned int   
sbit sdin = P0^1; //数据
sbit sclk = P0^0;//时钟
sbit dc   = P0^2;//1写数据,0写指令
sbit sce  = P0^4;//片选
sbit res  = P0^3;//复位,0复位

/*void write_byte(uchar dd,bit a)//写一字节
{
 char i;
   sce=0;
   dc=a;
   for(i=7;i>=0;i--)
    {   
  sdin=(dd>>i)&1;
     sclk=0;
     sclk=1;   
     }
   dc=1;
  sce=1;
sdin=1;
}*/


//---------------------超快多135字-----------------------------

unsigned char mask_table[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

void write_byte(uchar dd,bit a)//写一字节
{
char i;
   sce=0;
   dc=a;
   for(i=0;i<8;i++)
    { 
    if(dd&mask_table[i])
     sdin=1;
     else
  sdin=0;
     sclk=0;    
     sclk=1;   
     }
   dc=1;
  sce=1;
sdin=1;
}


void setadd(unsigned char a,unsigned char d)//设定地址
{
  write_byte((d|0x40),0);
        write_byte((a|0x80),0);
}

void qp()//清屏
{
uchar t;
uchar k;
uint d;
d=0;
for(t=0;t<6;t++)
{  
      for(k=0;k<84;k++)
      {      
       write_byte(0,1);
       d=d+1;      
      }
     }
}


uchar code map2[]=
{
/*--  宽度x高度=84x48---------*/
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,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,0x00,0x00,0x00,0x00,0x00,0x90,0xA0,0x00,0xD0,0x50,0xF0,0x50,
0x50,0xF0,0x50,0xD0,0x00,0x40,0x40,0x40,0xC0,0x50,0x60,0x40,0xC0,0x40,0x60,0x40,
0x00,0x00,0x00,0xE0,0x20,0x20,0x20,0xD0,0x10,0x10,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,0x00,0x00,0x3F,0x10,
0x11,0x1F,0x15,0x15,0x75,0x15,0x1F,0x11,0x00,0x40,0x40,0x40,0x23,0x2C,0x10,0x2C,
0x23,0x40,0x40,0x40,0x00,0x20,0x13,0x0A,0x06,0x42,0x42,0x7F,0x06,0x0A,0x13,0x22,
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,0x20,0x60,0x80,0x60,0x20,0x00,0x20,0x60,0x80,0x60,0x20,0x00,0x20,0x60,0x80,
0x60,0x20,0x00,0x20,0x60,0x80,0x60,0x20,0x00,0x20,0x60,0x80,0x60,0x20,0x00,0x20,
0x60,0x80,0x60,0x20,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,0x02,0x03,0x00,0x03,0x02,0x00,0x02,0x03,0x00,0x03,0x02,
0x00,0x02,0x03,0x00,0x03,0x02,0x00,0x02,0x03,0x00,0x03,0x02,0x00,0x02,0x03,0x00,
0x03,0x02,0x00,0x02,0x03,0x00,0x03,0x02,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,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,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

uchar code map1[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : E:\3310\1\qq.bmp模
;  宽×高(像素): 84×48
;  字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/504字节
;  数据转换日期  : 2004-7-30 13:40:24*/
0x00,0x00,0x02,0xFA,0x8A,0x8A,0x8A,0xFA,0x02,0x02,0xFE,0x03,0x02,0x00,0x40,0x4F,
0xC9,0x79,0x49,0xCF,0x00,0xFC,0x00,0x00,0xFF,0x00,0x02,0x82,0x02,0xBE,0x22,0x63,
0xA2,0x22,0x22,0xA2,0x02,0x00,0x00,0x01,0x01,0x01,0x01,0xF9,0x09,0x05,0x03,0x01,
0x00,0x00,0x10,0x14,0x14,0x94,0xD4,0xBF,0x94,0x5C,0x54,0x12,0x10,0x00,0x00,0xFF,
0x29,0x29,0xFF,0x00,0xFF,0x29,0x29,0xFF,0x00,0x00,0x04,0x04,0x04,0xC4,0x3F,0xD4,
0x14,0x94,0x74,0x06,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x04,0x04,0x07,0x00,
0x00,0x00,0x04,0x02,0x01,0x04,0x04,0x03,0x00,0x01,0x04,0x04,0x07,0x00,0x02,0x01,
0x00,0x07,0x04,0x04,0x05,0x04,0x06,0x00,0x03,0x00,0x00,0x80,0x40,0x44,0x84,0x07,
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x92,0x51,0x30,0x37,0x14,0x14,0x14,0x04,0x07,
0x00,0x00,0x26,0x21,0x44,0x84,0x07,0x02,0x01,0x04,0x04,0x07,0x00,0x00,0x04,0x02,
0x05,0x04,0x04,0x02,0x01,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x30,0x48,0x88,0x10,0x60,0x78,0x04,0x04,0xF8,0x00,0x00,0x00,0x00,0x00,0x1C,0xE2,
0x02,0x04,0x08,0x04,0x84,0x84,0x82,0x02,0x02,0x02,0x01,0x81,0x41,0x21,0x21,0x20,
0x00,0x04,0x07,0x18,0x60,0x80,0x00,0x00,0xF0,0x0C,0x03,0x00,0xFC,0x00,0x00,0x04,
0x0E,0x04,0xC0,0x60,0x62,0x37,0x12,0x90,0x16,0x19,0x7A,0xFC,0xF8,0xF0,0x80,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0x08,0x10,0xE0,0x00,0x00,0x00,0xF8,0x07,0x00,0x00,
0x02,0x12,0x12,0x1F,0xF4,0xA0,0x00,0x00,0x00,0x40,0x80,0x81,0x8C,0x5C,0x3C,0x2C,
0x40,0x40,0x40,0x20,0x00,0x00,0x80,0xC0,0x64,0x5F,0x45,0xC9,0x83,0x04,0x04,0x04,
0x1B,0x20,0x40,0x80,0x80,0x01,0x00,0x00,0x00,0x00,0x10,0x14,0x23,0x21,0xA1,0x51,
0xF1,0x3F,0x12,0xE2,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,
0x21,0x22,0x22,0x22,0x7F,0x41,0x41,0x47,0x49,0xCB,0x0F,0x06,0x06,0x04,0x0C,0x1C,
0x14,0x34,0x24,0x24,0x14,0x14,0x12,0x0A,0x06,0x01,0x00,0x00,0x00,0x00,0xE0,0x20,
0x2F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x00,0x00,0xF8,0x21,0x21,0x40,0x40,0x20,0xD1,0x8A,0x0C,0x10,0x20,0xC0,
0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x1F,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,
0x00,0x20,0x07,0x38,0x00,0x3F,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,
0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x07,0x38,0x04,0x22,0x01,0x31,0x10,0x28,
0x08,0x24,0x04,0x23,0x00,0x20,0x00,0x20
};

void xp(uchar *map)//写一屏图
{
uchar e;
uchar t;
uchar k;
uint d;
   d=0;
   for(t=0;t<6;t++)
    {  
      for(k=0;k<84;k++)
      {
        e=*map;     
        write_byte(e,1);
        map++;      
      } 
    } 
}

void main(void)//主程序
{
  uint t; 
  res=0;res=0;res=0;
  res=1;
  sce=1;
  sdin=1;
  sclk=1;
  write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
  write_byte(0xd3,0);//设定液晶偏置电压(高--低)
  write_byte(0x20,0);//使用基本指令
  write_byte(0x0C,0);//设定显示模式,正常显示

  while(1)
  {
   qp();//清屏
   for(t=0;t<30000;t++);//延时
   xp(map1); 
   for(t=0;t<30000;t++);//延时
   qp();//清屏
   for(t=0;t<30000;t++);//延时
   xp(map2); 
   for(t=0;t<30000;t++);//延时
  }
}


⌨️ 快捷键说明

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