找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3677|回復: 9
收起左側

51單片機直流電機調(diào)速源程序

[復制鏈接]
ID:511520 發(fā)表于 2019-4-13 21:42 | 顯示全部樓層 |閱讀模式
我不多說,絕對可用!
上貼。

單片機源程序如下:
  1. #include  "reg52.h"
  2. sbit IN1=P1^1;
  3. sbit IN2=P1^2;
  4. sbit IN3=P1^3;
  5. sbit IN4=P1^4;
  6. unsigned char pwm_val_right=0;
  7. unsigned char push_val_right=0;
  8. unsigned int time=0;
  9. unsigned char pwm_val_left=0;
  10. unsigned char push_val_left=0;
  11. bit right_moto_stop=1;
  12. sbit right_moto_pwm=P2^0;
  13. bit left_moto_stop=1;
  14. sbit left_moto_pwm=P2^1;

  15. void delay(unsigned int i)
  16. {
  17. unsigned int k;
  18.         for(k=0;k<7000;k++)
  19.         for(i=0;k<i;i++);
  20. }
  21. void pwm_out_right_moto(void)
  22. {
  23.         if(right_moto_stop)
  24.   {
  25.                 if(pwm_val_right<=push_val_right)
  26.                         right_moto_pwm=1;
  27.                 else
  28.                         right_moto_pwm=0;
  29.                 if(pwm_val_right>=100)
  30.                         pwm_val_right=0;
  31.         }
  32.         else right_moto_pwm=0;
  33. }

  34. void pwm_out_left_moto(void)
  35. {
  36.         if(left_moto_stop)
  37.   {
  38.                 if(pwm_val_left<=push_val_left)
  39.                         left_moto_pwm=1;
  40.                 else
  41.                         left_moto_pwm=0;
  42.                 if(pwm_val_left>=100)
  43.                         pwm_val_left=0;
  44.         }
  45.         else right_moto_pwm=0;
  46. }
  47. void time0_init()
  48. {
  49. TMOD=0X01;
  50. TH0=(65536-1000)/256;
  51. TL0=(65536-1000)%256;
  52. TR0=1;
  53. ET0=1;
  54. EA=1;
  55. }
  56. void forward(unsigned char i)
  57. {               
  58. push_val_right=i;
  59. push_val_left=i;
  60.         IN1=0;
  61.         IN2=1;
  62.         IN3=1;
  63.         IN4=0;
  64. }
  65. void forward1(unsigned char l)
  66. {               
  67. push_val_right=l;
  68. push_val_left=l;
  69.         IN1=1;
  70.         IN2=0;
  71.         IN3=0;
  72.         IN4=1;
  73. }

  74. void time0()interrupt 1
  75. {
  76. TH0=(65536-1000)/256;
  77. TL0=(65536-1000)%256;
  78. ET0=1;
  79. TR0=1;
  80.         time++;
  81.         pwm_val_right++;
  82.         pwm_out_right_moto();
  83.         pwm_val_left++;
  84.         pwm_out_left_moto();
  85. }
  86. void main()
  87. {
  88.         unsigned char i,k;
  89. time0_init();
  90.         while(1)
  91.         {
  92. for(i=10;i<100;i++)
  93.                 {
  94.                 forward(i);
  95.                 delay(10000);
  96.                 }
  97.         for(k=100;k<=100;k--)
  98.                 {
  99.                 forward(k);
  100.                 delay(10000);
  101.                 }
  102. for(i=10;i<100;i++)
  103.                 {
  104.                 forward1(i);
  105.                 delay(10000);
  106.                 }               
  107.         for(k=100;k<=100;k--)
  108.                 {
  109.                 forward1(k);
  110.                 delay(10000);
  111.                 }               
  112. }
  113. }
復制代碼

所有資料51hei提供下載:
keil2.zip (35.97 KB, 下載次數(shù): 35)


回復

使用道具 舉報

ID:482955 發(fā)表于 2019-4-18 08:29 | 顯示全部樓層
沒注釋的嗎  新手看得有點吃力
回復

使用道具 舉報

ID:404894 發(fā)表于 2019-4-18 09:48 來自觸屏版 | 顯示全部樓層
有仿真嗎
回復

使用道具 舉報

ID:511520 發(fā)表于 2019-4-21 20:36 | 顯示全部樓層

沒有,你按照上面接就行了,用LN298點擊驅(qū)動。
回復

使用道具 舉報

ID:511520 發(fā)表于 2019-4-21 20:39 | 顯示全部樓層
Axinjural 發(fā)表于 2019-4-18 08:29
沒注釋的嗎  新手看得有點吃力

沒有,哈哈哈,加油相信你可以的,他其實跟產(chǎn)生方波一樣的。
回復

使用道具 舉報

ID:511520 發(fā)表于 2019-4-21 20:40 | 顯示全部樓層

電機驅(qū)動,打錯字了。
回復

使用道具 舉報

ID:343168 發(fā)表于 2019-12-1 17:11 | 顯示全部樓層
無情;感謝,這代碼順序和我一樣,吧函數(shù)寫在后面還得來回翻著看。眼疼。
回復

使用道具 舉報

ID:659385 發(fā)表于 2019-12-10 08:41 | 顯示全部樓層
有電路圖嗎
回復

使用道具 舉報

ID:239620 發(fā)表于 2019-12-10 14:52 | 顯示全部樓層
不錯的代碼,用來學習,謝謝
回復

使用道具 舉報

ID:668494 發(fā)表于 2020-1-2 12:12 | 顯示全部樓層
謝謝大佬,很有幫助
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表