中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC16Fxxx的LCD驅(qū)動程序(適用于HD44780兼容

        PIC16Fxxx的LCD驅(qū)動程序(適用于HD44780兼容

        作者: 時間:2011-05-17 來源:網(wǎng)絡(luò) 收藏

        (的驅(qū)動器)

        本文引用地址:http://www.antipu.com.cn/article/150736.htm

        ;************************************************
        ;* .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 s with a 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
        Call Delay_MS
        ;
        movlw 0x02 ; Init for 4-bit interface
        call Send_4bit
        movlw .10 ; Delay 10 mS
        Call Delay_MS
        ;
        movlw b'00000011' ; Fully Initial LCD module
        call Send_4bit ; Sent '0011' data 4 time
        movlw .5 ; Delay 5mS
        Call Delay_MS
        movlw b'00000011'
        call Send_4bit
        call Delay_1MS ; Delay 1mS
        movlw b'00000011'
        call Send_4bit
        movlw b'00000010'
        call Send_4bit
        ;
        movlw b'00101000' ; Set 2 lines 5 x 7 dots
        call SendCmd
        movlw DISP_ON ; Turn display on (0x0C)
        call SendCmd
        movlw ENTRY_INC ; Configure cursor movement
        call SendCmd
        movlw DD_RAM_ADDR ; Set writes for display memory
        call SendCmd
        return
        ;
        ;*******************************************************************
        ;*SendChar - Sends character to LCD *
        ;*This routine splits the character into the upper and lower *
        ;*nibbles and sends them to the LCD, upper nibble first. *
        ;*******************************************************************
        putcLCD
        banksel Byte
        movwf Byte ; Save WREG in Byte variable
        call Delay_1MS
        swapf Byte,W ; Write upper nibble first
        andlw 0x0f
        movwf LCD_DATA
        bsf LCD_CNTL, RS ; Set for data
        bsf LCD_CNTL, E ; Clock nibble into LCD
        bcf LCD_CNTL, E
        movf Byte,W ; Write lower nibble last
        andlw 0x0f
        movwf LCD_DATA
        bsf LCD_CNTL, RS ; Set for data
        bsf LCD_CNTL, E ; Clock nibble into LCD
        bcf LCD_CNTL, E
        return


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