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

標題: 單片機太陽追蹤系統制作源碼與資料 [打印本頁]

作者: guangxin    時間: 2017-7-19 21:06
標題: 單片機太陽追蹤系統制作源碼與資料
太陽追蹤系統制作圖解:


ppt文檔:


單片機源程序如下:
  1. #include<reg51.h>
  2. #include"i2c.h"
  3. #define speed 8


  4. //--定義PCF8591的讀寫地址--//
  5. #define  WRITEADDR 0x90           //寫地址
  6. #define  READADDR  0x91           //讀地址
  7. //Motor
  8.     sbit a1 = P1^0;          //定義管腳
  9.     sbit a2 = P1^1;
  10.     sbit a3 = P1^2;
  11.     sbit a4 = P1^3;
  12.         sbit b1 = P0^0;
  13.     sbit b2 = P0^1;
  14.         sbit b3 = P0^2;
  15.         sbit b4 = P0^3;
  16.                   
  17. //--聲明全局函數--//
  18. void Pcf8591SendByte(unsigned char channel);
  19. unsigned char Pcf8591ReadByte();

  20. void delay(int time);


  21. void GoA1();
  22. void GoA2();
  23. void GoB1();
  24. void GoB2();
  25. /*******************************************************************************
  26. * 函 數 名         : main
  27. * 函數功能                   : 主函數
  28. * 輸    入         : 無
  29. * 輸    出         : 無
  30. *******************************************************************************/

  31. void main()
  32. {
  33.                                       unsigned int M;
  34. M=4;
  35.                    a1=0;
  36.                                    a2=0;
  37.                                    a3=0;
  38.                                    a4=0;
  39.                    b1=0;
  40.                                    b2=0;
  41.                                    b3=0;
  42.                                    b4=0;       

  43.        

  44.         while(1)
  45.         {       
  46.        
  47.     unsigned int adNum[4];

  48.            unsigned int A1;
  49.         unsigned int A2;
  50.         unsigned int A3;
  51.         unsigned int B1;
  52.         unsigned int B2;
  53.         unsigned int B3;       
  54.         float value;
  55.         //--顯示電位器電壓--//
  56.                 Pcf8591SendByte(0);             //發送電位器轉換命令

  57.                 //--由于8591在第一次讀取的時候是讀取到的上次轉換的結果--//
  58.                 //--所以我們先讀一次,只是讀到的數據不做處理--//
  59.                 adNum[0]=        Pcf8591ReadByte()*2;//將前一次轉換結果讀走
  60.                 value=adNum[0]/2*0.01953;  //轉為電壓值
  61.                 adNum[0]=value*100;        //保留兩位小數
  62.                 A1=        adNum[0];
  63.                
  64.                 Pcf8591SendByte(1);             //發送熱敏轉換命令
  65.                 adNum[0]=        Pcf8591ReadByte()*2;//讀取電位器轉換結果
  66.                
  67.                 value=adNum[0]/2*0.01953;  //轉為電壓值
  68.                 adNum[0]=value*100;        //保留兩位小數
  69.                 A1=        adNum[0];

  70.                 Pcf8591SendByte(2);               //發送光敏轉換命令
  71.                 adNum[1]=Pcf8591ReadByte()*2; //ADC1讀取熱敏
  72.                 value=adNum[1]/2*0.01953;  //轉為電壓值
  73.                 adNum[1]=value*100;
  74.                 //--一下讀取的方式跟上面一樣處理--//
  75.                 //--讀光敏--//
  76.                 A2=adNum[1];
  77.                 A3=adNum[0]-adNum[1];
  78.                 if ( A3<0 )
  79.                 {
  80.                 A3 = -A3;
  81.                 }
  82.                 Pcf8591SendByte(3);                   //發送外部輸入電壓轉換命令
  83.                 adNum[2]=Pcf8591ReadByte()*2;  //ADC2讀取光敏
  84.                 value=adNum[2]/2*0.01953;  //轉為電壓值
  85.                 adNum[2]=value*100;
  86.                 //--讀取外部輸入電壓--//
  87.                 B1=adNum[2];
  88.                 adNum[3]=Pcf8591ReadByte()*2;  //ADC3讀取外部輸入電壓
  89.                 value=adNum[3]/2*0.01953;  //轉為電壓值
  90.                 adNum[3]=value*100;
  91.                 B2=adNum[3];
  92.                 B3=adNum[2]-adNum[3];
  93.                         if ( B3<0 )
  94.                 {
  95.                 B3 = -B3;
  96.                 }
  97.                
  98.         //比較兩個電壓是否相等//
  99.                
  100.         if(A3<M)
  101.                          {
  102.                    a1=0;
  103.                                    a2=0;
  104.                                    a3=0;
  105.                                    a4=0;
  106.                                   
  107.                  }
  108.          else
  109.                 {
  110.                                
  111.                 if(A1<A2)
  112.                     {
  113.                                
  114.                     GoA2();
  115.                                        
  116.                     }
  117.                 else
  118.                     {
  119.                     GoA1();
  120.                         }
  121.                                  
  122.                 }
  123.         
  124.                
  125.        
  126.                
  127.         //比較兩個電壓是否相等//
  128.                
  129.         if(B3<M)
  130.                          {
  131.                    b1=0;
  132.                                    b2=0;
  133.                                    b3=0;
  134.                                    b4=0;
  135.                                   
  136.                  }
  137.          else
  138.                 {
  139.                                
  140.                 if(B1<B2)
  141.                     {
  142.                                
  143.                     GoB2();
  144.                                        
  145.                     }
  146.                 else
  147.                     {
  148.                     GoB1();
  149.                         }
  150.                                  
  151.                 }  
  152.                   }
  153.                  
  154.         }
  155. /*******************************************************************************
  156. * 函 數 名         : Pcf8591SendByte
  157. * 函數功能                   : 寫入一個控制命令
  158. * 輸    入         : channel(轉換通道)
  159. * 輸    出         : 無
  160. *******************************************************************************/

  161. void Pcf8591SendByte(unsigned char channel)
  162. {       
  163.         I2C_Start();
  164.         I2C_SendByte(WRITEADDR, 1);    //發送寫器件地址
  165.         I2C_SendByte(0x40|channel, 0); //發送控制寄存器
  166.         I2C_Stop();
  167. }
  168. /*******************************************************************************
  169. * 函 數 名         : Pcf8591ReadByte
  170. * 函數功能                   : 讀取一個轉換值
  171. * 輸    入         : 無
  172. * 輸    出         : dat
  173. *******************************************************************************/

  174. unsigned char Pcf8591ReadByte()
  175. {
  176.         unsigned char dat;
  177.         I2C_Start();
  178.         I2C_SendByte(READADDR, 1);//發送讀器件地址
  179.         dat=I2C_ReadByte();    //讀取數據
  180.         I2C_Stop();            //結束總線
  181.     return dat;
  182. }

  183. //正轉a

  184. void GoA1()
  185. {        //A
  186.     a1=1;
  187.         a2=0;
  188.         a3=0;
  189.         a4=0;
  190.         delay(speed);
  191.         //AB
  192.         a1=1;
  193.         a2=1;
  194.         a3=0;
  195.         a4=0;
  196.         delay(speed);
  197.         //B
  198.         a1=0;
  199.         a2=1;
  200.         a3=0;
  201.         a4=0;
  202.         delay(speed);
  203.         //BC
  204.         a1=0;
  205.         a2=1;
  206.         a3=1;
  207.         a4=0;
  208.           delay(speed);
  209.         //C
  210.         a1=0;
  211.         a2=0;
  212.         a3=1;
  213.         a4=0;
  214.         delay(speed);
  215.         //CD
  216.         a1=0;
  217.         a2=0;
  218.         a3=1;
  219.         a4=1;
  220.         delay(speed);
  221.         //D
  222.         a1=0;
  223.         a2=0;
  224.         a3=0;
  225.         a4=1;
  226.         delay(speed);
  227.         //DA
  228.         a1=1;
  229.         a2=0;
  230.         a3=0;
  231.         a4=1;
  232.         delay(speed);
  233. }



  234. //反轉a

  235. void GoA2()
  236. {
  237.       //DA
  238.         a1=1;
  239.         a2=0;
  240.         a3=0;
  241.         a4=1;
  242.         delay(speed);  
  243.     //D
  244.         a1=0;
  245.         a2=0;
  246.         a3=0;
  247.         a4=1;
  248.         delay(speed);
  249.         //CD
  250.         a1=0;
  251.         a2=0;
  252.         a3=1;
  253.         a4=1;
  254.         delay(speed);
  255.         //C
  256.         a1=0;
  257.         a2=0;
  258.         a3=1;
  259.         a4=0;
  260.         delay(speed);
  261.         //BC
  262.         a1=0;
  263.         a2=1;
  264.         a3=1;
  265.         a4=0;
  266.           delay(speed);
  267.         //B
  268.         a1=0;
  269.         a2=1;
  270.         a3=0;
  271.         a4=0;
  272.         delay(speed);
  273.         //AB
  274.         a1=1;
  275.         a2=1;
  276.         a3=0;
  277.         a4=0;
  278.         delay(speed);
  279.         //A
  280.     a1=1;
  281.         a2=0;
  282.         a3=0;
  283.         a4=0;
  284.         delay(speed);
  285.                   
  286. }
  287. //正轉b

  288. void GoB1()
  289. {        //A
  290.     b1=1;
  291.         b2=0;
  292.         b3=0;
  293.         b4=0;
  294.         delay(speed);
  295.         //AB
  296.         b1=1;
  297.         b2=1;
  298.         b3=0;
  299.         b4=0;
  300.         delay(speed);
  301.         //B
  302.         b1=0;
  303.         b2=1;
  304.         b3=0;
  305.         b4=0;
  306.         delay(speed);
  307.         //BC
  308.         b1=0;
  309.         b2=1;
  310.         b3=1;
  311.         b4=0;
  312.           delay(speed);
  313.         //C
  314.         b1=0;
  315.         b2=0;
  316.         b3=1;
  317.         b4=0;
  318.         delay(speed);
  319.         //CD
  320.         b1=0;
  321.         b2=0;
  322.         b3=1;
  323.         b4=1;
  324.         delay(speed);
  325.         //D
  326.         b1=0;
  327.         b2=0;
  328.         b3=0;
  329.         b4=1;
  330.         delay(speed);
  331.         //DA
  332.         b1=1;
  333.         b2=0;
  334.         b3=0;
  335.         b4=1;
  336.         delay(speed);
  337. }



  338. //反轉b

  339. void GoB2()
  340. {
  341.       //DA
  342.         b1=1;
  343.         b2=0;
  344.         b3=0;
  345.         b4=1;
  346.         delay(speed);  
  347.     //D
  348.         b1=0;
  349.         b2=0;
  350.         b3=0;
  351.         b4=1;
  352.         delay(speed);
  353.         //CD
  354.         b1=0;
  355.         b2=0;
  356. ……………………

  357. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
太陽追蹤系統.rar (2.99 MB, 下載次數: 376)




作者: duranhuang    時間: 2017-7-20 10:42
好資料,正準備用STC自帶的ADC來做。
作者: easee    時間: 2017-7-23 10:31
很好 太陽能充電器
作者: zhongyude    時間: 2017-7-27 08:30
很厲害
作者: mjjtim    時間: 2017-9-9 09:12
好資料剛好準備做
作者: 人工智能威力    時間: 2017-9-11 21:55
有電路圖么??
作者: 吊打上單科比    時間: 2018-11-26 16:45
需要添加步進電機嗎樓主
作者: zhouwei0815    時間: 2018-11-27 10:52
思路不錯 就是實際應用不知道怎么樣 單純用光敏電阻監測光線強度 可以達到效果嗎 ?
作者: xuwei517    時間: 2018-11-29 19:02
謝謝分享 這個資料太好了 正需要

作者: i_woods    時間: 2019-4-28 22:21
挺好的,學習了,感謝樓主
作者: 遷就    時間: 2019-4-29 09:34
謝謝分享
作者: cccye    時間: 2019-7-2 22:28
為什么不讓下載
作者: 哈哈我哈哈    時間: 2019-7-5 19:34
優秀,想賞你
作者: guangxin    時間: 2019-8-8 15:17
哈哈我哈哈 發表于 2019-7-5 19:34
優秀,想賞你

謝謝
作者: liulan19971118    時間: 2020-2-13 11:29
除了仿真圖打不開,其他還好
作者: starwaver    時間: 2020-2-13 14:49
謝謝分享
作者: xuwei517    時間: 2020-4-25 01:06
謝謝分享 正需要 值得參考
作者: dilongking    時間: 2020-9-3 15:24
這是 用的電機什么型號的?
作者: 學習呀11    時間: 2020-10-12 15:43
終于找到了,太感謝樓主了
作者: dj3365191    時間: 2020-10-14 13:14
我下載看了,電路圖不全,步進電機是怎么控制的,單片機部分也沒有
作者: yyght    時間: 2020-10-15 17:04
單純用光敏電阻監測光線強度 可以達到效果嗎
作者: fhq1087    時間: 2021-2-5 23:45
這個真的很牛逼啊先收藏了
作者: XDDZ1013    時間: 2021-2-14 23:32
電路圖不全,發份完整的圖紙就好了。。。
作者: chenxi0557    時間: 2021-2-17 01:06
很有幫助,就是沒有電路圖
另外程序里有讀取熱敏的注釋,暫時看不懂是啥意思
很不錯的資料,有待完善
作者: qw2229    時間: 2021-2-21 18:37
學習了。與普通比較電路控制普通電機哪個方案好。

作者: xyzdh    時間: 2021-3-20 16:50
很實用,提高充電效率
作者: 張國民    時間: 2022-9-21 15:39
謝謝分享,資料不是很全
作者: WFX777888    時間: 2022-9-21 20:47
謝謝分享 正需要 值得參考
作者: zydl123    時間: 2022-10-3 12:58
太實用了,做的不錯,光接收部位有需要改進的地方




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