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

📄 lcd12232ea.c.bak

📁 这是一个PIC单片机的实时操作系统
💻 BAK
字号:
#include <pic.h>
#include <pic1687x.h>
#include "ZWH2.h"
 
//定义:
extern  void delay1ms(char  count);
extern  void  delay3(void);
extern bank1 char  c485Buf[31];
void check_busy();
//void LCD_Write_Com(unsigned char val);
//void LCD_Write_Dat(unsigned char val);
void ioint();
void delayLCD(unsigned int time);
void LcdFucInt(void) ;
void  LcdCout(unsigned char COUNT  ) 	;
void  LCDCOUNTOVER (unsigned char COUNT);
void  LcdFuc(unsigned char  FucLcd);//显示内容用
void  LcdFuc2(char CLen,const  unsigned char *FData);//显示菜单方法2
//LCD显示用的数字缓存
unsigned char DispCout[1];
unsigned char  timecount ;

//
void delayLCD(unsigned int time)
	{
	int s;
	for(s=0;s<time;s++);
	}

void check_busy(){
 RS=0;RW=1;                             //按照上表,设定好读取LCD状态字的控制线。
 do{
  E=0;
  E=1;       
 }while(Lcd_IO&0x80);               //判断最高位状态,如果是1,则反复送E时续,直到LCD空闲
  
 E=0;  
  SetLcd_IO=0;  
                           //使IO口处于输出状态,为向LCD写数据作准备。
}
//写命令与数据
void LCD_Write_Com(unsigned char val)
{ 
check_busy();                   //检查LCD是否空闲
  RS=0;RW=0;                  //根据上表设定控制脚,CS1、2在check_busy();里事先有设定
 E=1;
 Lcd_IO=val;                      //E时续下降沿输入数据
 asm("nop");
  asm("nop");
 E=0;
 SetLcd_IO=0xff;              //写完数据,立即把IO口设定成高阻,提高可靠性。
 delayLCD(10);
 
}

void LCD_Write_Dat(unsigned char val)
{ 
check_busy();
 RS=1;RW=0;
 E=1;
 Lcd_IO=val;
 E=0; 
 SetLcd_IO=0xff;
 delayLCD(10);
}
// 初始化函数
void ioint()
{
 PORTA=0;                                
 PORTD=0;                                     //先清0 C、D口,避免干扰
 SetLcd_CON =0B11100000;          //把C口控制线设成输出。
 SetLcd_IO=0x00;                                //D口输入。
}
//
void Lcdint() //显示屏初始化
{
	ioint();
	//delay3 的延时是300US
	//delay1ms 0x10 是12MS 0A是 7.8MS 0X7F是100MS
	//;FUNCTION SET 设定为八位并口模式
  delay1ms(0X7F);
	LCD_Write_Com(0x30);
	//
//	要延时200USS
  delay3();
 LCD_Write_Com(0x30);
 //;DISPON/OFF CONTROL  显示状态设定
 //要延时200USS
  delay3();
 LCD_Write_Com(0X0F);
 //;DISPLAY CLEAR   消除显示
 //延时100MS
 delay1ms(0x7f);
 LCD_Write_Com(0X01);
 //ENTRY MODE SET  进入设定点
 LCD_Write_Com(0X06);	
	
//延时10MS	
  delay1ms(0x7f);
}
       
void  LcdFuc2(char CLen,const unsigned  char *FData)
{
     
	char  c;
	LCD_Write_Com(0X01);
	delay1ms(0x7f);	
	if(CLen<15)
		{
			LCD_Write_Com(0x80);
          nop;
		  if (CLen != 0)
				  {

				    for (c = 0; c < CLen; c++)
				     {
				      
				      LCD_Write_Dat(*FData++); // Send data
				      nop;
		 	      }
				  }
			}
		else  if(CLen>14)
			{
				LCD_Write_Com(0x80);
			    for (c = 0; c < 14; c++)
			     {
			      LCD_Write_Dat(*FData++); // Send data
			      }
			 	LCD_Write_Com(0X90);
			    	for (c = 14; c < CLen; c++)
			     {
			        LCD_Write_Dat(*FData++); // Send data
			      }      
			}		
	}



 
 

⌨️ 快捷键说明

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