8051 Kit °ú PC¸¦ ¿¬°èÇÑ ¡®ºí·°°ÝÆÄ¡¯ °ÔÀÓ

ÀÛ¼º: ±èÁøÈ«

 

¸ñÂ÷

1. ÇÁ·ÎÁ§Æ® ¼³¸í

1.1 ÇÁ·ÎÁ§Æ® ³»¿ë

1.2 ÀüüÀû ÁøÇà »çÇ×

1.3 »ç¿ëµÈ ½Ã½ºÅÛ

1.4 ½Ã½ºÅÛ ¼³¸í

2. ½Ã½ºÅÛ ¼¼ºÎ»çÇ×

2.1 ºÎ°¡ÀåÄ¡

2.2 »ç¿ëµÈ ÁÖº¯ÀåÄ¡

3. PC¿ÍÀÇ ¿¬°è

3.1 ³»¿ë¼³¸í

3.2 PC¿ÍÀÇ Communication

4. PC¿¡¼­ »ç¿ëµÈ ÇÁ·Î±×·¥

4.1 ±× ÇÁ·Î±×·¥ÀÌ ÇÏ´ÂÀÏ

4.2 ÇÁ·Î±×·¥ ¼³¸í

5. ¹ß»ýÇÑ ¹®Á¦Á¡µé

 

 

1. ÇÁ·ÎÁ§Æ® ¼³¸í

1.1 ÇÁ·ÎÁ§Æ® ³»¿ë

º» ³»¿ëÀº '¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼­ ¹× ½ÇÇè' ¿¡¼­ÀÇ Term ProjectÀÌ´Ù. ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ¸ñÀûÀº 8051½Ã½ºÅÛÀÇ ÃÑ°ýÀûÀÎ »ç¿ë¹ý°ú ÀÌÇظ¦, ½ÇÁ¦·Î ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇϸ鼭, ¿Ï°áÁþ´Â °ÍÀÌ´Ù.

º» ÇÁ·ÎÁ§Æ®¿¡¼­´Â 8051 Onechip MicroProcessorÀÇ ´É·Â°ú 8051chipÀ» ½ÇÇèÇÒ ¼ö ÀÖµµ·Ï ¼³°èµÈ kit¾ÈÀÇ ¿©·¯ ÁÖº¯ ÀåÄ¡µéÀ» ½ÇÇè, ÀÌ¿ëÇϴµ¥¿¡ ¸ñÀûÀÌ ÀÖ´Ù.

º» ÇÁ·ÎÁ§Æ®ÀÇ À̸§Àº '8051°ú PC¸¦ ÀÌ¿ëÇÑ °ø Æ¢±â±â °ÔÀÓ'ÀÌ´Ù. (»çÁ¤»ó ±³¼ö´Ô²² º¸°íÇÑ °ÔÀÓ°ú´Â ³»¿ëÀÌ ´Ù¸£°Ô µÇ¾ú´Ù. ÇÏÁö¸¸ °ÔÀÓÀÇ ³»¿ë¸¸ ´Ù¸£Áö, »ç¿ëµÈ ±â¼úÀº µ¿ÀÏÇÏ´Ù.)

óÀ½¿¡´Â µÎ°³ÀÇ °¡º¯ÀúÇ×À» ÀÌ¿ëÇØ »ç¶÷ÀÇ °üÀý ó·³ ²Ù¸ç¼­ ±× ÀڷḦ 8051kit Ãø¿¡¼­ º¯È¯ÇÏ¿© PCÃø¿¡ º¸³»¸é ±×°ÍÀ» PC¿¡¼­ 3D·Î º¸¿©Áִ°Í, Áï ¹°¸®Àû ·Îº¸Æ®ÆÈÀ» È­¸é»ó¿¡¼­ µ¿ÀÏÇÏ°Ô ±¸ÇöÇØ Áִ°ÍÀ» ÇÏ·Á°í ÇÏ¿´À¸³ª, 8051kit¿¡ Æ÷ÇÔµÈ ADCÀÇ Ã¤³ÎÀÌ ÇÑ°³»ÓÀÌ¶ó¼­ ÇÊ¿äÇÑ µÎ°³ÀÇ °¡º¯ÀúÇ× °ªÀ» º¯È¯ÇÒ ¼ö ¾ø´Ù´Â Å« ¹®Á¦Á¡°ú, 8051kit¿¡ ¿ÜºÎÀåÄ¡¸¦ ¿¬°áÇϴ°ÍÀÌ ÁÖ¾îÁø ½Ã°£»ó Èûµé´Ù´Â ¹®Á¦·Î ÀÎÇÏ¿© 8051kitÀÇ onchipµé¸¸À» »ç¿ëÇÏ¿© ¸¸µé ¼ö Àִ°ÍÀ» ã°Ô µÇ¾ú´Ù. ±×°ÍÀÌ ÀÌ ÇÁ·ÎÁ§Æ®¸¦ ±¸¼ºÇÏ°Ô µÇ¾ú´Ù. »ç½Ç, ĨµéÀÇ ÀÛµ¿À» ½ÇÇèÇϴ°ÍÀº ¹®Á¦°¡ µÇÁö ¾Ê¾ÒÀ¸³ª, ±×°ÍµéÀ» ¿¬°èÇÏ¿© Àǹ̸¦ ºÎ¿©Çϱâ À§Çؼ­´Â VisualÇÑ°ÍÀÌ ÀÖ¾î¾ß ÇßÀ¸¹Ç·Î °ÔÀÓÀ» ¼±ÅÃÇÏ°Ô µÇ¾ú´Ù.

