加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于51單片機(jī)教室燈光全自動控制設(shè)計( proteus仿真+程序+設(shè)計報告+原理圖+講解視頻)

11/15 09:49
2506
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
    • 1. 主要功能:
    • 2. 講解視頻:
    • 3. 仿真設(shè)計
    • 4. 程序代碼
    • 5. 設(shè)計報告
    • 6. 原理圖
    • 7. 設(shè)計資料內(nèi)容清單&&下載鏈接
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計編號:S0075

1. 主要功能:

基于51單片機(jī)的教室燈光自動控制系統(tǒng)

1、數(shù)碼管顯示當(dāng)前工作強(qiáng)度,光照閾值和教室人數(shù);

2、設(shè)定值可以通過按鍵調(diào)整;

3、通過按鍵模擬紅外對射傳感器統(tǒng)計進(jìn)出人數(shù);

4、教室內(nèi)是否開燈取決于光照強(qiáng)度,光照強(qiáng)度低于閾值(教室燈光暗)的時候開燈;

5、教室內(nèi)開燈的數(shù)量根據(jù)教室內(nèi)人數(shù)的多少設(shè)定,人數(shù)越多,開燈數(shù)量越多;

需注意仿真中51單片機(jī)芯片是兼容的,AT89C51,AT89C52是51單片機(jī)的具體型號,內(nèi)核是一樣的。相同的原理圖里,無論stc還是at都一樣,引腳功能都是一樣的,程序是兼容的,芯片可以替換為STC89C52/STC89C51/AT89C52/AT89C51等51單片機(jī)芯片。

img

以下為本設(shè)計資料展示圖:

2. 講解視頻:

講解視頻包含仿真運(yùn)行講解和代碼講解


基于51單片機(jī)教室燈光控制proteus仿真+程序+設(shè)計報告+原理圖+講解視頻

3. 仿真設(shè)計

打開仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開始仿真。開始仿真后數(shù)碼管顯示當(dāng)前光照強(qiáng)度,光照閾值,教室人數(shù),光照強(qiáng)度低于閾值即教室內(nèi)燈光暗,滿足開燈條件。此時教室人數(shù)0,即教室沒有人,所以不需要開燈。

img

通過點擊按鍵進(jìn)教室完成教室人數(shù)的設(shè)置,從1開始,每多十個人多開一盞燈,最多開8盞燈。

img

如果光照強(qiáng)度大于閾值,說明自然光足夠亮,不需要開燈。

img

4. 程序代碼

使用keil4或者keil5編譯,代碼有注釋,可以結(jié)合視頻理解代碼含義。

mian 函數(shù)

