?? app023_glcd.c
字號:
#include <p18f8680.h>
#include <delays.h>
#include "APP023_GLCD.h"
#define LCD_E1 LATGbits.LATG1
#define LCD_RW LATHbits.LATH5
#define LCD_RS LATHbits.LATH4
#define LCD_DATA LATF
#define TRIS_LCD_DATA TRISF
#define TRIS_LCD_E1 TRISGbits.TRISG1
#define TRIS_LCD_RS TRISHbits.TRISH4
#define TRIS_LCD_RW TRISHbits.TRISH5
void GLCD_Initial( void )
{
LCD_E1 = 0 ;
TRIS_LCD_RS = 0 ;
TRIS_LCD_RW = 0 ;
TRIS_LCD_E1 = 0 ;
TRIS_LCD_DATA = 0 ;
LCD_DATA = 0x00 ;
LCD_Delay_nms(40) ;
LCD_DATA = 0b00110000 ;
LCD_CMDW_Timing( ) ;
LCD_Delay_nms(10) ; // Delay 2 us
LCD_DATA = 0b00110000 ;
LCD_CMDW_Timing( ) ;
LCD_Delay_nms(10) ; // Delay 2 us
LCD_DATA = 0b00001000 ;
LCD_CMDW_Timing( ) ;
LCD_Delay_nus( 200 ) ;
LCD_DATA = 0b00000001 ;
LCD_CMDW_Timing( ) ;
LCD_Delay_nms( 20 ) ;
LCD_DATA = 0b00000110 ;
LCD_CMDW_Timing( ) ;
LCD_Delay_nms( 10 ) ;
LCD_DATA = 0b00110000 ; // Function Set
LCD_CMDW_Timing( ) ;
LCD_Delay_nms( 10 ) ;
LCD_DATA = 0b00001000 ; // Turn Display off
LCD_CMDW_Timing( ) ;
LCD_Delay_nms(10 ) ;
LCD_DATA = 0b00001110 ; // Turn Display On
LCD_CMDW_Timing( ) ;
LCD_Delay_nms( 10 ) ;
LCD_DATA = 0b00000110 ; // Set entry mode
LCD_CMDW_Timing( ) ;
LCD_Delay_nms( 10 ) ;
}
void putcGLCD( unsigned char TheChar )
{
LCD_DATA = TheChar ;
LCD_DATW_Timing( ) ;
}
void putrsGLCD( const rom unsigned char *CS_Pointer )
{
while ( *CS_Pointer != 0 )
putcGLCD(*CS_Pointer++ ) ;
}
void putsGLCD( unsigned char *S_Pointer )
{
while ( *S_Pointer != 0 )
putcGLCD(*S_Pointer++ ) ;
}
void setcurGLCD( char CurY , char CurX)
{
unsigned char BaseAddr ;
switch ( CurY )
{
case 0 :
BaseAddr = 0x80 ;
break ;
case 1 :
BaseAddr = 0x90 ;
break ;
case 2 :
BaseAddr = 0x88 ;
break ;
case 3 :
BaseAddr = 0x98 ;
break ;
default :
BaseAddr = 0x80 ;
break ;
}
BaseAddr += CurX ;
cmdwGLCD(BaseAddr ) ;
}
void cmdwGLCD( unsigned char TheCmd )
{
LCD_DATA = TheCmd ; // Set cursor !!!!
LCD_CMDW_Timing( ) ;
}
void LCD_CMDW_Timing( void )
{
Nop( ) ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
LCD_RS = 0 ;
LCD_RW = 0 ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
LCD_E1 = 1 ;
LCD_WR_Delay( ) ;
LCD_E1 = 0 ;
LCD_Delay_nus(100) ;
}
void LCD_DATW_Timing( void )
{
Nop( ) ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
LCD_RS = 1 ;
LCD_RW = 0 ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
LCD_E1 = 1 ;
LCD_WR_Delay( ) ;
LCD_E1 = 0 ;
LCD_Delay_nus(100) ;
}
void LCD_WR_Delay( void )
{
Delay10TCYx(2) ;
}
void LCD_Delay_nms( int Value_ms )
{
int i ;
for ( i = 0 ; i < Value_ms ; i++ )
Delay1KTCYx( 4 ) ;
}
void LCD_Delay_nus( int Value_us )
{
int i ;
for ( i = 0 ; i < Value_us ; i++ )
{
Nop( ) ;
Nop( ) ;
Nop( ) ;
Nop( ) ;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -