基于51单片机的数码管智能百叶窗

该设计基于MCS-51单片机,利用光敏电阻传感器、直流电机、两位数码管及按键等元件,实现自动和手动模式下对室内光强度的控制。系统通过I2C总线与PCF8591进行ADC数据转换,L298N驱动电机,数码管显示光强。在自动模式下,根据设定光强和实测光强控制电机正反转,同时设有极限位置保护和手动/自动模式切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计要求:本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,用一台直流电机控制百叶窗叶片的旋转(正转/反转),用一个光敏电阻传感器测量室内光强度,并用两位数码管显示测量结果,设置三个按键:手动/自动、手动正转和手动反转用一个发光二极管显示手动/自动状态,自动状态时二极管亮。设置两个极限位置保护行程开关,用于保护百叶窗叶片:当正转到极限位置压下行程开关时,电机停止正转,但还可以反转;当反转到极限位置压下行程开关时,电机停止反转,但还可以正转。按键输入采用中断方式,按键中断请求信号接INT0。单片机根据设定光强S1和S2和实测光强P来控制电机M的动作,分别使电机正转、反转或者停转来达到控制光强弱的功能。

使用的设备:光敏电阻传感器,直流电机,两位数码管

实现功能:自动模式和手动模式

实现方式:采用中断方式

 系统框图:

 程序流程图:

目录

I2C总线的设定

代码如下:

ADC数据转换:通过PCF8591实现

寻址

控制字节

proteus仿真中的接线法 

电机:通过L298N实现

引脚

 proteus仿真中的接线法 

两位数码管

 代码

proteus仿真中的接线法

 proteus仿真中的定时器外部中断

 定时器和外部中断

代码

主函数


I2C总线的设定

代码如下:

#include <REGX52.H>
#include "I2C.h"

void I2CStart()  //I2C开始
{
	I2C_SCL=1;
	I2C_SDA=1;
	I2C_SDA=0; 
	I2C_SCL=0;
}

void I2CStop()  //I2C结束
{
	I2C_SCL=0;
	I2C_SDA=0;
	I2C_SCL=1;
	I2C_SDA=1;
}

bit I2CWrite(unsigned char dat) //I2C写操作,dat-代写数值,ack-返回应答值
{
	bit ack;  //用来暂存应答值
	unsigned char mask;  //用来暂存数据
	for(mask=0x80;mask!=0;mask>>=1)
	{
		 if((mask&dat))
			 I2C_SDA=1;
		 else
			 I2C_SDA=0;
		 
		 I2C_SCL=1;    //拉高SCL
		 I2C_SCL=0;    //再拉低SCL,完成一个周期
	}
	   I2C_SDA=1;    //主机释放SDA
		 I2C_SCL=
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值