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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機太陽追蹤系統制作源碼與資料

  [復制鏈接]
跳轉到指定樓層
樓主
太陽追蹤系統制作圖解:


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)



評分

參與人數 1黑幣 +10 收起 理由
哈哈我哈哈 + 10

查看全部評分

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

使用道具 舉報

沙發
ID:208108 發表于 2017-7-20 10:42 | 只看該作者
好資料,正準備用STC自帶的ADC來做。
回復

使用道具 舉報

板凳
ID:208443 發表于 2017-7-23 10:31 | 只看該作者
很好 太陽能充電器
回復

使用道具 舉報

地板
ID:222635 發表于 2017-7-27 08:30 | 只看該作者
很厲害
回復

使用道具 舉報

5#
ID:224393 發表于 2017-9-9 09:12 來自手機 | 只看該作者
好資料剛好準備做
回復

使用道具 舉報

6#
ID:195950 發表于 2017-9-11 21:55 | 只看該作者
有電路圖么??
回復

使用道具 舉報

7#
ID:433547 發表于 2018-11-26 16:45 | 只看該作者
需要添加步進電機嗎樓主
回復

使用道具 舉報

8#
ID:350104 發表于 2018-11-27 10:52 | 只看該作者
思路不錯 就是實際應用不知道怎么樣 單純用光敏電阻監測光線強度 可以達到效果嗎 ?
回復

使用道具 舉報

9#
ID:171111 發表于 2018-11-29 19:02 | 只看該作者
謝謝分享 這個資料太好了 正需要
回復

使用道具 舉報

10#
ID:524003 發表于 2019-4-28 22:21 | 只看該作者
挺好的,學習了,感謝樓主
回復

使用道具 舉報

11#
ID:484435 發表于 2019-4-29 09:34 | 只看該作者
謝謝分享
回復

使用道具 舉報

12#
ID:576710 發表于 2019-7-2 22:28 | 只看該作者
為什么不讓下載
回復

使用道具 舉報

13#
ID:371529 發表于 2019-7-5 19:34 | 只看該作者
優秀,想賞你
回復

使用道具 舉報

14#
ID:220936 發表于 2019-8-8 15:17 | 只看該作者

謝謝
回復

使用道具 舉報

15#
ID:613786 發表于 2020-2-13 11:29 | 只看該作者
除了仿真圖打不開,其他還好
回復

使用道具 舉報

16#
ID:141106 發表于 2020-2-13 14:49 | 只看該作者
謝謝分享
回復

使用道具 舉報

17#
ID:171111 發表于 2020-4-25 01:06 來自手機 | 只看該作者
謝謝分享 正需要 值得參考
回復

使用道具 舉報

18#
ID:724172 發表于 2020-9-3 15:24 | 只看該作者
這是 用的電機什么型號的?
回復

使用道具 舉報

19#
ID:828650 發表于 2020-10-12 15:43 來自手機 | 只看該作者
終于找到了,太感謝樓主了
回復

使用道具 舉報

20#
ID:143767 發表于 2020-10-14 13:14 | 只看該作者
我下載看了,電路圖不全,步進電機是怎么控制的,單片機部分也沒有
回復

使用道具 舉報

21#
ID:357153 發表于 2020-10-15 17:04 | 只看該作者
單純用光敏電阻監測光線強度 可以達到效果嗎
回復

使用道具 舉報

22#
ID:675767 發表于 2021-2-5 23:45 來自手機 | 只看該作者
這個真的很牛逼啊先收藏了
回復

使用道具 舉報

23#
ID:200118 發表于 2021-2-14 23:32 | 只看該作者
電路圖不全,發份完整的圖紙就好了。。。
回復

使用道具 舉報

24#
ID:883932 發表于 2021-2-17 01:06 | 只看該作者
很有幫助,就是沒有電路圖
另外程序里有讀取熱敏的注釋,暫時看不懂是啥意思
很不錯的資料,有待完善
回復

使用道具 舉報

25#
ID:869417 發表于 2021-2-21 18:37 | 只看該作者
學習了。與普通比較電路控制普通電機哪個方案好。
回復

使用道具 舉報

26#
ID:557411 發表于 2021-3-20 16:50 | 只看該作者
很實用,提高充電效率
回復

使用道具 舉報

27#
ID:1045132 發表于 2022-9-21 15:39 | 只看該作者
謝謝分享,資料不是很全
回復

使用道具 舉報

28#
ID:63317 發表于 2022-9-21 20:47 | 只看該作者
謝謝分享 正需要 值得參考
回復

使用道具 舉報

29#
ID:977861 發表于 2022-10-3 12:58 | 只看該作者
太實用了,做的不錯,光接收部位有需要改進的地方
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文在线播放 | 性色视频在线观看 | 久久黄视频 | 国产精品久久久久久久久久久久 | 国产福利91精品一区二区三区 | 国产精品3区 | 精品一区二区免费视频 | 99精品欧美一区二区蜜桃免费 | 嫩草视频在线 | 色综合视频在线 | 久久在线精品 | 国产精品69av| 国产精品久久久亚洲 | 日本三级网站在线 | 亚洲成av人片在线观看 | 午夜精品一区二区三区在线 | 在线观看亚洲精品 | 欧美一级大片免费看 | 国产一区 | 一区二区三区国产 | 91人人澡人人爽 | 成人免费网站视频 | 欧美综合自拍 | 久久人人爽人人爽人人片av免费 | 国产精品久久久久久久7777 | 成人在线视频看看 | 国产一级免费在线观看 | 久久黄网 | 久久中文字幕一区 | 欧美久久国产精品 | 免费播放一级片 | 久久涩涩 | www.99re5.com| 一区二区三区中文字幕 | 四虎首页 | 91色综合 | 成人精品一区二区三区中文字幕 | 亚洲精品一区二三区不卡 | 国产免费观看一级国产 | 国产精品成人久久久久 | 午夜色婷婷 |