?? lcd.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 + -