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

📄 12864-s.c

📁 使用 ST7567 屏的初始化及其应用程序
💻 C
字号:
/*
Projet name:TXD12864
File   name:TXD12864.C
Drive    IC: NT7565
Interface  :
        Module          MCU
        D7~D0           P1
        RE              RXD(P3.0)
        WR              TXD(P3.1)
        A0              INT1(P3.3)
        /RES            T0(P3.4)
        /CS1            T1(P3.5)
Author:       
ver:         
Date:         2007-10-24

*/

/*
Define Hard
*/
#pragma  SMALL
#include <Reg51.h>
#include <stdio.h>
#include <Intrins.h>



#define Vop 0x20        //Set Reference Voltage  (0~0x3F)
#define Ratio 0x23     //SET INTERNAL REGULATOR RESISTOR RATIO(100B)-POR(20~27)


#define INIT_TH0 0xFC
#define INIT_TL0 0x20


/*
Define Interface
*/
//sbit WRB= P3^1;
//sbit K=P3^2;
//sbit D_I= P3^3;
//sbit CS1= P3^5;
//sbit E =P3^0;
//sbit Rest=P3^4;


sbit SCL= P3^0;
sbit K=P3^2;
sbit D_I= P3^3;
sbit CS1= P3^5;
sbit SI =P3^1;
sbit Rest=P3^4;

unsigned int sys_clock;
/*
DisPlay Bmp Data
*/


unsigned char code  Dbmp[];


/*
Define Sub
*/

void Int_Ser();
void WriteData(unsigned char Rs,unsigned char SData);
void Delay(unsigned int DelayTime);

/*
SubProgram part
*/
void Int_Ser (void) interrupt 0{
/*
Sub Name: Int_Ser
Function: Halt
Input:    None
OutPut:   None
*/
unsigned char i;
         EX0=0;
         for(i=1;i<=0xAF;i++);
  if (!K)
        {
         while (K);
 Int_SL: while(!K);
         for (i=1 ;i<=0xFF;i++);
         if (K) goto Int_SL;
         }
         while(K);
         EX0=1;

}

void Int_Sys_Clock (void) interrupt 1
{
	TH0=INIT_TH0;
	TL0=INIT_TL0;
	
	sys_clock++;
	
//	Rest=!Rest;		//TEST
	
}

void Delay(unsigned int DelayTime)	//延时子程序Delay+1ms  DelayTime<65535
{        
	 
	 EA=0;				//禁能所有中断
       	 TF0=0;
       	 sys_clock=0;
       	 
       	 TMOD=0X01;
       	 
       	 TH0=INIT_TH0;
       	 TL0=INIT_TL0;
       	 
       	 ET0=1;				//使能定时器0的中断
       	 EA=1;				//使能所有中断
       	 TR0=1;				//启动定时器0
//       	 D_I=1;
	  
	 while(sys_clock!=DelayTime);
	 TR0=0;
	 ET0=0;

}

/*
void Delay(unsigned int DelayTime){
/*
Sub Name  : Delay
Function  : Delay
Delay Time:(Delay+1)×27us  DelayTime<65535
Input     : DelayTime
OutPut    : None
*/
/*         for (;DelayTime>0;DelayTime--)
         {
         DelayTime++;
         DelayTime--;
         };
}
*/


void WriteData(unsigned char Rs,unsigned char SData){
/*
Sub Name  : WriteData
Function  : Write Data to module
            Serial data input
Input     : Rs (Command byte or Display data)
            Sdata (Write data)
OutPut    : None
*/
				unsigned char i;

        CS1=0;
        SCL=1;
        D_I=Rs;
        for (i=0;i<8;i++)
        {
        	SData<<=1;
        	SCL=0;
                _nop_();
        	SI=CY;
                _nop_();
        	SCL=1;
                _nop_();
      	}
        _nop_();      
        _nop_();
        D_I=!Rs;
        CS1=1;

}



/*
Mail program part
*/

void main()
{
unsigned char i,j;
char code *PlayData;
      IE=0x81;
      IP=0x01 ;
      TCON=0x00;
      SP=0x60;
      K=1;
                           //Start to Initialization
      Rest=1;
      Rest=0;              //hard Rest
      Delay(50);         //Delay 1S
      Rest=1;
      WriteData(0,0xE2);   //Soft rest

      WriteData(0,0xA3);   //SET LCD bias(A2-1/9bias; A3-1/7bias)
      WriteData(0,0xA0);   //SET ADC NORMAL(OB-POR seg0-00h) A0: NORMAL  A1: REVERSE
      WriteData(0,0xC8);   //SET COM OUTPUT SCAN DIRECTION(0XXXB-NORMAL)-POR  COM63-->COM0
      WriteData(0,0xA4);   // SET DISPLAY NORMAL (0B-NORMAL)-POR  A4:NORMAL A5:ENTIRE DISPLAY ON
      WriteData(0,0xA6);   //SET NORMAL DISPLAY MODE(0B-NORMAL)  A6:NORMAL  A7:REVERSE
      WriteData(0,Ratio);   //SET INTERNAL REGULATOR RESISTOR RATIO(100B)-POR
      WriteData(0,0x81);   //
      WriteData(0,Vop);   // SET CONTRAST CONTROL REGISTER(00,0000H-11,1111H)
      WriteData(0,0x2F);   //SET POWER CONTROL REGISTER (ALL INTERNAL)
      WriteData(0,0x40);  //
                           //end of initialzation
      WriteData(0,0xAF);   //DisPlay On
      Delay(100);
      while (1)
      {
         
          for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i++)
                WriteData(1,0xFF);
          }
      Delay(1000);
       for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i++)
                WriteData(1,0x00);   //All DisPlay  Off
          }
      Delay(650);

      for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i+=2)
                {
                WriteData(1,0xFF);
                WriteData(1,0x00);
                }
          }
      Delay(650);

     for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i+=2)
                {
                WriteData(1,0x00);
                WriteData(1,0xFF);
                }
          }
      Delay(650);

   for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<=128;i++)
                WriteData(1,0xAA);
          }
      Delay(650);

    for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i++)
                WriteData(1,0x55);
          }
      Delay(650);
/*
    for (j=0;j<4;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i++)
                WriteData(1,0x00);
          }
   for (j=0;j<4;j++)
          {
          WriteData(0,0xB4+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i++)
                WriteData(1,0xff);
          }
         Delay(650); 
*/

        PlayData=&Dbmp;
        for (j=0;j<8;j++)
          {
          WriteData(0,0xB0+j); //Set Page Address 0xB0-0xB7  Icon Address 0xB8
          WriteData(0,0x10);   //Set Column Address MSB 0x10-0x1F
          WriteData(0,0x00);   //Set Column Address LSB 0x00-0x0F
          for(i=0;i<128;i++)
                WriteData(1,*PlayData++);
          }
 
      Delay(1000);
      
       }
}


⌨️ 快捷键说明

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