毕设成品 单片机自动追光系统、光源跟踪系统(AT89C51 光敏电阻 步进电机)

一、电路设计

**51 单片机双轴自动追光系统主要由 STC89C52RC + 5516 光敏电阻 + ADC0832 + ULN2803 + 步进电机 +
LCD1602 显示屏组成。 **

1.通过子电路板的上、下、左、右四个光敏电阻来感受四个方向的光强,自

动寻找光强最强的方向。四个光敏电阻的分压电路将测得的光强转换为电信号,

再通过两个 ADC0832 转换为数字量,单片机对数据进行比较处理之后进行显示

并输出控制信号通过 ULN2803 芯片驱动步进电机转动。

2.系统共设置有两个模式,自动模式与手动模式,可通过按键切换。

3.自动模式下分为寻光与避光模式,寻光模式下系统会自动寻找光照最强的

地方,避光模式下系统会避开光照强烈的地方,可通过按键切换。

4.手动模式下可通过上下左右四个按键(只在手动模式有效)来控制电机的

转动。

5.LCD1602 液晶屏实时显示 ADC 芯片转换的光敏数值

二、运行结果

三、部分代码



    #include 
    #include "Delay.h"
    #include "ADC0832.h"
    #include "LCD1602.h"
    #include "StepMotor.h"
    
    #define uchar unsigned char	//ºê¶¨Òå
    #define uint  unsigned int	//ºê¶¨Òå
    
    #define Light_Sensty  3		 //¸Ð¹âÁéÃô¶È
    
    sbit Key_Pattern = P3^4;	//ģʽÇл»
    sbit Key_Blk_or_Lgt = P3^5;	//×Ô¶¯Ñ°/±Ü¹â
    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·½ÏòµÄ¹âÕÕÊýÖµ
    bit flag_Blk_or_Lgt;	//ÓÃÓÚÇл»Ñ°ºÚ¡¢Ñ°¹â
    bit flag_Auto_or_Hand;	//ÓÃÓÚÇл»×Ô¶¯¡¢ÊÖ¶¯



    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};//ÏÔʾÊý×ÖÂë±í
    
    /********************************************************************
    * Ãû³Æ : void DataDisplay(void)
    * ¹¦ÄÜ : »ñÈ¡¹âÕÕÊýÖµµÄ¸ö¡¢Ê®¡¢°ÙλµÄÊý 
    * ÊäÈë : ÎÞ
    * Êä³ö : ÎÞ
    ***********************************************************************/
    typedef struct LIGHT 	 
    {
    	uchar bai1,shi1,ge1; //ÉÏÏÂ
    	uchar bai2,shi2,ge2; //×óÓÒ
    }LIGHT1;
    LIGHT1 AD1,AD2;
    
    void DisplayInit(void)
    {
    	L1602_string(1,1,DIS1);//¿ª»úÏÔʾ
       	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");	//¿ª»úÏÔʾ
       	L1602_string(2,1,"L:000 R:000 Sun ");
    }
    
    /********************************************************************
    * Ãû³Æ : void DataDisplay(void)
    * ¹¦ÄÜ : ¹âÕÕÊýÖµÏÔʾ
    * ÊäÈë : ÎÞ
    * Êä³ö : ÎÞ
    ***********************************************************************/
    void DataDisplay(void)
    {
    	uchar i;
    	for(i=0;i<5;i++)
    	{Up_data = Adc0832_Read_1(0);}Delayus(100); 	//»ñÈ¡ÉÏ·½µçѹֵ			   
    
    	for(i=0;i<5;i++)
    	{Down_data = Adc0832_Read_1(1);}Delayus(100); 	//»ñÈ¡Ï·½µçѹֵ			   
    
    	for(i=0;i<5;i++)
    	{Right_data = Adc0832_Read_2(0);}Delayus(100);	//»ñÈ¡ÓÒ·½µçѹֵ 		
    
    	for(i=0;i<5;i++)
    	{Left_data = Adc0832_Read_2(1);}Delayus(100);	//»ñÈ¡×ó·½µçѹֵ


    	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);							  //ÑÓʱ5ºÁÃë
    	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,"    ");
    	}


    }


项目获取:

https://gitee.com/feifei1122/simulation-project

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值