°ÔÀÓÀÇ ³»¿ëÀº ´Ü¼øÇÏ´Ù. ¿À·¡Àü¿¡ À¯ÇàÇß´ø 'ºí·°°ÝÆÄ' °ÔÀÓ¿¡¼­ ¾ÆÀ̵ð¾î¸¦ ºô·Á¿Â °ÍÀÌ´Ù. °ÔÀÓÀº ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ÀüüÀûÀÎ »óȲÀ» ¹¦»çÇϴµ¥¿¡ ¸ñÀûÀÌ ÀÖÀ¸¹Ç·Î ±âº»ÀûÀÎ ±â´É¹Û¿¡ ºÎ¿©ÇÏÁö ¾Ê¾Ò´Ù. ÀÌ °ÔÀÓÀº ¾Æ·¡¿¡ ±ä ¸·´ë°¡ Á¸ÀçÇÏ¿© À§¿¡¼­ ¶³¾îÁö´Â °øÀ» ¹Þ¾ÆÄ¡´Â °ÍÀ¸·Î 10ÃÊ´ç Çϳª¾¿ÀÇ Àå¾Ö¹°ÀÌ »ý±â±âµµ ÇÏ¸ç ´Ü¼øÇÏ´Ù.

1.2 ÀüüÀû ÁøÇà »çÇ×

8051¿¡ ºÎÂøµÇ¾î ÀÖ´Â 33k °¡º¯ÀúÇ×À» ÀÌ¿ë, ±×°ÍÀ» ADC·Î 8ºñÆ® µðÁöÅ» °ªÀ¸·Î º¯È¯ÇÑ´Ù. ¿©±â¼­´Â ±×°ÍÀ» °ÔÀÓ¿¡¼­ÀÇ ¸·´ë±âÀÇ À§Ä¡¸¦ Á¤ÇÒ ÂüÁ¶°ªÀ¸·Î »ç¿ëÇÑ´Ù. ±×·¸°Ô º¯È¯µÈ °ªÀ» PCÃøÀ¸·Î RS232¸¦ ÀÌ¿ëÇØ º¸³½´Ù. PCÃø¿¡¼­´Â ±× °ªÀ» ÀÌ¿ëÇØ ¸·´ëÀÇ À§Ä¡¸¦ Á¤ÇÑ´Ù. µ¿½Ã¿¡ PC¿¡¼­´Â °ÔÀÓÀÌ ÁøÇàµÇ°í ÀÖ´Ù. 8051Ãø¿¡¼­ º¸³½ µ¥ÀÌŸ¸¦ ÀÌ¿ëÇØ À§Ä¡¸¦ Á¤ÇÑ ¸·´ë°¡ ¿òÁ÷ÀÌ´Â °øÀ» ¸·¾Æ³»¸é PCÃø¿¡¼­´Â ±×°ÍÀ» °¨ÁöÇØ ±×°Í¿¡ ÇØ´çÇÏ´Â ¼Ò¸®¹øÈ£¸¦ 8051ÃøÀ¸·Î ´Ù½Ã RS232¸¦ ÀÌ¿ëÇØ Àü´ÞÇÑ´Ù. 8051Ãø¿¡¼­ ±× ¼Ò¸®¹øÈ£¸¦ ¹ÞÀ¸¸é ±×°Í¿¡ ÇØ´çÇÏ´Â ¼Ò¸®¸¦ DAC¸¦ ÀÌ¿ëÇØ ¾Æ³¯·Î±× ÆÄÇüÀ» ±¸ÇöÇÏ¸ç ±×°ÍÀ» ½ºÇÇÄ¿¿¡ ¿¬°áÇØ ¼Ò¸®¸¦ ³½´Ù.

1.3 »ç¿ëµÈ ½Ã½ºÅÛ

