📄 12864.c
字号:
#include<reg52.h>
#include <intrins.h>
#define U1 bit
#define U8 unsigned char
#define PU8 unsigned char pdata
#define U16 unsigned int
#define VU8 volatile unsigned char
#define VU16 volatile unsigned int
#ifndef NULL
#define NULL ((void *) 0L)
#endif
#ifndef BIT
#define BIT(B) (1 << (B))
#endif
#define LCDPORT P1
sbit CAS1 = P3^5;
sbit CAS2 = P2^7;
sbit RS = P3^4;
sbit RW = P3^3;
sbit E = P3^2;
sbit LED = P2^0;
//void Delay(U8 time)
//{
//U8 i;
// while(time--) for(i =255; i > 0; i--);
//}
U8 AskBusy(void)
{
U8 temp;
RS = 0; RW = 1;
LCDPORT = 0xff; E = 1;
temp = LCDPORT; E = 0;
return (temp & 0x80);
}
void CmdPos(U8 cmd, U8 num)
{
if(!num) {CAS1 = 1; CAS2 = 0;}
else {CAS1 = 0; CAS2 = 1;}
while(AskBusy());
RS = 0; RW = 0;
E = 1;
LCDPORT = cmd;
E = 0;
}
void TansData(U8 ch)
{
while(AskBusy());
RS = 1; RW = 0;
E = 1;
LCDPORT = ch;
E = 0;
}
void TansCmd(U8 cmd) {CmdPos(cmd, 0); CmdPos(cmd, 1);}
void InitLCD(void) {CAS1 = 0; CAS2 = 0; E = 0; TansCmd(0x3e);}
void OpenLcd(void) {TansCmd(0xc0); TansCmd(0x3f);}
void CleanLCD(void)
{
U8 i,j;
for(j = 0; j < 8; j++)
{
TansCmd(0xb8 | j); TansCmd(0x40);
CAS1 = 1; CAS2 = 0;
for(i = 0; i < 64; i++) TansData(0);
CAS1 = 0; CAS2 = 1;
for(i = 0; i < 64; i++) TansData(0);
}
}
void LoadPic(void)
{
PU8 i, j;
U8 code *pc = 0x400;
for(j = 0; j < 8; j++)
{
TansCmd(0xb8 | j); TansCmd(0x40);
CAS1 = 1; CAS2 = 0;
for(i = 0; i < 64; i++) {TansData(*pc); pc++;}
CAS1 = 0; CAS2 = 1;
for(i = 0; i < 64; i++) {TansData(*pc); pc++;}
}
}
void main(void)
{
InitLCD();
CleanLCD();
LoadPic();
OpenLcd();
LED = 0;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -