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

📄 lcd1602.c

📁 温度的动态显示
💻 C
字号:
#include "..\dp8051.h"
#include "lcd.h"


unsigned char code welcome1[]={"welcome.to.shnu!"};
unsigned char code welcome2[]={"enter.the.menu"};

void main(void)
{
    delay20ms();
    init_lcd();
    display_signal(0xf,1,0x30);                     //第一个数表示某行第几个,第二个数表示第几行,第三个表示要显示的内容
    display_list(0,0,welcome1);
    //display_list(0,1,welcome2);
    while(1);
}


void init_lcd(void)
{   
    output=0;
    write_command_1602(clear);
    delay5ms();
    write_command_1602(function);
    delay5ms();
    write_command_1602(part_open);
    delay5ms();
    write_command_1602(gb_right);
    delay5ms();
}


void write_command_1602(unsigned char address_buf)
{
     output=address_buf;
     rs_lcd=0;
     rw_lcd=0;
     e_lcd=0;
     e_lcd=1;	
}

unsigned char read_command_1602()
{
	 rs_lcd=1;
	 rw_lcd=1;
	 e_lcd=0;
	 e_lcd=0;
	 e_lcd=1;
	 return(output);
}

void write_data_1602(unsigned char data_buf)
{
	read_data_1602();
	output=data_buf;
	rs_lcd=1;
	rw_lcd=0;
        e_lcd=0;
        e_lcd=0;
  	e_lcd=1;

}

unsigned char read_data_1602()
{
        rs_lcd=1;
	rw_lcd=1;
	e_lcd=0;
	e_lcd=0;
	e_lcd=1;
	return(output);
}

void display_signal(unsigned char x, unsigned char y, unsigned char data1)
{
	y&=0x1;                            //和1相与,若为零表示在第一行,若为1表示在第二行
	x&=0xf;                            //和f(15)相与,确保一行显示不超过16个字
	if(y==1) 
	   x|=0x40;                         //等于把x(80h---8fh)+40h=c0h---cfh
//也可以这样写:if(y==0)
//             {
//              x=0x80+x;
//              else x=0xc0+x;
//              }
	x|=0x80;
	write_command_1602(x);
	write_data_1602(data1);
	bg_lcd=0;
}

void display_list(unsigned char x,unsigned char y,unsigned char code *list_data1)      //这种定义常用于字库数组和结构体中
{
        unsigned char length;
        length=0;
        y&=0x1;
        x&=0xf;
        while (list_data1[length]>0x20)
        {
           if(x<=0xf)
             {
               display_signal(x,y,list_data1[length]);
               length++;
               x++;
             }
        }
        
             
} 

void delay5ms()
{
    unsigned int delay_buf_a=5000;
	while(delay_buf_a--);
}

void delay20ms()
{
	unsigned int delay_buf_b=20;
	while(delay_buf_b--)
	{    
	    unsigned int delay_buf_c=1000;
		while(delay_buf_c--);
	};
}






⌨️ 快捷键说明

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