»ç¿ëµÈ ½Ã½ºÅÛÀº 8051kit¿Í PCÀÌ´Ù. 8051kitÀº °ÔÀÓ¿¡ ÇÊ¿äÇÑ µ¥ÀÌŸÀÇ º¯È¯°ú Ãâ·ÂÀ» Çϴµ¥¿¡ ÀÖ´Ù. PC´Â 8051ÀÌ º¸³»ÁÖ´Â µ¥ÀÌŸ¸¦ ÀÌ¿ëÇÏ¿© °ÔÀÓÀ» Á¶À²Çϸç ÁøÇàÇÏ°í ÁøÇà»ó ÇÊ¿äÇÑ µ¥ÀÌŸ¸¦ ´Ù½Ã 8051Ãø¿¡ Àü´ÞÇϴµ¥¿¡ ¸ñÀûÀÌ ÀÖ´Ù. ¿©±â¼­ÀÇ PCÀÇ ¿ªÇÒÀº 8051kitÀ» ½ÇÇèÇϴµ¥¿¡ ÇÊ¿äÇÑ »ó´ëÀÚÀÇ ¿ªÇÒÀ» ¸Â°í ÀÖ´Ù.

1.4 ½Ã½ºÅÛ ¼³¸í

8051kitÀº 8051 Onechip MicroProcessor¸¦ ½ÇÇèÇϱâ À§ÇÑ Å¶ÀÌ´Ù. 8051Àº ¿¬»ê»Ó¸¸ ¾Æ´Ï¶ó I/OÁ¦¾îÀÇ ±â´É±îÁö Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î ±×°Í¿¡ ÇÊ¿äÇÑ ÁÖº¯±â±âµéÀÌ 8051kit¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù.

2. ½Ã½ºÅÛ ¼¼ºÎ»çÇ×

2.1 ºÎ°¡ÀåÄ¡

º» ÇÁ·ÎÁ§Æ®¿¡¼­´Â Ãß°¡ÀûÀÎ ÀåÄ¡¸¦ ÃÖ¼ÒÇÑÀ¸·Î Çϴ°Ϳ¡ ÁßÁ¡À» µÎ¾î ¿ÜºÎ¿¡¼­ 8051kit¿¡ Ãß°¡ÀûÀ¸·Î ¿¬°áÇؾßÇÏ´Â ºÎÇ°(¹ÝµµÃ¼)Àº Áö¾çÇÏ¿´´Ù. ´Ù¸¸ 8051kit¿¡ ÀÖ´Â ½ºÇÇÄ¿¿Í DACÀÇ Ãâ·Â´ÜÀÚ¸¦ ¿¬°áÇϱâ À§ÇÑ °£´ÜÇÑ Earphone´ÜÀÚ¸¦ Áغñ ÇÏ¿´´Ù.

2.2 »ç¿ëµÈ ÁÖº¯ÀåÄ¡

»ç¿ëµÈ ÁÖº¯ÀåÄ¡´Â ¾Æ·¡¿Í °°´Ù:

8051, ADC, DAC, 33k°¡º¯ÀúÇ×, RS232, ½ºÇÇÄ¿

8051Àº PCÃø¿¡ º¸³»¾ßÇÒ ÀڷḦ ADC°¡ ÁغñÇϸé RS232¸¦ Á¶Á¾ÇØ PCÃøÀ¸·Î º¸³»°í, PC¿¡¼­ Àü´ÞµÇ¾î ¿À´Â ÀڷḦ ºÐ¼®ÇÏ¿© ±×°Í¿¡ ÇØ´çÇÏ´Â ¼Ò¸®ÀÇ ÆÄÇüÀ» ¾Ë¸Â°Ô ±¸ÇöÇØ DAC·Î º¯È¯Çϵµ·Ï ÇÏ´Â µîÀÇ 8051kitÃøÀÇ ÀüüÀûÀÎ Á¶À²À» ´ã´çÇÏ°Ô µÈ´Ù.

ADC´Â ¾Æ³¯·Î±×ÀÇ Àü·ù¸¦ 8ºñÆ®ÀÇ Á¤¼ö·Î º¯È¯ÇØÁÖ´Â ´É·ÂÀ» °¡Áö°í ÀÖ´Ù. ÀÌ°ÍÀº JoystickÀ¸·Î ÀÌ¿ëµÉ 33k°¡º¯ÀúÇ×ÀÇ »óŸ¦ ÀбâÀ§ÇØ ÀÌ¿ëµÈ´Ù.

