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

📄 ide1.c

📁 这是12864液晶显示程序
💻 C
字号:
#include <c8051f020.h>
#include <intrins.h>
#define SYSCLK 11059200
sbit P30 = P3^3;
sbit P31 = P3^4;
sbit P32 = P3^5;
sbit P33 = P3^6;
sbit P34 = P3^7;
sbit P35 = P3^0;

#define LCD_DATA P2
#define LCD_RS P30
#define LCD_RW P31
#define LCD_E P32
#define LCD_CS1 P33
#define LCD_CS2 P34
#define LCD_RST P35
#define SELECTCS 0
unsigned char Count1ms;
void Delay1ms(unsigned char);


char code screen1[]=
{ 
0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00,
};
char code screen2[]=
{
0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
};
/*--  文字:  汉  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
char code Han[]=
{

0x00,0x10,0x61,0x06,0xC0,0x30,0x02,0x3E,0xC2,0x02,0x82,0x62,0x1F,0x02,0x00,0x00,
0x00,0x02,0x02,0x3F,0x20,0x20,0x10,0x08,0x05,0x02,0x05,0x08,0x10,0x30,0x10,0x00,

};
/*--  文字:  字  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
char code Zi[]=
{
0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
};

//------------------------------------------------
void LCD_WaitReady1(void)
 {  
    LCD_DATA = 0xff;
    _nop_();
    LCD_CS2 = SELECTCS;
    LCD_RW = 1;
    LCD_RS = 0;
    LCD_E = 1;
    while(LCD_DATA&0x80);
    LCD_CS2 =!SELECTCS;
  }
//--------------------------------------------
void LCD_WaitReady2(void) 
 {  
    LCD_DATA = 0xff;
    _nop_();
    LCD_CS1 =SELECTCS;
    LCD_RW = 1;
    LCD_RS = 0;
    LCD_E = 1;
    while(LCD_DATA&0x80);
    LCD_CS1 =!SELECTCS;
  }
//---------------------------------------------
void LCD_WriteCommand1(char ch)
{
    LCD_WaitReady1();
    LCD_CS2 = SELECTCS;
    LCD_RW = 0;
    LCD_RS = 0;
    LCD_DATA = ch;
    LCD_E = 1;
    LCD_E = 0;
    LCD_CS2 =!SELECTCS; 
 }
//------------------------------------------
void LCD_WriteCommand2(char ch)
{
    LCD_WaitReady2();
    LCD_CS1 = SELECTCS;
    LCD_RW = 0;
    LCD_RS = 0;
    LCD_DATA = ch;
    LCD_E = 1;
    LCD_E = 0;
    LCD_CS1 =!SELECTCS;
 }
//---------------------------------------------
void LCD_WriteData1(char ch) 
 {
    LCD_WaitReady1();
    LCD_CS2 = SELECTCS;
    LCD_RW = 0;
    LCD_RS = 1;
    LCD_DATA = ch;
    LCD_E = 1;
    LCD_E = 0;
    LCD_CS2 =!SELECTCS;
 }
//-----------------------------------------
void LCD_WriteData2(char ch) 
 {
    LCD_WaitReady2();
    LCD_CS1 = SELECTCS;
    LCD_RW = 0;
    LCD_RS = 1;
    LCD_DATA = ch;
    LCD_E = 1;
    LCD_E = 0;
    LCD_CS1 =!SELECTCS;
 }  
//--------------------------------------------
void LCD_WriteHZ(char x,char y,char *Dot)  
 { 
  char i;
   for(i=0;i<32;i ++)
   { 
     if((x+i%16)<64)
      {
       LCD_WriteCommand1(0xB8+y+i/16);
       LCD_WriteCommand1(0x40+x+i%16);
       LCD_WriteData1(Dot[i]);
       }
      else
       {
        LCD_WriteCommand2(0xB8+y+i/16);
       LCD_WriteCommand2(0x40+x-64+i%16);
       LCD_WriteData2(Dot[i]);
        }
    }
  }
//-------------------------------------------
void InitLCD(void)
 {
   char i,j;

   LCD_RST = 0;
   Delay1ms(1);
   LCD_RST = 1;
   LCD_WriteCommand1(0xc0);
   LCD_WriteCommand2(0xc0);
   LCD_WriteCommand1(0x3f);
   LCD_WriteCommand2(0x3f);
   for(j=0;j<8;j++)
  {
    LCD_WriteCommand1(0xB8+j);
    LCD_WriteCommand1(0x40);
    for (i=0;i<64;i++)
    LCD_WriteCommand2(0xB8+j);
    LCD_WriteCommand2(0x40);
    for (i=0;i<64;i++)
    LCD_WriteData2(0x00);
   }
  }
//-------------------------------------------
void DispBmp(char *buf)
 {
   int i,j;
   for(j=0;j<8;j++)
   {
    LCD_WriteCommand1(0xB8+j);
    LCD_WriteCommand1(0x40);
    for (i=0;i<64;i++)
    LCD_WriteData1(buf[(j*2)*64+i]);
    LCD_WriteCommand2(0xB8+j);
    LCD_WriteCommand2(0x40);
     for (i=0;i<64;i++)
    LCD_WriteData2(buf[(j*2+1)*64+i]);
    }
  }
//----------------------------------------------
void SYSCLK_Init(void)
 { 
   int i;
   OSCXCN = 0x67;
   for (i=0;i<256;i++);
   while(!(OSCXCN&0x80));
   OSCICN = 0x88;
  }
//------------------------------------------
void PORT_Init()
 {
   XBR2 = 0x40; 
   
  }
//----------------------------------------------
void Timer0_Init(void) 
 {
   CKCON = 0x8;
   TMOD = 0x1;
   Count1ms = 10;
   TR0 = 0;
   TH0 = (-SYSCLK/1000)>>8;
   TL0 = -SYSCLK/1000;
   TR0 = 1;
   IE = 0x2;
  }
void Timer0_ISR(void) interrupt 1
  {  
    Count1ms = 10;
    TH0 =(-SYSCLK/1000)>>8;
	TL0 = -SYSCLK/1000;
	if (Count1ms)Count1ms--;
   }
//------------------------------------------------------
void Delay1ms(unsigned char T)
 {
   Count1ms = T;
   while(Count1ms);
  }
//-----------------------------------------
void Delay1s(unsigned char T)
 {
    while(T)
	 {
	   Delay1ms(200);
       Delay1ms(200);
	   Delay1ms(200);
       Delay1ms(200);
       Delay1ms(200);
	   T --;
      }
  }  
//--------------------------------------
void main(void)
 { 
   WDTCN = 0xde;
   WDTCN = 0xad;
   SYSCLK_Init();
   Timer0_Init();
   PORT_Init();
   EA = 1;
   InitLCD();
   Delay1s(1);
   for(;;)
   {
     DispBmp(screen1);
	 Delay1s(3);
     DispBmp(screen2);
	 Delay1s(3);
	 InitLCD();
	 LCD_WriteHZ(2,1,Han);
	 Delay1ms(100);
     LCD_WriteHZ(60,3,Zi);
	 Delay1s(3);
    }
  }















⌨️ 快捷键说明

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