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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機光電智能車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:467142 發表于 2019-1-12 21:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
此程序為光電智能車程序
  1. #include<stc12c5a.h>
  2. #include <intrins.h>
  3. #include <math.h>
  4. #include <stdio.h>                                     
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sbit S1=P2^4;
  8. sbit S2=P2^5;       
  9. sbit S3=P2^6;
  10. sbit S4=P2^7;

  11.                        //電機pwm輸入接口為P1^3和P1^4  可通過控制2和5控制電機停轉

  12. //sbit P13=P1^3;
  13. //sbit P14=P1^4;
  14. //sbit IN1=P1^2;
  15. //sbit IN2=P1^5;
  16. sbit pwm=P3^5;

  17. #define        k10 0xe5
  18. #define        k20 0xcc
  19. #define        k30 0xb3
  20. #define        k35 0xa6
  21. #define        k40 0x99
  22. #define        k45 0x8c
  23. #define        k50 0x80
  24. #define        k55 0x73
  25. #define        k60 0x66
  26. #define        k65 0x59
  27. #define        k70 0x4d
  28. #define        k75 0x40
  29. #define        k80 0x33
  30. #define        k85 0x26
  31. #define        k90 0x1a
  32. #define        k95 0x0d
  33. #define        k00 0x00  //控制電機轉速的幾個中斷pwm波的占空比
  34.                                    //控制電機轉速的幾個中斷pwm波的占空比
  35.                                                                                                                                   
  36. #define        mh00 0xf8                                  //中間角度初值        //打直第一次出現吧
  37. #define        ml00 0xee                                  //  1810*1.09=1.9729                 10       
  38.                                                           


  39. #define        zh01 0xf8        //高位

  40. #define        zl20 0x26        //低位               //2010*1.09=2.1708                 9
  41. #define        zl19 0x30   //低位                     //2000*1.09=2.18                9       
  42. #define        zl18 0x3a        //低位                                //1990*1.09=2.1691             9               
  43. #define        zl17 0x44        //低位                                //1980*1.09=2.1582             9                       
  44. #define        zl16 0x4e        //低位                                //1970*1.09=2.1473                 9                       
  45. #define        zl15 0x58        //低位                                //1960*1.09=2.1364       9               
  46. #define        zl14 0x62        //低位                                //1950*1.09=2.1255             9         
  47. #define        zl13 0x6c        //低位                                //1940*1.09=2.1146                 9                         
  48. #define        zl12 0x76        //低位                           // 1930*1.09=2.1037                 9
  49. #define        zl11 0x80        //低位                              // 1920*1.09=2.0928                 10
  50. #define        zl10 0x8a        //低位                          // 1910*1.09=2.0819                  10
  51. #define        zl09 0x94        //低位                                        // 1900*1.09=2.071         10
  52. #define        zl08 0x9e        //低位                          //  1890*1.09=2.0601                 10               
  53. #define        zl07 0xa8        //低位                          //  1880*1.09=2.0492                 10                         
  54. #define        zl06 0xb2        //低位                          //  1870*1.09=2.0383                 10       
  55. #define        zl05 0xbc        //低位                          //  1860*1.09=2.0274                 10                       
  56. #define        zl04 0xc6        //低位                          //  1850*1.09=2.0165                 10                       
  57. #define        zl03 0xd0        //低位                          //1840*1.09=2.0056                  10                         
  58. #define        zl02 0xda   //低位            //  1820*1.09=1.9838                 10         //左轉角度


  59. #define        yh00 0xf8           //高位
  60.                            
  61. #define        yl01 0xf8         //低位                            // 1800*1.09=1.962                 10
  62.        
  63. #define        yh01 0xf9           //高位          

  64. #define        yl02 0x02        //低位                            // 1790*1.09=1.9511         10
  65. #define        yl03 0x0c        //低位                                           // 1780*1.09=1.9402                 10
  66. #define        yl04 0x16        //低位                                          // 1770*1.09=1.9293                        10
  67. #define        yl05 0x20        //低位                                         // 1760*1.09=1.9184                         10
  68. #define        yl06 0x2a        //低位                                    // 1750*1.09=1.9075                         10
  69. #define        yl07 0x34        //低位                                   // 1740*1.09= 1.8966                         10
  70. #define        yl08 0x3e        //低位                                  // 1730*1.09=1.8857                           10
  71. #define        yl09 0x48        //低位                                  // 1720*1.09=        1.8748              10
  72. #define        yl10 0x52        //低位                                  // 1710*1.09=1.8639               10
  73. #define        yl11 0x5c        //低位                             // 1700*1.09=1.853                                 10
  74. #define        yl12 0x66        //低位                              // 1690*1.09=1.8421                                 10
  75. #define        yl13 0x70        //低位                                  //1680*1.09=1.8321                                 10
  76. #define        yl14 0x7a        //低位                                  // 1670*1.09=1.8203                                 11
  77. #define        yl15 0x84        //低位                                  // 1660*1.09=1.8094                                 11
  78. #define        yl16 0x8e        //低位                                  // 1650*1.09=1.7985                                 11
  79. #define        yl17 0x98        //低位                                  // 1640*1.09=1.7876                                 11
  80. #define        yl18 0xa2        //低位                                  // 1630*1.09=1.7767                                 11
  81. #define        yl19 0xac        //低位                                  // 1620*1.09=1.7658                                 11
  82. #define        yl20 0xb6        //低位                                  // 1610*1.09=1.7549                                 11
  83. #define        yl21 0xc0        //低位                         // 1600*1.09= 1.7440                11          //右轉角度
  84.      


  85. uchar h, l;
  86. uchar count2=14, count=0;
  87. uchar loadz,loady, dz,dy,d0,d1,d2,d3,d4,d5,d6,d7,d8,d9;

  88. void pwm_init();

  89. void Time_Init();
  90. void motor();
  91. void delay(uint z);


  92. //*********主函數*****************/
  93. void main ()               
  94. {       
  95.          
  96.             d2=k45;d3=k50;d5=k60;d7=k70;
  97.        
  98.          P14=0;
  99.          delay(10000);
  100.      delay(10000);
  101.          delay(10000);       
  102.         Time_Init();
  103.         pwm_init()        ;
  104.                                     //延時發車
  105.          P0=0xff;
  106.          P2=0xfa;
  107.          h=0xfa;                         
  108.      l=0xe7;


  109.         dz=dy=d7;                //        dz<dy  左轉                                                                                                                         
  110. while(1)                                                                                                                                                                                          //dy大表示右邊輪子轉的快
  111.           {                                                                                                                                                                                                                                         //左邊輪子接P0^3                                                                                                                                                                                                                 //右邊輪子接P0^4
  112.                         if(P0==0x80) {h=0xfa;l=0x1F; count2=13;dz=d2;dy=d5; }
  113.                                   //if(P0==0xc0) {h=0xfa;l=0x4d;count2=13;dy=d5;dz=d8;}
  114.                                if(P0==0x40) {h=0xfa;l=0x7D;count2=13;dy=d3;dz=d5;}
  115.                                         //if(P0==0x60) {h=0xfa;l=0x7f;count2=13;dy=d5;dz=d7;}
  116.                                          if(P0==0x20) {h=0xfa;l=0xBD;count2=14;dy=d3;dz=d5;}
  117.                                           //if(P0==0x30) {h=0xfa;l=0xb1a;count2=14;dy=d6;dz=d7;}
  118.                                            if(P0==0x10) {h=0xfa;l=0xD2;count2=14;dy=d7;dz=d7;}
  119.                        // if(P0==0x00||0xff) {h=0xfa;l=0xfc;count2=14;dz=d8;dy=d8;}                    //4度 l改變19
  120.                                        if(P0==0x08) {h=0xfA;l=0xFC;count2=15;dy=d7;dz=d7;}
  121.                                              //if(P0==0x0c) {h=0xfb;l=0x47;count2=15;dy=d7;dz=d6;}                //15
  122.                                      if(P0==0x04) {h=0xfb;l=0x11;count2=15;dy=d5;dz=d3;}
  123.                                     //if(P0==0x06) {h=0xfb;l=0x79;count2=15;dy=d7;dz=d5;} //50                                左轉
  124.                                if(P0==0x02) {h=0xfb;l=0x51;count2=16;dy=d5;dz=d3;}
  125.                           //if(P0==0x03) {h=0xfb;l=0xab;count2=16;dy=d8;dz=d5;}                 /39
  126.                              if(P0==0x01) {h=0xfb;l=0xAF;count2=16;dy=d5;dz=d2;}
  127.                                 motor();
  128.           }                                    
  129. }                       
  130. /**************定時器初始化數據**********************/       

  131. void Time_Init()
  132. {
  133.         TMOD = 0x01 ;        //定時器0工作方式1,16位定時器
  134.         TH0 = h;
  135.         TL0 = l;
  136.         EA=1;
  137.         ET0=1;
  138.         TR0 = 1;
  139. }
  140.                                                                                             
  141. /***************pwm初始化***********************************
  142.                
  143.        

  144. /************************************************************/
  145. void pwm_init()                               
  146. {
  147.         CCON=0;                                                    // CR=0;開始不計時,可以省略
  148.         CMOD=0X00;                                                //頻率選擇,選系統時鐘/12為PWM輸出頻率
  149.     CH=0;                                                                        //
  150.         CL=0;                                                    //PCA計數器的計數值
  151.         CCAP0H=k00;                                    //初始PWM占空比100%
  152.         CCAP0L=k00;                                    //初始PWM占空比100%
  153.         CCAP1H=k00;                                    //初始PWM占空比100%
  154.         CCAP1L=k00;                                    //初始PWM占空比100%

  155.     PCA_PWM0=0X00;                                                        //控制占空比的第九位為0
  156.         PCA_PWM1=0X00;                                                                                                                                                                                                                                                                                                                                                                                        
  157.         CCAPM0=0X42;                                        //工作方式選擇,選擇為PWM輸出工作方式
  158.         CCAPM1=0X42;                                        //工作方式選擇,選擇為PWM輸出工作方式
  159.         CR=1;                                                                        //啟動PCA定時器
  160. }



  161. void motor()
  162. {
  163.         CCAP0H=dz;                                        //CCAP0L CCAP0H是捕捉/ 比較寄存器, 代表的是調節占空比,CCAP0L= CCAP0H=0x80,占空比輸出為50% 。
  164.         CCAP0L=dz;                                        //PWM設置占空比
  165.         CCAP1H=dy;
  166.         CCAP1L=dy;                                        //PWM設置占空比
  167. }
  168.        
  169. void delay(uint z)                                //延時 Z 毫秒
  170. {
  171.         uint x,y;
  172.         for(x=z;x>0;x--)
  173.                 for(y=110;y>0;y--);
  174. }




  175. /*************************定時中斷1輸出pwm波****************************/
  176. void Time0_Int() interrupt 1
  177. {       

  178.         TH0=h;
  179.         TL0=l;

  180.         if(count < 1)
  181.                 pwm = 1;
  182.         else
  183.                 pwm = 0;

  184.         count++;

  185.         if(count >= count2)
  186.                 count = 0;

  187. }