DAC´Â 8ºñÆ® µðÁöÅ» °ªÀ» ¾Æ³¯·Î±× Àü·ù·Î º¯È¯ÇØ ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. º» ÇÁ·ÎÁ§Æ®¿¡¼­ DAC´Â ¼Ò¸®¸¦ ±¸ÇöÇϱâ À§ÇØ ¾²¿´´Âµ¥, »ç½Ç 8051ÀÚü¿¡ ºñÇÁÀ½À» ³¾ ¼ö ÀÖ´Â ÀåÄ¡°¡ ÀÖ±â´Â Çϳª ºñÇÁÀ½ÀÚü·Î´Â ¿©·¯°¡Áö ¼Ò¸®¸¦ ±¸ÇöÇϴµ¥¿¡ ¾î·Á¿òÀÌ ÀÖÀ¸¹Ç·Î DAC¸¦ ½ÇÇèµµ ÇÒ °âÇØ ÀÌ¿ëÇÏ°Ô µÇ¾ú´Ù. º» ÇÁ·ÎÁ§Æ®¿¡¼­´Â DACÀÇ ºÐÇØ´ÉÀ» ÀüºÎ ÀÌ¿ëÇÏÁö ¾Ê¾Ò´Ù. °á±¹ ½ºÇÇÄ¿¿¡ ¼Ò¸®¸¦ ³»±âÀ§ÇØ »ç¿ëµÇ´Â DAC°¡ 5º¼Æ®³ª 12º¼Æ®°°ÀÌ ³Ê¹« Å« Àü¾ÐÀ» ¹ß»ý½ÃÅ°¸é ½ºÇÇÄ¿¿¡¼­ ¸Å¿ì Å« ¼Ò¸®¸¦ ³»±â ¶§¹®ÀÌ´Ù. ¿©±â¼­´Â DAC Àüü ºÐÇØ´É(0ºÎÅÍ 255)ÀÇ ¾à 13%(0ºÎÅÍ 35)¸¸À» »ç¿ëÇÏ¿´´Ù.

°ÔÀÓ¿¡ ³ªÅ¸³ª´Â ±ä ¸·´ë¸¦ Á¶Á¾Çϱâ À§Çؼ­´Â Á¶Á¾´ë ¿ªÇÒÀ» Çϴ°ÍÀÌ ÇÊ¿äÇß´Ù. ¿ì¸®´Â ±×°Í¿¡ 8051kit¿¡ ´Þ·ÁÀÖ´Â ADC½ÇÇè¿ë 33k°¡º¯ÀúÇ×À» ÀÌ¿ëÇß´Ù. ±× °¡º¯ÀúÇ×À» ¸Ç ¿ÞÂÊÀ¸·Î µ¹¸®¸é 0º¼Æ®ÀÇ Àü·ÂÀÌ Ãâ·ÂµÇ¹Ç·Î ADC°¡ º¯È¯ÇÏ´Â °ªÀº 8ºñÆ® Á¤¼öÀÎ 0À» Ãâ·ÂÇϸç, ¸Ç ¿À¸¥ÂÊÀ¸·Î µ¹¸®¸é ÃÖ°íÀü¾Ð(5º¼Æ®)À̹ǷΠ255ÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù. ´Ü, 8051kitÀÚü¿¡ Àü·ùÀû ÀâÀ½ÀÌ ´Ù¼Ò ÀÖÀ¸¹Ç·Î ADC´Â °íÁ¤µÈ ÀúÇ×°ª¿¡ ´ëÇØ ¾à -5¿¡¼­ +5Á¤µµ ¹üÀ§ÀÇ ¿ÀÂ÷¸¦ º¸ÀδÙ. ÀÌ°ÍÀº Çϵå¿þ¾îÀûÀÎ ¹®Á¦À̹ǷΠº» ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÇØ°áÇÏÁö ¾Ê´Â´Ù. ÀÌ°ÍÀ¸·Î ¹ß»ýÇÏ´Â ¹®Á¦´Â °ÔÀÓ¿¡ »ç¿ëµÇ´Â ¸·´ë±â°¡ Á¿ì·Î ÇÑ µÎÄ­¾¿ ¶³¸°´Ù´Â °ÍÀÌ´Ù. ÀÌ °¡º¯ÀúÇ×Àº °ÅÀÇ 360µµ ȸÀüÇÑ´Ù. ¹°·Ð °ÔÀÓ¿¡¼­ ÀÌ ¹üÀ§¸¦ ÀüºÎ ÀÌ¿ëÇÏÁö´Â ¾Ê´Â´Ù.

RS232´Â 8051kit°ú PC¿ÍÀÇ Åë½ÅÀ» À§ÇØ »ç¿ëµÇ¾ú´Ù. RS232´Â ½Ã¸®¾ó ÄÉÀ̺íÀ» ÀÌ¿ëÇØ ÀڷḦ Á÷·ÄÀûÀ¸·Î ¼Û¼ö½ÅÇÏ´Â ¿ªÇÒÀ» ÇØÁØ´Ù. º» ÇÁ·ÎÁ§Æ®¿¡¼­´Â 9600baudÀÇ ¼Óµµ·Î °íÁ¤ »ç¿ëµÇ¾ú´Ù.

½ºÇÇÄ¿´Â DAC¿¡¼­ º¯È¯ Ãâ·ÂµÇ´Â Àü·ù°ªÀ» û°¢ÀûÀ¸·Î µé·ÁÁÖ±â À§ÇØ »ç¿ëµÇ¾ú´Ù.

