¾×Á¤Ç¥½Ã±âÀÇ Á¦¾î¹ý
1. ¾×Á¤Ç¥½Ã±â¿ÍÀÇ Á¢¼Ó
PIC¿Í ¾×Á¤Ç¥½Ã±âÀÇ Á¢¼Ó¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. »ç¿ëÇÏ´Â ¾×Á¤Ç¥½Ã±âÀÇ »ç¾çÀº ´ÙÀ½°ú °°´Ù.
[¾×Á¤Ç¥½Ã±âÀÇ »ç¾ç]
ǰ¸í: SC1602BSLB ¶Ç´Â SC1602BS*B
°³¿ä: 16¹®ÀÚ 2Çà, ÇÏÀÌ ÄÜÆ®¶ó½ºÆ®
¹é¶óÀÌÆ® ºÎ°¡(BSLB¸¸)
5¡¿7 or 5¡¿10µµÆ®+Ä¿¼ Ç¥½Ã
5V ´ÜÀÏÀü¿ø, Àú¼ÒºñÀü·ù
CPU ÀÎÅÍÆäÀ̽º: 4ºñÆ® or 8ºñÆ® ÆÐ·²·¼
ÀÌ¿Í °°Àº ¾×Á¤Ç¥½Ã±â¿Í Á¢¼ÓÇϱâ À§Çؼ´Â ´Ù¼Ò ¼ÒÇÁÆ®¿þ¾î°¡ ¹ø°Å·Î¿öÁöÁö¸¸, PICÀÇ »ç¿ë Æ÷Æ®°¡ Àû°Ô ÇØ°áµÇ´Â 4ºñÆ®
ÆÐ·²·¼À» ¼±ÅÃÇϱâ·Î ÇÑ´Ù.
ÀÌ 4ºñÆ®ÀÇ µ¥ÀÌÅÍ ½ÅÈ£ À̿ܿ¡ ÇÊ¿äÇÑ ½ÅÈ£´Â RS(µð¹ÙÀ̽º ¼±Åà ½ÅÈ£), R/W(Àбâ/½á³Ö±â ÁöÁ¤), E(strobe ½ÅÈ£)·Î
3°¡ÁöÀÌ´Ù.
À̵é°ú PIC´Â ¿ì¼±, ¾Æ·¡¿Í °°ÀÌ Á¢¼ÓÇØ º¸±â·Î ÇÑ´Ù.
ÀÌ Á¢¼Ó ¹æ¹ýÀÌ ¼ÒÇÁÆ®¿þ¾î·Î Á¦¾îÇϱ⠽±±â ¶§¹®ÀÌ´Ù.
±×¸®°í, °¢ ½ÅÈ£ÀÇ Å¸Àֵ̹µ ¾Æ·§ ±×¸²¿¡ ³ªÅ¸³Â´Âµ¥, ¹®Á¦´Â ÇÏÃøÀÇ ½ÅÈ£°¡ ³»Ãø¿¡ µé¾î°¡µµ·Ï Ãâ·ÂÇÏ¸é µÈ´Ù.

