久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3360|回復: 0
打印 上一主題 下一主題
收起左側

PWM控制舵機避障小車的C語言程序框架與單片機編程指導下載

[復制鏈接]
跳轉到指定樓層
樓主
ID:346891 發表于 2018-6-8 09:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  • PCA相關寄存器內存單元分配;
知識點:
//PCA 寄存器內存單元分配
sfr   CCON    = 0xD8;  //PCA 控制寄存器
sbit  CCF0    = CCON^0;//PCA 模塊0中斷標志
sbit  CR      = CCON^6;//PCA 計數器計數允許位
sbit  CF      = CCON^7;//PCA 計數器溢出標志
sfr   CMOD    = 0xD9;  //PCA 工作模式寄存器
sfr   CL      = 0xE9;  //PCA 計數器低位
sfr   CH      = 0xF9;  //PCA 計數器高位
sfr   CCAPM0  = 0xDA;  //PCA 模塊0比較/捕獲寄存器
sfr   CCAP0L  = 0xEA;  //PCA 模塊0比較/捕獲寄存器低位字節
sfr   CCAP0H  = 0xFA;  //PCA 模塊0比較/捕獲寄存器高位字節
sfr   PCAPWM0 = 0xf2;  //PCA PWM0寄存器
sfr   AUXR    = 0x8E;  //PCA 輔助寄存器
  • PCA寄存器初始化設置;
PCA模塊0輸出PWM要用作PWM,因不需要進中斷處理,程序更為簡單,關鍵是設置模式CCAPM0=0x42即可。
void Init_PWM()//初始化PWM模塊,注意此時只到pwm0即P1.3
{
              CCON=0;//PCA停止計數,清零溢出標志和所有中斷標志
                CL=0;//PCA計數器低位清零
                CH=0;//PCA計數器清高位清零
                CMOD=0x04;//0x04:定時器時鐘
                CCAP0H=CCAP0L=236; //*PWM0 占空比控制舵機居中
              CCAPM0=0x42;//0X42:8位PWM P1.3輸出,無中斷;
              CR=1; //PCA 計數器開始工作
}
  • 定時器0方式2作為PWM時鐘源; 定時器1方式1作為紅外傳感器時鐘
工作方式1 的編程要點:
1、THx/TLx賦初值:THx賦高8位,TLx賦低8位,
2、TMOD選方式: 寫“M1,M0”=01 選方式1,
3、若不用門控位,直接用軟件寫TRx控制啟/停,若使用門控位,先置位TRx,然后由INTx端的高/低電平來控制其啟/停 。
4、若要允許中斷,還須先置位ETx、EA等中斷允許控制位,并編寫中斷服務程序, 若不用中斷,可查詢“計數溢出標志TFx”的方式工作,但溢出標志TFx須軟件清0。
編程要點:TH0=TL0=184;//PWM 50Hz 20ms 11.0592M 184
工作方式2 的編程要點
1、THx/TLx賦相同初值
2、在TLx計數達到0FFH 再加“1”時,TL0將溢出,進位位直接進入“TFx”去申請中斷,同時打開三態門,使THx中的值自動重裝(Copy)進TLx
3、TMOD寄存器選方式: 寫“M1,M0” = 10選中方式2
4、其他用法與各種方式1完全相同
  • PWM控制舵機各占空比設置;
CCAPnH=256(1-占空比)
占空比=高電平時間/周期
   0.5ms         -90°
1ms           -45°
    1.5ms          0°
    2ms            45°
    2.5ms          90°
例如:舵機需輸出角度為0°,高電平時間1.5ms,
則CCAPnH=CCAPnL=256 ×(1-1.5/20)=236.8 ,
取236或者237
常用占空比設計
舵機居中:236
    左45°:241
    左27°:238
    右45°:229
右27°:234
編程要點:CCAP0H=CCAP0L=相應占空比。
  • 避障程序設計;
自行選擇傳感器個數,完成程序設計。


