想要更多項(xiàng)目私wo!!!
一、電路設(shè)計(jì)
????????51 單片機(jī)雙軸自動追光系統(tǒng)主要由 STC89C52RC + 5516 光敏電阻 + ADC0832 + ULN2803 + 步進(jìn)電機(jī) + LCD1602 顯示屏組成。
????????1.通過子電路板的上、下、左、右四個光敏電阻來感受四個方向的光強(qiáng),自
動尋找光強(qiáng)最強(qiáng)的方向。四個光敏電阻的分壓電路將測得的光強(qiáng)轉(zhuǎn)換為電信號,
再通過兩個 ADC0832 轉(zhuǎn)換為數(shù)字量,單片機(jī)對數(shù)據(jù)進(jìn)行比較處理之后進(jìn)行顯示
并輸出控制信號通過 ULN2803 芯片驅(qū)動步進(jìn)電機(jī)轉(zhuǎn)動。
????????2.系統(tǒng)共設(shè)置有兩個模式,自動模式與手動模式,可通過按鍵切換。
????????3.自動模式下分為尋光與避光模式,尋光模式下系統(tǒng)會自動尋找光照最強(qiáng)的
地方,避光模式下系統(tǒng)會避開光照強(qiáng)烈的地方,可通過按鍵切換。
????????4.手動模式下可通過上下左右四個按鍵(只在手動模式有效)來控制電機(jī)的
轉(zhuǎn)動。
????????5.LCD1602 液晶屏實(shí)時(shí)顯示 ADC 芯片轉(zhuǎn)換的光敏數(shù)值
二、運(yùn)行結(jié)果
?文章來源地址http://www.zghlxwxcb.cn/news/detail-670531.html
?
三、部分代碼
?
#include <reg52.h>
#include "Delay.h"
#include "ADC0832.h"
#include "LCD1602.h"
#include "StepMotor.h"
#define uchar unsigned char //oê?¨ò?
#define uint unsigned int //oê?¨ò?
#define Light_Sensty 3 //?D1aáé???è
sbit Key_Pattern = P3^4; //?£ê??D??
sbit Key_Blk_or_Lgt = P3^5; //×??ˉ?°/±ü1a
sbit Key_Up = P3^0; //é?°′?ü
sbit Key_Down = P3^1; //??°′?ü
sbit Key_Left = P3^2; //×ó°′?ü
sbit Key_Right = P3^3; //óò°′?ü
uchar Up_data,Down_data,Right_data,Left_data;//X,Y·??òμ?1a??êy?μ
bit flag_Blk_or_Lgt; //ó?óú?D???°oú?¢?°1a
bit flag_Auto_or_Hand; //ó?óú?D??×??ˉ?¢ê??ˉ
uchar code *DIS1=" Welcome to use ";
uchar code *DIS2=" Wait a jiff ";
uchar code *DIS3=" ";
uchar code table[]={0,1,2,3,4,5,6,7,8,9};//??ê?êy×???±í
/********************************************************************
* ??3? : void DataDisplay(void)
* 1|?ü : ??è?1a??êy?μμ????¢ê??¢°ù??μ?êy
* ê?è? : ?T
* ê?3? : ?T
***********************************************************************/
typedef struct LIGHT
{
uchar bai1,shi1,ge1; //é???
uchar bai2,shi2,ge2; //×óóò
}LIGHT1;
LIGHT1 AD1,AD2;
void DisplayInit(void)
{
L1602_string(1,1,DIS1);//?a?ú??ê?
L1602_string(2,1,DIS2);
DelayMs(200);
L1602_char(2,13,'.');
DelayMs(200);
L1602_char(2,14,'.');
DelayMs(200);
L1602_char(2,15,'.');
DelayMs(300);
L1602_string(1,1,"U:000 D:000 Auto"); //?a?ú??ê?
L1602_string(2,1,"L:000 R:000 Sun ");
}
/********************************************************************
* ??3? : void DataDisplay(void)
* 1|?ü : 1a??êy?μ??ê?
* ê?è? : ?T
* ê?3? : ?T
***********************************************************************/
void DataDisplay(void)
{
uchar i;
for(i=0;i<5;i++)
{Up_data = Adc0832_Read_1(0);}Delayus(100); //??è?é?·?μ??1?μ
for(i=0;i<5;i++)
{Down_data = Adc0832_Read_1(1);}Delayus(100); //??è???·?μ??1?μ
for(i=0;i<5;i++)
{Right_data = Adc0832_Read_2(0);}Delayus(100); //??è?óò·?μ??1?μ
for(i=0;i<5;i++)
{Left_data = Adc0832_Read_2(1);}Delayus(100); //??è?×ó·?μ??1?μ
AD1.bai1 = Up_data/100%10; //·?à?°ù??
AD1.shi1 = Up_data/10%10; //·?à?ê???
AD1.ge1 = Up_data%10; //·?à?????
AD1.bai2 = Down_data/100%10;
AD1.shi2 = Down_data/10%10;
AD1.ge2 = Down_data%10;
AD2.bai1 = Right_data/100%10;
AD2.shi1 = Right_data/10%10;
AD2.ge1 = Right_data%10;
AD2.bai2 = Left_data/100%10;
AD2.shi2 = Left_data/10%10;
AD2.ge2 = Left_data%10;
L1602_char(1,3,table[AD1.bai1]+0X30); //??ê?°ù??
L1602_char(1,4,table[AD1.shi1]+0X30); //??ê?ê???
L1602_char(1,5,table[AD1.ge1]+0X30); //??ê?????
DelayMs(5); //?óê±5oá??
L1602_char(1,9,table[AD1.bai2]+0X30);
L1602_char(1,10,table[AD1.shi2]+0X30);
L1602_char(1,11,table[AD1.ge2]+0X30);
DelayMs(5);
L1602_char(2,3,table[AD2.bai1]+0X30);
L1602_char(2,4,table[AD2.shi1]+0X30);
L1602_char(2,5,table[AD2.ge1]+0X30);
DelayMs(5);
L1602_char(2,9,table[AD2.bai2]+0X30);
L1602_char(2,10,table[AD2.shi2]+0X30);
L1602_char(2,11,table[AD2.ge2]+0X30);
DelayMs(5);
if(flag_Auto_or_Hand) //×??ˉ?£ê?ê±??ê?
{
L1602_string(1,13,"Auto");
if(flag_Blk_or_Lgt)
{
L1602_string(2,13,"Sun ");
}
else
{
L1602_string(2,13,"Dark");
}
}
else //ê??ˉ?£ê?ê±??ê?
{
L1602_string(1,13,"Hand");
L1602_string(2,13," ");
}
}
?文章來源:http://www.zghlxwxcb.cn/news/detail-670531.html
?
到了這里,關(guān)于單片機(jī)設(shè)計(jì)_自動追光系統(tǒng)、光源跟蹤系統(tǒng)(AT89C51 光敏電阻 步進(jìn)電機(jī))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!