找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4726|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)串口通信pwm波舵機(jī)舵機(jī)并1602顯示仿真實(shí)例+代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
利用串口通信控制pwm波并實(shí)現(xiàn)l1602顯示提供prtues仿真
運(yùn)用prtues仿真實(shí)現(xiàn)以下功能:
①通過按鈕與pwm波控制舵機(jī)的角度    如:按一下增加相應(yīng)度數(shù)角度
②通過lm1602實(shí)時(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ù)仿真時(shí)無法運(yùn)行
  5.                    3,模塊化方便以后移植
  6.                    4,仿真時(shí)需要改變舵機(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);        //定時(shí)器0初始化
  31. //        Init_PwmTimer1(Period1);          //定時(shí)器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;               //防止出錯(cuò)
  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)                   //只在有按鈕按下時(shí)改變
  62. //                DataPro_0(pwm0-13);        //-13為修正 PWM高電平時(shí)間有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)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:290576 發(fā)表于 2019-11-15 21:49 | 只看該作者
附件數(shù)據(jù)損壞
回復(fù)

使用道具 舉報(bào)

板凳
ID:463598 發(fā)表于 2020-3-5 20:19 | 只看該作者
壓縮包損壞,下載不了,哭唧唧
回復(fù)

使用道具 舉報(bào)

地板
ID:327265 發(fā)表于 2020-4-19 22:28 | 只看該作者
你這個(gè)仿真打不開,可以重新發(fā)一份嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:282520 發(fā)表于 2023-4-21 11:00 | 只看該作者
LCD1602沒有顯示啊
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表