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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6073|回復: 5
收起左側

51單片機雙軸追光程序Proteus仿真原理圖(太陽能充電)

  [復制鏈接]
ID:856585 發表于 2021-6-17 18:31 | 顯示全部樓層 |閱讀模式
本來想整個雙軸的,但是整出來太丑了,所以換成單軸了,我把他分為兩個。一個雙軸的,一個oled屏幕顯示光照強度,單軸的
我自己加了一個充放電模塊,配了一個太陽能板,和12864電池
同時也有pcb圖

制作出來的實物圖如下:

實物單軸

實物單軸


仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

proteus仿真圖

proteus仿真圖
51hei.gif
單片機源程序如下:
#include <reg52.h>
#include <stdio.h>
#include "PCF8591.H"

#define uchar unsigned char
#define uint  unsigned int

#define  PCF8591 0x90    //PCF8591 地址

sbit ENTER = P3^3;
sbit UP = P3^4;
sbit DOWN = P3^5;
sbit LEFT = P3^6;
sbit RIGHT = P3^7;

sbit LED1 = P1^2;
sbit LED2 = P1^3;
uchar Motor_Up[4]={0x08,0x04,0x02,0x01};
uchar Motor_Down[4]={0x01,0x02,0x04,0x08};


//uchar Motor_Left[4]={0x10,0x20,0x40,0x80};
//uchar Motor_Right[4]={0x80,0x40,0x20,0x10};

unsigned char AD_CHANNEL;
//延時函數
void Delay_ms(uint jj)
{
    uint ii;
    while(jj--)
        for(ii=0;ii<125;ii++);
}
void UART_Init(void)
{
     TMOD = 0x20;   //定時器模式選擇
     PCON = 0x00;
     SCON = 0x50;            
     TH1 = 0xFd;    //設置波特率 9600
     TL1 = 0xFd;
     TR1 = 1;        //啟動定時器1
       ES = 1;        //開串口中斷
       EA = 1;        //開總中斷        
}
/********************************************************************
* 名稱   : PSend_Hex()
* 功能   : 發送字符串函數,可控制發送長度
* 變量   : 無
* 返回值 : 無
********************************************************************/
void Send_Hex(unsigned char *p,unsigned char num)
{
       while(num--)   //剩余發送的字符數
    {
        SBUF = *p; //將要發送的數據賦給串口緩沖寄存器
            while(!TI);//等待發送結束
            TI = 0;    //軟件清零
            p++;       //指針加一
    }   
}
void main()       //函數功能:主函數
{      

    uchar AD_Up,AD_Down,AD_Left,AD_Right;
    uchar i,j,k;
    uchar Table[4];
    Delay_ms(2000);
    UART_Init();   
    while(1)
    {
        if(!ENTER)
        {
            Delay_ms(20);
            while(!ENTER);
            k++;   
        }
        if(k == 5)
        {
        LED1 = 1;
        LED2 = 0;
        for(i=0;i<8;i++)
        {
            switch(AD_CHANNEL)
            {
                case 0: PCF8591_ISendByte(PCF8591,0x41);
                AD_Up=PCF8591_IRcvByte(PCF8591)*2;  //ADC0 模數轉換1
                break;  
               
                case 1: PCF8591_ISendByte(PCF8591,0x42);
                AD_Down=PCF8591_IRcvByte(PCF8591)*2;  //ADC1  模數轉換2
                break;  
                case 2: PCF8591_ISendByte(PCF8591,0x43);
                AD_Left=PCF8591_IRcvByte(PCF8591)*2;  //ADC2 模數轉換3
                break;  
               
                case 3: PCF8591_ISendByte(PCF8591,0x40);
                AD_Right=PCF8591_IRcvByte(PCF8591)*2;  //ADC3  模數轉換4
                break;
            }

            Send_Hex(Table,4);
            if(++AD_CHANNEL>3)
            {
             AD_CHANNEL=0;
             Table[0] = AD_Up;
            Table[1] = AD_Down;
            Table[2] = AD_Left;
            Table[3] = AD_Right;
             }
        }
        }
        if(k%2 == 1)
        {
            LED1 = 0;
            LED2 = 1;
            AD_Up = 0;    //上
            AD_Down = 0;//下
            AD_Left = 0;//左
            AD_Right = 0;//右   
        }        
        ///////////////////////////
      
        if(((AD_Up<AD_Down)&&(AD_Down-AD_Up>10))||(!UP))//上轉
        {
            for(i=0;i<10;i++)
            {
                for(j=0;j<4;j++)
                {
                    P2=Motor_Up[j];
                    Delay_ms(10);
                }        
            }   
        }
        //////////////////////////////////////
        if(((AD_Up>AD_Down)&&(AD_Up-AD_Down>10))||(!DOWN))//下轉
        {
            for(i=0;i<10;i++)
            {
                for(j=0;j<4;j++)
                {
                    P2=Motor_Down[j];
                    Delay_ms(10);
                }        
            }
        }
        /////////////////////////////
//        if(((AD_Left<AD_Right)&&(AD_Right-AD_Left>10))||(!LEFT))//左轉
//        {
//            for(i=0;i<10;i++)
//            {
//                for(j=0;j<4;j++)
//                {
//                    P2=Motor_Left[j];
//                    Delay_ms(10);
//                }        
//            }
//        
//        }
//        //////////////////////////////////////
//        if(((AD_Left>AD_Right)&&(AD_Left-AD_Right>10))||(!RIGHT))//右轉
//        {
//            for(i=0;i<10;i++)
//            {
//                for(j=0;j<4;j++)
//                {
//                    P2=Motor_Right[j];
//                    Delay_ms(10);
//                }        
//            }
//        }
        ////////////////////////////////////
        Delay_ms(100);//延時,可適當修改
    }
}
全部資料51hei下載地址:
仿真: 04 Protues 仿真工程.rar (199.13 KB, 下載次數: 170)