#include "reg51.h"
#include "ADC0832.h"
sbit smg1=P2^0;//數(shù)碼管引腳
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit k1=P1^0;//按鈕
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
unsigned char time=0;
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
unsigned char num=0;//人數(shù)
unsigned char light=0,limit=20;//光照
unsigned char m1=0,m2=0,m3=0,m4=0;
void delay(unsigned int i)//延時
{
	while(i--);
}
void disp() 
{
    // 根據(jù)光照強(qiáng)度light的十位數(shù),通過數(shù)組smgduan獲取對應(yīng)的顯示數(shù)據(jù),并將結(jié)果顯示在P0口上(假設(shè)用于連接數(shù)碼管的段選)
    P0 = smgduan[light / 10]; 
    // 清除數(shù)碼管第一位(smg1)的位選信號,使其不顯示任何數(shù)字
    smg1 = 0;
    // 延時100ms,以便觀察數(shù)碼管的顯示效果
    delay(100);
    // 設(shè)置數(shù)碼管第一位(smg1)的位選信號為1,使顯示數(shù)據(jù)生效
    smg1 = 1;
    // 根據(jù)光照強(qiáng)度light的個位數(shù),通過數(shù)組smgduan獲取對應(yīng)的顯示數(shù)據(jù),并更新到P0口上
    P0 = smgduan[light % 10];
    // 清除數(shù)碼管第二位(smg2)的位選信號
    smg2 = 0;
    // 延遲100ms
    delay(100);
    // 設(shè)置數(shù)碼管第二位(smg2)的位選信號為1,使顯示數(shù)據(jù)生效
    smg2 = 1;

    // 同理,根據(jù)光照閥值limit的十位和個位數(shù),分別顯示到數(shù)碼管的第三位和第四位
    P0 = smgduan[limit / 10];
    smg3 = 0;
    delay(100);
    smg3 = 1;
    P0 = smgduan[limit % 10];
    smg4 = 0;
    delay(100);
    smg4 = 1;

    // 根據(jù)人數(shù)num的十位和個位數(shù),分別顯示到數(shù)碼管的第五位和第六位
    P0 = smgduan[num / 10];
    smg5 = 0;
    delay(100);
    smg5 = 1;
    P0 = smgduan[num % 10];
    smg6 = 0;
    delay(100);
    smg6 = 1;
}
// 主函數(shù)定義
void main() 
{
    // 設(shè)置定時器0的工作模式為模式1(16位定時器/計數(shù)器TMOD |= 0X01;
    // 設(shè)置定時器0的高8位初始值,這里設(shè)置的是一個特定的計數(shù)值(具體取決于晶振頻率和系統(tǒng)配置)
    TH0 = 0X3C;
    // 設(shè)置定時器0的低8位初始值,與TH0共同決定定時器的初值
    TL0 = 0XB0; 
    // 打開定時器0中斷允許位,使能定時器0中斷功能
    ET0 = 1;
    // 打開總中斷,允許單片機(jī)接收并處理所有中斷請求
    EA = 1;
    // 啟動定時器0
    TR0 = 1;
    // 進(jìn)入無限循環(huán)
    while(1)
    {
        // 調(diào)用disp()函數(shù),執(zhí)行顯示操作(如可能的話,可能是顯示當(dāng)前光照閾值或人數(shù)等信息)
        disp();

        // 檢測按鍵k1狀態(tài),并在m1標(biāo)記為0時調(diào)整光照閾值limit(增1)
        if(!k1 && (m1 == 0)) 
        {
            if(limit < 100) // 如果當(dāng)前閾值小于最大值100
                limit++; // 閾值加1
            m1 = 1; // 標(biāo)記m1為已操作,防止連續(xù)觸發(fā)
        }
        // 當(dāng)按鍵k1釋放時,重置m1標(biāo)記
        if(k1)
            m1 = 0;

        // 類似地檢測按鍵k2狀態(tài)并減少光照閾值limit(減1)
        if(!k2 && (m2 == 0)) 
        {
            if(limit > 0) // 如果當(dāng)前閾值大于最小值0
                limit--; // 閾值減1
            m2 = 1; // 標(biāo)記m2為已操作
        }
        // 當(dāng)按鍵k2釋放時,重置m2標(biāo)記
        if(k2)
            m2 = 0;

        // 檢測按鍵k3表示有人進(jìn)入教室,當(dāng)m3標(biāo)記為0時增加教室內(nèi)人數(shù)num(增1)
        if(!k3 && (m3 == 0)) 
        {
            if(num < 100) // 如果當(dāng)前人數(shù)小于最大值100
                num++; // 人數(shù)加1
            m3 = 1; // 標(biāo)記m3為已操作
        }
        // 當(dāng)按鍵k3釋放時,重置m3標(biāo)記
        if(k3)
            m3 = 0;

        // 檢測按鍵k4表示有人離開教室,當(dāng)m4標(biāo)記為0時減少教室內(nèi)人數(shù)num(減1)
        if(!k4 && (m4 == 0)) 
        {
            if(num > 0) // 如果當(dāng)前人數(shù)大于最小值0
                num--; // 人數(shù)減1
            m4 = 1; // 標(biāo)記m4為已操作
        }
        // 當(dāng)按鍵k4釋放時,重置m4標(biāo)記
        if(k4)
            m4 = 0;

        // 判斷當(dāng)前光照強(qiáng)度是否低于設(shè)定閾值limit
        if(light < limit)
        {
            // 如果教室內(nèi)有人(即num>0),根據(jù)人數(shù)開啟相應(yīng)數(shù)量的燈光
            if(num > 0)
                P3 = 0xff << (num / 10) + 1; // 假設(shè)每10人開一組燈,不足10人也開一組
            else
                P3 = 0xff; // 若教室內(nèi)無人,則全開燈光
        }
        // 光照強(qiáng)度高于或等于閾值時,關(guān)閉所有燈光
        else
        {
            P3 = 0xff;
        }
    }
}

