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

news2024/11/17 9:38:14

想要更多项目私wo!!!


一、电路设计

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

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

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

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

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

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

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

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

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

转动。

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

二、运行结果


三、部分代码

 

#include <reg52.h>
#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,"    ");
	}


}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别

文章目录 MySQL存储引擎InnoDB、MyISAM和MEMORY介绍详解和区别InnoDB存储引擎特点操作示例创建InnoDB表修改表引擎为InnoDB MyISAM存储引擎特点操作示例创建MyISAM表修改表引擎为MyISAM MEMORY存储引擎特点操作示例创建MEMORY表修改表引擎为MEMORY 总结 MySQL存储引擎InnoDB、M…

代码随想录算法训练营第六天|242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

先了解一下什么是哈希表 哈希表是根据关键码的值而直接进行访问的数据结构 所以数组就是哈希表 盗个卡哥的图 哈希表中关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素&#xff0c;如下图所示&#xff1a; 哈希表能解决的问题&#xff1a; 一般哈…

【LeetCode】987.二叉树的垂序遍历

二叉树遍历系列 144.二叉树的前序遍历94.二叉树的中序遍历145.二叉树的后续遍历102.二叉树的层序遍历107.二叉树的层序遍历II103.二叉树的锯齿形层序遍历&#xff08;之字形遍历&#xff09;199.二叉树的右视图 二叉树的垂序遍历目录 二叉树遍历系列1.问题示例 1示例 2示例 3 …

校招又临近了,怎么在面试中应对设计模式相关问题呢?

夏天开始了&#xff0c;那么夏天结束时的毕业季也不远了。毕业是个伤感、期待而又略带残酷的时节&#xff0c;就像蜜桃无论成熟与否都会在这个时间被采摘&#xff0c;如果毫无准备就踏入社会&#xff0c;就会……马上变成低级社畜。所以说还是要早点为了毕业找工作做点准备&…

Stereo-Detection:YOLO v5与双目测距结合,实现目标的识别和定位测距

简介&#xff1a;Stereo-Detection 是一个传统的SGBM深度测距yolov5目标检测&#xff0c;并部署在Jeston nano的开源教程。它致力于让更多的大四学生毕业&#xff0c;以及让研一学生入门 开源链接&#xff1a;yzfzzz/Stereo-Detection: Conventional SGBM depth ranging yolov…

【android专题】学习android,第一天学习:软件和组件了解

开发软件和手机建立连接 1.建立连接 2.运行App程序到手机&#xff0c;通过USB线 选择你的小米设备 run按钮 下面这个&#xff0c;就是你设备的日志 通过USB安装时&#xff0c;报错&#xff0c;大概意思就是&#xff0c;默认手机是禁止通过usb安装软件的&#xff0c; 要打开…

Automa自动化爬取图片(二)

Automa插件可以扩展Automa的功能&#xff0c;使其可以与其他应用程序进行交互。例如&#xff0c;Automa插件可以用于自动化测试Web应用程序&#xff0c;批量发送邮件&#xff0c;自动化填写表单等。通过Automa插件&#xff0c;我们可以更加灵活地定制自己的自动化测试工具&…

Linux 配置YUM源(FTP方式获取软件源、使用阿里云yum源、同时使用本地源与在线源)YUM获取安装包并生成YUM软件仓库

YUM介绍 YUM&#xff08;yellow dog updater modified&#xff09; 基于RPM包构建的软件更新机制 自动解决依赖关系 yum软件仓库集中管理软件包 RPM软件包的来源 centos发布的RPM包集合第三方组织发布的RPM包集合用户自定义的RPM包集合 软件仓库的提供方式 FTP服务&#xff1a;…

阿里4年测试经验分享 —— 测试外包干了3年后,我废了...

去年国庆&#xff0c;我分享了一次一位阿里朋友的技术生涯&#xff0c;大家反响爆蓬&#xff0c;感觉十分有意思&#xff0c;今天我来分享一下我另一位朋友的真实经历&#xff0c;是不是很想听&#xff1f; 没错&#xff0c;我这位朋友是曾经外包公司的测试开发&#xff0c;而…