µ¥ÀÌÅÍ ¹ö½º(DB4-7) ½ÅÈ£ ³»¿ëÀÇ ±¸º°Àº 2°³ÀÇ Á¦¾î½ÅÈ£(RS, R/W)·Î ±¸º°µÈ´Ù.
RS R/W ½ÅÈ£Á¾º°
0 0 Control Command Ãâ·Â
1 0 ½á³Ö±â µ¥ÀÌÅÍ Ãâ·Â
0 1 Busy ½ÅÈ£ÀÔ·Â
1 1 Àб⠵¥ÀÌÅÍ ÀÔ·Â
[Control CommandÀÇ À϶÷Ç¥]
- Commnad DB7 6 5 4 3 2 1 0 ¼³ ¸í
Clear Display 0 0 0 0 0 0 0 1 Àüü ¼Ò°Å, Cursor´Â HomeÀ¸·Î
Cursor At Home 0 0 0 0 0 0 1 * Ç¥½Ã³»¿ëÀº º¯È¾øÀ½.
Entry Mode Set 0 0 0 0 0 1 I/D S I/D=Increment/Decrement
S=With Display Shift
Display On/Off 0 0 0 0 1 D C B D=Display C=Cursor B=Blink
Cursor/Dislay Shift 0 0 0 1 S/CR/L* * S/C=Display/Cursor
R/L=Right/Left
Function Set 0 0 1 DL N F * * DL=8/4Bit N=2/1Line
F=Large/Small
CGRAM Address Set 0 1 CCRAM Address Character Generator RAM
DDRAM Address Set 1 L DDRAM Address Display RAM L=Line
Busy Flag/Adrs Read BF Address BF=Busy Flag
Data Write 8 Bits Data CGRAM/DDRAM Common
Data Read 8 Bits Data CGRAM/DDRAM Common
|
2. ¾×Á¤Ç¥½Ã±â¿¡ÀÇ Á¦¾î½ÅÈ£ Ãâ·Â ·çƾ
±×·¯¸é ½ÇÁ¦·Î ¾×Á¤Ç¥½Ã±â¿¡ Control ½ÅÈ£¸¦ Ãâ·ÂÇÏ´Â ¼ºê·çƾÀ» ¼³¸íÇÑ´Ù.
Control Command ½ÅÈ£¶ó°í ÇÏ´Â Á¶°ÇÀº RS=R/W=0ÀÌ´Ù.
4ºñÆ® ¸ðµå·Î Á¢¼ÓÇϰí Àֱ⠶§¹®¿¡ »óÀ§ 4ºñÆ®¿Í ÇÏÀ§ 4ºñÆ®ÀÇ 2ȸ·Î ³ª´©¾î Command¸¦ Ãâ·ÂÇÑ´Ù.
;**** LCD command out *****
LCD_CMD
MOVWF DPDT ;Command µ¥ÀÌÅÍÀÇ ÀϽà º¸Á¸
ANDLW 0F0H ;»óÀ§ 4ºñÆ®¸¦ ¿ì¼± Ãâ·Â
MOVWF PORTB ;RB4-7ÀÇ µ¥ÀÌÅÍ ¹ö½º·Î Ãâ·Â
BCF PORTA,1 ;R/W¸¦ 0À¸·Î ¼¼Æ® Command Á¶°Ç ¼¼Æ®
BCF PORTA,2 ;RS¸¦ 0À¸·Î ¼¼Æ®
BSF PORTA,0 ;E high ½ºÆ®·Îºê ½ÅÈ£ Ãâ·Â
BCF PORTA,0 ;E low
SWAPF DPDT,W ;
ANDLW 0F0H ;ÇÏÀ§ 4ºñÆ®¸¦ Ãâ·Â
MOVWF PORTB ;RB4-7¿¡ Ãâ·Â
BSF PORTA,0 ;½ºÆ®·Îºê ½ÅÈ£ Ãâ·Â
BCF PORTA,0
CALL LCD_BUSY ;Busy ½ÅÈ£°¡ ¾ø¾îÁú ¶§±îÁö ±â´Ù¸°´Ù
RETURN |
3. ¾×Á¤Ç¥½Ã±â¿¡ÀÇ Ç¥½Ã µ¥ÀÌÅÍ Ãâ·Â ·çƾ
½ÇÁ¦·Î Ç¥½ÃÇϱâ À§Çؼ´Â ¾×Á¤ Ç¥½Ã±â¿¡ ASCIIÀÇ ¹®ÀÚ Äڵ带 ¼Û½ÅÇÑ´Ù.
¼Û½ÅÀº 4ºñÆ®¸¶´Ù 2ȸ·Î ³ª´©¾î ÇÑ´Ù.
µ¥ÀÌÅÍ ¼Û½Å ¸ðµå´Â RS=0, R/W=1ÀÌ´Ù.
¹®ÀÚ¸¦ Ç¥½ÃÇÒ ¶§´Â Ä¿¼´Â ¿ìÃøÀ¸·Î ½ÃÇÁÆ®ÇØ °¡±â ¶§¹®¿¡ »óÀ§ÃøÀÇ ¹®ÀÚºÎÅÍ Ç¥½Ã Ãâ·ÂÀ» ÇÑ´Ù.
2Çà°¿¡ Ç¥½ÃÇÒ ¶§¿¡´Â DDRAM Address SetÀÇ Command·Î, Address Data¿¡ "C0"¸¦ SetÇϰí Ãâ·ÂÇϸé 2Çà°ÀÇ Ã³À½ºÎÅÍ
Ç¥½ÃÇÑ´Ù.
;**** LCD Data Write ****
LCD_DATA
MOVWF DPDT ;Ç¥½Ã µ¥ÀÌÅÍ(ASCII)ÀÇ ÀϽà º¸Á¸
ANDLW 0F0H ;»óÀ§ 4ºñÆ® Àü¼Û
MOVWF PORTB
BCF PORTA,1 ;R/W¸¦ 0À¸·Î ¼¼Æ®, µ¥ÀÌÅÍ ¼Û½Å ¸ðµå ¼¼Æ®
BSF PORTA,2 ;RS¸¦ 1·Î ¼¼Æ®
BSF PORTA,0 ;E high, ½ºÆ®·Îºê ½ÅÈ£ Ãâ·Â
BCF PORTA,0 ;E low
SWAPF DPDT,W ;get data lower
ANDLW 0F0H ;ÇÏÀ§ 4ºñÆ®ÀÇ Àü¼Û
MOVWF PORTB
BSF PORTA,0 ;½ºÆ®·Îºê ½ÅÈ£ Ãâ·Â
BCF PORTA,0
CALL LCD_BUSY ;Busy ½ÅÈ£°¡ ¾ø¾îÁú ¶§±îÁö ±â´Ù¸°´Ù
RETURN |
4. ¾×Á¤Ç¥½Ã±âÀÇ Busy ´ë±â ¼ºê·çƾ
¾×Á¤Ç¥½Ã±âÀÇ ³»ºÎ󸮴 °¢ Ä¿¸Çµå¸¶´Ù ¾à 40¥ìs Á¤µµ °É¸°´Ù.
(À¯ÀÏÇÏ°Ô Clear Ä¿¸Çµå¸¸Àº 1.64ms °É¸°´Ù)
ÀÌ Ã³¸®½Ã°£ µ¿¾È "Busy" ½ÅÈ£°¡ Ãâ·ÂµÇ°í ÀÖ´Ù. µû¶ó¼, ¿¬¼ÓÀûÀ¸·Î µ¥ÀÌÅÍ Àü¼ÛÀ» Çϱâ À§Çؼ´Â ÀÌ Busy ½ÅÈ£°¡
¾ø¾îÁö±â¸¦ ±â´Ù¸®°í³ª¼ ½Ç½ÃÇÒ Çʿ䰡 ÀÖ´Ù.
¾Æ·¡¿¡ ³ªÅ¸³½ °ÍÀº ÀÌ Busy ½ÅÈ£°¡ ¾ø¾îÁú ¶§±îÁö ±â´Ù¸®´Â ¼ºê·çƾÀÌ´Ù. Busy ½ÅÈ£´Â ¾×Á¤Ç¥½Ã±â·ÎºÎÅÍÀÇ ÀÔ·ÂÀ¸·Î
µÇ±â ¶§¹®¿¡ PICÃøÀÇ µ¥ÀÌÅÍ ¹ö½º¸¦ ÀÔ·Â ¸ðµå·Î º¯°æÇØ ÁÙ Çʿ䰡 ÀÖÀ¸¹Ç·Î, ó¸®Çϴµ¥ ÀÖ¾î¼ ´õ¿í ¹ø°Å·Î¿öÁø´Ù.
ÀÌ ÀÔ·Â/Ãâ·ÂÀÇ ÀüȯÀÌ ÇÊ¿äÇÏ°Ô µÇ¹Ç·Î, PIC¿Í ¾×Á¤Ç¥½Ã±â¿ÍÀÇ Á¢¼Ó¿¡´Â µ¥ÀÌÅÍ ¹ö½º¿Í ÄÁÆ®·Ñ ½ÅÈ£¸¦ ³ª´©´Â ÆíÀÌ
»ç¿ëÇϱ⠽¬¿öÁø´Ù.
;**** LCD Busy Check ************
LCD_BUSY
CLRF DPDT ;µ¥ÀÌÅÍ ¹öÆÛ Ŭ¸®¾î
BSF STATUS,RP0 ;PIC ¸ðµå º¯°æÀ» À§ÇØ Bank1·Î Àüȯ
BSF OPTION_REG,7 ;Æ÷Æ® BÀÇ Ç®¾÷À» OFF ÁöÁ¤
MOVLW 0FEH ;PORTBRB0 Àܸ̿¦ ÀÔ·Â ¸ðµå¿¡ ¼¼Æ®
MOVWF TRISB
BCF STATUS,RP0 ;Bank0À¸·Î ¸®ÅÏÇÑ´Ù
BCF PORTA,2 ;RS¸¦ 0À¸·Î ¼¼Æ®
BSF PORTA,1 ;R/W¸¦ 1·Î ¼¼Æ® Busy ÀÔ·Â ¸ðµå¸¦ ¼¼Æ®
BSF PORTA,0 ;E high, ½ºÆ®·Îºê ½ÅÈ£ Ãâ·Â
MOVF PORTB,W ;µ¥ÀÌÅ͸¦ 2ȸ·Î ³ª´©¾î ÀÔ·Â
BCF PORTA,0 ;E low
ANDLW 0F0H ;¿ì¼± »óÀ§ 4ºñÆ®¸¦ ÀÔ·Â
MOVWF DPDT ;ÀϽà º¸Á¸
BSF PORTA,0 ;E high, ´ÙÀ½ÀÇ ½ºÆ®·Îºê ½ÅÈ£ Ãâ·Â
MOVF PORTB,W ;ÇÏÀ§ 4ºñÆ®¸¦ ÀÔ·Â
BCF PORTA,0 ;E low
ANDLW 0FH ;Mask out upper
IORWF DPDT,F ;»óÀ§¿Í ÇÏÀ§¸¦ OR·Î ÇÕº´
BTFSC DPDT,7 ;BUSY FLAG ºñÆ®¸¦ üũ
GOTO LCD_BUSY ;Busy »óÅ¿´´Ù¸é ÀçÂ÷ ÀÔ·Â ¹Ýº¹
BCF PORTA,1 ;R/W¸¦ 0À¸·Î ¸®ÅÏÇÑ´Ù(Ãâ·Â ¸ðµå·Î ¸®ÅÏÇÑ´Ù)
BSF STATUS,RP0 ;PICÀÇ ¸ðµå º¯°æÀ» À§ÇØ Bank1·Î Àüȯ
MOVLW 0EH ;RB1,2,3 Àܴ̿ Ãâ·ÂÀ¸·Î ¸®ÅÏÇÑ´Ù
MOVWF TRISB ;PORTB ¸ðµå ¼¼Æ®
BCF STATUS,RP0 ;Bank0À¸·Î ¸®ÅÏÇÑ´Ù
RETURN |
5. ¾×Á¤Ç¥½Ã±âÀÇ Ãʱ⠸®¼Â ¼ºê·çƾ
¸¶Áö¸·À¸·Î, ÇÑÃþ ±î´Ù·Î¿î Ãʱ⠸®¼ÂÀÇ Á¦¾î ¼ºê·çƾÀÌ´Ù.
ÀÌ ¾×Á¤Ç¥½Ã±â´Â Àü¿ø ÀԷ½ÿ¡ ÀÚµ¿ÀûÀ¸·Î ¸®¼Â 󸮸¦ ÇÏÁö¸¸, ±×°ÍÀÌ Àß ½ÇÇàµÇÁö ¾Ê¾ÒÀ» ¶§¸¦ »ý°¢ÇÏ¿©, ¼ÒÇÁÆ®¿þ¾î·Îµµ
ÃʱâÈÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Ù.
±× ¼ø¼°¡ ´õ¿í ¹ø°Å·Ó´Ù. ¿ì¼±, ¾×Á¤Ç¥½Ã±â¸¦ 8ºñÆ® ¸ðµå·Î ÇÏ´Â °ÍºÎÅÍ ½ÃÀÛÇÑ´Ù.
¶Ç, ÀÌ ½ÃÁ¡¿¡¼´Â Busy Flag´Â ½Å¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡ »ç¿ëÇÏÁö ¾Êµµ·Ï ÇÏ°í ½Ã°£À¸·Î ±â´Ù¸°´Ù.
ÀÌ ´ë·«ÀûÀΠó¸®ÀÇ È帧Àº ¾Æ·¡¿Í °°ÀÌ µÈ´Ù.
Àü¿ø ON
¡é
1.5ms ÀÌ»ó ±â´Ù¸°´Ù BusyFlag´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù
¡é
8ºñÆ® ¸ðµå ¼³Á¤
¡é
4.1ms ÀÌ»ó ±â´Ù¸°´Ù BusyFlag´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù
¡é
ÀçÂ÷ 8ºñÆ® ¸ðµå·Î ¼³Á¤
¡é
100¥ìs ÀÌ»ó ±â´Ù¸°´Ù BusyFlag´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù
¡é
ÀçÂ÷ 8ºñÆ® ¸ðµå·Î ¼³Á¤
¡é
4ºñÆ® ¸ðµå·Î ¼³Á¤ ¿©±â±îÁö´Â 8ºñÆ® ¸ðµå·Î µ¿ÀÛÇϰí ÀÖ´Ù
¡é
Function ¼³Á¤ ÀÌÈÄ 4ºñÆ® ¸ðµå·Î BusyFlagµµ À¯È¿
Display Off Á¦¾î
Display On Á¦¾î
Entry Mode ¼¼Æ® |
´ÙÀ½¿¡ ½ÇÁ¦ÀÇ ÃʱâÈ ¼ºê·çƾÀ» ¼³¸íÇÑ´Ù.
;**** Initialize *****
LCD_INI
CALL TIME5M ;1.5ms ÀÌ»ó ±â´Ù¸°´Ù(5ms ´ë±â·Î Çϰí ÀÖ´Ù)
MOVLW 030H ;8ºñÆ® ¸ðµå ¼³Á¤ Á¦¾î
MOVWF PORTB
BCF PORTA,1 ;R/W0 ¼¼Æ®
BCF PORTA,2 ;RS0 ¼¼Æ®
BSF PORTA,0 ;E high ½ºÆ®·Îºê
BCF PORTA,0 ;E low
CALL TIME5M ;4.1ms ÀÌ»ó ±â´Ù¸°´Ù(5ms ´ë±â)
MOVLW 030H ;ÀçÂ÷ 8ºñÆ® ¸ðµå ¼³Á¤ Á¦¾î
MOVWF PORTB
BCF PORTA,1 ;R/W0 ¼¼Æ®
BCF PORTA,2 ;RS0 ¼¼Æ®
BSF PORTA,0 ;E high ½ºÆ®·Îºê
BCF PORTA,0 ;E low
CALL TIME100 ;100¥ìs ÀÌ»ó ±â´Ù¸°´Ù
MOVLW 030H ;ÀçÂ÷ 8ºñÆ® ¸ðµå ¼³Á¤ Á¦¾î
MOVWF PORTB
BCF PORTA,1 ;R/W0 ¼¼Æ®
BCF PORTA,2 ;RS0 ¼¼Æ®
BSF PORTA,0 ;½ºÆ®·Îºê
BCF PORTA,0
CALL TIME100 ;È®½ÇÈ÷ Çϱâ À§ÇØ 100¥ìs ´ë±â
MOVLW 020H ;4ºñÆ® ¸ðµå ¼³Á¤ Á¦¾î
MOVWF PORTB ;(À̶§´Â ¾ÆÁ÷ 8ºñÆ® ¸ðµå)
BCF PORTA,1 ;R/W0 ¼¼Æ®
BCF PORTA,2 ;RS0 ¼¼Æ®
BSF PORTA,0 ;½ºÆ®·Îºê
BCF PORTA,0
CALL TIME100 ;È®½ÇÈ÷ Çϱâ À§ÇØ 100¥ìs ´ë±â
;ÀÌÈÄ 4ºñÆ® ¸ðµå·Î µ¿ÀÛ, BusyFlag À¯È¿
MOVLW 02CH ;Function Set(2Çà, 5¡¿10Dot Ç¥½Ã ÁöÁ¤)
CALL LCD_CMD
MOVLW 08H ;Display off(Cursor, Blink ¾øÀ½)
CALL LCD_CMD
MOVLW 0CH ;Display on(Cursor, Blink ¾øÀ½)
CALL LCD_CMD
MOVLW 06H ;Entry Mode Set(Increment, Ç¥½Ã ½ÃÇÁÆ® ÁöÁ¤)
CALL LCD_CMD
RETURN |
´ÙÀ½Àº ´ÙÀ̳»¹Í Ç¥½Ã Á¦¾îÀÇ ³ëÇϿ츦 ¼³¸íÇÑ´Ù
´ÙÀ½ È¸é ¸ñÂ÷ ȸé