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

📄 1602_display.c

📁 完成了温度采集并显示的功能
💻 C
字号:
#include <aduc834.h>
#include <absacc.h>
#include"..\headers\1602.h"
/*****************************************************************
注意驱动电压应调整如下: 驱动电压Vo   :0.71--0.8v
                         背光电压LED+ :2.37V
/**************************************************************/

extern unsigned char code CGTAB[32];
bit LCD_BUSY;
void LCD_Init()
{
	unsigned char data i;
	WR_CMD(Mode_2row_5_10);	//8位数据接口,5x7点阵,单行显示
	for(i=0;i<3;i++)		//厂家要求,未明原因
	{
		LCD_En=1;
		LCD_En=0;			//下降沿操作
		Wait(1000);
	}

	WR_CMD(Scr_clc);		//清屏
	WR_CMD(Dis_NoCur);	    //无光标
//	WR_CMD(Mode_Cur_R);
	WR_CGRAM(CGTAB,32,0x00);//	建立CGRAM字库 
	
}
/***********短延时子程序*************************/

void Wait(int data length)
{
	while (length >=0)
    	length--;
}

/**********写指令子程序*****************************/

void WR_CMD(unsigned char command)

{	while(CHECK_LCD_BUSY());
	LCD_RS  = 0;                   //CODE REGESTER
	LCD_RW  = 0;                  //WRITE MODE
	DAT_BUS = command;
	LCD_En  = 1;                 //下降沿触发使能
	LCD_En  = 0;
}

/**********写显示数据子程序**********************************/

void WR_DAT(unsigned char dat)

{	
    while(CHECK_LCD_BUSY());
   	LCD_RS  = 1;                //DATA REGESTER
	LCD_RW  = 0;                //WRITE MODE
	
	  DAT_BUS = dat;            //向总线写数据
	  LCD_En  = 1;              //下降沿触发使能
	  LCD_En  = 0;

}

/********建立CGRAM字库**********************************/

void WR_CGRAM(unsigned char *CGTAB,unsigned char counter,unsigned char address)
{

  	unsigned char data i;

    WR_CMD(0x40|address);		   //设置CGRAM的地址

	for(i=0;i<counter;i++)
	{
		WR_DAT(CGTAB[i]);  //自定义字符数据写入CGRAM
		
	}


}
/*****************DDRAM地址指针设置*************************/

void DDRAM_ADDR_SET(unsigned char row,unsigned char column)
{
   unsigned char address;
   address = column;
   if (row==2)
   {
   	 address |= 0x40;		//修正第二行显示地址40H--67H
   }
   address |= 0x80 ;			//设置DDRAM地址指针命令
   WR_CMD(address);

}

/******************BUSY位检测子程序******************************/

unsigned char CHECK_LCD_BUSY()
{
 unsigned char temp1;
 LCD_RS  = 0;
 LCD_RW  = 1;					 //读LCD状态
 DAT_BUS = 0xFF;
 LCD_En  = 1;
 temp1   = DAT_BUS;				 //状态值读入
 LCD_En  = 0;
 temp1 &= 0x80;					 //取最高位,把其他位屏蔽
 return temp1;

}

⌨️ 快捷键说明

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