色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

3天內(nèi)不再提示

基于51單片機的智能臺燈設(shè)計

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

一、設(shè)計目的

使用單片機設(shè)計智能臺燈對于提高學(xué)生的單片機應(yīng)用能力具有較強的意義。通過該設(shè)計,可以鞏固所學(xué)的單片機理論知識,培養(yǎng)學(xué)生硬件和軟件的設(shè)計能力,從而促進學(xué)生所掌握的理論知識向?qū)嵺`應(yīng)用的改變。

二、設(shè)計要求

(1)熟悉51單片機集成開發(fā)環(huán)境,運用C語言編寫工程文件; (2)熟練應(yīng)用所選用單片機的內(nèi)部結(jié)構(gòu)、資源,以及軟硬件調(diào)試設(shè)備的基本方法; (3)自行構(gòu)建基于單片機的最小系統(tǒng),完成相關(guān)硬件電路的設(shè)計實現(xiàn); (4)掌握智能臺燈的原理和實現(xiàn)方法。

三、設(shè)計內(nèi)容

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

(2) 自動模式下,可根據(jù)空間環(huán)境的光線強度大小,調(diào)節(jié)臺燈的亮度。并且

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

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

開題報告

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

方案設(shè)計

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

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

設(shè)計功能

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

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

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

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

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

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

原理圖設(shè)計


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

PCB設(shè)計


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;                // 全局計數(shù)變量
uchar gIndex;                  // 亮度變量,0是最暗,9是最亮,一共10檔
uint  gTime=0;                // 計時變量,用于計時多久沒檢測到有人






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


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


  if(dat1==dat2)      // 返回采集結(jié)果
    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)      // 只要當(dāng)前亮度不為最低才能減少亮度
    {
      gIndex--;        // 亮度降低一檔
      DelayMs(300);    // 延時0.3秒
    }
  }


  // 亮度增加
  if(Key3==0)          // 如果按鍵3被按下去
  {
    if(gIndex<9)      // 只要當(dāng)前亮度不為最高才能增加亮度
    {
      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;
}






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


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


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


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


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


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




/*********************************************************/
// 定時器0服務(wù)程序,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清零,進入新一輪的計數(shù)
    if(gIndex!=0)        // 如果說臺燈不是最暗的(熄滅)
    {
      Lamp=0;            // 則把臺燈點亮
    }
  }
  if(gCount==gIndex)    // 如果gCount計數(shù)到和gIndex一樣了
  {
    if(gIndex!=9)        // 如果說臺燈不是最亮的
    {
      Lamp=1;            // 則把臺燈熄滅
    }
  }
}

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

    關(guān)注

    6061

    文章

    44913

    瀏覽量

    646576
  • 51單片機
    +關(guān)注

    關(guān)注

    277

    文章

    5708

    瀏覽量

    126477
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140178
  • 智能臺燈
    +關(guān)注

    關(guān)注

    9

    文章

    86

    瀏覽量

    21492

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

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

收藏 2人收藏
  • jf_157076241
  • jf_751788481

評論

相關(guān)推薦
熱點推薦

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

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

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

????????????????????????????????????????
發(fā)表于 03-22 22:20

基于51單片機智能臺燈

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

一種基于51單片機智能臺燈設(shè)計

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

如何實現(xiàn)基于51單片機智能臺燈的設(shè)計?

如何實現(xiàn)基于51單片機智能臺燈的設(shè)計?
發(fā)表于 10-21 08:19

如何去實現(xiàn)一種基于51單片機智能臺燈設(shè)計

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

基于51單片機的藍牙智能臺燈設(shè)計

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

基于51單片機智能臺燈

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

基于51單片機智能臺燈設(shè)計

一.硬件方案本文介紹了一種基于PWM調(diào)光的智能臺燈設(shè)計。把單片機技術(shù)和PWM調(diào)光技術(shù)結(jié)合起來實現(xiàn)臺燈光強的調(diào)節(jié)。即在不改變PWM方波周期的前提下,利用
發(fā)表于 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>設(shè)計

基于51單片機的藍牙臺燈

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

50-基于51單片機智能臺燈設(shè)計

系統(tǒng)由STC89C52單片機+L數(shù)碼管+光敏電阻+人體感應(yīng)模塊+紅外接近傳感器模塊構(gòu)成。具體功能:(1)亮度不夠且有人靠近時臺燈自動亮;(2)靠的太近會提醒坐姿不正(蜂鳴器);(3)附近無人時臺燈
發(fā)表于 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>設(shè)計

基于AT89C51單片機智能臺燈設(shè)計

系統(tǒng)內(nèi)使用AT89C51單片機作為主控,系統(tǒng)內(nèi)分為普通模式和調(diào)節(jié)模式,上電之后就是普通模式,小燈會亮但是不能進行亮度調(diào)節(jié),按下設(shè)置按鍵后亮度可調(diào)節(jié)的小燈亮,通過加減按鍵就能直接控制小燈的亮度。
發(fā)表于 09-27 15:55 ?2790次閱讀

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

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

基于51單片機智能臺燈洞洞板設(shè)計技術(shù)手冊

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

基于51單片機智能臺燈覆銅板設(shè)計技術(shù)手冊

基于51單片機智能臺燈覆銅板設(shè)計技術(shù)手冊
發(fā)表于 09-18 10:49 ?15次下載
主站蜘蛛池模板: 一边喂奶一边做边爱 | 日韩一区二区三区四区区区 | 少女free大陆 | 亚洲日本乱码中文论理在线电影 | 浪小辉军警服务员VIDEOS | 亚洲免费无码中文在线 | 亚洲AV无码A片在线观看蜜桃 | 免费视频网站嗯啊轻点 | 色美妞论坛 | 国产AV电影区二区三区曰曰骚网 | 国产精品亚洲AV毛片一区二区三区 | 沈阳熟女露脸对白视频 | 在镜头里被CAO翻了H | 欧美高清video mr.sexo | 大胸美女裸身色诱网站 | 好看的电影网站亚洲一区 | 一区二区三区内射美女毛片 | 挺弄抽插喷射HH | 麻豆婷婷狠狠色18禁久久 | 无码人妻丰满熟妇区五十路久久 | 成人在线观看视频免费 | 一边捏奶头一边啪高潮会怎么样 | 破苞流血哭泣 magnet | 理论937| 亚洲精品喷白浆在线观看 | 丰满艳妇亲伦 | 快播黄色电影 | 怡春院国产精品视频 | a色毛片免费视频 | 亚洲精品AV无码喷奶水糖心 | 曼谷av女郎 | 国产品无码一区二区三区在线 | 久久re这里视频精品8 | porono日本xxx | 福利片福利一区二区三区 | 超碰在线线公开免费视频 | 在镜头里被CAO翻了H | 亚洲黄色在线观看 | 久久999视频 | 麻豆无人区乱码 | 99久久久精品免费观看国产 |

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學(xué)習(xí)
  • 獲取您個性化的科技前沿技術(shù)信息
  • 參加活動獲取豐厚的禮品