📄 lcd_data.c
字号:
#include <reg52.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include "define.h"
//#include "val.h"
//#include "function.h"
#define START_LINE 0xc0
#define DIS_ON 0x3f
#define DIS_OFF 0x3e
#define X_ADDRESS 0xb8
#define Y_ADDRESS 0x40
extern unsigned char dms100;
bit flash_bit;
void write_com(unsigned char byte)
{
// E=0;
// W_R=0;
DI=0;
P0=byte;
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
E=0;
}
void write_data(unsigned char byte)
{
// E=0;
DI=1;
// W_R=0;
P0=byte;
// _nop_(); // 11 月 17 日修改
E=1;
// _nop_();
E=0;
}
/*void close_display(void)
{
CS1=1;
CS2=1;
W_R=0;
DI=0;
write_com(DIS_OFF);
}*/
void open_display(void)
{
CS1=1;
CS2=1;
W_R=0;
DI=0;
write_com(START_LINE);
write_com(DIS_ON);
}
//-------------------------------------------------
// display word right left
//-------------------------------------------------
void display_l_word(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=1;
CS2=0;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=16;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=16;
DI=1;
while(i--) write_data(*p++);
}
void display_r_word(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=0;
CS2=1;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=16;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=16;
DI=1;
while(i--) write_data(*p++);
}
//-------------------------------------------------
// display line
//-------------------------------------------------
void display_line(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
E=0;
W_R=0;
CS1=1;
CS2=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=64;
DI=1;
while(i--) write_data(*p++); // left
CS1=0;
CS2=1;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=64;
DI=1;
while(i--) write_data(*p++); // right
// next page
CS1=1;
CS2=0;
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=64;
DI=1;
while(i--) write_data(*p++); // left
CS1=0;
CS2=1;
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=64;
DI=1;
while(i--) write_data(*p++);
}
/*void display_wb_line(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
E=0;
W_R=0;
CS1=1;
CS2=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=64;
DI=1;
while(i--) write_data(~(*p++)); // left
CS1=0;
CS2=1;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=64;
DI=1;
while(i--) write_data(~(*p++)); // right
// next page
CS1=1;
CS2=0;
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=64;
DI=1;
while(i--) write_data(~(*p++)); // left
CS1=0;
CS2=1;
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=64;
DI=1;
while(i--) write_data(~(*p++));
}*/
//-------------------------------------------------
// display byte right left
//-------------------------------------------------
/*void display_L_byte(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=1;
CS2=0;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=8;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=8;
DI=1;
while(i--) write_data(*p++);
}*/
void display_r_byte(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=0;
CS2=1;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=8;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=8;
DI=1;
while(i--) write_data(*p++);
}
/*void display_rwb_byte(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=0;
CS2=1;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=8;
DI=1;
while(i--) write_data(~(*p++));
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=8;
DI=1;
while(i--) write_data(~(*p++));
}
void display_lwb_byte(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=1;
CS2=0;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=8;
DI=1;
while(i--) write_data(~(*p++));
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=8;
DI=1;
while(i--) write_data(~(*p++));
}
void display_r_byte_flash(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=0;
CS2=1;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=8;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=8;
DI=1;
while(i--) write_data(*p++|0x80);
}
void display_l_byte_flash(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
CS1=1;
CS2=0;
E=0;
W_R=0;
DI=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
p=Rom_address;
i=8;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=8;
DI=1;
while(i--) write_data(*p++|0x80);
}*/
//-------------------------------------------------
// display word
//-------------------------------------------------
/*void display_left(unsigned char x,unsigned char y,unsigned char len,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
E=0;
W_R=0;
DI=0;
CS1=1;
CS2=0;
p=Rom_address;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(*p++);
}
void display_right(unsigned char x,unsigned char y,unsigned char len,unsigned char code *Rom_address)
{
unsigned char i;
unsigned char code *p;
E=0;
W_R=0;
DI=0;
CS1=0;
CS2=1;
p=Rom_address;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(*p++);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(*p++);
}*/
//-------------------------------------------------
// display black right left
//-------------------------------------------------
void display_l_black(unsigned char x,unsigned char y,unsigned char len)
{
unsigned char i;
E=0;
W_R=0;
DI=0;
CS1=1;
CS2=0;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(0x00);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(0x00);
}
void display_r_black(unsigned char x,unsigned char y,unsigned char len)
{
unsigned char i;
E=0;
W_R=0;
DI=0;
CS1=0;
CS2=1;
write_com(x|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(0x00);
DI=0;
write_com((x+1)|X_ADDRESS);
write_com(y|Y_ADDRESS);
i=len;
DI=1;
while(i--) write_data(0x00);
}
void flash_r_byte(unsigned char x,unsigned char y,unsigned char code *Rom_address)
{ if(dms100<5) display_r_black(x,y,8);
if(dms100>5) display_r_byte(x,y,Rom_address);
flash_bit=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -