×
嵌入式开发 > 详情

PIC16Fxxx的LCD驱动程序(适用于HD44780兼容的驱动器)

发布时间:2020-07-01 发布时间:
|

PIC16FxxxLCD驱动程序(适用于HD44780兼容驱动器)

;************************************************
;* LCD.ASM *
;************************************************
;* Contains subroutines to control an external *
;* lcd panel in 4-bit mode. These routines *
;* were designed specifically for the panel on *
;* the MCU201 workshop demo board, but should *
;* work with other LCDs with a HD44780 type *
;* controller. *
;* Routines include: *
;* - InitLCD to initialize the LCD panel *
;* - putcLCD to write a character to LCD *
;* - SendCmd to write a command to LCD *
;* - clrLCD to clear the LCD display *
;* - L1homeLCD to return cursor to line 1 home*
;* - L2homeLCD to return cursor to line 2 home*
;* - PutHexLCD to write a HEX Code to LCD *
;* - Hex2ASCII to convert 4 bits to ASCII Code*
;************************************************
;
list p=16f877
#i nclude p16f877.inc>
;
; Defines for I/O ports that provide LCD data control
; PORTB.0 - PORTB.3 are Data Pins for LCD Module
; PORTB.4 is E Control Signal for LCD
; PORTB.5 is RS Control Signal for LCD
; PORTC.2 is BackLight Control pin for LCD Module
;
global InitLCD
global putcLCD
global clrLCD
global L1homeLCD
global L2homeLCD
global SendCmd
global PutHexLCD
global Hex2ASCII
;
LCD_DATA equ PORTB
LCD_CNTL equ PORTB

; Defines for I/O pins that provide LCD control
RS equ 5
E equ 4

; LCD Module commands
DISP_ON EQU 0x00C ; Display on
DISP_ON_C EQU 0x00E ; Display on, Cursor on
DISP_ON_B EQU 0x00F ; Display on, Cursor on, Blink cursor
DISP_OFF EQU 0x008 ; Display off
CLR_DISP EQU 0x001 ; Clear the Display
ENTRY_INC EQU 0x006 ;
ENTRY_INC_S EQU 0x007 ;
ENTRY_DEC EQU 0x004 ;
ENTRY_DEC_S EQU 0x005 ;
DD_RAM_ADDR EQU 0x080 ; Least Significant 7-bit are for address
DD_RAM_UL EQU 0x080 ; Upper Left coner of the Display
;

; Directs linker to provide 4 variables in GPR memory
UDATA
Byte RES 1
Byte1 RES 1
Count RES 1
Count1 RES 1
W_BUFR RES 1
Hex_Bfr RES 1
;
PROG1 CODE
;*******************************************************************
;* The LCD Module Subroutines *
;* Command sequence for 2 lines of 5x16 characters *
;*******************************************************************
InitLCD
BANKSEL TRISB
movlw 0xc0 ; Initialize inputs/outputs for LCD
movwf TRISB
BANKSEL LCD_DATA
clrf LCD_DATA ; Clear LCD data control bits
;
movlw .50 ; Power=On delay 50mS



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM入门篇之(一)概念