天天看点

基于单片机的智能台灯系统设计(#0421)

随着时代发展,节能环保、健康与人们的日常生活变得密不可分,科技的进步,也使家电更加智能化和人性化。台灯作为家电中基础的,也是必不可少的,所以,提出PWM调光灯设计。 

功能描述

1、采用51单片机作为主控芯片;

2、采用红外热释电传感器监测人体;

3、采用光敏电阻+ADC0832检测光照强度;

4、手动模式:可通过按键调节LED灯亮度,共8档;

5、自动模式:当检测到有人在的条件下,根据光照强度自动调节LED灯亮度;当检测到无人在,将进入延时程序,延时时间结束将关闭LED灯。

基于单片机的智能台灯系统设计(#0421)

按键说明

KEY1:手动/自动模式切换;

KEY2:手动模式下LED灯亮度升高;

KEY3:手动模式下LED灯亮度降低。

整体方案

基于单片机的智能台灯系统设计(#0421)

电路设计

采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

基于单片机的智能台灯系统设计(#0421)

仿真设计

采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

主程序设计

void Main()
{
  uchar flag_200ms;
  P0 = P1 = P2 = P3 = 0xff;    //初始化单片机IO口为高电平  write_string(2,0,"     :  :        ");
  time_init();                    //初始化定时器 
  red = 0; 
  f_pwm_l = 99;
  while(1)
  {

    key();
    if(key_can < 10)
      key_with();
    if(flag_moshi == 0)   //自动模式
      red = 1;
    else 
      red = 0;      //手动模式

    if(flag_moshi == 0)   //自动模式
    {
      if(guangxian <= 20)       //开灯
      {
        TR0 = 0;  //最亮
        td_led = 0; 
      }else if(guangxian >= 80)  //关灯  
      {
        TR0 = 0;  //灭
        td_led = 1;
      }else 
      {
        TR0 = 1;  
        f_pwm_l = guangxian;  
      } 
    }
    flag_200ms ++;
    if(flag_200ms >= 200)
    {
      flag_200ms = 0;
      guangxian = ad0832read(1,0); //采集光线
      guangxian = guangxian * 99 / 255;
    }
    delay_1ms(1);
  } 
}      

源文件获取