main() //Ö÷³ÌÐò
{ TMOD=0x21 ; //0b0010 0001 timer0ģʽ1£¨16룩£¬timer1×Ô¶¯ÖØ×°ÔØ TH0=0xfc ; //1msÑÓʱ³£Êý 12M TL0=0x18 ; //µÍµçƽʱ¼äµ÷½Ú
TH1=0x7f; //¶¨Ê±Æ÷1¸³³õÖµ TL1=0 ;
EA=1; ET0=1;
ET1=1; //¿ªÖÐ¶Ï while(1)
{if(sw==1) //Ñ»·ÅжϿª¹Ø×´Ì¬£¬²¢Ö´ÐÐÏàÓ¦µÄ³ÌÐò {AD_val(); //µ÷ÓÃTCL549²É¼¯´¦Àí display(uuu); } else {KB_Scan1(); display(sc); }
PID();} //ÿ¸öÑ»·µÄ×îºóÖ´ÐÐÒ»´ÎPIDÔËË㣬ʵʱ¿ØÖƵç»ú }
´ÓÖ÷³ÌÐòÖпÉÒÔ¿´³ö£¬ÔÚ½øÐÐһϵÁгÌÐòµ÷ÓÃ֮ǰ¶Ôϵͳ½øÐгõʼ»¯£¬È»ºóÅжϿª¹Ø×´Ì¬³ÌÐòÓÐËù·´Ó¦¡£È»ºó½øÐÐһϵÁÐ×Ó³ÌÐò£¬½øÐÐA/Dת»»ºÍPID¼ÆË㣬½«Æä½á¹ûÓÃÀ´¿ØÖÆÖ±Á÷µç»ú¡£ 2.2 ¼üÅ̳ÌÐò
4¡¿¡¾
2.2.1 ¼üÅÌɨÃè¼°¼üֵʶ±ðµÄÔÀíÓÉÓÚ»úе´¥µãÓе¯ÐÔ£¬ÔÚ°´Ï»òµ¯Æð°´¼üʱ»á³öÏÖ¶¶¶¯£¬´Ó
×î³õ°´Ïµ½½Ó´¥Îȶ¨Òª¾¹ýÊýºÁÃëµÄµ¯ÌøÊ±¼ä£¬ÈçͼËùʾ¡£ÎªÁ˱£Ö¤Ì½ÏÕ¼üʶ±ðµÄ׼ȷÐÔ£¬±ØÐëÏû³ý¶¶¶¯¡£Ïû¶¶´¦ÀíÓÐÓ²¼þºÍÈí¼þÁ½ÖÖ·½·¨£ºÓ²¼þÏû¶¶ÊÇÀûÓüÓÖ§¶¶¶¯µç·Â˱ÜÃâ²úÉú¶¶¶¯Ðźţ»Èí¼þÏû¶¶ÊÇÀûÓÃÊý×ÖÂ˲¨¼¼ÊõÀ´Ïû³ý¶¶¶¯¡£ÎÒÃDzÉÓÃÈí¼þµÄ·½·¨£¬ÀûÓÃÖ÷³ÌÐòÑ»·É¨Ã裬Ö÷³ÌÐòÿѻ·Ò»´ÎɨÃèµ½µÄ¼üÖµÏàͬʱ£¬Ôò˵Ã÷ÊÇij¼ü°´Ï¡£
Óï¾ä£¬°Ñ°´¼üµÄ±àÂëºÍ¼üÖµ¶ÔÓ¦ÆðÀ´¡£switch¶ÔÓÚ¼üֵʶ±ð£¬ÎÒÃÇÓÃÒ»Ìõ£®
2.2.2 ¼üÅ̾ßÌå³ÌÐò void KB_Scan1(void)
{ uchar tmp,line,i,flag,press; //¶¨Òå¾Ö²¿±äÁ¿
if(lie1==0|lie2==0|lie3==0)return; //ÅжÏÊÇ·ñÓмü°´Ï£¬ÈçÓУ¬·µ»Ø¡£Ïû³ýÖØ¼üÎÊÌâ line=0xFE; for(i=1;i<=4;i++)
{ P2=line; //ÒÀ´Î¸øP2¿ÚµÍËÄλËÍµÍµçÆ½£¬¶Á¸ßËÄλÅжÏÊÇ·ñÓмü°´Ï¡£ tmp=P2; //¶ÁÈ¡¼üÅÌ¿ÚÊý¾Ý¼Ä´æÆ÷ tmp&=0x70; if(tmp!=0x70)
{ tmp=P2;flag=1;break;} else line=(line<<1)|0x01; }
if(i==5) {tmp=0xFF;flag=0; }
switch(tmp) //ÓÃswitchÓï¾ä°Ñ±àÂëת»»Îª¶ÔÓ¦µÄ¼üÖµ¡£ { case 0xEE:press=1; break; case 0xDE:press=2; break; case 0xBE:press=3; break; case 0xED:press=4; break; case 0xDD:press=5; break; case 0xBD:press=6; break; case 0xEB:press=7; break; case 0xDB:press=8; break; case 0xBB:press=9; break; case 0xD7:press=0; break; default: break; }
if(flag==1) //Èç¹ûÓмü°´Ï£¬°Ñÿ´ÎµÄÖµ´æ·Åµ½buf[]ÖУ¬·½±ãÒÔºóµ÷Óᣠ{buf[2]=buf[1]; buf[1]=buf[0]; buf[0]= press; } }
2.3 Êý×ÖPID¼°µç»ú¿ØÖƳÌÐò
¡¾5¡¿
£¬ËùÒÔÒ»°ãʹÓÃÔöÓÉÓÚµ¥Æ¬»ú¿ØÖÆÊÇÒ»ÖÖ²ÉÑù¿ØÖÆ£¬ËüÖ»Äܸù¾Ý²ÉÑùʱ¿ÌµÄÆ«²îÖµ¼ÆËã¿ØÖÆÁ¿
Á¿ÐÍ¿ØÖÆ£¬Ëü¿ØÖÆÎȶ¨£¬Îó¶¯×÷Ó°ÏìС¡£ÆäËãʽÈçÏ£º
?
?u?u?ui?ii1
TTd(e?2ee??e?K[(e?e)?)]
2
2iiip?1ii?i?1TTi2e]?D?[?e?Ie?Kiipi
e??K?Ke?Ke?iiidip
Õâ¸ö¼ÆËãµÄ¹ý³Ì¿ÉÓÃÒ»¸ö¼òµ¥µÄ³ÌÐòÀ´ÊµÏÖ¡£ /***************PID·þÎñ³ÌÐò*************/ void PID( ) { double e0,e1,e2; uchar du,out1;
uchar kp=16, kd=0,ki=0; // ts=1; e0=e1;e1=e2;e2=(sc-uuu);///10; //É趨ֵ-²É¼¯Á¿
if(e2>=0)
{ direction=1; //É趨ֵ-²É¼¯Á¿>0, µç»úÕýת£¬¿ª´ó·§ÃÅ¡£
if(e2>=20) //²âµÃÆ«²îÖµÓëÉ趨ƫ²îÖµ½øÐбȽϣ¬Èô²»ÔÚÉ趨·¶Î§ÄÚÔòÂú¹¦ÂÊÕýת¡£ {TR0=0;PWM=1;} else
{ du=10*e2;//(e2-e1)+ki*e2+kd*(e2-2*e1+e0); // PIDËã·¨ out1=du;//+out0;
TR0=1; //Èôµ½´ïÉ趨·¶Î§Ôòµ÷ÓÃPID³ÌÐò£¬½øÐÐÓÐЧ¹¦ÂÊת¶¯. } }
else if(e2<0)
{ direction=0; //É趨ֵ-²É¼¯Á¿<0, µç»ú·´×ª£¬¹ØÐ¡·§ÃÅ¡£
if(e2<-20) //²âµÃÆ«²îÖµÓëÉ趨ƫ²îÖµ½øÐбȽϣ¬Èô²»ÔÚÉ趨·¶Î§ÄÚÔòÂú¹¦ÂÊ·´×ª¡£ {TR0=0;PWM=1;} else
{ du=10*e2;//(e2-e1)+ki*e2+kd*(e2-2*e1+e0); // PIDËã·¨ out1=-du;//+out0;
TR0=1; //Èôµ½´ïÉ趨·¶Î§Ôòµ÷ÓÃPID³ÌÐò£¬½øÐÐÓÐЧ¹¦ÂÊÔËת. } } out0=out1; }
Îå¡¢½áÊøÓï
´Ë´Î¿Î³ÌÉè¼ÆÊÇ»ùÓÚ¡¶¹ý³Ì¿ØÖÆÏµÍ³¡·µÄ×ۺϿÎÉ裬ҪÇóͨ¹ý¶Ô¹¤Òµ¹ý³ÌÁ¿Á÷Á¿µÄ²âÁ¿·½·¨¡¢ÐźŴ¦Àí¼¼ÊõºÍ¿ØÖÆÏµÍ³µÄÉè¼Æ£¬ÕÆÎÕ²â¿Ø¶ÔÏó²ÎÊý¼ì²â·½·¨¡¢±äËÍÆ÷µÄ¹¦ÄÜ¡¢²â¿ØÍ¨µÀ¼¼Êõ¡¢Ö´ÐÐÆ÷ºÍµ÷½Ú·§µÄ¹¦ÄÜ¡¢¹ý³Ì¿ØÖÆÒDZíµÄPID¿ØÖƲÎÊýÕû¶¨·½·¨¡£
ÎÒÄõ½ÌâÄ¿ºÍÒªÇó£¬Ã÷È·±¾´ÎµÄÖØµãÊÇÒ»¸ö¿ØÖÆ¡°ÏµÍ³¡±µÄÉè¼Æ£¬ÒªÊµÏÖÁ÷Á¿µÄ¿ØÖÆ£¬·ÖÎöÁ÷Á¿
Ôõô²â£¬Ôõô¿Ø¡£¾ÍÊÇÒªÍê³É´ÓÐźŲɼ¯¡úÆ«²î¿ØÖÆ¡úÖ´ÐÐÆ÷¡ú¶ÔÏóÊä³öÕû¸öµÄÉè¼Æ¡£ËùÒÔÎÒÏÈ·ÖÄ£¿é½øÐÐÉè¼Æ£¬´ÖÂԵĹ¹Ë¼ÁËÒ»¸öµ¥»ØÂ·¿ØÖÆÏµÍ³£º¼´Æ«²îÔËËãÓÃPID£¬Êä³öPWM²¨ÐοØÖƵç»ú£¬µç»úÇý¶¯·§ÃÅ¿ª¶È±ä»¯¡£½ÓÏÂÀ´¾ÍÊǾßÌåÄ£¿éµÄ¾ßÌåÉè¼ÆÊµÏÖ£¬ÐźŲɼ¯Ä£¿éÎÒ¾ÍÃæÁÙÁËÑ¡Ôñ£¬ÊÇÑ¡Ôñ²¢ÐÐADת»»Ð¾Æ¬»¹ÊÇ´®ÐÐADоƬ£¬ÔÙºóÀ´¾ÍÊÇÊýÂë¹ÜÏÔʾ²»Îȶ¨£¬ÁÁ¶È²»¹»Ôõô°ì£¬Ã¿Ç°½øÒ»²½¶¼ÊÇÎÊÌ⣬Õâʱ¾Í½è¼ø±ðÈËÔõô×öµÄ£¬ËûÃǵÄЧ¹ûÊDz»ÊDZÈ×Ô¼ºµÄºÃ£¬ÕâÑù²»¶ÏµÄ±È½ÏºÍ˼¿¼£¬½â¾öÁ˺ܶàÎÊÌâ¡£×î´óµÄÌå»á¾ÍÊÇÉè¼Æ¹ý³ÌÊǽâ¾öÎÊÌâµÄ¹ý³Ì£¬×Ô¼ºÒ²¶ÔÉè¼Æ¿ØÖÆÏµÍ³»ýÀÛÁËÒ»¶¨µÄ¾Ñ顣ͨ¹ýÉè¼ÆºóÃæµÄ¿ØÖÆÆ÷Ä£¿é¡¢µç»ú¿ØÖÆÄ£¿é£¬ÎÒʹÓÃÁËPIDµÄÀíÂÛ¡¢PWM¿ØÖƵç»úתËÙµÄ֪ʶºÍµç»úµÄÇý¶¯µç·µÄ֪ʶ£¬Í¨¹ý´óÁ¿µÄ²éÔÄ×ÊÁÏ£¬ÔÚÒÔǰ´¿ÀíÂ۵Ļù´¡ÉÏÓкܴóÌá¸ß¡£
Õâ´Î¿ÎÉèʹÎÒ¶Ô¹ý³Ì¿ØÖÆÏµÍ³ÓÐÁ˸üÉîµÄÀí½â£¬Í¬Ê±¶ÔÄ£¿éÉè¼ÆÓÐÁË×Ô¼ºµÄ˼¿¼ºÍ˼·£¬¶ÔÒÔºó×Ô¼ºÉè¼Æ¿ª·¢¿ØÖÆÏµÍ³ÓÐºÜºÃµÄÆÌµæ×÷Óá£
²Î¿¼ÎÄÏ×
¡¾1¡¿ ÈÎÑå˶µÈ£®×Ô¶¯¿ØÖÆÏµÍ³[M]£®±±¾©£º±±¾©Óʵç´óѧ³ö°æÉ磬2006£¬157 ¡¾2¡¿ÕżÒÉú. µç»úÔÀíÓëÍ϶¯»ù´¡[M]. ±±¾©£º±±¾©Óʵç´óѧ³ö°æÉ磬2006£¬ 136
¡¾3¡¿ Âí±óµÈ£®µ¥Æ¬»úÔÀí¼°Ó¦ÓÃ---CÓïÑÔ³ÌÐòÉè¼ÆÓëʵÏÖ[M]£®±±¾©£ºÈËÃñÓʵç³ö°æÉ磬2009£¬284--290
¡¾4¡¿ÍõÒË»³µÈ.ǶÈëʽϵͳ[M]. ±±¾©£º±±¾©º½¿Õº½Ìì´óѧ³ö°æÉ磬2008£¬ 132
¡¾5¡¿¹ËµÂÓ¢£¬ÕŽ¡£¬ÂíÊ绪.¼ÆËã»ú¿ØÖƼ¼Êõ[M]. ±±¾©£º±±¾©Óʵç´óѧ³ö°æÉ磬2006£¬106
¸½Ò³1£ºÁ÷Á¿¿ØÖÆÏµÍ³×ܳÌÐò
#include
uchar pr[]={0x57,0x6E,0x5E,0x3E,0x6D,0x5D,0x3D,0x6B,0x5B,0x3B}; uchar discode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int AD; //ת»»½á¹û£¬Ê®Áù½øÖÆ int uuu,sc=0;
int Int_result, //±ê¶È±ä»»ºóµÄ½á¹û sbit Dataout=P1^0; //Êý¾ÝÏß sbit cs=P1^1; //Ƭѡ sbit sclk=P1^2; //io¿ÚʱÖÓ sbit dx=P1^3; //¶ÏÂëÏÔʾ¿ØÖÆËø´æ sbit wx=P1^4; //λ¿Ø¿ØÖÆËø´æ sbit sw=P1^7; sbit PWM=P1^5;

