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