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

📄 lcd.c

📁 用于ATMEGA8单片机调试 包括串口
💻 C
字号:
#include "config.h"

void LCD_WIRTE_DELAY(unsigned int lcd_time) 
{
WDR();
while(--lcd_time)
{;}
WDR();
}

 /*--------------------------向LCD写命令---------*/
///////////////////////////////////////////////////////////////////////////////////////////////////
void LCD_WRI_ORDER(unsigned char ORDER)
 { 
  unsigned char DATA;
  WDR();
 // PORTD=PORTD&0X1F;//PD7,6,5置0
  PORTA=PORTA&0XF8;
  LCD_WIRTE_DELAY(200);
  //PORTD=PORTD&0X1F;//PD7,6,5置0
  PORTA=PORTA&0XF8;
  PORTB=ORDER;                                        
  //PORTD=PORTD|0X80;//PD7置1
  PORTA=PORTA |0X04;
  LCD_WIRTE_DELAY(200);
  //PORTD=PORTD&0X1F;//PD7,6,5置0
  PORTA=PORTA&0XF8;
 }


/*-----------写到lcd中显示数据---------*/
////////////////////////////////////////////////////////////////////////////////////
void LCD_WRI_DATA(unsigned char DATA)
{

 unsigned char ords;
 WDR();
  //PORTD=PORTD&0X7F;//PD7置0
  PORTA=PORTA&0XFB; 
  LCD_WIRTE_DELAY(200);
  //PORTD=PORTD|0X20; //PD5置1
  PORTA=PORTA|0X01;
  PORTB=DATA;
  //PORTD=PORTD|0X80;//PD7置1
  PORTA=PORTA |0X04;
  LCD_WIRTE_DELAY(200);
  //PORTD=PORTD&0X1F;//PD7,6,5置0
  PORTA=PORTA & 0XF8;
}




/*-------------延时46us----------*/
void LCD_DELAY()
 {
  unsigned int time=500;
  WDR();
  while(--time);
  WDR();
 }
 
 
void LCD_CLEAR()
{
  LCD_WRI_ORDER(0X01);
  LCD_DELAY();
}


//#define EN (DDRD|=BIT(PD7))
//#define RW (DDRD|=BIT(PD6))
//#define CR (DDRD|=BIT(PD5))
//////////////////////////////////////////////////////////////
#define EN (DDRA|=BIT(PA2))
#define RW (DDRA|=BIT(PA1))
#define CR (DDRA|=BIT(PA0))
/////////////////////////////////////////////////////////////


void LCD_WORD_INI(void)
 {
    WDR();
    EN;RW;CR;
   LCD_WRI_ORDER(0X30);			   /*----------------清显示--------------------*/
   LCD_DELAY();
   LCD_WRI_ORDER(0X30);			   /*----------------清显示--------------------*/
   LCD_DELAY();
   LCD_DELAY();
   LCD_WRI_ORDER(0X0C);			   /*------------ 显示右移光标右移 --------------*/
   LCD_DELAY(); 
   LCD_WRI_ORDER(0X01);			   /*------------ 显示右移光标右移 --------------*/
   Delay1ms(1);
   LCD_WRI_ORDER(0X06);			   /*-------功能定为基本指令集动作8位------------*/
   LCD_DELAY();
 }
/*
void LCD_PIC_INI()
 {
   WDR();
   LCD_WORD_INI();
   LCD_WRI_ORDER(0X32);			 /*-------功能设定为基本指令集8位显示图形-----------*/
 /*  LCD_DELAY();
   LCD_WRI_ORDER(0X36);			 /*-------功能设定为扩充指令集8位显示图形-----------*/
 //  LCD_DELAY();
 //}*/
void LCD_ADD(unsigned char ADD)//写入地址
 {
   LCD_WRI_ORDER(ADD);
   LCD_DELAY();
  } 
  
void DISPLAY_LCD(unsigned char ADD,unsigned char *DISP)//显示字符串
{  
   unsigned char Y;
   WDR();
   LCD_WRI_ORDER(ADD);
   LCD_DELAY();
  for(Y=0;*DISP!='\0';Y++)
   {  
     LCD_DELAY();     
     LCD_WRI_DATA(*DISP);
     LCD_DELAY();DISP++;
   }
 }

void shuzi_disp(unsigned char ADD,unsigned char NUMber) //一位数字显示
   {
      unsigned char number[]={"0123456789abcdef"}; 
	  WDR();
	  LCD_WRI_ORDER(ADD);    LCD_DELAY(); 
	  LCD_WRI_DATA(number[NUMber]);   LCD_DELAY();
   }
void NUM_DISPLAY_LCD(unsigned char ADD,unsigned int NUMber)//数字显示
{ 
  unsigned char WW;
  unsigned char QW;
  unsigned char BW;
  unsigned char SW;
  unsigned char SWS;
  unsigned char GW;
  unsigned char number[]={"0123456789 "}; 
  WDR();
  LCD_WRI_ORDER(ADD);
  LCD_DELAY();
  WW=NUMber/10000;
  QW=(NUMber%10000)/1000;
  BW=(NUMber%1000)/100;
  SWS=(NUMber%1000)%100;
  SW=SWS/10;
  GW=SWS%10;
  if(WW)
    LCD_WRI_DATA(number[WW]);
  else
    LCD_WRI_DATA(number[10]);
    LCD_DELAY();
  if(QW||WW)
    LCD_WRI_DATA(number[QW]);
  else 
    LCD_WRI_DATA(number[10]);
    LCD_DELAY();
  if(BW||QW||WW)
    LCD_WRI_DATA(number[BW]);
  else 
	LCD_WRI_DATA(number[10]);
    LCD_DELAY();
  if(SW!=0||BW||QW||WW)
    LCD_WRI_DATA(number[SW]);
  else
    LCD_WRI_DATA(number[10]);
    LCD_DELAY();
    LCD_WRI_DATA(number[GW]);
    LCD_DELAY();
 }

⌨️ 快捷键说明

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