在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機的智能臺燈設計

精通單片機與嵌入式 ? 來源:精通單片機與嵌入式 ? 2023-08-29 09:32 ? 次閱讀

一、設計目的

使用單片機設計智能臺燈對于提高學生的單片機應用能力具有較強的意義。通過該設計,可以鞏固所學的單片機理論知識,培養學生硬件和軟件的設計能力,從而促進學生所掌握的理論知識向實踐應用的改變。

二、設計要求

(1)熟悉51單片機集成開發環境,運用C語言編寫工程文件; (2)熟練應用所選用單片機的內部結構、資源,以及軟硬件調試設備的基本方法; (3)自行構建基于單片機的最小系統,完成相關硬件電路的設計實現; (4)掌握智能臺燈的原理和實現方法。

三、設計內容

(1) 可以通過按鍵切換控制模式,有自動模式和手動模式可選;

(2) 自動模式下,可根據空間環境的光線強度大小,調節臺燈的亮度。并且

1分鐘檢測不到有人,直接熄滅臺燈,達到節能的效果;

(3) 手動模式下,可通過按鍵增加或減少亮度;

開題報告

b876f676-45fb-11ee-a2ef-92fbcf53809c.png

方案設計

整個系統以STC89C52單片機為核心器件,配合電阻電容晶振等器件,構成單片機的最小系統。其它個模塊圍繞著單片機最小系統展開。其中包括,照明設備采用USB小燈進行模擬,使得設計在外形上更加美觀,在USB小燈內部,是6顆白色的LED燈;光照強度采集模塊,是使用光敏電阻+ADC0832方案;人體感應采用紅外熱釋傳感器,該傳感器靈敏度高,操作控制簡單;指示燈模塊由一顆綠色的小燈構成,指示燈亮時是自動模式,熄滅時是手動模式;按鍵模塊由3個按鍵組成,包括模式切換按鍵、亮度減少按鍵和亮度增加按鍵;

b8bfc66c-45fb-11ee-a2ef-92fbcf53809c.png

設計功能

1、上電之后,綠色的 LED 燈點亮,代表當前是自動控制模式。

2、通過按鍵 1,可以在手動模式(綠燈滅)和自動模式(綠燈亮)之間來回切換。

3、在手動模式下,可以通過按鍵 2 降低亮度,按鍵 3 增加亮度。

4、在自動模式下,首先要檢測到有人,才進行亮度的自動控制,否則臺燈熄滅。可以擋住光敏電阻的光線,或用手電筒來照射光敏電阻,模擬光照的變化,從而就可以 看到臺燈的亮度會隨著環境中的光照強度的改變而改變,效果是光照越弱,臺燈越亮。如果人體傳感器 1 分鐘檢測不到有人,臺燈就會自動熄滅。

5、無論是自動模式還是手動模式,都是把亮度分為 10 個等級的。

6、注意,人體感應檢測功能只在自動模式下有效。

原理圖設計


b9f9d0f4-45fb-11ee-a2ef-92fbcf53809c.png

PCB設計


ba5391d4-45fb-11ee-a2ef-92fbcf53809c.pngb820cfda-45fb-11ee-a2ef-92fbcf53809c.gif

源代碼


#include 
#include 


#define uchar unsigned char    // 以后unsigned char就可以用uchar代替
#define uint  unsigned int    // 以后unsigned int 就可以用uint 代替




sbit LED     = P1^0;          // 模式指示燈,亮是自動模式,滅是手動模式
sbit Lamp    = P1^4;           // 臺燈控制引腳
sbit Key1    = P1^1;          // 按鍵1,模式切換按鍵
sbit Key2    = P1^2;           // 按鍵2,亮度減少按鍵      
sbit Key3    = P1^3;          // 按鍵3,亮度增加按鍵
sbit ADC_CS  = P2^3;           // ADC0832的CS引腳
sbit ADC_CLK = P2^0;           // ADC0832的CLK引腳
sbit ADC_DAT = P2^1;           // ADC0832的DI/DO引腳
sbit Module  = P2^2;          // 人體紅外檢測模塊




uchar gCount=0;                // 全局計數變量
uchar gIndex;                  // 亮度變量,0是最暗,9是最亮,一共10檔
uint  gTime=0;                // 計時變量,用于計時多久沒檢測到有人






/*********************************************************/
// 毫秒級的延時函數,time是要延時的毫秒數
/*********************************************************/
void DelayMs(uint time)
{
  uint i,j;
  for(i=0;i>= 1;
    if(ADC_DAT)
      dat2=dat2|0x80;
    else
      dat2=dat2|0x00;
    WavePlus();
  }


  _nop_();            // 結束此次傳輸
  ADC_DAT = 1;
  ADC_CLK = 1;
  ADC_CS  = 1;   


  if(dat1==dat2)      // 返回采集結果
    return dat1;
  else
    return 0;
} 






