標(biāo)題: 單片機(jī)串口通信pwm波舵機(jī)舵機(jī)并1602顯示仿真實(shí)例+代碼 [打印本頁]

作者: 1228468    時間: 2018-12-9 15:19
標(biāo)題: 單片機(jī)串口通信pwm波舵機(jī)舵機(jī)并1602顯示仿真實(shí)例+代碼
利用串口通信控制pwm波并實(shí)現(xiàn)l1602顯示提供prtues仿真
運(yùn)用prtues仿真實(shí)現(xiàn)以下功能:
①通過按鈕與pwm波控制舵機(jī)的角度    如:按一下增加相應(yīng)度數(shù)角度
②通過lm1602實(shí)時顯示pwm波占空比
拓展:通過pwm與L298n控制電機(jī)速度從大到小再反向從大到小    如:速度從0 到 100 到 0 到 -100 到0重復(fù)

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)源程序如下:
  1. /*********************************************
  2. 項(xiàng)目名稱:pwm波與1602的練習(xí)
  3. 不足與補(bǔ)充:1,仿真下程序運(yùn)行速度較慢
  4.                    2,lcd的判忙函數(shù)仿真時無法運(yùn)行
  5.                    3,模塊化方便以后移植
  6.                    4,仿真時需要改變舵機(jī)的屬性成0.5ms~2.5ms
  7.                    5,某些函數(shù)沒有用到形成警告L16
  8.                    6,L298n也可寫成.c,.h文件形式并且可以添加更多功能
  9.                    7,按鍵掃描程序不太完善
  10. *********************************************/
  11. #include <reg52.h>
  12. #include <stdio.h>
  13. #include <math.h>
  14. #include "lm1602.h"
  15. #include "delay.h"
  16. #include "L298N.h"
  17. #include "pwm.h"
  18. #include "key.h"


  19. int   pwm0 = 1500;
  20. int   pwm1 = -50;
  21. int   Period0 = 20000;
  22. int   Period1 = 100;
  23. uint  s=1;
  24. uchar key;
  25. uchar str[16] = {""};


  26. void main()
  27. {
  28.         LCD_Init();                //LCD初始化
  29.         LCD_Clear();                   //LCD清屏
  30. //        Init_PwmTimer0(Period0);        //定時器0初始化
  31. //        Init_PwmTimer1(Period1);          //定時器1初始化
  32. //        DataPro_0(pwm0-13);
  33. //        speed(pwm1);
  34.         while(1)
  35.         {        
  36. //                key = Get_KEY();             //掃描按鍵
  37. //                switch(key)
  38. //                {
  39. //                        case 1:pwm0+=250;break;
  40. //                        case 2:pwm0-=250;break;
  41. ////                        case 3:break;          //沒用到的按鈕
  42. ////                        case 4:break;
  43. //                        default:break;               //防止出錯
  44. //                }
  45. //               
  46. //                if(pwm0>=2400)             //防止過界
  47. //                        pwm0=2400;
  48. //                if(pwm0<=600)
  49. //                        pwm0=600;
  50. //               
  51. //                if(pwm1>=90)              //循環(huán)改變
  52. //                        s=-1;
  53. //                if(pwm1<=10)
  54. //                        s=1;
  55. //                pwm1+=s;
  56. //               
  57. //                sprintf(str,"ZKB1:%0.1f%% ",(double)pwm0/(double)Period0*100);     //sprintf方法可以很好的合成字符串%0.1f(只顯示一位小數(shù))
  58. //                LCD_Write_String(0,0,str);
  59. //                sprintf(str,"ZKB2:%0.1f%% ",(double)abs(pwm1)/(double)Period1*100);//占空比顯示 占空比只有正的所以需要abs()函數(shù)(在math.h頭文件中)
  60. //                LCD_Write_String(0,1,str);
  61. //                if(!key)                   //只在有按鈕按下時改變
  62. //                DataPro_0(pwm0-13);        //-13為修正 PWM高電平時間有13us左右誤差
  63. //                speed(pwm1);
  64. //        DelayMs(0);                //改變程序運(yùn)行速度
  65. LCD_Write_String(0,0,"aaaa");
  66. DelayMs(10);
  67.         }
  68. }         
復(fù)制代碼

代碼有問題,求指導(dǎo):
2018-7-16任務(wù).rar (123.97 KB, 下載次數(shù): 136)



作者: wuyuwangluo    時間: 2019-11-15 21:49
附件數(shù)據(jù)損壞
作者: 18206192598    時間: 2020-3-5 20:19
壓縮包損壞,下載不了,哭唧唧
作者: whwteng    時間: 2020-4-19 22:28
你這個仿真打不開,可以重新發(fā)一份嗎?
作者: 切了    時間: 2023-4-21 11:00
LCD1602沒有顯示啊




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1