復制代碼

全部資料51hei下載地址:
智能車·程序 - 副本.zip (195.6 KB, 下載次數: 7)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-1-13 02:06 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区在线免费观看 | 国产精品高潮呻吟久久 | 欧美欧美欧美 | 国产精品免费一区二区三区 | 日韩在线不卡视频 | 欧美日韩高清在线观看 | 99re在线视频 | 一区二区三区视频免费看 | 亚洲精品视频免费观看 | 自拍 亚洲 欧美 老师 丝袜 | 午夜专区| 免费一级欧美在线观看视频 | 久久综合狠狠综合久久综合88 | 国产精品一区久久久 | 亚洲v区 | 欧美一级欧美一级在线播放 | 国产在线精品一区 | 亚洲精品一二三区 | 色婷婷久久久亚洲一区二区三区 | 免费日韩网站 | 91麻豆精品国产91久久久更新资源速度超快 | a级在线观看 | 日韩成人精品在线观看 | 午夜影院在线观看视频 | 91香蕉 | 天天天天操 | 激情亚洲| 中文字幕日本一区二区 | 国产精品精品视频一区二区三区 | 中文字幕在线一区二区三区 | 日韩精品1区2区3区 爱爱综合网 | 91精品国产综合久久久久久首页 | 无码一区二区三区视频 | 国产探花在线精品一区二区 | 中文成人无字幕乱码精品 | 日韩精品久久一区二区三区 | 国产一区二区精品 | 久久一区二区av | 国产乱精品一区二区三区 | 国产精品国产精品国产专区不片 | 国产免费拔擦拔擦8x高清 |