/*********************************************************/
// 定時器初始化
/*********************************************************/
void TimerInit()
{
  TMOD = 0x01;        // 使用定時器0,工作方式1   
  TH0  = 252;          // 給定時器0的TH0裝初值
  TL0  = 24;          // 給定時器0的TL0裝初值  
  ET0  = 1;            // 定時器0中斷使能
  EA   = 1;            // 打開總中斷
  TR0   = 1;            // 啟動定時器0
}






/*********************************************************/
// 手動控制
/*********************************************************/
void ManualControl()
{
  // 亮度減少
  if(Key2==0)          // 如果按鍵2被按下去
  {
    if(gIndex>0)      // 只要當前亮度不為最低才能減少亮度
    {
      gIndex--;        // 亮度降低一檔
      DelayMs(300);    // 延時0.3秒
    }
  }


  // 亮度增加
  if(Key3==0)          // 如果按鍵3被按下去
  {
    if(gIndex<9)      // 只要當前亮度不為最高才能增加亮度
    {
      gIndex++;        // 亮度增加一檔
      DelayMs(300);    // 延時0.3秒
    }
  }
}






/*********************************************************/
// 自動控制
/*********************************************************/
void AutoControl(uchar num)
{
  if(num<59)                            // 最亮
    gIndex=9;
  else if((num>65)&&(num<81))            // 第二亮
    gIndex=8;
  else if((num>87)&&(num<103))          // 第三亮
    gIndex=7;
  else if((num>109)&&(num<125))
    gIndex=6;
  else if((num>131)&&(num<147))
    gIndex=5;
  else if((num>153)&&(num<169))
    gIndex=4;
  else if((num>175)&&(num<191))
    gIndex=3;
  else if((num>197)&&(num<213))
    gIndex=2;
  else if((num>219)&&(num<235))
    gIndex=1;
  else if(num>241)                     // 最暗
    gIndex=0;
}






/*********************************************************/
// 主函數
/*********************************************************/
void main()
{
  uchar ret;


  TimerInit();           // 定時器初始化


  LED=0;                // 指示燈點亮(自動模式指示燈)
  ret=Get_ADC0832();    // 獲取AD采集結果(環境光照強度)
  AutoControl(ret);      // 上電先進行一次自動亮度控制  
  AutoControl(ret+7);


  while(1)
  {
    /* 模式切換控制 */
    if(Key1==0)          // 如果按鍵1被按下去
    {
      LED=~LED;          // 切換LED燈狀態
      DelayMs(10);      // 延時消除按鍵按下的抖動
      while(!Key1);      // 等待按鍵釋放
      DelayMs(10);      // 延時消除按鍵松開的抖動
    }


    /* 亮度控制 */
    if(LED==1)              // 如果LED是滅的
    {
      ManualControl();      // 則進行手動控制
    }
    else                    // 如果LED是亮的
    {
      if(gTime<60000)
      {
        ret=Get_ADC0832();    // 獲取AD采集結果(環境光照強度)
        AutoControl(ret);      // 進行自動控制  
        DelayMs(200);
      }
    }


    /*檢測是否有人*/
    if(Module==1)
    {
      gTime=0;                    // 檢測到有人,則把60秒計時清零
    }
    if(gTime>60000)                // 如果gTime的值超過了60000
    {
      gTime=60000;                // 則把gTime的值重新賦值為60000,避免過大溢出
      gIndex=0;                    // 如果1分鐘檢測不到有人,則把臺燈熄滅
    }
  }
}




/*********************************************************/
// 定時器0服務程序,1毫秒
/*********************************************************/
void Timer0(void) interrupt 1
{
  TH0  = 252;            // 給定時器0的TH0裝初值
  TL0  = 24;            // 給定時器0的TL0裝初值  


  gTime++;              // 每1毫秒,gTime變量加1
  gCount++;              // 每1毫秒,gCount變量加1


  if(gCount==10)        // 如果gCount加到10了
  {
    gCount=0;            // 則將gCount清零,進入新一輪的計數
    if(gIndex!=0)        // 如果說臺燈不是最暗的(熄滅)
    {
      Lamp=0;            // 則把臺燈點亮
    }
  }
  if(gCount==gIndex)    // 如果gCount計數到和gIndex一樣了
  {
    if(gIndex!=9)        // 如果說臺燈不是最亮的
    {
      Lamp=1;            // 則把臺燈熄滅
    }
  }
}

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6057

    文章

    44807

    瀏覽量

    644172
  • 51單片機
    +關注

    關注

    276

    文章

    5707

    瀏覽量

    125777
  • C語言
    +關注

    關注

    180

    文章

    7626

    瀏覽量

    139552
  • 智能臺燈
    +關注

    關注

    9

    文章

    85

    瀏覽量

    21415

原文標題:【畢業設計】基于51單片機的智能臺燈設計(任務書、原理圖、PCB、源代碼、參考論wen)

