5. ½Ã¸®¾ó
Åë½ÅÁ¦¾î ¹æ¹ý
ÀÌ·ÐÀ» ¸ÕÀú °øºÎÇϰí, ¿¹Á¦·Î PIC(PIC16C73B
ȤÀº PIC16F84)³¢¸® ¼·Î Åë½ÅÇØ¼ I/O Æ÷Æ®¿¡ DISPLAY ´õ ³ª¾Æ°¡ LCD¿¡ DISPLAYÇÏ´Â
°Í ±îÁö ÇØº¸´Â °ÍÀÌ ÀúÀÇ ¸ñÇ¥ÀÔ´Ï´Ù. ÀÏ´ÜÀº I/O Æ÷Æ®¿¡ DISPLAYÇÏ´Â °Í±îÁö Çϰí
´ÙÀ½ °Á¿¡ LCD¿¡ ´ëÇØ ¾Ë¾Æº» ÈÄ °è¼ÓµÇ´Â ¿¹Á¦·Î PIC³¢¸® Åë½ÅÇØ¼ LCD¿¡ Åë½ÅÇÑ
¹®ÀÚ¸¦ Ç¥½ÃÇÏ´Â °Í±îÁö ÇØ º¾½Ã´Ù. ÀÌ·ÐÀº ÀÎÅͳݻ󿡼 RS232 °Á¸¦ ÆÛ¿Â ±ÛÀ̹ǷÎ
º» °ÁÂ¿Í ¾à°£Àº °ü°è°¡ ¾øÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÀÌÇØÇϽñ⠹ٶó°í Âü°íÀÚ·á·Î Ȱ¿ëÇϽñâ
¹Ù¶ø´Ï´Ù.
1.
½Ã¸®¾ó Åë½ÅÀ̶õ?
"½Ã¸®¾ó
Åë½Å"À̶õ ÀϹÝÀûÀ¸·Î ÄÄÇ»ÅÍ ±â±â¸¦ Á¢¼ÓÇÏ´Â ¹æ¹ýÀÇ Çϳª·Î, Á¢¼ÓÇÏ´Â
¼±ÀÇ ¼ö¸¦ »è°¨Çϰí, ¶ÇÇÑ ¿ø°Å¸®±îÁö ½ÅÈ£¸¦ º¸³¾ ¼ö ÀÖµµ·Ï ÇÑ ¹æ½ÄÀ» ¸»ÇÑ´Ù.
À̶§ ½ÅÈ£°¡ 1ºñÆ®¸¶´Ù ½Ã¸®¾ó(Á÷·Ä)·Î º¸³»Áö±â ¶§¹®¿¡ ½Ã¸®¾ó Åë½ÅÀ̶ó ºÎ¸¥´Ù.
2. ÆÛ½º³ÎÄÄÇ»ÅÍ¿ÍÀÇ Á¢¼Ó
¿©±â¼´Â Åë½Å
Á¢¼Ó »ó´ë¹æÀ» ÆÛ½º³ÎÄÄÇ»ÅÍ·Î ÇÑ´Ù. ±×·¯³ª, ÀÌ ½Ã¸®¾ó Åë½ÅÀÇ Á¢¼ÓÀº Ç¥ÁØÈµÇ¾î
ÀÖÀ¸¸ç, "RS-232C"¶ó ºÎ¸£°í Àִµ¥, ´ëºÎºÐÀÇ ÆÛ½º³ÎÄÄÇ»Åͳª ¸ðµ©ÀÌ
ÀÌ ±Ô°Ý¿¡ µû¸£°í Àֱ⠶§¹®¿¡ °°Àº ¹æ¹ýÀ¸·Î Á¢¼ÓÇÒ ¼ö ÀÖ´Ù. ÀÌ Á¢¼Ó¿¡´Â
"25ÇÉ DSUB Ä¿³ØÅÍ"³ª "9ÇÉ ¹Ì´Ï DSUB Ä¿³ØÅÍ"¶ó ºÎ¸£´Â
Ä¿³ØÅͰ¡ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ°í ÀÖÀ¸¹Ç·Î, ±×°ÍÀ» ÀüÁ¦·Î ¼³¸íÇÑ´Ù. Àú´Â
º¸Åë 9ÇÉ DSUB Ä¿³ØÅ͸¦ »ç¿ëÇÕ´Ï´Ù. 2¹ø, 3¹ø, 5¹ø¸¸ ¿¬°áÇØµµ µÇ´õ¶ó±¸¿ä.
¾ÈµÇ¸é 4¹ø 5¹øÀ» ¼·Î ´Ü¶ô ½Ãŵ´Ï´Ù.
Ä¿³ØÅÍÀÇ ÇÉ
¹øÈ£¿Í ½ÅÈ£ ¹× °£ÀÌÀûÀÎ »ç¿ë¹ýÀº ¾Æ·¡ Ç¥¿Í °°´Ù.
¹Ì´ÏDSUB Ä¿³ØÅÍ |
25ÇÉ DSUB |
½ÅÈ£ ¸íĪ |
°£´ÜÇÑ »ç¿ë¹ý |
1 |
8 |
CD(Data
Carrier Detect) |
ÀÔ·Â,
»ç¿ëÇÏÁö ¾Ê´Â´Ù |
2 |
3 |
RD(Receive
Data) |
ÀÔ·Â,
»ó´ë¹æ TD¿¡ Á¢¼Ó |
3 |
2 |
TD(Transmit
Data) |
Ãâ·Â,
»ó´ë¹æ RD¿¡ Á¢¼Ó |
4 |
20 |
DTR(Data
Terminal Ready) |
Ãâ·Â,
»ç¿ëÇÏÁö ¾Ê´Â´Ù |
5 |
7 |
SG(Signal
Ground) |
±×¶ó¿îµå,
»ó´ë¹æ SG¿¡ Á¢¼Ó |
6 |
6 |
DSR(Data
Set Ready) |
ÀÔ·Â,
»ç¿ëÇÏÁö ¾Ê´Â´Ù |
7 |
4 |
RTS(Request
to Send) |
Ãâ·Â,
»ó´ë¹æ CTS¿Í Á¢¼Ó |
8 |
5 |
CTS(Clear
to Send) |
ÀÔ·Â,
»ó´ë¹æ RTS¿Í Á¢¼Ó |
9 |
22 |
RI(Ring
Indicate) |
ÀÔ·Â,
»ç¿ëÇÏÁö ¾Ê´Â´Ù |
3.
½Ã¸®¾ó Åë½Å Á¦¾î ÇÁ·Î±×·¥ÀÇ ±¸¼º
¿©±â¼
¼Ò°³ÇÏ´Â Åë½Å¿ë ÇÁ·Î±×·¥Àº ŸÀÌ¸Ó ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇϰí
ÀÖ´Ù. ÀÌ ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÔÀ¸·Î½á °¢ ºñÆ®ÀÇ ½ÅÈ£¸¦ ±â´Ù¸®°í ÀÖ´Â µ¿¾È, ÄÄÇ»ÅÍ¿¡´Â
´Ù¸¥ ÀÛ¾÷À» ½Ãų ¼ö ÀÖ´Ù. µû¶ó¼, Åë½ÅÀ» ÇÏ¸é¼ ´Ù¸¥ ÀÏÀ» ÇÏ·Á´Â °æ¿ì, ¿¹¸¦
µé¸é Ç¥½Ã¸¦ Çϰųª ¸ðÅ͸¦ µ¿ÀÛ½ÃŰ´Â ÀÏÀÌ °¡´ÉÇØÁø´Ù. Àüü´Â 3°³ÀÇ
ÇÁ·Î±×·¥ ¸ðµâ°ú ÇϳªÀÇ º¯¼ö Á¤ÀÇ ºÎºÐÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

