日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

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

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

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

          ;
          ;*********************************************************************
          ;* To put the HEX value to Display ,,
          ;* High nibble first than Low nibble
          ;* Input : W Reg.
          ;*********************************************************************
          PutHex
          banksel W_BUFR
          movwf W_BUFR ; Save W Register !!
          swapf W_BUFR,W ; High nibble first !!
          call Hex2ASCII
          call putc
          ;
          movf W_BUFR,W
          call Hex2ASCII
          call putcLCD
          return
          ;
          ;******************************************************************
          ;* Convert a low nibble to ASCII code
          ;* Input : W Reg.
          ;* Output: W Reg.
          ;******************************************************************
          Hex2ASCII
          andlw 0x0f ; Mask Bit 4 to 7
          movwf Hex_Bfr
          sublw .09
          btfsc STATUS,C ; If W less than A (C=1) --> only add 30h
          goto Add_W_30
          Add_W_37 movlw 0x37
          goto Hex_cont
          Add_W_30 movlw 0x30
          Hex_cont addwf Hex_Bfr,W ; The correct ASCII code for this char !!
          return
          ;
          ;*******************************************************************
          ;* SendCmd - Sends command to LCD *
          ;* This routine splits the command into the upper and lower *
          ;* nibbles and sends them to the LCD, upper nibble first. *
          ;*******************************************************************
          SendCmd
          banksel Byte
          movwf Byte ; Save WREG in Byte variable
          call Delay_1MS
          swapf Byte,W ; Send upper nibble first
          andlw 0x0f
          movwf LCD_DATA
          bcf LCD_CNTL,RS ; Clear for command
          bsf LCD_CNTL,E ; Clock nibble into LCD
          bcf LCD_CNTL,E
          movf Byte,W ; Write lower nibble last
          Send_4bit andlw 0x0f
          movwf LCD_DATA
          bcf LCD_CNTL,RS ; Clear for command
          bsf LCD_CNTL,E ; Clock nibble into LCD
          bcf LCD_CNTL,E
          return
          ;
          ;*******************************************************************
          ;* clrLCD - Clear the contents of the LCD *
          ;*******************************************************************
          clrLCD
          movlw CLR_DISP ; Send the command to clear display
          call SendCmd
          return
          ;
          ;*******************************************************************
          ;* L1homeLCD - Moves the cursor to home position on Line 1 *
          ;*******************************************************************
          L1homeLCD
          movlw DD_RAM_ADDR|0x00 ; Send command to move cursor to
          call SendCmd ; home position on line 1
          return

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

          ;*******************************************************************
          ;* L2homeLCD - Moves the cursor to home position on Line 2 *
          ;*******************************************************************
          L2homeLCD
          movlw DD_RAM_ADDR|0x28 ; Send command to move cursor to
          call SendCmd ; home position on line 2
          return


          ;*******************************************************************
          ;* Delay - Generic LCD delay (1.024mS @ 4MHz) *
          ;* Since the microcontroller can not read the busy flag of the *
          ;* LCD, a specific delay needs to be executed between writes to *
          ;* the LCD. *
          ;*******************************************************************
          Delay_1MS ; 2 cycles for call
          clrf Count ; 1 cycle to clear counter variable
          Dloop
          nop
          decfsz Count,F ; These two instructions provide a
          goto Dloop ; (256 * 3) -1 cycle count
          return ; 2 cycles for return
          ;
          ;*******************************************************************
          ;* Delay - 1mS base delay *
          ;* input : W Reg. *
          ;* *
          ;*******************************************************************
          Delay_MS
          movwf Count1
          ;
          DLop1 call Delay_1MS
          decfsz Count1,F
          goto DLop1
          return
          ;
          END


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