欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4879|回復: 4
收起左側

單片機串口通信pwm波舵機舵機并1602顯示仿真實例+代碼

[復制鏈接]
ID:219972 發表于 2018-12-9 15:19 | 顯示全部樓層 |閱讀模式
利用串口通信控制pwm波并實現l1602顯示提供prtues仿真
運用prtues仿真實現以下功能:
①通過按鈕與pwm波控制舵機的角度    如:按一下增加相應度數角度
②通過lm1602實時顯示pwm波占空比
拓展:通過pwm與L298n控制電機速度從大到小再反向從大到小    如:速度從0 到 100 到 0 到 -100 到0重復

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

單片機源程序如下:
  1. /*********************************************
  2. 項目名稱:pwm波與1602的練習
  3. 不足與補充:1,仿真下程序運行速度較慢
  4.                    2,lcd的判忙函數仿真時無法運行
  5.                    3,模塊化方便以后移植
  6.                    4,仿真時需要改變舵機的屬性成0.5ms~2.5ms
  7.                    5,某些函數沒有用到形成警告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)              //循環改變
  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(只顯示一位小數)
  58. //                LCD_Write_String(0,0,str);
  59. //                sprintf(str,"ZKB2:%0.1f%% ",(double)abs(pwm1)/(double)Period1*100);//占空比顯示 占空比只有正的所以需要abs()函數(在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);                //改變程序運行速度
  65. LCD_Write_String(0,0,"aaaa");
  66. DelayMs(10);
  67.         }
  68. }         
復制代碼

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


回復

使用道具 舉報

ID:290576 發表于 2019-11-15 21:49 | 顯示全部樓層
附件數據損壞
回復

使用道具 舉報

ID:463598 發表于 2020-3-5 20:19 | 顯示全部樓層
壓縮包損壞,下載不了,哭唧唧
回復

使用道具 舉報

ID:327265 發表于 2020-4-19 22:28 | 顯示全部樓層
你這個仿真打不開,可以重新發一份嗎?
回復

使用道具 舉報

ID:282520 發表于 2023-4-21 11:00 | 顯示全部樓層
LCD1602沒有顯示啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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