»ùÓÚµ¥Æ¬»úµÄÁ÷Á¿¿ØÖÆÏµÍ³Éè¼Æ½²½â

2026/4/28 12:49:05

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 #define uchar unsigned char #define uint unsigned int uchar out0=0x7f ; //¸³³õÖµ uchar buf[3]={0,0,0};//È«¾ÖÊý×é

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;


»ùÓÚµ¥Æ¬»úµÄÁ÷Á¿¿ØÖÆÏµÍ³Éè¼Æ½²½â.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ
ËÑË÷¸ü¶à¹ØÓÚ£º »ùÓÚµ¥Æ¬»úµÄÁ÷Á¿¿ØÖÆÏµÍ³Éè¼Æ½²½â µÄÎĵµ
Ïà¹ØÍÆ¼ö
Ïà¹ØÔĶÁ
¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩

ÏÂÔØ±¾ÎĵµÐèÒªÖ§¸¶ 10 Ôª

Ö§¸¶·½Ê½£º

¿ªÍ¨VIP°üÔ»áÔ± ÌØ¼Û£º29Ôª/ÔÂ

×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£ºxuecool-com QQ£º370150219