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

📄 lcd.c

📁 结合pic18f452开发的单总线高精度温度传感器(DS18B20),精度为0.5。
💻 C
字号:
#include "pic18fxx2.H"
#include "lcd.h"
char  int2charLCD[]="0123456789";
 
//void lcd_wait(void); 
#include "pic18fxx2.h"
#define RS       RC5
#define RS_DIR   TRISC5
#define RW   RC6
#define RW_DIR   TRISC6
#define EN   RC7
#define EN_DIR   TRISC7
#define INPUT    0X01
#define OUTPUT   0X00
#define RS_HIGH()  RS=1;RS_DIR=OUTPUT
#define RS_LOW()   RS=0;RS_DIR=OUTPUT
#define RW_HIGH()  RW=1;RW_DIR=OUTPUT
#define RW_LOW()   RW=0;RW_DIR=OUTPUT
#define EN_HIGH()  EN=1;EN_DIR=OUTPUT
#define EN_LOW()   EN=0;EN_DIR=OUTPUT
#define Key_CLK   RB0
#define CLK_DIR   TRISB0
#define Key_Data  RB5
#define Data_DIR  TRISB5
#define uchar      unsigned char
#define TRUE       1
#define FALSE      0

//static uchar reciv_data=0X00;
static uchar keynumber[17]={0X89,0X9F,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static uchar  dis[32]={0X30,0X30,0X30,0X32,0X33,0X34,0X35,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00};
//const uchar  table1[ ] = {"DATA  07-090-7"};
//const uchar  table2[ ] = {"TIME  17:53:34"};
//uchar PARITY;
static uchar error=0x00;
//bit result;
void delay1(uchar ms)
{uchar w;
    while(ms--)
	{
      
	  for(w=250;w!=0;w--)  
	   ;
       ;
       ;
       ;
	}
}
void delay_us(uchar us)
{ 
  while(us--);
}		
uchar lcd_busy()
 {                          
    uchar result;
    TRISD=0XFF;
    PORTD=0XFF;
    RS_LOW ();
    RW_HIGH(); 
    EN_HIGH();
    result=(PORTD&0x80);
    EN_LOW();
    TRISD=0X00;
    return result;   
    
 }

void lcd_wcmd(uchar cmd)

{                          
    while(lcd_busy()); 
    RS_LOW(); 
    RW_LOW(); 
    EN_LOW();
    ;
    ; 
    ;
    ;
    PORTD =cmd ;
    
    ;
    ;
    ;
    ;
    EN_HIGH(); 
    ;
    ;
    ;
    ;
    EN_LOW();
      
}
void lcd_wdat(uchar dat)
{                          
   while(lcd_busy());
   TRISD=0X00;
    RS_HIGH();
    RW_LOW(); 
    EN_LOW(); 
    
    PORTD = dat;
    ;
    ;
    ;
    ;
    EN_HIGH(); 
    ;
    ;
    ;
    ;
    EN_LOW(); 
}
void lcd_init()
{   delay1(15);                     
    lcd_wcmd(0x38);      //16*2显示,5*7点阵,8位数据
    delay1(5);
    lcd_wcmd(0x38);         
    delay1(5);
    lcd_wcmd(0x38);         
    delay1(5);
    lcd_wcmd(0x0c);      //显示开,关光标
    delay1(5);
    lcd_wcmd(0x06);      //移动光标
    delay1(5);
    lcd_wcmd(0x01);      //清除LCD的显示内容
    delay1(5);
    
    
}
void lcd_pos(uchar pos)
{                          
  lcd_wcmd(pos | 0x80);  //数据指针=80+地址变量
}

⌨️ 快捷键说明

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