ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/8/22 7:53:45ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
ºþÄϿƼ¼´óѧ±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
3.1.4 ËÅ·þµç»ú½éÉÜ
ËÅ·þµç¶¯»úÓÖ³ÆÖ´Ðе綯»ú£¬ÔÚ×Ô¶¯¿ØÖÆÏµÍ³ÖУ¬ÓÃ×÷Ö´ÐÐÔª¼þ£¬°ÑËùÊÕµ½µÄµçÐźÅת»»³Éµç¶¯»úÖáÉϵĽÇÎ»ÒÆ»ò½ÇËÙ¶ÈÊä³ö¡£·ÖΪֱÁ÷ºÍ½»Á÷ËÅ·þµç¶¯»úÁ½´óÀ࣬ÆäÖ÷ÒªÌØµãÊÇ£¬µ±ÐźŵçѹΪÁãʱÎÞ×ÔתÏÖÏó£¬×ªËÙËæ×Åת¾ØµÄÔö¼Ó¶øÔÈËÙϽµ[14]¡£
¶¨Ò壺ÔÚËÅ·þϵͳÖпØÖÆ»úеԪ¼þÔËתµÄ·¢¶¯»ú.ÊÇÒ»ÖÖ²¹ÖúÂí´ï¼ä½Ó±äËÙ×°Öᣠ×÷Ó㺿Éʹ¿ØÖÆËÙ¶È,λÖþ«¶È·Ç³£×¼È·¡£½«µçѹÐźÅת»¯Îª×ª¾ØºÍתËÙÒÔÇý¶¯¿ØÖƶÔÏó¡£
·ÖÀֱࣺÁ÷ËÅ·þµç»úºÍ½»Á÷ËÅ·þµç»ú¡£Ö±Á÷ËÅ·þµç»ú·ÖΪÓÐË¢µç»úºÍÎÞË¢µç»úÁ½ÖÖ¡£ÓÐË¢µç»ú³É±¾µÍ£¬½á¹¹¼òµ¥£¬Æô¶¯×ª¾Ø´ó£¬µ÷ËÙ·¶Î§¿í£¬¿ØÖÆÈÝÒ×£¬ÐèҪά»¤£¬µ«Î¬»¤·½±ã£¨»»Ì¼Ë¢£©£¬²úÉúµç´Å¸ÉÈÅ£¬¶Ô»·¾³ÓÐÒªÇó¡£Òò´ËËü¿ÉÒÔÓÃÓڶԳɱ¾Ãô¸ÐµÄÆÕͨ¹¤ÒµºÍÃñÓó¡ºÏ¡£ ÎÞË¢µç»úÌå»ýС£¬ÖØÁ¿Çᣬ³öÁ¦´ó£¬ÏìÓ¦¿ì£¬Ëٶȸߣ¬¹ßÁ¿Ð¡£¬×ª¶¯Æ½»¬£¬Á¦¾ØÎȶ¨¡£¿ØÖƸ´ÔÓ£¬ÈÝÒ×ʵÏÖÖÇÄÜ»¯£¬Æäµç×Ó»»Ï෽ʽÁé»î£¬¿ÉÒÔ·½²¨»»Ïà»òÕýÏÒ²¨»»Ïà¡£µç»úÃâά»¤£¬Ð§Âʺܸߣ¬ÔËÐÐζȵͣ¬µç´Å·øÉäºÜС£¬³¤ÊÙÃü£¬¿ÉÓÃÓÚ¸÷ÖÖ»·¾³¡£
- 12 -
ºþÄϿƼ¼´óѧ±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
3.2 ϵͳÈí¼þÉè¼Æ
3.2.1 ³ÌÐòÁ÷³Ìͼ
ͼ3.4 PWMµ÷ËÙϵͳ³ÌÐòÁ÷³Ìͼ
3.2.2 CÓïÑÔ³ÌÐòÉè¼Æ
/* =======Ö±Á÷µç»úµÄPWMËÙ¶È¿ØÖƳÌÐò======== */ /* ¾§Õñ²ÉÓÃ11.0592M,²úÉúµÄPWMµÄƵÂÊԼΪ91Hz */ #include
- 13 -
ºþÄϿƼ¼´óѧ±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
#define uint unsigned int [15]
sbit en1=P1^0; /* L298µÄEnable A */ sbit s1=P1^2; /* L298µÄInput 1 */ sbit s2=P1^1; /* L298µÄInput 2 */ uchar t=0; /* ÖжϼÆÊýÆ÷ */ uchar m=0; /* µç»úËÙ¶ÈÖµ */ uchar tmp; /* µç»úµ±Ç°ËÙ¶ÈÖµ */ /* speed-µç»úËÙ¶È(-100¡ª100) */ void motor(char speed) {
if(speed>=-100 && speed<=100) {
m=abs(speed); /* È¡Ëٶȵľø¶ÔÖµ */ if(speed<0) /* ËÙ¶ÈֵΪ¸ºÔò·´×ª */ { s1=0; s2=1; }
else /* ²»Îª¸ºÊýÔòÕýת */ { s1=1; s2=0; } } }
void delay(uint j) /* ¼òÒ×ÑÓʱº¯Êý */ {
for(j;j>0;j--); }
void main() { uchar i;
TMOD=0x02; /* É趨T0µÄ¹¤×÷ģʽΪ2 */ TH0=0x9B; /* ×°È붨ʱÆ÷µÄ³õÖµ */ TL0=0x9B;
- 14 -
ºþÄϿƼ¼´óѧ±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
EA=1; /* ¿ªÖÐ¶Ï */
ET0=1; /* ¶¨Ê±Æ÷0ÔÊÐíÖÐ¶Ï */ TR0=1; /* Æô¶¯¶¨Ê±Æ÷0 */ while(1) /* µç»úʵ¼Ê¿ØÖÆÑÝʾ */ {
for(i=0;i<=100;i=i++) /* Õýת¼ÓËÙ */ { motor(i); delay(5000); }
for(i=100;i>0;i--) /* Õýת¼õËÙ */ { motor(i); delay(5000); }
for(i=0;i<=100;i++) /* ·´×ª¼ÓËÙ */ { motor(-i); delay(5000); }
for(i=100;i>0;i--) /* ·´×ª¼õËÙ */ { motor(-i); delay(5000); } } }
void timer0() interrupt 1 /* T0ÖжϷþÎñ³ÌÐò */ {
if(t==0) /* 1¸öPWMÖÜÆÚÍê³Éºó²Å»á½ÓÊÜÐÂÊýÖµ */ { tmp=m; }
if(t - 15 - ºþÄϿƼ¼´óѧ±¾¿ÆÉú±ÏÒµÉè¼Æ£¨ÂÛÎÄ£© if(t>=100) t=0; /* 1¸öPWMÐźÅÓÉ100´ÎÖжϲúÉú */ } 3.3 PWMµ÷ËÙϵͳ·ÂÕæ ±¾ÎIJÉÓÃCÓïÑÔ±à³Ì£¬ÀûÓÃKeil±àÒë³É¹¦ºóÉú³ÉHexÎļþ£¬µ¼Èëµ½ProteusµÄ¹¤³ÌÖС£·ÂÕæÊ±£¬ÔÚAT89C51ÉϼÓÔØHexÎļþ£¬¼´¿ÉʵÏÖ·ÂÕæ¡£ 3.3.1 ϵͳ·ÂÕæµç·ͼ ͼ3.5 PWMµ÷ËÙϵͳ·ÂÕæÍ¼ 3.3.2 µçѹÊä³ö²¨ÐÎ ÏÂÃæËùʾͼ3.6ÖÁͼ3.13ÊÇϵͳ·ÂÕæÊ±´ÓL298µÄOUT1Òý½ÅµÃ³öµÄ²¨ÐÎͼ¡£ ͼ3.6 µçѹÊä³ö²¨ÐΣ¨1£© ͼ3.7 µçѹÊä³ö²¨ÐΣ¨2£© - 16 -