// 定義一個名為Timer0的中斷服務(wù)程序,該中斷由定時器0溢出觸發(fā)(中斷號為1)
void Timer0() interrupt 1
{
    // 判斷計數(shù)變量time是否小于10
    if(time < 10)
    {
        // 如果time小于10,則將其加1,表示時間累計增加
        time++;
    }
    else
    {
        // 如果time不小于10(即等于或大于10),則執(zhí)行以下操作:
        // 將time重置為0,重新開始計時周期
        time = 0;
        
        // 調(diào)用ADC函數(shù)進(jìn)行光照強(qiáng)度檢測,并將返回值賦給light變量
        light = ADC();
    }
    
    // 設(shè)置定時器0的高8位和低8位初始值,以維持特定的定時周期
    // 假設(shè)此處設(shè)置的定時器初值使得定時器0每10個單位時間產(chǎn)生一次溢出中斷
    TH0 = 0X3C; // 設(shè)置TH0為0X3C(十六進(jìn)制)對應(yīng)到二進(jìn)制并轉(zhuǎn)換為對應(yīng)的機(jī)器周期數(shù)
    TL0 = 0XB0; // 設(shè)置TL0為0XB0(十六進(jìn)制),與TH0共同決定定時器0的定時周期
} 

5. 設(shè)計報告

7608字設(shè)計報告,內(nèi)容包括硬件設(shè)計、軟件設(shè)計、軟硬件框圖、調(diào)試、結(jié)論等

img

本課程設(shè)計項目正是順應(yīng)這一時代潮流,選擇了51系列單片機(jī)作為核心控制器元件,以其穩(wěn)定可靠、易于編程的特點來構(gòu)建一套適用于教室環(huán)境的燈光自動控制系統(tǒng)。該系統(tǒng)旨在模擬真實應(yīng)用場景中的光照條件變化和人員流動情況,實現(xiàn)精準(zhǔn)的光線感應(yīng)控制機(jī)制。具體來說,通過集成光敏傳感器實時監(jiān)測教室內(nèi)的自然光線強(qiáng)度,并設(shè)定一個可調(diào)閾值,當(dāng)實際光線低于此閾值時,系統(tǒng)將自動開啟照明設(shè)備,確保室內(nèi)有足夠的光線供師生進(jìn)行教學(xué)活動。

此外,為了進(jìn)一步提高系統(tǒng)的智能性和實用性,本設(shè)計還特別加入了人數(shù)統(tǒng)計功能,通過按鍵模擬紅外對射傳感器的工作原理,以簡化的操作方式記錄進(jìn)出教室的人數(shù)變化。這種創(chuàng)新性的設(shè)計不僅有助于精確掌握教室內(nèi)學(xué)生數(shù)量,更為關(guān)鍵的是,能夠基于人數(shù)動態(tài)調(diào)整教室內(nèi)燈光的數(shù)量和分布,從而實現(xiàn)按需照明,避免不必要的能源浪費(fèi)。

6. 原理圖

原理圖使用AD繪制,可供實物參考,仿真不同于實物,需要調(diào)試經(jīng)驗才能做出來。

img

Proteus仿真和實物作品的區(qū)別:

1.運(yùn)行環(huán)境:Proteus仿真是在計算機(jī)上運(yùn)行的,而實物則是在硬件電路板上運(yùn)行。

2.調(diào)試方式:在Proteus仿真中,可以方便地進(jìn)行單步調(diào)試和觀察變量值的變化,而在實物中則需要通過調(diào)試器或者串口輸出等方式進(jìn)行調(diào)試。

電路連接方式:在Proteus仿真中,可以通過軟件設(shè)置進(jìn)行電路連接的修改,而在實物中則需要通過硬件電路板和連接線進(jìn)行修改。

3.運(yùn)行速度:Proteus仿真通常比實物運(yùn)行速度快,因為仿真是基于計算機(jī)運(yùn)行的,而實物則需要考慮電路板上的物理限制和器件的響應(yīng)時間等因素。

4.功能實現(xiàn):在Proteus仿真中,可以通過軟件設(shè)置實現(xiàn)不同的功能,而在實物中則需要根據(jù)電路設(shè)計和器件的性能進(jìn)行實現(xiàn)。

7. 設(shè)計資料內(nèi)容清單&&下載鏈接

資料設(shè)計資料包括仿真,程序代碼、講解視頻、功能要求、設(shè)計報告、軟硬件設(shè)計框圖等。

0、常見使用問題及解決方法–必讀?。。?!

1、程序

2、proteus仿真

3、功能要求

4、軟硬件流程圖

5、開題報告

6、設(shè)計報告

7、原理圖

8、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機(jī)仿真設(shè)計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機(jī)學(xué)習(xí)資料

相關(guān)數(shù)據(jù)手冊

答辯技巧

設(shè)計報告常用描述

鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計.url

img

資料下載鏈接(可點擊):

https://docs.qq.com/doc/DS3ZEVW13cXBzT0ZS

  • 設(shè)計資料獲取聯(lián)系方式.doc

相關(guān)推薦

電子產(chǎn)業(yè)圖譜