基于单片机工业生产现场的光照强度控制系统设计-基于单片机多功能智能台灯设计-基于单片机多功能智能台灯控制系统设计-资料转发分享

1633基于单片机工业生产现场的光照强度控制系统设计(仿真,程序,报告)

 用单片机控制总装车间中的LED照明系统,使其输出恒定照度的光,以满足总装生产工序中的照明需要。

总体设计方案

由设计要求可知,需使用MCS-51系列单片机,构建控制系统,实现LED灯亮度的控制。所以采用AT89C52 单片机为核心,以3*3按键键盘作为输入端,以达到控制所需输出电流的功能,并且由LCD1602显示模块可以显示输入电流的大小和电流源输出的电流大小。在设计中,采用PCF8591芯片进行AD/DA转换,单片机通过I2C通信协议控制PCF8591 AD转换输出的电压所需电压,输入压控电压源,通过采样电阻的电压DA转换获得电流源输出的电流值,经过单片机计算最后显示实际输出电流。

该直流电机控制系统的设计,在总体上大致可分为以下6个部分组成:AT89C52单片机最小系统,3*3按键键盘,直流稳压源,1602显示模块,AD/DA转换模块,可控电流源模块。

///工业生产中的产品数量自动计量系统创新设计
///功能:通过MUC-51芯片控制电流源输出电流,实现LED灯亮度控制
///*************************************************************************
#include<reg52.h>
#include<iic.h>
#include<lcd1602.h>

#define KEY_PRESET(code) { P1=code; temp=P1; temp=temp&code; delay(10);}

uchar str1[16]="310mA<=I<=3100mA";
uchar str2[16]="set:    out:    ";
uchar str3[16]=" Error occurred ";
uchar dianliu[4]={0,0,0,0};

uchar key_num,key_flag,key_count=0,OK_flag;
ulong pian,bai,shi,ge,set_value;
float key_value;
uchar h,l,temp;
ulong back_voltage1,back_current;

void get_Data();
void set_Data(); 
uchar keyscan();
bit DACconversion(uchar sla,uchar c,uchar Val);
bit ISendByte(uchar sla,uchar c);
uchar IRcvByte(uchar sla);
void delay1(uint j);
///*************************************************************************
///主函数
///*************************************************************************
void main()
{
	INIT_I2c();//iic总线初始化
	LCD_Init();//LCD1602初始化
	while(1)
	{	
		get_Data();
		set_Data();	
	}			
	
}

