ÐÂÎÅ×ÊѶ
AVRµ¥Æ¬»úÀûÓð´¼ü¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð IOʵÑé
2010-11-28


2.1 ÀûÓð´¼ü¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð
2.1.1 ʵÀý¹¦ÄÜ
ÔÚ¡°µãÁÁ·¢¹â¶þ¼«¹Ü¡±ºÍ¡°È÷¢¹â¶þ¼«¹Ü¶¯ÆðÀ´¡±ÕâÁ½¸öÀý×ÓÖУ¬¶¼ÊÇͨ¹ýµ¥Æ¬»ú³ÌÐòÀ´¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð¡£Èç¹ûÏëÒª¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð£¬Ö»ÓÐͨ¹ý´ò¿ª»òÕ߹رյçÔ´À´ÊµÏÖ¿ØÖÆ¡£ÄÇôÔõÑùʵÏÖÈ˹¤²ÎÓë¿ØÖÆÄØ£¿
ÔÚÓÐЩӦÓó¡ºÏ£¬ÐèÒªµ¥Æ¬»ú¶ÔÈ˹¤µÄ¿ª¹ØÐźÅ×÷³öÏàÓ¦µÄÏìÓ¦ºÍ´¦Àí£¬Í¨¹ý¿ØÖƵçÔ´µÄͨ¶Ï»áÓ°Ïìµ½µ¥Æ¬»úϵͳÖÐµÄÆäËû¹¦ÄÜ£¬ËùÒÔͨ¹ý¿ØÖƵçÔ´µÄ·½·¨²¢²»Ã÷ÖÇ¡£Äܲ»ÄÜͨ¹ý°´¶¯Ò»¸ö°´¼üÀ´ÊµÏÖ·¢¹â¶þ¼«¹ÜµÄÁÁÃðÄØ£¿
µ±È»¿ÉÒÔ£¬Ç°ÃæÒѾ­½²¹ý£¬AVRµ¥Æ¬»úµÄI/O¿Ú¶¼ÊÇË«ÏòµÄ£¬Ò²¾ÍÊǼÈÄܵ±×÷Êä³ö¿ØÖƶ˿Ú£¬Ò²Äܵ±×÷ÊäÈë¼ì²â¶Ë¿Ú¡£¼ÈÈ»·¢¹ú¼ÊÌìÉúÓ®¼ÒÒ»´¥¼´·¢¿ÉÒÔͨ¹ý¿ØÖƶ˿ÚÊä³ö²»Í¬µÄ¸ßµÍµçƽʹ·¢¹â¶þ¼«¹ÜʵÏÖµãÁÁºÍϨÃð£»ÄÇôΪʲô²»ÄÜͨ¹ý¼à²â¶Ë¿ÚÊäÈëµçƽµÄ״̬À´½øÐÐÏàÓ¦µÄ´¦ÀíÄØ¡£
ÔÚ±¾ÀýÖУ¬Í¨¹ý½éÉÜÀûÓð´¼ü¿ª¹Ø¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃðÀ´Á˽âAVRµ¥Æ¬»úµÄ¶Ë¿Ú¼ì²âÍⲿÐźŵŦÄܺͷ½·¨¡£
±¾ÀýÖÐÓÐ3¸ö¹¦ÄÜÄ£¿é£¬ÃèÊöÈçÏ£º
¡ñ µ¥Æ¬»úϵͳ£º¼ì²âÍâ½çµÄ°´¼ü¿ª¹ØÐźÅ£¬¸ù¾Ý°´¼üµÄ¿ª¹Ø×´Ì¬¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð״̬¡£
¡ñ ÍâΧµç·£ºÊ×ÏÈÊDzúÉúÐźŵİ´¼üµç·£¬°üº¬¶Ô°´¼üÈ¥¶¶¶¯µç·µÄ½éÉÜ£»È»ºóÊÇ·¢¹â¶þ¼«¹ÜµÄ¿ØÖƵç·¡£
¡ñ Èí¼þ³ÌÐò£ºÍ¨¹ý¶ÁÈ¡AVRµ¥Æ¬»úÏàÓ¦¶Ë¿ÚµÄ״̬£¬±àдÏàÓ¦µÄ³ÌÐò¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð¡£
±¾ÀýµÄÄ¿µÄÔÚÓÚÏ£Íû¶ÁÕßÍê³É±¾Àýºó£¬ÄÜÍê³ÉÏà¹Øµç·µÄÉè¼ÆºÍÏàÓ¦³ÌÐòµÄ±àд£¬´Ó¶øÕÆÎÕÒÔÏÂ֪ʶµã£º
¡ô Á˽âAVRµ¥Æ¬»ú¶Ë¿ÚÊäÈ빦ÄÜ£¬ÕÆÎÕʹÓÃAVRµ¥Æ¬»ú¶Ë¿ÚÊäÈ빦Äܼì²âÍⲿÐźŵÄÔ­Àí¡£
¡ô ÊìϤµ¥Æ¬»ú¶Ë¿ÚÊäÈëÊä³ö¹¦ÄܵÄ×ÛºÏʹÓá£
¡ô ÕÆÎÕAVRµ¥Æ¬»ú°´¼üµÄÓ²¼þÈ¥¶¶¶¯µÄµç·Éè¼ÆºÍÔ­Àí¡£
¡ô ÕÆÎÕAVRµ¥Æ¬»ú¶Ë¿ÚÊäÈëÊä³ö³ÌÐòµÄ±àд¡£
¡ô ÕÆÎÕAVRµ¥Æ¬»ú°´¼üÈí¼þÈ¥¶¶¶¯¹¦ÄܵÄʵÏÖ¡£

2.1.2  Æ÷¼þºÍÔ­Àí
±¾ÀýÊ×Òª½éÉÜAVRµ¥Æ¬»úÍâΧµç·Öа´¼üÈ¥¶¶µç·µÄÉè¼Æ£¬·Ö±ð½éÉÜÏàÓ¦µÄÈí¼þºÍÓ²¼þ½â¾ö¹æ»®¡£È»ºóÀûÓÃCÓïÑÔ±àдͨ¹ý°´¼ü¿ØÖÆ·¢¹â¶þ¼«¹ÜÁÁÃð״̬µÄ³ÌÐò¡£
1¡¢°´¼üµÄÈ¥¶¶¶¯µç·
£¨1£©°´¼üµÄÏìÓ¦¹ý³Ì
·¢¹ú¼ÊÌìÉúÓ®¼ÒÒ»´¥¼´·¢ÈÕ³£Ëù˵µÄ°´¼ü£¬Êµ¼ÊÉÏÊÇÒ»¸ö»úе¿ª¹Ø£¬±¾ÊµÀýËùÓõİ´¼üÍâ¹ÛÈçͼ2.1.1Ëùʾ¡£ÀíÏëµÄ°´¼üµÄ±ÕºÏºÍ¶Ï¿ªÊ±£¬½Ó´¥µãµÄµçѹӦ¸ÃÁ¢¼´±ä¸ß»òÕß±äµÍ£¬µ« ÊÇÓÉÓÚ»úе´¥µãµÄµ¯ÐÔÒÔ¼°°´¼ü°´¶¯Ê±µçѹͻ±äµÈÔ­Òò£¬ÔÚ´¥µã±ÕºÏ»ò¶Ï¿ªµÄ˲¼ä»á³öÏÖµçѹ¶¶¶¯ÏÖÏó£¬Èçͼ2.1.2Ëùʾ¡£ÔÚ·¢Éú¶¶¶¯µÄʱ¼äÒ»°ãÔÚ 5-10ms¡£
Ò»´Î°´¼ü´¦Àí¹ý³ÌÈçÏ£ºµ±°´¼ü°´ÏÂÖ®ºó£¬ÏàÓ¦µÄ°´¼ü½Ó´¥µãµÄµçѹÒÔ¸ßµÍµçÆ½µÄ·½Ê½ÊäÈëµ½µ¥Æ¬»úµÄI/O¿Ú¡£°´¼üµÄ±ÕºÏÓë¶Ï¿ªÊÇÓÐÒ»¶¨Ê±¼äµÄ£¬Ò»°ãΪ 0.1-1S¡£¶øAVRµ¥Æ¬»úµÄ»úÆ÷ÖÜÆÚÒ»°ãΪ1usÉõÖÁ¸ü¶Ì£¬ÔÚ0.1-1SµÄʱ¼ä¶ÎÄÚ£¬³ÌÐò»á¼ì²âºÜ¶à´Î°´¼üµÄÊäÈëµçƽ£¬ÕâÑùµ¥Æ¬»ú¿ÉÄÜ»áÈÏΪ°´¼ü±» °´ÏÂÁ˶à´Î£¬´Ó¶ø³öÏÖÎóÅС£

ͼ2.1.1 °´¼ü¿ª¹Ø             ͼ2.1.2  °´¼ü±ÕºÏ¶Ï¿ªÊ±µÄµçѹ²¨¶¯Ê¾Òâͼ
£¨2£©°´¼üÈ¥¶¶¶¯µÄ·½·¨ºÍÔ­Àí
ΪÁËÈ¥³ý°´¼üµÄ¶¶¶¯£¬±£Ö¤µ¥Æ¬»ú¶Ô°´¼üµÄÒ»´ÎÊäÈëÖ»ÏìÓ¦Ò»´Î£¬¿ÉÒÔ²ÉÓÃÓ²¼þºÍÈí¼þÁ½ÖÖ·½·¨£ºÓ²¼þµç·ȥ¶¶¶¯ÊÇÔÚÍâΧµç·ÖмÓÈëÈ¥¶¶¶¯µç·£¨ÈçR-S´¥·¢ Æ÷£©£»Èí¼þÈ¥¶¶¶¯ÊÇÔÚ³ÌÐòÖмÓÈëÑÓʱ³ÌÐòÒÔÌø¹ý¶¶¶¯Ê±¼ä£¬µÈ´ýÐźÅÎȶ¨ºóÔÙ´ÎÅжϰ´¼üµÄÊäÈëµçƽ£¬Èç¹ûÐÅºÅµçÆ½±£³Ö²»±ä£¬Ôò¿ÉÒÔÈ·ÈÏÒ»´Î°´¼ü°´Ï¡£
¡ñÓ²¼þÈ¥¶¶¶¯µç·µÄÔ­Àí
ÓÃR-S´¥·¢Æ÷ÐγÉÈ¥¶¶µç·Êǵ¥Æ¬»úÍâΧµç·Éè¼ÆÖг£Óõķ½·¨£¬ÕâÖÖ·½·¨¿ÉÒÔ¼õÉÙµ¥Æ¬»úÈí¼þ¶Ô°´¼ü¶¯×÷µÄÑÓʱºÍ¼ÆËã¡£
ÏÈÀ´Á˽âÒ»ÏÂR-S´¥·¢Æ÷µÄ»ù±¾¹¤×÷Ô­ÀíºÍ¹¤×÷ÌØµã¡£R-S´¥·¢Æ÷µÄ»ù±¾¹¹³ÉÈçͼ2.1.3Ëùʾ£¬Õâ¸öµç·ÓÐÁ½¸öÓë·ÇÃŽ»²æñîºÏ¶ø³É£¬/S¡¢/RÊÇÐźÅÊäÈë¶Ë£¬µÍµçƽÓÐЧ¡£QºÍ/Q¼È±íʾ´¥·¢Æ÷״̬£¬ÓÖÊÇ´¥·¢Æ÷µÄÊä³ö¶Ë¡£

ͼ2.1.3  R-S´¥·¢Æ÷µÄ»ù±¾Ô­Àí
ÔÚÆô¶¯¹ý³ÌÖУ¬/S¶ËÒ»µ©Ï½µµ½¿ªÃÅµçÆ½£¬Q¶Ëµçƽ¾Í»áÉÏÉý£¬·´À¡µ½ÃÅBµÄÊäÈë¶Ë£¬´ËʱÃÅBÔÚ/RµÄµÍµçƽ×÷ÓÃÏ´¦ÓÚµ¼Í¨×´Ì¬£¬/QÊä³ö¸ßµçƽ·´À¡µ½AµÄ ÊäÈë¶Ë£¬Èç¹ûÕâʱ/S¶ËµçѹÓÐÒ»¸ö¸ßµÄÌø¶¯,ÔòAÃŽØÖ¹£¬Q¶ÎÊä³öµÍµçƽ£¬Õâ¸öµÍµçƽ·´À¡µ½AµÄÊäÈë¶Ë£¬Ê¹AÃŵ¼Í¨£¬Q¶ËµçƽΪ¸ß£¬ÕâÑù¾Í±£Ö¤ÁËQ¶Ëµçƽ µÄÎȶ¨£¬´Ó¶øÏû³ý°´¼üµÄ¶¶¶¯¡£
µäÐ͵ÄÓ²¼þÈ¥¶¶¶¯µç·Èçͼ2.1.4£¬74LS02°´¼üÊä³ö¶Ë¿Úͨ¹ý/Q¶Ë½ÓÈ뵥Ƭ»úµÄI/O¿Ú£¬74LS02¹¹³ÉÒ»¸öR-S´¥·¢Æ÷µç·ʵÏÖ°´¼üµÄÏû¶¶¡£
¡ñÈí¼þÏû¶¶µÄÔ­ÀíºÍʵÏÖ
Èí¼þÏû¶¶µÄ»ù±¾Ô­ÀíÊÇÔÚÈí¼þÖж԰´¼ü½øÐÐÁ½´Î¼ì²âÈ·ÈÏ£¬¼ÇÔØµÚÒ»´Î¼ì²âµ½°´¼ü°´Ïºó£¬¼ä¸ô10ms×óÓÒÔٴμì²â°´¼üÊÇ·ñ°´Ï£¬Ö»ÓÐÔÚÁ½´Î¶¼¼ì²âµ½°´¼ü°´ÏÂʱ²Å×îÖÕÈ·ÈÏÓмü°´Ï£¬ÕâÑù¾Í±Ü¿ªÁ˰´¼üµÄ¶¶¶¯Ê±¼ä£¬´Ó¶øÏû³ýÁ˶¶¶¯µÄÓ°Ïì¡£
ͼ2.1.4 74LS02ʵÏÖµÄÓ²¼þÏû¶¶µç·
ÔÚ°´¼ü½Ó¿ÚÈí¼þµÄÉè¼ÆÖУ¬³ýÁËÒª¿¼Âǰ´¼üÏû¶¶Í⣬һ°ã»¹ÒªÅб𰴼üµÄÊÍ·Å£¬Ö»Óмì²âµ½°´¼üÊͷźó£¬²ÅÄÜÈ·¶¨ÎªÒ»´ÎÍêÕûµÄ°´¼ü¶¯×÷¡£
ͨÓõݸ¼þ¼ì²â³ÌÐòÈçÏ£º

[code="c"]
Keyscan()
{
if(!key)       //Åжϰ´¼üÊÇ·ñ°´Ï£¬key=0±íʾ°´¼ü°´ÏÂ
{
delayms(20);  //ÑÓʱ20ms¡£±Ü¿ª°´¼ü¶¶¶¯Ê±¼ä
if(!key)     //ÔÙ´ÎÅжϰ´¼üÊÇ·ñ°´Ï£¬
{
¡­     //°´¼ü°´ÏµĴ¦Àí³ÌÐò
}
}
While(!key);    //Åжϰ´¼üÊÇ·ñ·Å¿ª£¬key=1±íʾ°´¼üÊÍ·Å£¬Í˳ö°´¼ü´¦Àíº¯Êý
}
[/code]

2.1.3 µç·
±¾ÀýÖеĵç·Èçͼ2.1.5ºÍ2.1.6Ëùʾ¡£
1¡¢µç·ԭÀí
ͼ2.1.5Êǰ´¼ü¼ì²âµç·£¬Á½¸ö°´¼ü·Ö±ðÁ¬½Óµ½µ¥Æ¬»úµÄPD6¡¢PD7¹Ü½Å£¬AVRµ¥Æ¬»úÔÚ³ÌÐòÀï°ÑPD6¡¢PD7ÉèÖÃΪ´øÉÏÀ­µÄ¶Ë¿Ú£¬ÕâÑù°´¼üûÓа´ ÏÂʱ£¬PD6¡¢PD7´¦ÓÚ¸ßµçÆ½×´Ì¬£¬µ±°´¼ü°´ÏÂʱPD6¡¢PD7±»Á¬½Óµ½µØ£¬µçƽ״̬±äΪµÍµçƽ£¬³ÌÐòÖмì²âµ½PD6¡¢PD7µÄµçƽΪµÍµçƽʱ£¬¾Í¿ÉÒÔ ÈÏΪ°´¼ü±»°´ÏÂÁË¡£
ͼ2.1.6ΪLEDÏÔʾµç·£¬µ±°´¼üK3±»°´ÏÂʱ£¬D1¡¢D3¡¢D5¡¢D7µãÁÁ£¬D2¡¢D4¡¢D6¡¢D8ϨÃð¡£µ±°´¼üK4±»°´ÏÂʱ£¬D1¡¢D3¡¢D5¡¢D7ϨÃð£¬D2¡¢D4¡¢D6¡¢D8µãÁÁ¡£
2¡¢ÔªÆ÷¼þÑ¡Ôñ
ÔÚÕâÀïÁгöºÍ±¾ÀýÏà¹ØµÄ¡¢¹Ø¼ü²¿·ÖµÄÆ÷¼þÃû³Æ¼°ÆäÔÚµç·ÖеÄ×÷Óá£
¡ñ ATmega16£ºµ¥Æ¬»ú£¬¼ì²â°´¼ü°´ÏÂÇé¿ö²¢¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð¡£
¡ñ D1-D8£º·¢¹â¶þ¼«¹Ü£¬Ö¸Ê¾°´¼ü״̬¡£
¡ñ RP1£º×èֵΪ330¦¸µÄÅÅ×裬ÏÞÁ÷µç×è¡£
¡ñ K3¡¢K4£º°´¼ü£¬µ±°´¼ü°´ÏÂʱ£¬Óë°´¼üÁ¬½ÓµÄµ¥Æ¬»ú¶Ë¿ÚµÄµçƽ·¢Éú±ä»¯¡£

3¡¢¹Ü½ÅÁ¬½Ó
ÔÚÕâÀïÁгöºÍ±¾ÀýÏà¹ØµÄ¡¢¹Ø¼ü²¿·ÖµÄµ¥Æ¬»ú¶Ë¿ÚÓëÍâΧµç·µÄÁ¬½Ó¡£
¡ñ PB0-PB7£ºÁ¬½Ó8¸ö·¢¹â¶þ¼«¹ÜLED1-LED8£¬¿ØÖÆ·¢¹â¶þ¼«¹ÜµÄÁÁÃð¡£
¡ñ PD6¡¢PD7£ºÁ¬½Ó°´¼üK3¡¢K4£¬¼ì²âÁ½¸ö°´¼üµÄ״̬¡£
2.1.4 ³ÌÐòÉè¼Æ
1¡¢³ÌÐò¹¦ÄÜ
¡ñ °´¼üÈí¼þÏû¶¶
±¾ÀýÖвÉÓÃÈí¼þÏû¶¶µÄ·½·¨£¬ÔÚ³ÌÐòÖмÓÈëÈí¼þÑÓʱ£¬È¥³ý°´¼üµÄ¶¶¶¯¡£
¡ñ °´¼ü¼ì²â
ͨ¹ý½«µ¥Æ¬»úµÄPD6¡¢PD7¿ÚÉèÖÃΪÊäÈë״̬£¬Í¬Ê±Ê¹ÄÜÕâÁ½¸ö¿ÚµÄÄÚ²¿ÉÏÀ­µç×裨ÒòΪÕâÁ½¸ö¿ÚÔÚ°´¼üûÓа´ÏÂʱ´¦ÓÚÐü¿Õ״̬£¬Ò×ÊÜÍâ½ç¸ÉÈÅ£¬ËùÒÔ±ØÐ뽫ÆäÄÚ²¿ÉÏÀ´µç×èʹÄÜ£¬Ê¹Æäƽʱ´¦ÓÚ¸ßµçÆ½×´Ì¬£©£¬¼ì²â°´¼üÊÇ·ñ°´Ï¡£

  1. LEDµÄÁÁÃð¿ØÖÆ

     ͨ¹ý½«µ¥Æ¬»úµÄPB0-PB7¿ÚÉèÖÃΪÊä³ö״̬£¬¸ù¾ÝK3¡¢K4Á½¸ö°´¼üµÄ°´ÏÂÇé¿ö£¬¿ØÖƲ»Í¬µÄ·¢¹â¶þ¼«¹ÜµãÁÁ»òϨÃð¡£
¡ñ AVRµ¥Æ¬»ú¶Ë¿ÚÊäÈë״̬µÄ¶ÁÈ¡
AVRµ¥Æ¬»ú¶Ë¿ÚÅ䱸ÓÐ3¸ö¼Ä´æÆ÷£¬·Ö±ðÊÇ·½Ïò¿ØÖƼĴæÆ÷DDRx£¬Êý¾Ý¼Ä´æÆ÷PORTx£¬ºÍÊäÈëÒý½Å¼Ä´æÆ÷PINx£¨x=A\B\C\D£©¡£µ±I/O¹¤×÷ÔÚÊäÈ뷽ʽ£¬Òª¶ÁÈ¡ÍⲿÒý½ÅÉÏµÄµçÆ½Ê±£¬Ó¦¶ÁÈ¡PINxnµÄÖµ£¬¶ø²»ÊÇPORTxnµÄÖµ¡£
2¡¢Ê×Òª±äÁ¿ºÍº¯Êý˵Ã÷
ÎÞ
3¡¢Ê¹ÓÃWINAVR¿ª·¢»·¾³£¬makefileÎļþÍ¬Ç°ÃæµÄÀý×Ó£¬Ö±½Ó¸´ÖƵ½±¾ÊµÀý³ÌÐòµÄÎļþ¼ÐÖм´¿É¡£
4¡¢³ÌÐò´úÂë
[code="c"] #include <avr/io.h>    
#include <util/delay.h>

int main(void)         
{           
PORTB = 0X00;      //Êä³öµÍ£¬LEDÈ«²¿Ï¨Ãð
DDRB = 0Xff;      //PB¶Ë¿ÚÖÃΪÊä³ö
PORTD = 0Xc0;     //Ò»¶¨ÒªÊ¹ÄÜÉÏÀ­µç×裬·ñÔò»áÓиÉÈÅ
DDRD = 0X3F;      //K3¡¢K4°´¼ü(PD6¡¢PD7)ÉèÖÃΪÊäÈë¶Ë¿Ú

while(1)
{
if(!(PIND & (1 <<  PD6)))     //Åжϰ´¼üÊÇ·ñ°´ÏÂ
{
_delay_ms(20);    //Åжϰ´¼ü°´Ï£¬ÑÓʱһ»áÔÙÅжÏÊÇ·ñ°´Ï£¬ ÒÔÏû³ý¸ÉÈÅ
if(!(PIND & (1 <<  PD6)))    // °´¼üÕæÕý°´Ïºó£¬½øÐÐÏàÓ¦´¦Àí
{
PORTB = 0X55;              //          °´¼ü°´Ï£¬µÆÁÁ   
while(!(PIND & (1 <<  PD6)));//µÈ´ý°´¼üÊÍ·Å
//PORTB = 0X55;  //  °ÑÕâ¾ä»°´ÓÉÏÃæÒÆµ½ÕâÀ°´¼üÊͷźó£¬µÆ²ÅµãÁÁ
}
}

if(!(PIND & (1 <<  PD7)))     //Åжϰ´¼üÊÇ·ñ°´ÏÂ
{
_delay_ms(20);     //Åжϰ´¼ü°´Ï£¬ÑÓʱһ»áÔÙÅжÏÊÇ·ñ°´Ï£¬ ÒÔÏû³ý¸ÉÈÅ
if(!(PIND & (1 <<  PD7)))    // °´¼üÕæÕý°´Ïºó£¬½øÐÐÏàÓ¦´¦Àí
{
PORTB = 0Xaa;                  //
while(!(PIND & (1 <<  PD7)));  //
//PORTB = 0Xaa;                        //
}
}
}
}

[/code]

¹Ø×¢ÓÐÈË΢ÐŹ«ÖÚºÅ
Á˽â¸ü¶àÐÅÏ¢

sitemap¡¢µØÍ¼