• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: 4行LCD程式碼設定?
#2
新會員
新會員


查看用戶資訊
你的led datasheet檔案已經損壞,沒辦法解壓縮~很配服你用組語完成,但程式沒下註解,閱讀者沒那麼多耐心幫你一行一行看~你可以試著將lcd DD RAM Address 全部加上0x80~
0x00 ->0x80
0x40 ->0xc0
0x14 ->0x94
0x54 ->0xd4

最近剛好也有用到WINSTAR 4*20字的lcd~功能正常,所以你也可以試試~

發表於: 2009/3/30 13:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


4行LCD程式碼設定?
#1
新會員
新會員


查看用戶資訊
請問一下
我的程式碼在APP01上的一行LCD上可以顯示,但最近換了一個四行的LCD,加了程式碼卻只能顯示2行,不知道是哪裡的設定有問題?可以麻煩幫我看一下嗎?(附檔是LCDDATASHEET跟程式碼檔案)

Datasheet LCD RAM position

1 2 3 -----------------------------------20
第一行 00 01 02 ------------- 13
第二行 40 41 42 ------------- 53
第三行 14 15 16 ------------- 27
第四行 54 55 56 ------------- 67

-------------------------主程式--------------
list p=18f4585
#include <p18f4585.inc>
EXTERN InitLCD,putcLCD,Send_Cmd,L1homeLCD,L2homeLCD,L3homeLCD,L4homeLCD,clrLCD,PutHexLCD

PUT_Address macro STR
movlw UPPER STR
movwf TBLPTRU
movlw HIGH STR
movwf TBLPTRH
movlw LOW STR
movwf TBLPTRL
call Put_String
endm

start code

org 0x00
bra start

prog code

start

call InitLCD
call clrLCD
call L1homeLCD
PUT_Address String_1
call L2homeLCD
PUT_Address String_2
call L3homeLCD
PUT_Address String_3
call L4homeLCD
PUT_Address String_4
bra $
Put_String
TBLRD*+
movlw 0x00
cpfseq TABLAT,0
bra Send_String
return
Send_String
movf TABLAT,w,0
call putcLCD
bra Put_String

String_1 db "First ",0x00
String_2 db "Second",0x00
String_3 db "Third",0x00
String_4 db "Fourth",0x00
end



end

--------------------------LCD設定-------------------------
list p=18f4585
#include <p18f4585.inc>

global InitLCD
global putcLCD
global clrLCD
global L1homeLCD
global L2homeLCD
global L3homeLCD
global L4homeLCD
global Send_Cmd
global PutHexLCD
global Hex2ASCII
global Delay_xMS
global Delay_1ms

LCD_CTRL equ TRISD
LCD_DATA equ LATD

#define LCD_E_DIR TRISA,2 ;pin RA2=LCD_E
#define LCD_RW_DIR TRISD,5
#define LCD_RS_DIR TRISD,4
#define LCD_E LATA,2
#define LCD_RW LATD,5
#define LCD_RS LATD,4


CLR_DISP equ b'00000001'
Cursor_Home equ b'00000010'
ENTRY_DEC equ b'00000100'
ENTRY_DEC_S equ b'00000101'
ENTRY_INC equ b'00000110'
ENTRY_INC_S equ b'00000111'
DISP_OFF equ b'00001000'
DISP_ON equ b'00001100'
DISP_ON_C equ b'00001110'
DISP_ON_B equ b'00001111'
FUNC_SET equ b'00101000'
CG_RAM_ADDR equ b'01000000'
DD_RAM_ADDR equ b'10000000'
;DD_RAM_UL equ 0x080 ; Upper Left coner of the Display

UDATA
LCD_Byte RES 1
LCD_Temp RES 1
Count_100us RES 1
Count_1ms RES 1
Count_ms RES 1
W_BUFR RES 1
Hex_Bfr RES 1



LCD_CODE CODE

InitLCD
banksel TRISD
clrf TRISD
clrf LATD
clrf TRISA
clrf LATA

banksel LCD_DATA
bcf LCD_E
bcf LCD_RW
bcf LCD_RS
bcf LCD_E_DIR
bcf LCD_RW_DIR
bcf LCD_RS_DIR

banksel LCD_DATA
clrf LCD_DATA

banksel ADCON1
movlw b'00001101'
movwf ADCON1
banksel ADCON2
movlw b'00001011'
movwf ADCON2

banksel LCD_CTRL
movf LCD_CTRL,w
andlw 0xF0
movwf LCD_CTRL
movlw .10 ;power on delay 10ms
rcall Delay_xMS

movlw b'00000011'
rcall Send_Low_4bit
movlw .10
rcall Delay_xMS

movlw b'00000011'
rcall Send_Low_4bit
rcall Delay_1ms