3. PC¿ÍÀÇ ¿¬°è

3.1 ³»¿ë¼³¸í

À§¿¡¼­ ÀÌ¹Ì ¾ð±ÞÇßÁö¸¸, PC´Â 8051kitÀ» ½ÇÇèÇϴµ¥¿¡ ÇÊ¿äÇÑ º¸Á¶ÀÚÀû ¿ªÇÒÀ» ¼öÇàÇÏ¸ç ±×°ÍÀ» °ÔÀÓÀ̶ó´Â ¹Ìµð¾öÀ» ÅëÇØ ÀüüÀûÀÎ »óȲÀ» Ç¥ÇöÇØÁØ´Ù. 8051kit°ú PC°¡ ¼­·Î ¿¬°èÇϱâ À§Çؼ­´Â Åë½Å¼ö´ÜÀÌ ÇÊ¿äÇÏ´Ù. ¼­·ÎÀÇ Åë½ÅÀ» °¡Àå ½±°Ô Çϴ°ÍÀº ¼­·ÎÀÇ ½Ã½ºÅÛ¿¡ °øÅëÀûÀ¸·Î ¼³Ä¡µÇÀÖ´Â RS232¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ¹Ì PROCOMMÀ̶ó´Â ¼ÒÇÁÆ®¿þ¾î°¡ ±×°ÍÀ» Àß È°¿ëÇÏ°í ÀÖ´Â »óÅ¿´À¸¹Ç·Î ¿ì¸®´Â ±×°ÍÀ» »ç¿ëÇϴ°Ϳ¡ ´ëÇÑ È®½ÅÀ» °¡Á³´Ù. »ç½Ç ÇÁ·ÎÁ§Æ®ÀÇ ÁÖ ¸ñÀûÀÌ PC°¡ ¾Æ´Ï¹Ç·Î, PCÃø¿¡¼­ ÈǸ¢ÇÑ ¼Ò¸®¸¦ ³¾ ¼ö ÀÖÀ½¿¡µµ ºÒ±¸ÇÏ°í, 8051kit¿¡¼­ ÇÊ¿äÇÑ ¼Ò¸®¸¦ ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù. PC¿¡¼­ ÇÏ´Â ÀÏÀº °ÔÀÓÀ» ÁøÇàÇϸç 8051kit¿¡¼­ ¼Ò¸®¸¦ ¹ß»ýÇÒ ¼ö ÀÖµµ·Ï ÇØ´çÇÏ´Â ÀڷḦ Àü¼ÛÇØ ÁÖ´Â °ÍÀÌ´Ù. ±× °ÔÀÓÀº VisualÇϱ⠶§¹®¿¡ »ç½Ç 8051kitÃø¿¡¼­ ±¸ÇöÇÒ ¼öµµ ¾ø¾ú´Ù. 8051Ãø°ú PCÃø°úÀÇ Åë½Åµµ ±¸ÇöÇغ¼ °âÇؼ­ PC¸¦ »ç¿ëÇÏ°Ô µÇ¾ú´Ù.

3.2 PC¿ÍÀÇ Communication