¿©±â¼ ¾à°£
¿¬±¸µÇ¾î ÀÖ´Â °ÍÀº ¿ì¼± ½ºÅ¸Æ® ºñÆ®ÀÇ ÀÎÅÍ·´Æ®°¡ µé¾î¿Ô´Ù¸é, È®ÀÎÇϱâ À§ÇØ
10¥ìs ±â´Ù¸° ´ÙÀ½, ´Ù½Ã Çѹø ÀÔ·ÂÀ» Àоîµé¿© º¸°í, °°Àº ½ÅÈ£¿´´Ù¸é ½ºÅ¸Æ®
ºñÆ®·Î °£ÁÖÇÑ´Ù. ´Ù¸£¸é ³ëÀÌÁî·Î ÀÎÅÍ·´Æ®°¡ µé¾î¿Â °ÍÀ¸·Î °£ÁÖÇÏ¿©
¹«½ÃÇϰí, ´ÙÀ½ ½ºÅ¸Æ® ºñÆ®ÀÇ ÀÎÅÍ·´Æ®¸¦ ±â´Ù¸°´Ù. È®½ÇÈ÷ ½ºÅ¸Æ® ºñÆ®¸¦
¹Þ¾Æµé¿´´Ù¸é ´ÙÀ½ÀÇ Å¸À̸Ӵ 1.5ºñÆ®ºÐÀÇ ½Ã°£À¸·Î ½ºÅ¸Æ®ÇÑ´Ù. ±×¸®°í
time upÀÇ ÀÎÅÍ·´Æ®°¡ µé¾î¿À¸é µ¥ÀÌÅÍ·Î ÀÔ·ÂÀ» ÀоîµéÀδÙ. À̰ÍÀ¸·Î Ʋ¸²¾øÀÌ
È®½ÇÇÑ µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°Ô µÈ´Ù. ÀÌÇÏ, 1ºñÆ®ºÐ ½Ã°£ÀÇ Å¸À̸ӷΠ°è¼ÓÇÑ´Ù.
4. Åë½Å¼Óµµ¿ë ÆÄ¶ó¸ÞÅÍ
(1) Åë½Å¼Óµµ¿ë
ÆÄ¶ó¹ÌÅÍ
Åë½Å¼Óµµ¸¦
°¡º¯À¸·Î Çϱâ À§ÇØ 2°³ÀÇ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇϰí ÀÖ´Ù. ±× °ªÀ» ±¸ÇÏ´Â ¹æ¹ýÀº
¾Æ·¡¿Í °°ÀÌ ÇÑ´Ù. ¿ì¼±, Åë½Å¼Óµµ·ÎºÎÅÍ 1ºñÆ®ÀÇ ÆÞ½ºÆøÀ» ±¸ÇÑ´Ù.
´ÙÀ½¿¡ ¸¶ÀÌÅ©·ÎÄÄÇ»ÅÍÀÇ Å¬·ÏÀ¸·Î ±×°ÍÀ» ³ª´©¾î Ä«¿îÅÍÀÇ °ªÀ» ±¸ÇÑ´Ù(1Ä«¿îÆ®´Â
4Ŭ·ÏºÐ). ±×¸®°í ±× Ä«¿îÆ®°ªÀ» ½ÇÇöÇÏ´Â prescaler¿Í TMR0ÀÇ °ªÀ» ±¸ÇÑ´Ù.
¾Æ·¡ Ç¥´Â ½ÇÁ¦ÀÇ ¿¹À̸ç, Ŭ·ÏÀº 10MHzÀÇ °æ¿ìÀÌ´Ù.
BaudRate |
PulseWidth |
Counter |
prescale |
TMR0(BITTMR) |
width |
300bps |
3333.33usec |
8333
|
64(5)
|
130(7E)
|
3328usec |
1200 |
833.33 |
2083
|
16(3)
|
130(7E)
|
832 |
2400 |
416.67 |
1041
|
8(2)
|
128(80)
|
409 |
4800 |
208.33 |
521
|
4(1)
|
124(84)
|
198 |
9600 |
104.17 |
260
|
2(0)
|
122(86)
|
99 |
5.
½ÇÇè³»¿ë
1) ¸ñÀû
CCS-Cȍ˂
PCM ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇÏ¿© RS232C Åë½ÅÇÏ´Â ¹æ¹ýÀ» ÀÍÈù´Ù.
¶ÇÇÑ, PIC ³»ºÎÀÇ
USART( RS232C )¸¦ ÀÌ¿ëÇÏÁö ¾Ê°í ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î ÇÏ´Â ¹æ¹ýÀ» ÀÍÈù´Ù. ÀÌ·¸°Ô
ÇÔÀ¸·Î¼ USART°¡ ¾ø´Â ¿¹¸¦ µé¾î 5X °è¿, 6X °è¿ µî¿¡¼ ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î RS232C¸¦
±¸ÇöÇÏ¿© °³¹ß½Ã ´Ü°¡¸¦ ÁÙÀ̴µ¥ ±× ¸ñÀûÀÌ ÀÖ´Ù.
¸¸ÀÏ °³¹ß½Ã ²À RS232C¸¦
Çϵå¿þ¾îÀûÀ¸·Î ÇØ¾ßÇÑ´Â °æ¿ì´Â °Ô½ÃÆÇ¿¡ ±ÛÀ» ¿Ã·Á ÁÖ¼¼¿©~~
2) ¹æ¹ý
´ÙÀ½ÀÇ
ȸ·Îµµ¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ PIC¿Í PICÀÇ RB0¸¦ ¼·Î ¿¬°áÇÕ´Ï´Ù. RB0 Æ÷Æ®¸¦ ÅëÇØ
PIC´Â ¼·Î RS232C Åë½ÅÀ» ÇÑ´Ù. ¹°·Ð ÇÁ·ÎÅäÄÝÀ» RS232C ¸ðµâ¿¡¼ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó
¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î ¸¸µé¾î ÁØ´Â °Ì´Ï´Ù.
3) ÇÁ·Î±×·¥
ÇÁ·Î±×·¥Àº PIC16C73B¿ëÀ¸·Î
ÄÚµùÇß½À´Ï´Ù. Çì´õÆÄÀÏÀº Á¦°¡ °Ô½ÃÆÇ¿¡ ¿Ã¸° °ÍÀ¸·Î¸¸ ÇØ¾ß ÇÕ´Ï´Ù. ¸¸ÀÏ 74³ª,
84·Î ÇØº¸½Ã°í ½ÍÀº ºÐÀº #include " "¹®¿¡¼ ¹Ù²Ù¾î ÁÖ½Ã¸é µÇ±¸¿ä. ¹°·Ð
Çì´õÆÄÀÏÀº °Ô½ÃÆÇ¿¡ ¿Ã¸®°Ú½À´Ï´Ù. µû¶ó¼ °Ô½ÃÆÇ¿¡ ¿Ã¸° Çì´õÆÄÀÏÀº 73B, 74B,
84 ¸ðµÎ ¿Ã¸®°Ú½À´Ï´Ù.
[RS232C ¼Û½Å(TX) ÇÁ·Î±×·¥ ]
#include
"H_16C73B.h" #use delay(clock=4000000) #use rs232(baud=4800,
xmit=pin_b0, rcv=pin_b1)
void
main(void) { char
rcv_value;
TRISB
= 0x00; PORTB
= 0x00; // Æ÷Æ® ÃʱâÈ
while(1)
{
//
¹®ÀÚ 'A'¸¦ RS232 Æ÷Æ®( RB0 )·Î º¸³½´Ù.
putc('A');
delay_ms(1000);
}
} |
[RS232C ¼ö½Å(RX) ÇÁ·Î±×·¥ ]
#include
"H_16C73B.h" #use delay(clock=4000000) #use rs232(baud=4800,
xmit=pin_b1, rcv=pin_b0)
#define LED RB7
#define ON 1
#define OFF 0
void
main(void) { char
rcv_value;
TRISB
= 0x0f; PORTB
= 0x00; // Æ÷Æ® ÃʱâÈ
while(1)
{ //
RS232Æ÷Æ® Áï, rb0·Î µé¾îµµ´Â µ¥ÀÌÅÍ °¨Áö //
-> kbhit()ÇÔ¼ö( ¸Þ´º¾ó ÂüÁ¶ ) if(
kbhit() ) { //
getc()ÇÔ¼ö´Â ¸Þ´º¾ó ÂüÁ¶ rcv_value
= getc();
//
¹ÞÀº °ªÀÌ ¹®ÀÚ 'A'À̸é RB7ÀÇ LED¸¦ ON ½Ã۰í //
'A'°¡ ¾Æ´Ï¸é RB7ÀÇ LED¸¦ OFF ½ÃŲ´Ù. if(
rcv_value == 'A' ) { LED = ON; } else
{
LED = OFF; } }
} } |
4) ÇÁ·Î±×·¥ ¼³¸í
¼Û½Å( MCU_TX )ÂÊ¿¡¼´Â ¹®ÀÚ
'A'¸¦ 1ÃÊ¿¡ Çѹø¾¿ º¸³»°í ¼ö½Å( MCU_RX )ÂÊ¿¡¼´Â ¹®ÀÚ 'A'°¡ µé¾î¿À¸é RB7¿¡ 5[V]¸¦
º¸³»¾î LED¸¦ ÄÑ°í ´Ù¸¥ DATA°¡ µé¾î¿À¸é LED¸¦ OFF ½ÃŲ´Ù.

|