文章出處:【微信號:精通單片機與嵌入式,微信公眾號:精通單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于51單片機智能臺燈演示

    單片機臺燈51單片機智能臺燈
    jf_06209345
    發布于 :2022年07月23日 00:26:54

    哪位大神會仿真基于51單片機智能臺燈啊?????

    ????????????????????????????????????????
    發表于 03-22 22:20

    基于51單片機智能臺燈

    請問下有人用過熱釋電紅外傳感芯片biss0001嗎?我這樣連接一個光敏電阻有沒有問題?
    發表于 03-18 16:35

    一種基于51單片機智能臺燈設計

    系統由STC89C52單片機+L數碼管+光敏電阻+人體感應模塊+紅外接近傳感器模塊構成。具體功能:(1)亮度不夠且有人靠近時臺燈自動亮;(2)靠的太近會提醒坐姿不正(蜂鳴器);(3)附近無人時臺燈
    發表于 07-01 06:05

    如何實現基于51單片機智能臺燈的設計?

    如何實現基于51單片機智能臺燈的設計?
    發表于 10-21 08:19

    如何去實現一種基于51單片機智能臺燈設計

    一.硬件方案本文介紹了一種基于PWM調光的智能臺燈設計。把單片機技術和PWM調光技術結合起來實現臺燈光強的調節。即在不改變PWM方波周期的前提下,利用
    發表于 11-18 08:24

    基于51單片機的藍牙智能臺燈設計

    基于51單片機的藍牙智能臺燈目錄 基于51單片機的藍牙智能
    發表于 12-01 07:36

    基于51單片機智能臺燈

    電子發燒友網站提供《基于51單片機智能臺燈.zip》資料免費下載
    發表于 05-26 08:00 ?192次下載

    基于51單片機智能臺燈設計

    一.硬件方案本文介紹了一種基于PWM調光的智能臺燈設計。把單片機技術和PWM調光技術結合起來實現臺燈光強的調節。即在不改變PWM方波周期的前提下,利用
    發表于 11-12 10:51 ?46次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>智能</b><b class='flag-5'>臺燈</b>設計

    基于51單片機的藍牙臺燈

    基于51單片機的藍牙臺燈
    發表于 11-12 15:06 ?26次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的藍牙<b class='flag-5'>臺燈</b>

    50-基于51單片機智能臺燈設計

    系統由STC89C52單片機+L數碼管+光敏電阻+人體感應模塊+紅外接近傳感器模塊構成。具體功能:(1)亮度不夠且有人靠近時臺燈自動亮;(2)靠的太近會提醒坐姿不正(蜂鳴器);(3)附近無人時臺燈
    發表于 11-13 10:36 ?20次下載
    50-基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>智能</b><b class='flag-5'>臺燈</b>設計

    基于AT89C51單片機智能臺燈設計

    系統內使用AT89C51單片機作為主控,系統內分為普通模式和調節模式,上電之后就是普通模式,小燈會亮但是不能進行亮度調節,按下設置按鍵后亮度可調節的小燈亮,通過加減按鍵就能直接控制小燈的亮度。
    發表于 09-27 15:55 ?2658次閱讀

    基于51單片機智能臺燈帶坐姿矯正覆銅板設計技術手冊

    基于51單片機智能臺燈帶坐姿矯正覆銅板設計技術手冊
    發表于 09-18 10:52 ?4次下載

    基于51單片機智能臺燈洞洞板設計技術手冊

    基于51單片機智能臺燈洞洞板設計技術手冊
    發表于 09-18 11:06 ?31次下載

    基于51單片機智能臺燈覆銅板設計技術手冊

    基于51單片機智能臺燈覆銅板設計技術手冊
    發表于 09-18 10:49 ?15次下載
    主站蜘蛛池模板: 午夜久久福利 | 久久香蕉综合色一综合色88 | 午夜色综合 | 欧美性天天| 欧美精品久久天天躁 | 色妞综合 | 黑人边吃奶边扎下面激情视频 | 美女淫 | 国模最新私拍视频在线观看 | 色噜噜狠狠大色综合 | 亚洲国产美女精品久久 | 日韩三级视频在线观看 | 久久免费视频精品 | 噜噜噜色网| 久久www成人看片 | 天天色天天色 | 激激婷婷综合五 | 日日干天天草 | 日韩欧美中文字幕在线播放 | 久久六月丁香婷婷婷 | 91精品国产91久久久久久青草 | 69日本xxxxxxxx59| 免费国产在线视频 | 色噜噜狠狠色综合久 | 天天激情站 | 狠狠色狠狠色狠狠五月ady | 综合啪啪| 日韩一级在线视频 | 男女性接交无遮挡免费看视频 | 377p亚洲欧洲日本大胆色噜噜 | 国产三级日本三级日产三级66 | 国产馆精品推荐在线观看 | 美女扒开尿口给男人桶视频免费 | 黄字幕网| 四虎影院在线观看免费 | 日本大片黄色 | 天天插天天透 | 成人欧美精品一区二区不卡 | 国产精品久久久久久久久久影院 | 77米奇| 日本视频一区二区三区 |