PC¿ÍÀÇ Åë½ÅÀº RS232¶ó´Â ÀåÄ¡¸¦ ÀÌ¿ëÇØ ±¸ÇöµÈ´Ù. º» ÇÁ·ÎÁ§Æ®¿¡¼­´Â RS232ÀåÄ¡¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ÀÌÇغ¸´Ùµµ ±×°ÍÀ» ÀÌ¿ëÇϴµ¥¿¡ ¸¸Á·Çß´Ù. 8051¿¡¼­´Â ±× ÀåÄ¡¸¦ À§ÇØ TI, RI, SBUFµîÀÇ ÇÊ¿äÇÑ InstructionÀÌ ÁغñµÇ¾î ÀÖ´Ù. º» ÇÁ·ÎÁ§Æ®¿¡¼­´Â 8051Ãø°ú PCÃø°úÀÇ ³»¿ëÀÌ synchronousÇÏ°Ô ÁøÇàµÉ ¼ö ÀÖµµ·Ï ÃÖ´ëÇÑ ºü¸£°Ô, ½Ç½Ã°£À¸·Î ÀÛµ¿Çϵµ·Ï ¼³°èÇÏ¿´´Ù. 8051Ãø¿¡¼­´Â TI³ª RIÀ» ÀÌ¿ëÇÏ¿© ½ÇÁ¦·Î PCÃø¿¡¼­ ÀÚ·á°¡ Àü¼ÛµÇ¾úÀ» °æ¿ì¿¡¸¸ ÀڷḦ Àеµ·Ï ÇÏ¿´´Ù. ÇÏÁö¸¸ ±×°ÍÀº ÀÚ·á°¡ Àü¼ÛµÇÁö ¾ÊÀ¸¸é ÁøÇàÀÌ Áö¿¬µÇ´Â ¹®Á¦°¡ ÀÖÀ¸¹Ç·Î PCÃø¿¡¼­´Â 8051ÃøÀÇ ¿øÈ°ÇÑ ÁøÇàÀ» À§ÇØ Æò¼Ò¿¡´Â dummyµ¥ÀÌŸ¸¦ º¸³»¾î 8051ÃøÀÌ Ã³¸®ÇÏÁö´Â ¾Ê°í ÁøÇ൵ Áö¿¬µÇÁö ¾Êµµ·Ï ±¸ÇöÇÏ¿´´Ù. (»ç½Ç TI³ª RI¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ µÇ¾úÀ» °ÍÀ̳ª, 8051kit¿¡¼­ ±×°ÍÀ» »ç¿ëÇÏÁö ¾Ê¾ÒÀ» °æ¿ì¿¡ ¾ÈÀü¼ºÀ» º¸ÀåÇÒ ¼ö ÀÖ´ÂÁö È®½ÅÇÒ ¼ö ¾ø¾î¼­ ±×´ë·Î »ç¿ëÇÏ¿´´Ù. PCÃø¿¡¼­´Â »ó°ü¾ø´Ù.) 8051ÃøÀº PCÃø¿¡ ¹«Á¶°Ç µ¥ÀÌŸ¸¦ Àü¼ÛÇÑ´Ù. PCÃø¿¡¼­ ÇÊ¿äÇÑ°ÍÀº ¸·´ëÀÇ À§Ä¡·Î Çؼ®µÉ ÀÚ·á»ÓÀÌ´Ù. ¸·´ë´Â ¾ðÁ¦³ª ½Ç½Ã°£À¸·Î ¿òÁ÷¿©¾ß ÇÏ¿´À¸¹Ç·Î PCÃø¿¡¼­´Â ÀڷḦ ±â´Ù¸®´Ù°¡ ÇÊ¿äÇѰ͸¸ ¹ÞÀ» ÇüÆíÀÌ ¸øµÇ¾ú´Ù. ±×·¡¼­ RS232ÀÇ COM1 Æ÷Æ®¸¦ ÅëÇØ ¹«Á¶°Ç ÀԷµǴ ÀڷḦ ÀÐ¾î °ÔÀÓ¿¡ ÀÌ¿ëÇÏ¿´´Ù.

¹®Á¦°¡µÇ¾ú´øÁ¡:

°¡Àå ¹®Á¦°¡ µÇ¾ú´ø °ÍÀº ½Ã¸®¾ó Åë½Å¿¡¼­ ¹ß»ýÇߴµ¥, ±×°ÍÀº 8051

Ãø¿¡¼­ »õ·Î¿î µ¥ÀÌŸ°¡ Àü´ÞµÇ¿Ã¶§±îÁö ÇÁ·Î±×·¥ ÁøÇàÀÌ ¸ØÃá´Ù´Â

°ÍÀÌ´Ù. ±×°ÍÀ» Æò¼Ò¿¡´Â ¼Ò¸®¸¦ ³»Áö ¾Ê´Â´Ù´Â dummyµ¥ÀÌŸ¸¦

º¸³¿À¸·Î½á ¼Ò¸®µµ ³»Áö ¾Ê°í 8051Ãø ÇÁ·Î±×·¥¿¡ Áö¿¬ÀÌ ¹ß»ýÇÏÁö

¾Êµµ·Ï ÇÏ¿´´Ù.

¶Ç ÇϳªÀÇ ¹®Á¦´Â ¼­·ÎÀÇ Å¸À̹ÖÀ» ¸ÂÃâ ¼ö ¾ø´Ù´Â °ÍÀ̾ú´Ù. ÇÏÁö¸¸

8051°ú PCÃøÀÌ ÃæºÐÇÑ ¼Óµµ¸¦ ³»ÁÜÀ¸·Î½á RealTimeÀ¸·Î ÀÛµ¿ÇÏ¿©

ŸÀֿ̹¡ º° °ü°è¾øÀÌ µ¿½Ã¿¡ ÀÛµ¿Çϴ°Íó·³ º¸ÀÌ°Ô ÇÏ¿´´Ù.

ADC¿¡¼­µµ ¹®Á¦°¡ ¹ß»ýÇÏ¿´´Ù. ±×°ÍÀº 8051kitÀÚüÀÇ ÀâÀ½¶§¹®¿¡

ÀúÇ×À» °íÁ¤½ÃÄÑ ³õ¾Æµµ +10 ~ -10Á¤µµÀÇ ¶³¸²ÀÌ ¹ß»ýÇÏ´Â °ÍÀ̾ú´Ù.

