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

📄 lcd.c

📁 单片机超声波信号采集程序
💻 C
字号:
#include <reg52.h>

/****************************************************************************/
//lcm所用引脚定义
sbit   SID   =  P2^3; //数据
sbit   SCLK  =  P2^7; //时钟
/****************************************************************************/
//lcm函数声明
void lcm_w_word(unsigned char *str);  				//写字符  例:lcm_w_word("您好!");
void lcm_w_test(bit start, unsigned char ddata);    //(0,指令) (1,数据)
void lcm_w_byte(unsigned char bbyte);  				//写一个字节给lcm
void delaynms(unsigned int di);  					//延时
void lcm_init(void); 								//lcm初始化
//void lcm_clr(void);  								//清屏
/****************************************************************************/
/****************************************************************************/
//lcm的函数定义                                                                                                               
//初始化LCM                                                                                                                   
void lcm_init(void)  																										  	
{																															  
   delaynms(10); 		//启动等待,等LCM讲入工作状态
   lcm_w_test(0,0x30);  //8 位介面,基本指令集
   lcm_w_test(0,0x0c);  //显示打开,光标关,反白关
   lcm_w_test(0,0x01);  //清屏,将DDRAM的地址计数器归零  
}

//写指令或数据  (0,指令) (1,数据)
void lcm_w_test(bit start, unsigned char ddata) 
{
 	unsigned char start_data,Hdata,Ldata;
    if(start==0) 
    	start_data=0xf8;  //0:写指令
    else    
      	start_data=0xfa;  //1:写数据
  
    Hdata=ddata&0xf0;    //取高四位
    Ldata=(ddata<<4)&0xf0;  //取低四位
    lcm_w_byte(start_data);   //发送起始信号
	delaynms(1); //延时是必须的
    lcm_w_byte(Hdata);       //发送高四位
   	delaynms(1);  //延时是必须的
    lcm_w_byte(Ldata);    //发送低四位
    delaynms(1);
}

//发送一个字节(底层函数)
void lcm_w_byte(unsigned char bbyte) 
{
 	unsigned char i;
	for(i=0;i<8;i++)
	{
	   SID=bbyte&0x80; //取出最高位
	   SCLK=1;
	   SCLK=0;
	   bbyte<<=1; //左移
	}  
}

//延时(LCM占用)
void delaynms(unsigned int di) {
 unsigned int da,db;
  for(da=0;da<di;da++);
     for(db=0;db<10;db++);
}
 
//清屏函数
/*
void lcm_clr(void){
 lcm_w_test(0,0x01);
}
*/
//向LCM发送一个字符串,长度64字符之内。
//应用:lcm_w_word("您好!"); 
void lcm_w_word(unsigned char *str){
  while(*str != '\0'){
   lcm_w_test(1,*str);
         str++; 
        }
  *str = 0;
}
/*********************************************************************************************************************************/ 

⌨️ 快捷键说明

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