//*******************************************************************
//DAC 变换, 转化函数               
//*******************************************************************
bit DACconversion(uchar sla,uchar c,  uchar Val)
{
   Start_I2c();              //启动总线
   SendByte(sla);            //发送器件地址
   if(ack==0)return(0);
   SendByte(c);              //发送控制字节
   if(ack==0)return(0);
   SendByte(Val);            //发送DAC的数值  
   if(ack==0)return(0);
   Stop_I2c();               //结束总线
   return(1);
}
//*******************************************************************
//ADC发送字节[命令]数据函数               
//*******************************************************************
bit ISendByte(uchar sla,uchar c)
{
   Start_I2c();              //启动总线
   SendByte(sla);            //发送器件地址
   if(ack==0)return(0);
   SendByte(c);              //发送数据
   if(ack==0)return(0);
   Stop_I2c();               //结束总线
   return(1);
}
//*******************************************************************
//ADC读字节数据函数               
//*******************************************************************
uchar IRcvByte(uchar sla)
{  
	uchar c;
   Start_I2c();          //启动总线
   SendByte(sla+1);      //发送器件地址
   if(ack==0)return(0);
   c=RcvByte();          //读取数据0
   Ack_I2c(1);           //发送非就答位
   Stop_I2c();           //结束总线
   return(c);
}
///*************************************************************************
///按键扫描函数
///*************************************************************************
uchar keyscan()
{  
     KEY_PRESET(0X0F);
	 if(temp!=0X0F)//是否有键按下
	 {
	 	delay(10);
		temp=P1;
		temp=temp&0X0F;
		if(temp!=0X0F) //确实有键按下
		{
		   key_flag=1;//按下键标志位
		   switch(temp)
		   {
		   	 case 0X0E:h=0;break; //行
			 case 0X0D:h=1;break;
		   	 case 0X0B:h=2;break;
		   	 case 0X07:h=3;break;
			 default:break;
		   }
		   KEY_PRESET(0XF0);
		   switch(temp)
		   {
		   	 case 0XE0:l=0;break; //列
			 case 0XD0:l=1;break;
		   	 case 0XB0:l=2;break;
			 case 0X70:l=3;break;
			 default:break;
		   }
		   key_num=3*h+l;//按下键的键值
	       if(key_num<=9) key_count++;
		   while(temp!=0XF0)//等待释放
		   {
		   	  temp=P1;
			  temp=temp&0XF0;
		   }  
		}
	 }	 
	 return key_num;//返回键值
}
void get_Data()
{
	   	uchar i;
   		keyscan(); //键盘扫描

1634基于单片机多功能智能台灯设计(带时钟、姿态矫正、温度、亮度)

 1、上电之后LED灯点亮,代表当前灯是自动控制模式;
2、通过按键K5可以在自动和手动模式来回切换;
3、在手动模式下,按键K2,K3,K4分别对应一个灯光亮度;(k1按下时不可用)
4、在自动模式下,首先要检测到有人,才进行亮度的自动控制,否则台灯熄灭。可以挡住光敏电阻
的光线,或用手电筒来照射光敏电阻,模拟光照的变化,从而就可以看到台灯的亮度会随着环境中的
光照强度的改变而改变,效果是光照越弱,台灯越亮。如果人体传感器1分钟检测不到有人,台灯就
会自动熄灭。(光敏电阻在USB灯后面);
5、无论是自动模式还是手动模式,都是把亮度分为10个等级的,并在LCD上显示0-9;
6、设置日期时间:按下K1(设置)键,显示年位置会有光标闪烁,表示此时可以调节年份,如需调节年份,
按K3(加),K4(减)即可对年份进行调节。然后按K2(移动)键,显示月份位置会光标闪烁,同样的方法可
以调节月,再按K2键分别可设置日,时,分,秒。
7、靠近超声波时,蜂鸣器报警。

#include <reg52.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535
#include "eeprom52.h"
#include "intrins.h"
#include "ds1302.h"
#include "lcd1602.h"
#include "ultrasonic_wave.h"//超声波头函数

bit flag_200ms ;
bit flag_100ms ;
bit flag_beep1_en;//定时模式开启标志
bit flag_beep2_en;
bit flag_beep3_en;

sbit k1=P1^4;	 //时间设置切换
sbit k2=P1^5;	 //光标移动
sbit k3=P1^6;	 //加
sbit k4=P1^7;	 //减
sbit k5=P2^7;	 //手动/自动

sbit ADC_CS = P3^5;	 //ADC0832引脚定义
sbit ADC_CLK = P3^6;	 

省略。。

 

1635基于单片机多功能智能台灯控制系统设计(时钟、姿态矫正、温度采集)

 功能说明:
1、上电之后LED灯点亮,代表当前灯是自动控制模式;
2、通过按键K5可以在自动和手动模式来回切换;
3、在手动模式下,按键K2,K3,K4分别对应一个灯光亮度;(k1按下时不可用)
4、在自动模式下,首先要检测到有人,才进行亮度的自动控制,否则台灯熄灭。可以挡住光敏电阻
的光线,或用手电筒来照射光敏电阻,模拟光照的变化,从而就可以看到台灯的亮度会随着环境中的
光照强度的改变而改变,效果是光照越弱,台灯越亮。如果人体传感器1分钟检测不到有人,台灯就
会自动熄灭。(光敏电阻在USB灯后面);
5、无论是自动模式还是手动模式,都是把亮度分为10个等级的,并在LCD上显示0-9;
6、设置日期时间:按下K1(设置)键,显示年位置会有光标闪烁,表示此时可以调节年份,如需调节年份,
按K3(加),K4(减)即可对年份进行调节。然后按K2(移动)键,显示月份位置会光标闪烁,同样的方法可
以调节月,再按K2键分别可设置日,时,分,秒。
7、靠近超声波时,蜂鸣器报警。

目录

1633基于单片机工业生产现场的光照强度控制系统设计(仿真,程序,报告)

1634基于单片机多功能智能台灯设计(带时钟、姿态矫正、温度、亮度)

1635基于单片机多功能智能台灯控制系统设计(时钟、姿态矫正、温度采集)

可以按照这个思路进行自行设计,也可以通过百度网盘列表下载已经做好的 
https://www.aiesst.cn/baidu.html  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值