ÇÏÁö¸¸ ÀÌ°ÍÀº Çϵå¿þ¾îÀûÀÎ ¹®Á¦·Î ±³¼ö´Ô¶ÇÇÑ ±×°ÍÀ» ¾çÇØÇÏ¿©

Á̴ּÙ.

 

#include <stdio.h>

#include <stdlib.h>

#include <bios.h>

#include <conio.h>

#include <dos.h>

#define BARLEN 15 /* ¸·´ëÀÇ ±æÀÌ */

#define SPEED 300 /* °ø ¿òÁ÷ÀÓ ¼Óµµ. ³·À»¼ö·Ï ºü¸§ */

#define ADJX 1 /* ¸·´ëÀÇ ÃÖ¼Ò XÁÂÇ¥ */

#define WALL 3 /* º®¿¡ ºÎµóÇûÀ»¶§ÀÇ ¼Ò¸®¹øÈ£ */

#define STICK 4 /* ¸·´ë¿¡ ºÎµóÇûÀ»¶§ÀÇ ¼Ò¸®¹øÈ£ */

#define DEAD 5 /* °ÔÀÓÀÌ ³¡³¯¶§. °øÀ» ³õÃÆÀ»¶§ */

#define READY 6 /* Áغñ */

#define START 7 /* ½ÃÀÛ */

#define NOSOUND 100 /* ¾Æ¹«¼Ò¸®µµ ¾È³¾¶§ */

#define TIMETICK *(unsigned far *)0x0040006c /* ½Ã½ºÅÛ Å¸ÀÌ¸Ó */

typedef unsigned char byte;

int curx=40, cury=5;

int incx=1, incy=1;

int barx, trapcnt=0;

unsigned cnt=0;

/* 16bit ´ÜÀ§·Î È­¸é¿¡ ¹®ÀÚ¿­ Ç¥½Ã (¸Å¿ì ºü¸§) */

void fprint(byte *str, char x, char y, unsigned fc, unsigned bc)

{

unsigned far *v=(unsigned far *)0xb8000000;

unsigned word;

v += (x-1)+(y-1)*80;

while (*str) {

word=(bc<<4)+fc;

word <<= 8;

word += *str++;

*v++=word;

}

}

/* Ä¿¼­¸¦ ²ô°Å³ª ÄÔ */

void cursor(int nf)

{

if (nf) asm {

mov ah, 1

mov ch, 6

mov cl, 7

int 10h

} else asm {

mov ah, 1

mov ch, 0fh

mov cl, 0

int 10h

}

}

/* ¸·´ë¸¦ ±×¸² */

void drawbar()

