lcd.c

来自「使用C8051F实现脉搏及血氧饱和度测量 包括均值滤波」· C语言 代码 · 共 91 行

C
91
字号
#include <c8051f020.h>

typedef unsigned char uchar; 
typedef unsigned int uint; 

#define LCD_COM P2
sbit RS = P3^0;			 //RS=0:读写指令;RS=1:读写数据
sbit RW = P3^1;			 //RW=1:读
sbit E  = P3^2;
//------忙检查---------------

void del(uint t)
{
   while(t--);
}	
void LCD_Check_Busy()
{
   del(200);
}
//-----写指令----------------
void LCD_Write_REG(uchar ins)
{
    LCD_Check_Busy();
	RS=0;
	RW=0;
	E=1;
	del(30);
	LCD_COM=ins;
    del(30);
	E=0;
}
//-------写数据--------------
void LCD_Write_Dat(uchar dat)
{
    LCD_Check_Busy();
	RS=1;
	RW=0;
	E=1;
	del(30);
	LCD_COM=dat;
    del(30);
	E=0;
}
/***************************************************
           设置显示地址(行、列)
行:0~3
列:0~7
***************************************************/
void Set_Position(uchar row,uchar line)
{
   switch(row)
   {
     case 0: LCD_Write_REG(0x80+line);break;
     case 1: LCD_Write_REG(0x90+line);break;
     case 2: LCD_Write_REG(0x88+line);break;
     case 3: LCD_Write_REG(0x98+line);break;
	 default: break;
	}
}

/************************************************
               清屏(2ms的时间)
*************************************************/
void Clear_LCD()
{
   LCD_Write_REG(0x01);
   del(5000);
}
/*************************************************
				写字符串
**************************************************/
void LCD_Write_String(uchar *p)
{
    while(*p)
	{
	   LCD_Write_Dat(*p);
	   p++;
	}
}
/****************************************************
       液晶初始化
****************************************************/
void Init_LCD()
{
   LCD_Write_REG(0x30);  //功能设置 8位数据,基本指令
   LCD_Write_REG(0x0c);	 //显示状态 ON,游标OFF,反白OFF
   Clear_LCD();	 //清除显示
   LCD_Write_REG(0x06);	   //
   LCD_Write_REG(0x80);	  //设置DDRAM地址为0
}

⌨️ 快捷键说明

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