SAPJNet:小样本多序列MRI诊断的序列自适应原型联合网络

文章目录 SAPJNet: Sequence-Adaptive Prototype-Joint Network for Small Sample Multi-sequence MRI Diagnosis摘要方法Sequence-Adaptive Transformer原型优化策略 实验结果 SAPJNet: Sequence-Adaptive Prototype-Joint Network for Small Sample Multi-sequence MRI Diagn…

【2023-4-8 美团春招笔试题 开发岗(技术综合-后端数开软开)】

题目一&#xff1a; 代码一&#xff1a; #include <iostream> #include <string> using namespace std;int main() {int n,m,a;cin>>n>>m>>a;string s[n][m];for(int i0;i<n;i){for(int j0;j<m;j){cin>>s[i][j];}}int count0;for(i…

【MySQL】(7)复合查询

文章目录 单表查询回顾与练习多表查询自连接多行子查询&#xff08;单列&#xff09;in 运算符all 关键字any 关键字 多列子查询from 子句中的子查询合并查询 单表查询回顾与练习 注&#xff1a;下面的依旧基于 scott 数据库 MariaDB [scott]> select * from emp; -------…

【历史上的今天】4 月 23 日:YouTube 上传第一个视频;数字音频播放器的发明者出生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 23 日&#xff0c;世界读书日。在 1564 年的这一天&#xff0c;全世界最卓越的文学家之一莎士比亚出生&#xff1b;1616 年的这一天&#xff0c;莎士比亚…

ubuntu22.04普通用户配置cuda

ubuntu22.04普通用户配置cuda 1. 问题描述2. 解决方法2.1 查看安装cuda版本2.2 修改普通用户自己的环境变量2.3 重新执行初始化文档2.4 查看nvcc版本&#xff0c;测试是否成功 1. 问题描述 在ubuntu22.04服务器上使用root用户安装了cuda&#xff0c;普通用户登录时仍然没办法直…

中国社科院与美国杜兰大学金融管理硕士项目——你永远可以,成为想要的自己

有人说过&#xff0c;世界上最好的保鲜就是不断进步&#xff0c;每一次改变都是新生的开始&#xff0c;让自己成为更好的更值得爱的人。你要相信&#xff0c;不论任何时候&#xff0c;你都可以成为想要的自己。就像我们在职攻读硕士学位&#xff0c;经过在社科院与杜兰大学金融…

聚观早报|周鸿祎360员工不会被GPT淘汰;蚂蚁集团再捐1亿种树治沙

今日要闻&#xff1a;周鸿祎称360员工不会被GPT淘汰&#xff1b;特斯拉ModelS/X美国售价全系上涨&#xff1b;蚂蚁集团再捐1亿支持种树治沙&#xff1b;复旦大学MOSS大模型正式开源&#xff1b;电影《灌篮高手》票房突破2亿元 周鸿祎称360员工不会被GPT淘汰 4 月 21 日下午&am…

链表中的递归算法C语言带你看看

25. K 个一组翻转链表 难度困难1998收藏分享切换为英文接收动态反馈 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么…

Redis实现分布式锁的正确姿势 | Spring Cloud 36

一、分布式锁 1.1 什么是分布式锁 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享…

【网络安全】SSRF漏洞

ssfr ssrf产生的原因原理展示使用不当可能出现ssrf漏洞函数漏洞检测(靶场一)代码curl是什么检测服务器是否可以从其他服务器获取数据使用file协议获取远端服务器的内容利用dict协议探测端口 漏洞检测&#xff08;靶场二&#xff09;代码file_get_contents()利用file协议读取服务…

过来人(江苏)专转本考试后的感悟和经验,真的很受用

过来人转本考试后的感悟和经验&#xff0c;真的很受用&#xff01; 转本不仅是分数的较量&#xff0c;也是信息收集、时间管理、学习能力、毅力等等的较量。 同学们在转本中难免会遇见一些困难&#xff0c;为了避免走弯路&#xff0c;一起来看看过来人的感悟和经验吧&#xf…