{

int t;

for (t=1; t<barx; t++) fprint(" ", t, 25, 7, 0);

fprint("ßßßßßßßßßßßßßßÝÞ, barx, 25, 7, 0);

for (t=barx+BARLEN; t<=80; t++) fprint(" ", t, 25, 7, 0);

}

/* ¾Æ±Ô¸ÕÆ®·Î µé¾î¿À´Â ¹øÈ£¸¦ 8051·Î º¸³» ÇØ´çÇÏ´Â ¼Ò¸®¸¦ ³»µµ·Ï ÇÔ */

void makesound(byte num)

{

int t;

for (t=0; t<20; t++) {

outportb(0x3f8, num);

delay(1);

}

}

/* °øÀ» ¿òÁ÷ÀÓ */

void drawobj()

{

int t;

cnt++;

if (cnt < SPEED) return;

cnt=0;

fprint(" ", curx, cury, 15, 0);

curx+=incx;

cury+=incy;

if (curx < 1) {

makesound(WALL);

curx=1;

incx=-incx;

}

if (curx > 80) {

makesound(WALL);

curx=80;

incx=-incx;

}

if (cury < 1) {

makesound(WALL);

cury=1;

incy=-incy;

}

if (cury > 25) {

makesound(DEAD);

cursor(1);

exit(1);

cury=25;

incy=-incy;

}

if (cury==25) {

if ((curx >= barx) && (curx <= barx+BARLEN)) {

makesound(STICK); /* °øÀÌ ¸·´ë¿¡ ºÎµóÇûÀ»¶§ */

cury=24;

incy=-incy;

}

} else {

t=peek(0xb800, (curx-1)*2+(cury-1)*160);

if ((t%256) == 223) {

makesound(STICK);

if (incy>0) cury--; else cury++;

incy=-incy;

}

}

fprint("o", curx, cury, 15, 0);

}

void main()

{

byte angle;

int key;

int t;

unsigned st;

cursor(0);

clrscr();

srand(TIMETICK);

/* °øÀÌ Ã³À½ ¿ÞÂʹæÇâÀ¸·Î ¶³¾îÁú°ÍÀΰ¡ ¿À¸¥ÂÊ ¹æÇâÀ¸·Î ¶³¾îÁú

°ÍÀΰ¡¸¦ Á¤ÇÔ */

if (random(100)%2 == 0) incx=-1; else incx=1;

st=TIMETICK;

for (t=0; t<3; t++)

{

makesound(READY);

fprint("READY", 36, 11, 4, 0);

delay(500);

fprint(" ", 36, 11, 4, 0);

delay(100);

}

makesound(START);

fprint(" GO! ", 36, 11, 15, 0);

delay(800);

fprint(" ", 36, 11, 0, 0);

makesound(NOSOUND);

while (1) {

angle=inportb(0x3f8); /* 8051ÀÌ º¸³»ÁÖ´Â °ªÀ» ÀÐÀ½ */

/* 8051ÀÌ º¸³»ÁÖ´Â °ªÀ¸·Î ¸·´ëÀÇ À§Ä¡¸¦ Á¤ÇÔ */

barx=ADJX+(int)((float)angle/3.9);

drawbar();

drawobj();

/* 10ÃÊ ´ÜÀ§·Î È­¸é¿¡ Àå¾Ö¹°À» ÃÖ´ë 20°³±îÁö ¸¸µê */

if ((abs(st-TIMETICK)) >= (int)(18.2*10)) {

st=TIMETICK;

if (trapcnt < 20) {

fprint("ßßßßßßßß", random(72)+1, random(10)+1, 7, 0);

trapcnt++;

}

}

/* ESCÅ°°¡ ´­¸®¸é ³¡ */

if (kbhit()) {

key=getch();

if (key == 27) break;

} else outportb(0x3f8, NOSOUND);

}

cursor(1); /* Ä¿¼­ ÄÔ */

}

 

------------------------ 8051 SOURCE --------------------------

             ORG     2000H

ADC:    EQU     0C018H

WAIT120U:EQU    015CH

 

             MOV     SP, #50H

             ACALL   SINIT

LOOPC:

 

             ACALL   GETCH

        MOV     R6, A

 

NEXT1:

        MOV     A, R6

        SUBB    A, #3

        JNZ     NEXT2

        MOV     R1, #5

        MOV     R2, #50

        ACALL   USERSOUND

        JMP     CONV

 

NEXT2:

        MOV     A, R6

        SUBB    A, #4

        JNZ     NEXT3

        MOV     R1, #1    ; FREQUENCY

        MOV     R2, #50   ; DELAY

        ACALL   USERSOUND

        JMP    CONV

 

NEXT3:

        MOV     A, R6

        SUBB    A, #5

        JNZ     NEXT4

        ACALL   DEADSOUND

        JMP    TERMINATE

NEXT4:

 

        MOV     A, R6            ; READY SOUND

        SUBB    A, #6

        JNZ     NEXT5

        MOV     R1, #30

        MOV     R2, #100

        ACALL   USERSOUND

        JMP    CONV

NEXT5:

        MOV     A, R6

        SUBB    A, #7

        JNZ     NEXT6

        MOV     R1, #70

        MOV     R2, #240

        ACALL   USERSOUND

        JMP    CONV

NEXT6:

 

CONV:

             MOV     DPTR, #ADC

             ;CONVERSION START

             MOVX    @DPTR,A

             CALL    WAIT120U

             ;DATA READ

             MOVX    A, @DPTR

 

             ACALL   TXDATA

 

        SJMP    LOOPC

             ;

SINIT:  CLR     EA

             MOV     TMOD, #00100000B

             MOV     87H, #0

             MOV     TH1, #0FDH

             SETB    TR1

 

             MOV     SCON, #01010010B

             MOV     SBUF, #0

             RET

             ;

GETCH:  JNB     RI, $

             MOV     A, SBUF

             CLR     RI

             RET

 

TXDATA: JNB     TI,$

             CLR     TI

             MOV     SBUF, A

             RET

 

USERSOUND:                 ; R2=SOUND LENGTH, R1=FREQ

        MOV     B, R1

        MOV     R0, B

 

        MOV     P1, #0

 

FREQ1_3:

             DEC     R0

        CJNE    R0, #0, FREQ1_3

 

        MOV     B, R1

        MOV     R0, B

 

        MOV     P1, #35

FREQ2_3:

             DEC     R0

        CJNE    R0, #0, FREQ2_3

 

        DEC     R2

        CJNE    R2, #0, USERSOUND

        RET

 

DEADSOUND:

        MOV     R3, #20

        MOV     R1, #1

        MOV     R2, #80

 

DEAD_LOOP:

        ACALL   USERSOUND

 

        MOV     A, R1

        ADD     A, #5

        MOV     R1, A

 

        DEC     R3

        CJNE    R3, #0, DEAD_LOOP

        RET

 

DELAY:  PUSH    PSW

             MOV     PSW, #18H

             PUSH    1DH

        MOV     R5, #50

LOOPY:  NOP

        DJNZ    R5, LOOPY

        POP     1DH

        POP     PSW

        RET

TERMINATE:

             END