• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的声控灯设计【光照,声音,红外】(仿真)

2024/11/19
3514
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

有需要资料的可了解一下.docx

共1个文件

设计一个声、光、红外同时控制的门灯系统:

1、光敏控制灯在白天不亮,只在晚上声控检测到声音或者红外检测到人靠近时灯亮;

2、声音消失或人离开后延时30秒灯熄灭。

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit ADCLK=	P1^0;//时钟,初始状态为0
sbit ADDI=	P1^1;//数据输入
sbit ADDO =	P1^2; // 数据输出
sbit ADCS=	P1^3;

sbit led=P3^3;//灯

sbit man=P3^2;//人体

sbit voice=P3^1;//声音

uint miao=0;//计时

//将AD转换来的二进制数转换为十进制数
unsigned int zhuanhuan()  //AD转换,返回结果
{
	unsigned char i = 0,channel=2;
	unsigned char j;
	unsigned int dat = 0;
	unsigned char ndat = 0;

	ADDI = 1;//输入引脚拉高
	_nop_();//延时1us
	_nop_();//延时1us
	ADCS = 0;//片选
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 1;//拉高时钟
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 0;//拉低时钟
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 1;//拉高时钟
	ADDI = channel & 0x1;
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 0;//拉低时钟
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 1;//拉高时钟
	ADDI = (channel >> 1) & 0x1;
	_nop_();//延时1us
	_nop_();//延时1us
	ADCLK = 0;//拉低时钟
	ADDI = 1;//输出1
	_nop_();//延时1us
	_nop_();//延时1us
	dat = 0; //存储清零
	for (i = 0; i < 8; i++)	//循环8次
	{
		dat |= ADDO;//读取引脚
		ADCLK = 1; //拉高时钟
		_nop_();//延时1us
		_nop_();//延时1us
		ADCLK = 0;//拉低时钟
		_nop_();//延时1us
		_nop_();//延时1us
		dat <<= 1;//左移
		if (i == 7) dat |= ADDO;//读取引脚
	}

 

  • 有需要资料的可了解一下.docx
    下载

相关推荐