單片機源程序如下:
  1. #include <reg52.h>
  2. #include <math.h>
  3. (對所用到的傳感器逐個位定義 方便程序中使用 例如sbit left=P1^0;)
  4. //PCA 寄存器內存單元分配
  5. sfr  CCON    = 0xD8;  //PCA 控制寄存器
  6. sbit CCF0    = CCON^0;//PCA 模塊0中斷標志
  7. sbit CCF1    = CCON^1;//PCA 模塊1中斷標志
  8. sbit CR      = CCON^6;//PCA 計數器計數允許位
  9. sbit CF      = CCON^7;//PCA 計數器溢出標志
  10. sfr  CMOD    = 0xD9;  //PCA 工作模式寄存器
  11. sfr  CL      = 0xE9;  //PCA 計數器低位
  12. sfr  CH      = 0xF9;  //PCA 計數器高位
  13. sfr  CCAPM0  = 0xDA;  //PCA 模塊0比較/捕獲寄存器
  14. sfr  CCAP0L  = 0xEA;  //PCA 模塊0比較/捕獲寄存器低位字節
  15. sfr  CCAP0H  = 0xFA;  //PCA 模塊0比較/捕獲寄存器高位字節
  16. sfr  PCAPWM0 = 0xf2;  //PCA PWM0寄存器
  17. sfr  AUXR    = 0x8E;  //PCA 輔助寄存器

  18. //*****************************************************************************/
  19. //PWM初始化設置
  20. void Init_PWM()//初始化PWM模塊,         
  21. {
  22.          CCON=0;//PCA停止計數,清零溢出標志和所有中斷標志
  23.       CL=0;//PCA計數器低位清零
  24.       CH=0;//PCA計數器清高位清零
  25.       CMOD=0x04;//時鐘源 0X00:系統時鐘/12,0X02:系統時鐘/2,0x04:定時器時鐘 0x08:系統時鐘
  26.       CCAP0H=CCAP0L=236; //*PWM0 占空比控制 0時占空比 100% 255占空比為0
  27.        CCAPM0=0x42;//0X42:8位PWM P1.3輸出,無中斷;
  28.      CR=1; //PCA 計數器開始工作
  29. }
  30. //定時器0初始化設置
  31. void Init_Timer0()
  32. {
  33.          AUXR= 0x00;//定時器工作在12T模式
  34.       TMOD = 0x12;//設置定時器0為8位自動重裝模式
  35.       TH0=TL0=184;//PWM 50Hz 20ms 11.0592M 18412M178 20M 126
  36.        EA = 1;   
  37.        TR0 = 1;//打開定時器作為PWM時鐘
  38.        ET0 = 1;
  39. }
  40. //定時器1初始化設置
  41. void Init_Timer1()
  42. {
  43.       TMOD=0x12;//定時器1工作方式1 (超聲波)      
  44.       TH1=0x00;   
  45.       TL1=0x00;
  46.       EA=1;
  47.       TR1=1;
  48.       ET1=1;
  49.      
  50. }
  51. 這部分可編寫相應的避障子程序,例如
  52. Void避障程序名 ()
  53. {
  54.                 避障程序設計
  55. }
  56. void main()
  57. {      
  58.         Init_PWM();
  59.         Init_Timer0();
  60.         Init_Timer1();
  61.     while(1)
  62.   {      
  63.     避障子程序調用
  64.   }   
  65. }

復制代碼


完整的Word格式文檔51黑下載地址:
無碳小車編程指導.docx (47.07 KB, 下載次數: 16)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品区一区二区三区 | 日韩中文字幕在线观看视频 | 在线欧美一区二区 | 逼逼网 | 久久久久久免费免费 | 欧美日韩精品中文字幕 | 草久在线视频 | 别c我啊嗯国产av一毛片 | 欧美中文字幕一区二区 | 免费人成激情视频在线观看冫 | 国产福利在线免费观看 | 午夜免费福利电影 | 国产国拍亚洲精品av | 亚洲天堂av一区 | 亚洲精品一区二区三区中文字幕 | 国产一区二区欧美 | 九色91视频| 免费天天干 | 日韩中文字幕网 | 久久久www成人免费无遮挡大片 | 美日韩精品 | 99亚洲 | 成人免费一区二区三区牛牛 | 日韩一级| 精品一区在线看 | 国产在线一区二区三区 | 亚洲视频免费观看 | 在线一级片 | 97视频久久 | 在线男人天堂 | 日韩欧美在线观看 | 欧美精品在线视频 | 国产91久久久久蜜臀青青天草二 | 亚洲免费高清 | 久久久久网站 | 精品一区二区在线观看 | 国产成人在线一区二区 | 亚洲小视频在线播放 | 久久免费观看一级毛片 | 久久99精品久久久久久噜噜 | 精品一区二区三区免费视频 |