加入星計劃,您可以享受以下權益:

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

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

11/15 09:49
2521
服務支持:
技術交流群

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

虛擬商品不可退

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

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

仿真圖proteus7.8及以上

程序編譯器:keil 4/keil 5

編程語言:C語言

設計編號:S0075

1. 主要功能:

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

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

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

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

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

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

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

img

以下為本設計資料展示圖:

2. 講解視頻:

講解視頻包含仿真運行講解和代碼講解


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

3. 仿真設計

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

img

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

img

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

img

4. 程序代碼

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

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ù)光照強度light的十位數(shù),通過數(shù)組smgduan獲取對應的顯示數(shù)據(jù),并將結果顯示在P0口上(假設用于連接數(shù)碼管的段選)
    P0 = smgduan[light / 10]; 
    // 清除數(shù)碼管第一位(smg1)的位選信號,使其不顯示任何數(shù)字
    smg1 = 0;
    // 延時100ms,以便觀察數(shù)碼管的顯示效果
    delay(100);
    // 設置數(shù)碼管第一位(smg1)的位選信號為1,使顯示數(shù)據(jù)生效
    smg1 = 1;
    // 根據(jù)光照強度light的個位數(shù),通過數(shù)組smgduan獲取對應的顯示數(shù)據(jù),并更新到P0口上
    P0 = smgduan[light % 10];
    // 清除數(shù)碼管第二位(smg2)的位選信號
    smg2 = 0;
    // 延遲100ms
    delay(100);
    // 設置數(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() 
{
    // 設置定時器0的工作模式為模式1(16位定時器/計數(shù)器TMOD |= 0X01;
    // 設置定時器0的高8位初始值,這里設置的是一個特定的計數(shù)值(具體取決于晶振頻率和系統(tǒng)配置)
    TH0 = 0X3C;
    // 設置定時器0的低8位初始值,與TH0共同決定定時器的初值
    TL0 = 0XB0; 
    // 打開定時器0中斷允許位,使能定時器0中斷功能
    ET0 = 1;
    // 打開總中斷,允許單片機接收并處理所有中斷請求
    EA = 1;
    // 啟動定時器0
    TR0 = 1;
    // 進入無限循環(huán)
    while(1)
    {
        // 調(diào)用disp()函數(shù),執(zhí)行顯示操作(如可能的話,可能是顯示當前光照閾值或人數(shù)等信息)
        disp();

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

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

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

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

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

// 定義一個名為Timer0的中斷服務程序,該中斷由定時器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ù)進行光照強度檢測,并將返回值賦給light變量
        light = ADC();
    }
    
    // 設置定時器0的高8位和低8位初始值,以維持特定的定時周期
    // 假設此處設置的定時器初值使得定時器0每10個單位時間產(chǎn)生一次溢出中斷
    TH0 = 0X3C; // 設置TH0為0X3C(十六進制)對應到二進制并轉(zhuǎn)換為對應的機器周期數(shù)
    TL0 = 0XB0; // 設置TL0為0XB0(十六進制),與TH0共同決定定時器0的定時周期
} 

5. 設計報告

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

img

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

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

6. 原理圖

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

img

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

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

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

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

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

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

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

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

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

1、程序

2、proteus仿真

3、功能要求

4、軟硬件流程圖

5、開題報告

6、設計報告

7、原理圖

8、講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機仿真設計教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機學習資料

相關數(shù)據(jù)手冊

答辯技巧

設計報告常用描述

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

img

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

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

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

相關推薦

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