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

📄 lcd.c

📁 电赛一等奖作品:音频信号分析仪单片机源码
💻 C
字号:
#include <at89x51.h>
#include <intrins.h>
#include "lcd.h"
typedef unsigned int uint;
typedef unsigned char uchar;
////////////////////////////////////////////////////////////////////////
#define CMD_CLEAR 			0x01
#define CMD_HOME 			0x03
#define CMD_DISPLAYON		0x0c
#define CMD_FUNCTION		0x30   //8 bit basic instr
#define CMD_ENTRY			0x06   //ac plus
#define CMD_SHOWCURSOR      0x0f
#define CMD_SETCURSOR       0x14
#define CMD_GRAPH_ON		0x3e
#define CMD_GRAPH_OFF		0x3c
////////////////////////////////////////////////////////////////////////
sbit RS=P1^5;
sbit RW=P2^1;
sbit EN=P1^7;
////////////////////////////////////////////////////////////////////////
void Delay()
{
	uchar n;
	for(n=0;n<5;n++);	
}
void SendLcdCmd(uchar cmd)
{
	P2=0xff;
	RS=0;
	RW=0;
	EN=0;
	P0=cmd;
	EN=1;
    	_nop_();
	EN=0;
}
void SendLcdData(uchar dat)
{
	P2=0xff;
	RS=1;
	RW=0;
	EN=0;
	P0=dat;
	EN=1;
	_nop_();
	EN=0;
	RS=0;
}
/*
uchar ReadLcdState()
{
	uchar state;
	P2=0xff;
	RS=0;
	RW=1;
	EN=0;
	EN=1;
	_nop_();
	state=P0;
	EN=0;
	return state;
}  
uchar ReadLcdData()
{
	uchar dat;
	P2=0xff;
	RS=1;
	RW=1;
	EN=0;
	EN=1;
	_nop_();
	dat=P0;
	EN=0;
	RS=0;
	return dat;
}
*/
void ShowCursor()
{
    Delay();
    SendLcdCmd(CMD_SHOWCURSOR);
    Delay();
    SendLcdCmd(CMD_SETCURSOR);
}
void HideCursor()
{
    Delay();
    SendLcdCmd(CMD_DISPLAYON);
    
}
void LcdClear()
{
	uint n;
	Delay();
	SendLcdCmd(CMD_CLEAR);
	for(n=0;n<4800;n++);
}
void LcdInit()
{
	uint n;
	EN=0;
	SendLcdCmd(CMD_FUNCTION);
	Delay();
	SendLcdCmd(CMD_DISPLAYON);
	Delay();
	SendLcdCmd(CMD_CLEAR);
	for(n=0;n<4800;n++);
	SendLcdCmd(CMD_ENTRY);
	EN=0;
}
bit SetPos(uchar x,uchar y)
{
	uchar addr;
	if(y>3 || x>7) return 0;
	switch(y)
	{
		case 0: addr=0x80+x;
				break;
		case 1: addr=0x90+x;
				break;
		case 2: addr=0x88+x;
				break;
		case 3: addr=0x98+x;
				break;
	}
	Delay();
	SendLcdCmd(addr);
	EN=0;
	return 1;
}
void LcdPrint(uchar *c, uchar len)
{
	uchar i;
	for(i=0;i<len;i++)
	{
		Delay();
		SendLcdData(c[i]);
	}
	EN=0;
}
bit LcdPrintLine(uchar *c,uchar len,uchar x,uchar y)
{
	uchar i=0,j=x;
	bit add=0;
	if(!SetPos(x,y)) return 0;
	while(i<len) 
	{	
		Delay();
		SendLcdData(c[i]);
		i++;
		if(add)
		{
			j++;
			if(j>=8)
			{
				y++;if(y>=4) y-=4;
				j=0;
				SetPos(0,y);
			}
		}
		add=!add;
	}
	EN=0;
	return 1;
}
void DrawPic(char *pic)
{
	uchar x,y;
	uint i=0;
    SendLcdCmd(CMD_GRAPH_OFF);
    Delay();
    for(y=0x80;y<0xa0;y++)
    {
        SendLcdCmd(y);
        Delay();
        SendLcdCmd(0x80);
        Delay();
        for(x=0;x<16;x++)
        {
           SendLcdData(pic[i]);
           Delay();
           i++;
        }
    }
    for(y=0x80;y<0xa0;y++)
    {
        SendLcdCmd(y);
        Delay();
        SendLcdCmd(0x88);
        Delay();
        for(x=0;x<16;x++)
        {
           SendLcdData(pic[i]);
           Delay();
           i++; 
        }
    }
    SendLcdCmd(CMD_GRAPH_ON);
    Delay();
}

	 
	

⌨️ 快捷键说明

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