評分

參與人數 2黑幣 +92 收起 理由
ag26259 + 12 贊一個!
admin + 80 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:582255 發表于 2021-10-24 21:51 | 顯示全部樓層
請問一下,你這四個光敏電阻能分辨出光電板子的角度嗎?是不是用個手電筒模擬照射四個光敏電阻來模擬?
回復

使用道具 舉報

ID:91165 發表于 2021-10-25 11:49 | 顯示全部樓層
俯仰角一年也不用調整幾次吧
回復

使用道具 舉報

ID:1019920 發表于 2022-4-20 00:34 | 顯示全部樓層
這個對我很有幫助
回復

使用道具 舉報

ID:685250 發表于 2023-7-11 16:01 | 顯示全部樓層
牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛牛
回復

使用道具 舉報

ID:433219 發表于 2024-3-13 14:54 | 顯示全部樓層
當 模型 玩,還是好玩的。。。商品化的成本路就很長了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女性毛片 | 中文字幕一区二区三区四区五区 | 久久91精品国产一区二区 | 天天干精品 | 久久久久久亚洲欧洲 | 亚洲aⅴ精品| 成人性视频免费网站 | 亚洲精品一区二区冲田杏梨 | 国产日韩精品久久 | 国产成人精品久久二区二区91 | 久久综合一区 | 久久久精品国产 | 伊人精品国产 | 国产精品一区二区无线 | 久久久久久看片 | 国产精品免费看 | 男女羞羞视频在线观看 | 国产精品久久久av | 精品国产乱码久久久久久影片 | 日韩精品免费在线观看 | 久久9精品 | 国内自拍视频在线观看 | 九九免费视频 | 精品一区二区三区在线观看 | 国产1区| 天天爱爱网| 色婷婷国产精品 | 91精品国产欧美一区二区 | 国产成人精品一区二区三区视频 | 亚洲一区 | 久久精品久久精品久久精品 | 国产在线中文字幕 | www.日日夜夜 | 久久久91| 日韩精品亚洲专区在线观看 | 黄网站在线播放 | 精品免费视频 | 中文字幕视频在线 | 国产一在线 | 一区二区三区在线播放 | av男人的天堂av |