📄 lcd5.c
字号:
#include <reg52.h>
#include <string.h>
#include <intrins.h>
#define uchar unsigned char
sbit Lcd_Rs=P3^0;
sbit Lcd_Rw=P3^1;
sbit Lcd_E=P3^2;
//extern variable declaration
//***********************************************************************************//
//extern unsigned char data KeyValue,Re_Point,PointBuf,T0_Exit;
//extern unsigned char idata Re_Buf[40];
//extern bit Bit_Exit,Bit_Call,Bit_Ring,Bit_Break,Bit_Time;
//extern bit Re_End,Se_End,Bit_Skip,HandFree,Bit_Menu;
//===================================================================================//
//short delay when delay <256 us
//***********************************************************************************//
void ShortDelay(unsigned char Delay_Set)
{
unsigned char data i;
for (i=0;i<Delay_Set;i++)
{
_nop_();
}
}
//===================================================================================//
//***********************************************************************************//
//long delay when delay <65535 us
//***********************************************************************************//
void LongDelay(unsigned int Delay_Set)
{
unsigned int data i;
for (i=0;i<Delay_Set;i++)
{
_nop_();
}
}
//===================================================================================//
//Lcd sub program area
//***********************************************************************************//
//lcd write sub program
//write a byte to lcd p0
//***********************************************************************************//
void Lcd_WByte(bit LcdStatu,unsigned char LcdBuf)
{
Lcd_Rs=LcdStatu; //if write data
Lcd_Rw=0; //lcdstatu=1;else lcdstatu=0;
ShortDelay(4); //>1.5us
P1=LcdBuf;
ShortDelay(4);
Lcd_E=1;
ShortDelay(6); //>1.5us
Lcd_E=0;
Lcd_Rs=0;
if ((LcdBuf==0x01)&&(!LcdStatu))
{
LongDelay(5000);
}
else
ShortDelay(150);
}
//===================================================================================//
//***********************************************************************************//
//lcd read sub program
//read a byte to p0 and return them
//***********************************************************************************//
unsigned char Lcd_RByte(bit LcdStatu)
{
unsigned char data LcdBuf;
P1=0xFF;
Lcd_Rs=LcdStatu; //if write data
Lcd_Rw=1; //lcdstatu=1;else lcdstatu=0;
ShortDelay(3);
Lcd_E=1;
ShortDelay(3); //>1.5us
LcdBuf=P0;
ShortDelay(8); //>1.5us
Lcd_E=0;
Lcd_Rs=0;
ShortDelay(150);
return LcdBuf;
}
//===================================================================================//
//***********************************************************************************//
//lcd initial
//used only in main body begin
//***********************************************************************************//
void Lcd_Init()
{
LongDelay(50000); //延时〉40ms
LongDelay(50000);
Lcd_WByte(0,0X30);
LongDelay(5000);
Lcd_WByte(0,0x0c); //延时〉4.1ms
Lcd_WByte(0,0X3b); //功能设置 >100US
LongDelay(5000); //功能设置 >72US
Lcd_WByte(0,0X01);
ShortDelay(200);
// Lcd_WByte(0,0X0C); //开启屏幕显示 >72US
// Lcd_WByte(0,0X01); //清除屏幕 >4.6MS
Lcd_WByte(0,0X06);
LongDelay(5000);
Lcd_WByte(0,0X30); // 扩充指令
LongDelay(5000);
Lcd_WByte(0,0X32);
LongDelay(5000);
Lcd_WByte(0,0X36);
LongDelay(5000);
// Lcd_WByte(0,0X03);
LongDelay(5000);
// Lcd_WByte(0,0X80);
// LongDelay(5000);
// Lcd_WByte(0,0X80);
// LongDelay(5000);
// Lcd_WByte(0,0X30);
// LongDelay(5000);
// Lcd_WByte(0,0X40);
//LongDelay(5000);
// Lcd_WByte(0,0X02);
// LongDelay(5000);
}
uchar code bmp[1024]={0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x30,0x00,
0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x30,0x00,
0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x00,0x06,0x00,0x20,0x00,0x00,0x50,0x00,0x40,0x00,0x00,0x00,0x18,0x00,
0x00,0x00,0x00,0x06,0x00,0x20,0x00,0xC0,0x50,0x00,0x60,0x00,0x00,0x00,0x14,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x03,0x40,0x50,0x00,0x60,0x00,0x00,0x00,0x14,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x04,0x40,0x90,0x00,0x60,0x1F,0xC0,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x04,0x40,0x90,0x00,0x60,0x20,0x40,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x30,0x08,0x40,0x90,0x00,0x60,0x20,0x40,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x28,0x08,0x40,0x90,0x00,0x60,0x40,0x40,0x00,0x12,0x00,
0x00,0x18,0x00,0x06,0x00,0x28,0x08,0x40,0x90,0x00,0xA0,0x40,0x40,0x00,0x11,0x00,
0x08,0x18,0x00,0x06,0x00,0x28,0x08,0x40,0x90,0x00,0x90,0x40,0x40,0x00,0x11,0x00,
0x08,0x18,0x00,0x06,0x00,0x28,0x08,0x41,0x10,0x00,0x90,0x40,0x20,0x00,0x31,0x00,
0x08,0x14,0x00,0x06,0x00,0x28,0x08,0x41,0x10,0x00,0x90,0x40,0x20,0x01,0xC1,0x00,
0x08,0x14,0x00,0x06,0x00,0x24,0x08,0x41,0x10,0x00,0x90,0x80,0x20,0x06,0x01,0x01,
0x08,0x14,0x00,0x06,0x00,0x24,0x08,0x41,0x10,0x00,0x90,0x80,0x20,0x08,0x01,0x01,
0x08,0x14,0x00,0x06,0x00,0x24,0x08,0x41,0x08,0x01,0x11,0x00,0x20,0x10,0x01,0x02,
0x08,0x14,0x00,0x05,0x00,0x24,0x08,0x41,0x08,0x01,0x11,0x00,0x20,0x10,0x00,0x84,
0x08,0x12,0x00,0x05,0x00,0x24,0x08,0x21,0x08,0x01,0x09,0x00,0x20,0x20,0x00,0x84,
0x08,0x12,0x00,0x05,0x00,0x22,0x08,0x21,0x08,0x01,0x09,0x00,0x20,0x20,0x00,0x84,
0x08,0x09,0x00,0x05,0x00,0x22,0x08,0x21,0x04,0x02,0x08,0x80,0x20,0x40,0x00,0x84,
0x08,0x09,0x00,0x05,0x00,0x22,0x08,0x21,0x04,0x02,0x04,0x80,0x20,0x40,0x00,0x84,
0x08,0x09,0x00,0x04,0x80,0x42,0x08,0x21,0x04,0x02,0x04,0x80,0x20,0x80,0x00,0x84,
0x08,0x09,0x00,0x04,0x80,0x42,0x08,0x21,0x04,0x02,0x04,0x80,0x11,0x00,0x01,0x04,
0x08,0x08,0x80,0x04,0x80,0x41,0x08,0x21,0x02,0x04,0x02,0x80,0x11,0x00,0x01,0x04,
0x04,0x08,0x80,0x04,0x80,0x41,0x08,0x21,0x02,0x04,0x02,0x80,0x11,0x00,0x01,0x04,
0x04,0x08,0x80,0x04,0x40,0x41,0x10,0x21,0x02,0x04,0x02,0x80,0x11,0x00,0x01,0x02,
0x04,0x08,0x80,0x04,0x40,0x40,0x90,0x21,0x02,0x04,0x01,0x80,0x11,0x00,0x01,0x02,
0x04,0x08,0x80,0x04,0x20,0x80,0x90,0x21,0x02,0x08,0x01,0x00,0x11,0x00,0x01,0x02,
0x04,0x08,0x80,0x04,0x20,0x80,0xD0,0x21,0x02,0x08,0x01,0x00,0x12,0x00,0x02,0x02,
0x02,0x08,0x40,0x08,0x27,0x80,0x60,0x21,0x01,0x10,0x01,0x00,0x0A,0x00,0x02,0x02};
uchar flash1[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x03,0xE0,
0x03,0xE0,0x03,0xC0,0x03,0xE0,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uchar flash2[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x10,0x00,0x00,0x90,
0x00,0x00,0x02,0x00,0x10,0x20,0x00,0x04,0x00,0xC0,0x04,0x00,0x00,0x00,0x00,0x00};
main()
{uchar i,j;
uchar temp=0;
Lcd_Init();
while (1)
{
for (i=0;i<16;i++)
{
Lcd_WByte(0,0xc0+i);
ShortDelay(100);
Lcd_WByte(0,0X80);
ShortDelay(100);
Lcd_WByte(1,flash1[i]);
ShortDelay(100);
Lcd_WByte(1,flash1[i+1]);
ShortDelay(100);
}
LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000);
LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000);
LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000);
for (i=0;i<16;i++)
{
Lcd_WByte(0,0xc0+i);
ShortDelay(100);
Lcd_WByte(0,0X80);
ShortDelay(100);
Lcd_WByte(1,flash2[i]);
ShortDelay(100);
Lcd_WByte(1,flash2[i+1]);
ShortDelay(100);
}
LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000);
LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000);
LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000); LongDelay(5000);
}
/*for (j=0;j<32;j++)
{
Lcd_WByte(0,0xc0+j);
ShortDelay(50);
Lcd_WByte(0,0X80);
ShortDelay(50);
for (i=0;i<16;i++)
{
Lcd_WByte(1,bmp[i+j*16]);
ShortDelay(50);
}
} */
//Lcd_WByte(1,0X00);
ss: goto ss;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -