±¾ÎÄÀ´×Ôµç×Ó¹¤³Ìʦ֮¼Ò:http://www.eehome.cn/read.php?tid=5893
ºìÍâÏßÒ£¿ØÊÇĿǰʹÓÃ×î¹ã·ºµÄÒ»ÖÖͨÐźÍÒ£¿ØÊֶΡ£ÓÉÓÚºìÍâÏßÒ£¿Ø×°ÖþßÓÐÌå»ýС¡¢¹¦ºÄµÍ¡¢¹¦ÄÜÇ¿¡¢³É±¾µÍµÈÌØµã£¬Òò¶ø£¬¼Ì²Êµç¡¢Â¼Ïñ»úÖ®ºó£¬ÔÚ¼Òô»ú¡¢ÒôÏìÉ豸¡¢¿Õ
µò»úÒÔ¼°Íæ¾ßµÈÆäËüСÐ͵çÆ÷×°ÖÃÉÏÒ²·×·×²ÉÓúìÍâÏßÒ£¿Ø¡£ÏÖÔÚ¹¤ÒµÉ豸ÖУ¬Ò²ÒѾ¹ã·ºÔÚʹÓá£
1 ºìÍâÒ£¿ØÏµÍ³
ͨÓúìÍâÒ£¿ØÏµÍ³ÓÉ·¢ÉäºÍ½ÓÊÕÁ½´ó²¿·Ö×é³É£¬Ó¦Óñà/½âÂëרÓü¯³Éµç·оƬÀ´½øÐпØÖƲÙ×÷£¬Èçͼ1Ëùʾ¡£·¢É䲿·Ö°üÀ¨¼üÅ̾ØÕó¡¢±àÂëµ÷ÖÆ¡¢LEDºìÍâ·¢ËÍÆ÷£»½ÓÊÕ²¿·Ö°üÀ¨
¹â¡¢µçת»»·Å´óÆ÷¡¢½âµ÷¡¢½âÂëµç·¡£
2 Ò£¿Ø·¢ÉäÆ÷¼°Æä±àÂë
Ò£¿Ø·¢ÉäÆ÷רÓÃоƬºÜ¶à£¬¸ù¾Ý±àÂë¸ñʽ¿ÉÒÔ·Ö³ÉÂö³å¿í¶Èµ÷ÖÆºÍÂö³åÏàλµ÷ÖÆÁ½´óÀ࣬ÕâÀïÎÒÃÇÒÔÔËÓñȽϹ㷺£¬½âÂë±È½ÏÈÝÒ×µÄÂö³å¿í¶Èµ÷ÖÆÀ´¼ÓÒÔ˵Ã÷£¬ÏÖÒÔ3310×é³É·¢Éä
µç·ΪÀý˵Ã÷±àÂëÔÀí¡£µ±·¢ÉäÆ÷°´¼ü°´Ïº󣬼´ÓÐÒ£¿ØÂë·¢³ö£¬Ëù°´µÄ¼ü²»Í¬Ò£¿Ø±àÂëÒ²²»Í¬¡£ÕâÖÖÒ£¿ØÂë¾ßÓÐÒÔÏÂÌØÕ÷£º
²ÉÓÃÂö¿íµ÷ÖÆµÄ´®ÐÐÂ룬ÒÔÂö¿íΪ0.565ms¡¢¼ä¸ô0.56ms¡¢ÖÜÆÚΪ1.125msµÄ×éºÏ±íʾ¶þ½øÖƵġ°0¡±£»ÒÔÂö¿íΪ0.565ms¡¢¼ä¸ô1.685ms¡¢ÖÜÆÚΪ2.25msµÄ×éºÏ±íʾ¶þ½øÖƵġ°1¡±
ÉÏÊö¡°0¡±ºÍ¡°1¡±×é³ÉµÄ42λ¶þ½øÖÆÂë¾38kHzµÄÔØÆµ½øÐжþ´Îµ÷ÖÆÒÔÌá¸ß·¢ÉäЧÂÊ£¬´ïµ½½µµÍµçÔ´¹¦ºÄµÄÄ¿µÄ¡£È»ºóÔÙͨ¹ýºìÍâ·¢Éä¶þ¼«¹Ü²úÉúºìÍâÏßÏò¿Õ¼ä·¢Éä¡£
3310²úÉúµÄÒ£¿Ø±àÂëÊÇÁ¬ÐøµÄ42λ¶þ½øÖÆÂë×飬ÆäÖÐǰ26λΪÓû§Ê¶±ðÂ룬ÄÜÇø±ð²»Í¬µÄºìÍâÒ£¿ØÉ豸£¬·ÀÖ¹²»Í¬»úÖÖÒ£¿ØÂ뻥Ïà¸ÉÈÅ¡£ºó16λΪ8λµÄ²Ù×÷ÂëºÍ8λµÄ²Ù×÷
·´ÂëÓÃÓں˶ÔÊý¾ÝÊÇ·ñ½ÓÊÕ׼ȷ¡£
ĿǰʹÓõÄÒ£¿ØÆ÷Óд󲿷ֲÉÓÃ32λ±àÂ뷽ʽ£¬ÆäÖÐǰ16λΪÓû§Ê¶±ðÂ룬ºó16λΪ8λµÄ²Ù×÷Âë¼°Æä·´Âë¡£
µ±Ò£¿ØÆ÷ÉÏÈÎÒâÒ»¸ö°´¼ü°´Ï³¬¹ý36msʱ£¬LC7461оƬµÄÕñµ´Æ÷ʹоƬ¼¤»î£¬½«·¢ÉäÒ»¸öÌØ¶¨µÄͬ²½ÂëÍ·£¬¶ÔÓÚ½ÓÊն˶øÑÔ¾ÍÊÇÒ»¸ö9msµÄµÍµçƽ,ºÍÒ»¸ö4.5msµÄ¸ßµçƽ£¬Õâ
¸öͬ²½ÂëÍ·¿ÉÒÔʹ³ÌÐòÖªµÀ´ÓÕâ¸öͬ²½ÂëÍ·ÒÔºó¿ÉÒÔ¿ªÊ¼½ÓÊÕÊý¾Ý¡£
Á¬Ðø·¢Íê42루»ò32룩±àÂëºó£¬Èç¹û¸Ã¼üÈÔÈ»±»°´Ï£¬Ôòÿ¸ô110ms·¢ÉäÒ»¸öÖØ¸´Â룬¶ÔÓÚ½ÓÊն˶øÑÔ¾ÍÊÇÒ»¸ö9msµÍµçƽ+2.25ms¸ßµçƽ+0.56msµÍµçƽ£¬¶ø²»ÔÙ·¢Éä²Ù
×÷Âë¡£
½âÂëµÄ¹Ø¼üÊÇÈçºÎʶ±ð¡°0¡±ºÍ¡°1¡±£¬´ÓλµÄ¶¨ÒåÎÒÃÇ¿ÉÒÔ·¢ÏÖ¡°0¡±¡¢¡°1¡±¾ùÒÔ0.56msµÄµÍµçƽ¿ªÊ¼£¬²»Í¬µÄÊÇ¸ßµçÆ½µÄ¿í¶È²»Í¬£¬¡°0¡±Îª0.56ms,¡°1¡±Îª1.68ms,ËùÒÔ±ØÐë¸ù¾Ý¸ßµçƽµÄ¿í¶È
Çø±ð¡°0¡±ºÍ¡°1¡±¡£Èç¹û´Ó0.56msµÍµçƽ¹ýºó£¬¿ªÊ¼ÑÓʱ£¬0.56msÒÔºó£¬Èô¶Áµ½µÄµçƽΪµÍ£¬ËµÃ÷¸ÃλΪ¡°0¡±£¬·´Ö®ÔòΪ¡°1¡±£¬ÎªÁ˿ɿ¿Æð¼û£¬ÑÓʱ±ØÐë±È0.56ms³¤Ð©£¬µ«ÓÖ²»Äܳ¬¹ý1.12ms,·ñ
ÔòÈç¹û¸ÃλΪ¡°0¡±£¬¶Áµ½µÄÒÑÊÇÏÂһλµÄ¸ßµçƽ£¬Òò´ËÈ¡£¨1.12ms+0.56ms£©/2=0.84ms×îΪ¿É¿¿£¬Ò»°ãÈ¡0.84ms×óÓÒ¼´¿É¡£
¸ù¾ÝºìÍâ±àÂëµÄ¸ñʽ£¬³ÌÐòÓ¦¸ÃµÈ´ýÒýµ¼Â루9msµÍµçƽ+4.5msµÄ¸ßµçƽ£©Íê³Éºó²ÅÄܶÁÂë¡£
//============================================================
// ºìÍâÒ£¿Ø½âÂë³ÌÐò
// Ó²¼þÁ¬½Ó: P3.0¡¢P3.1½Ó´®¿Ú±ãÓÚµ÷ÊÔ;
// P3.2½ÓºìÍâ½ÓÊչܵÄÊý¾ÝÏß
// ÊÊÓÃÓÚ32λÂë×ÖºìÍâ½ÓÊÕÍ·¼°ºê¿ÆÍòÄÜÒ£¿ØÆ÷
// =======±¾³ÌÐòÒý×Ô£º¹ÈÓ깤×÷ÊÒ========
//============================================================
#include
#define uint unsigned int
#define uchar unsigned char
uint time=0,flag=0;
uint First_INT=0,Star_Flag=0,CodeNum=0,Code[33]={0};
void init_serial();
void Tranfer(char Data);
uint getkey(void);
//============================================================
//º¯ÊýÃû³Æ:int main(void)
//º¯Êý¹¦ÄÜ:ϵͳÖ÷º¯Êý,Ö÷Òª°üÀ¨Ò»¸öÓô®¿Ú×öµÄ²âÊÔ²¿·Ö
//Èë¿Ú²ÎÊý:ÎÞ
//³ö¿Ú²ÎÊý:ÎÞ
//============================================================
int main()
{
uint keyvalue;
TMOD=0x22; //ÉèÖö¨Ê±Æ÷0Ϊ¹¤×÷·½Ê½2
TH0=0xd1; //¶¨Ê±0.05ms
TL0=0xd1;
TR0=1;
IT0=1; //ÉèÖÃINTR0Ϊ±ßÑØ´¥·¢£¬¸ºÌø±ä²úÉúÖжÏ
EX0=1; //ÍâÖжÏ0ÔÊÐí
ET0=1; //¶¨Ê±ÖжÏÔÊÐí
EA=1; //¿ª×ÜÖжÏ
init_serial();
while(1)
{
keyvalue=getkey();
switch(keyvalue)
{
case 0x01: Tranfer('1');break;
case 0x02:Tranfer('2');break;
case 0x03:Tranfer('3');break;
case 0x04:Tranfer('4');break;
case 0x05:Tranfer('5');break;
case 0x06:Tranfer('6');break;
case 0x07:Tranfer('7');break;
case 0x08:Tranfer('8');break;
case 0x10:Tranfer('J');Tranfer('Y');break;//¾²Òô
case 0x12:Tranfer('K');Tranfer('G');break;//¿ª¹Ø
case 0x0b:Tranfer('-');Tranfer('-');break;// -/--
case 0x52:Tranfer(' @ ');break;//תȦµÄÄǸö
case 0x51:Tranfer('H');Tranfer('Z');Tranfer('H');break;//»Öл
case 0x58:Tranfer('Z');Tranfer('S');break;//ÖÆÊ½
case 0x16:Tranfer('P');Tranfer('X');break;//ÆÁÏÔ
case 0x0e:Tranfer('S');Tranfer('M');break;//×ó
case 0x1b:Tranfer('P');Tranfer('1');break;//ƵµÀ(ÉÏ)
case 0x1e:Tranfer('Y');Tranfer('1');break;//ÒôÁ¿(×ó)
case 0x1f:Tranfer('P');Tranfer('2');break;//ƵµÀ(ÏÂ)
case 0x1a:Tranfer('Y');Tranfer('2');break;//ÒôÁ¿(ÓÒ)
case 0x0f:Tranfer('S');Tranfer('P');break;//ÊÓÆµ
case 0x1d:Tranfer('B');Tranfer('Y');break;//°éÒô
case 0x13:Tranfer('L');Tranfer('Y');break;//ÀöÒô
case 0x56:Tranfer('U');Tranfer('P');break;//ÉÏ
case 0x57:Tranfer('D');Tranfer('N');break;//ÏÂ
case 0x5b:Tranfer('L');break;//×ó
case 0x5f:Tranfer('R');break;//ÓÒ
case 0x5c:Tranfer('M');break;//²Ëµ¥
default:break;
}
}
}
//============================================================
//º¯ÊýÃû³Æ:uint getkey(void)
//º¯Êý¹¦ÄÜ:»ñµÃºìÍâÒ£¿ØÆ÷¼üÖµ
//Èë¿Ú²ÎÊý:ÎÞ
//³ö¿Ú²ÎÊý:ÎÞ
//˵Ã÷:ÊÊÓÃÓÚ32λÂë×ÖºìÍâ½ÓÊÕÍ·¼°ºê¿ÆÍòÄÜÒ£¿ØÆ÷
//============================================================
uint getkey(void)
{
uint j=0;
uint DateCode=0,key=0;
if(flag==1) //ÅжÏÍ·²¿ÊÇ·ñÊÇ5£»·ÀÖ¹Îó½ÓÊÕ
{
for(j=8;j<=10;j++)
{
if(Code[j]==1&&Code[j+1]==1&&Code[j+2]==1&&Code[j+3]==1&&Code[j+4]==1&&Code[j+5]==1&&Code[j+6]==0&&Code[j+7]==1)
{ //ÅжÏÓû§Ê¶±ðÂëÊDz»ÊÇ1111 1101
for(DateCode=0;DateCode<8;DateCode++)//ÈôÊÇ,Ôò¿ªÊ¼½ÓÊÕ°ËλÊý¾ÝÂë
{
Code[j+8+DateCode]<<=DateCode;
key|=Code[j+8+DateCode]; //½«°Ëλ¶þ½øÖÆÊýµ¹Ðòת³É16½øÖÆ
}
break;
}
}
flag=0; //½«Í·²¿ÇåÁã
return key; //·µ»Ø¼üÖµ
}
else return(0);
}
//=============================================================
//º¯ÊýÃû³Æ:void init_serial()
//º¯Êý¹¦ÄÜ:³õʼ»¯´®¿Ú
//Èë¿Ú²ÎÊý:ÎÞ
//³ö¿Ú²ÎÊý:ÎÞ
//============================================================
void init_serial()
{
// TMOD=0x22; //¶¨Ê±Æ÷T1ʹÓù¤×÷·½Ê½2
TH1=250; //ÉèÖóõÖµ
TL1=250;
TR1=1; //¿ªÊ¼¼ÆÊ±
PCON=0x80; //SMOD=1£»
SCON=0x50; //¹¤×÷·½Ê½1£¬²¨ÌØÂÊ9600bit/s,ÔÊÐí½ÓÊÕ
TI=1;
}
//============================================================
//º¯ÊýÃû³Æ:void Tranfer(char Data)
//º¯Êý¹¦ÄÜ:·¢ËÍÊý¾Ý³ÌÐò
//Èë¿Ú²ÎÊý:Data Òª·¢Ë͵ÄÊý¾Ý
//³ö¿Ú²ÎÊý:ÎÞ
//============================================================
void Tranfer(char Data)
{
while(TI==0);
SBUF=Data;
TI=0;
}
//============================================================
//º¯ÊýÃû³Æ:void timer0_int()
//º¯Êý¹¦ÄÜ:¶¨Ê±Æ÷0ÖжϷþÎñº¯Êý
//Èë¿Ú²ÎÊý:ÎÞ
//³ö¿Ú²ÎÊý:ÎÞ
//============================================================
void timer0_int() interrupt 1 using 2 //¶¨Ê±Æ÷0ÖжÏ
{
time++;
}
//============================================================
//º¯ÊýÃû³Æ:void intr0_int()
//º¯Êý¹¦ÄÜ:ÍâÖжÏ0ÖжϷþÎñº¯Êý
//Èë¿Ú²ÎÊý:ÎÞ