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

📄 lcd_data.c

📁 液晶屏显示程序
💻 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 + -