movlw b'00000011'
rcall Send_Low_4bit
rcall Delay_1ms

movlw b'00000010'
rcall Send_Low_4bit
rcall Delay_1ms

movlw FUNC_SET
rcall Send_Cmd
rcall Delay_1ms

movlw DISP_ON
rcall Send_Cmd
rcall Delay_1ms

banksel CLR_DISP
movlw CLR_DISP
rcall Send_Cmd
movlw .5
rcall Delay_xMS

banksel ENTRY_INC
movlw ENTRY_INC
rcall Send_Cmd
rcall Delay_1ms

banksel DD_RAM_ADDR
movlw DD_RAM_ADDR
rcall Send_Cmd
rcall .5
rcall Delay_xMS

banksel ENTRY_INC
movlw ENTRY_INC
rcall Send_Cmd
rcall Delay_1ms

banksel DD_RAM_ADDR
movlw DD_RAM_ADDR
rcall Send_Cmd
rcall Delay_1ms

return

putcLCD
banksel LCD_Byte
movwf LCD_Byte
rcall Send_High_LCD
banksel LCD_Byte
movf LCD_Byte,W
rcall Send_Low_LCD
rcall Delay_100us
return

Send_High_LCD
swapf WREG,W
Send_Low_LCD
banksel LATD
bcf LCD_RW
andlw 0x0F
banksel LCD_Temp
movwf LCD_Temp
banksel LCD_DATA
movf LCD_DATA,W
andlw 0xF0;0x0F
banksel LCD_Temp
iorwf LCD_Temp,W
banksel LCD_DATA
movwf LCD_DATA


;DB[4:7]
banksel LATD
bsf LCD_RS
bcf LCD_RW
nop
banksel LATA
bsf LCD_E
nop
;movlw .10
;bra Delay_xMS
bcf LCD_E
return

PutHexLCD
banksel W_BUFR
movwf W_BUFR
swapf W_BUFR,W
rcall Hex2ASCII
rcall putcLCD
banksel W_BUFR
movf W_BUFR,W
rcall Hex2ASCII
rcall putcLCD
return

Hex2ASCII
andlw 0xF0
banksel Hex_Bfr
movwf Hex_Bfr
sublw .09
banksel STATUS
btfsc STATUS,C

bra _Add_W_30
_Add_W_37
movlw 0x37
bra _Hex_cont
_Add_W_30
movlw 0x30
_Hex_cont
banksel Hex_Bfr
addwf Hex_Bfr,W
return

Send_Cmd
banksel LCD_Byte
movwf LCD_Byte
rcall Send_High_4bit
banksel LCD_Byte
movf LCD_Byte,W
rcall Send_Low_4bit
rcall Delay_100us
return

Send_High_4bit
swapf WREG,W
Send_Low_4bit
;bcf LCD_RW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
andlw 0x0F
banksel LCD_Temp
movwf LCD_Temp
banksel LCD_DATA
movf LCD_DATA,W
andlw 0xF0
banksel LCD_Temp
iorwf LCD_Temp,W
banksel LCD_DATA
movwf LCD_DATA


;DB[4:7]
banksel LATD
bcf LCD_RS
bcf LCD_RW
nop
banksel LATA
bsf LCD_E
nop
;movlw .10
;bra Delay_xMS
bcf LCD_E
return

clrLCD
banksel CLR_DISP
movlw CLR_DISP
rcall Send_Cmd
movlw .5
bra Delay_xMS

L1homeLCD
banksel DD_RAM_ADDR
movlw DD_RAM_ADDR|0x00
rcall Send_Cmd
bra Delay_100us

L2homeLCD
banksel DD_RAM_ADDR
movlw DD_RAM_ADDR|0x14
rcall Send_Cmd
bra Delay_100us
L3homeLCD
banksel DD_RAM_ADDR
movlw DD_RAM_ADDR|0x40
rcall Send_Cmd
bra Delay_100us
L4homeLCD
banksel DD_RAM_ADDR
movlw DD_RAM_ADDR|0x54
rcall Send_Cmd
bra Delay_100us
Delay_xMS
banksel Count_ms
movwf Count_ms
_D_ms
call Delay_1ms
banksel Count_ms
decfsz Count_ms,F
goto _D_ms
return

Delay_1ms
movlw .10
banksel Count_1ms
movwf Count_1ms
_D_1ms
call Delay_100us
banksel Count_1ms
decfsz Count_1ms,f
bra _D_1ms
return

Delay_100us
movlw .50
banksel Count_100us
movwf Count_100us
_D_2us
nop
nop
banksel Count_100us
decfsz Count_100us,f
bra _D_2us
return

end

Attach file:


Link only for registered users
Link only for registered users

發表於: 2009/3/28 15:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------