STM32毕业设计:单片机教室智能照明控制系统(含源码、硬件和论文)

文章目录

  • 0 前言
  • 1 主要功能
  • 2 硬件设计(原理图)
  • 3 核心软件设计
  • 4 实现效果
  • 5 最后

  • 0 前言

    🔥
    这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

    为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

    🚩 毕业设计 单片机教室智能照明控制系统(源码+硬件+论文)

    🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分
  • 🧿 项目分享:见文末!

    1 主要功能

  • (1)使用4个LED灯模拟教室的照明灯,在符合条件开启时,人数小于10人亮一个灯,10-20人亮二个灯,20-30人亮三个灯,大于30人则全亮四个灯。
  • (2)教室使用两个红外对管来检测是否有人进入并进行人数统计,人数可以统计到二位数99人,并实时将人数显示到液晶屏LCD上,液晶屏同时显示实时日期/时间/星期。
  • (3)利用光敏电阻检测教室的光线强弱;
  • (4)系统分自动/手动模式,可以通过按键切换模式,并有LED指示当前所在模式,在自动模式下,可以设定定时时间段,在定时时间段内,
  • 当教室有人(人数大于0)的情况下,如果光线暗弱则自动打开照明灯,照明灯点亮个数根据人数而定,不在定时时间段或者教室无人的情况下,关闭所有照明灯,另外在手动模式下,可以通过手动开关控制照明灯的亮灭,人数统计部分仍然生效。

    2 硬件设计(原理图)

    3 核心软件设计

    软件逻辑流程如下

    篇幅有限,不过多复述详细设计细节,详细的设计分享在论文中。。。

    关键代码

    //寄存器宏定义 
    #define WRITE_SECOND 0x80 
    #define WRITE_MINUTE 0x82 
    #define WRITE_HOUR 0x84 
    #define READ_SECOND 0x81 
    #define READ_MINUTE 0x83 
    #define READ_HOUR 0x85 
    #define WRITE_PROTECT 0x8E 
    //位寻址寄存器定义 
    sbit ACC_7 = ACC^7; //管脚定义 
    sbit SCLK = P3^5; // DS1302时钟信号 7脚 
    sbit DIO= P3^6; // DS1302数据信号   6脚 
    sbit CE = P3^7; // DS1302片选 5脚 
    //地址、数据发送子程序 
    void Write1302 ( unsigned char addr,dat ) 
    { 
    unsigned char i,temp; 
    CE=0; //CE引脚为低电平,数据传送中止 
    SCLK=0; //清零时钟总线 
    CE = 1; //CE引脚为高电平,逻辑控制有效 
    //发送地址 
    for ( i=8; i>0; i-- ) //循环8次移位 
    { 
    SCLK = 0; 
    temp = addr; 
    DIO = (bit)(temp&0x01); //每次传输低字节 
    addr >>= 1; //右移一位 
    SCLK = 1; 
     } 
    //发送数据 
    for ( i=8; i>0; i-- ) 
    { 
    SCLK = 0; 
    temp = dat; 
    DIO = (bit)(temp&0x01); 
    dat >>= 1; 
    SCLK = 1; 
    } 
    CE = 0; 
    } 
    //数据读取子程序 
    unsigned char Read1302 ( unsigned char addr ) 
    { 
    unsigned char i,temp,dat1,dat2; 
    CE=0; 
    SCLK=0; 
    CE = 1; 
    //发送地址 
    for ( i=8; i>0; i-- ) //循环8次移位 
    { 
    SCLK = 0; 
    temp = addr; 
    DIO = (bit)(temp&0x01); //每次传输低字节 
    addr >>= 1; //右移一位 
    SCLK = 1; 
    } 
    //读取数据 
    for ( i=8; i>0; i-- ) 
    { 
    ACC_7=DIO; 
    SCLK = 1; 
    ACC>>=1; 
    SCLK = 0; 
    } 
    CE=0; 
    dat1=ACC; 
    dat2=dat1/16; //数据进制转换 
    dat1=dat1%16; //十六进制转十进制 
    dat1=dat1+dat2*10; 
    return (dat1); 
    } 
    //初始化DS1302 
    void Initial(void) 
    { 
    Write1302 (WRITE_PROTECT,0X00); //禁止写保护 
    Write1302 (WRITE_SECOND,0x56); //秒位初始化 
    Write1302 (WRITE_MINUTE,0x34); //分钟初始化 
    Write1302 (WRITE_HOUR,0x12); //小时初始化 
    Write1302 (WRITE_PROTECT,0x80); //允许写保护 
    }
    

    4 实现效果

    5 最后

    包含内容

    🧿 项目分享:见文末!

    作者:m0_984093

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32毕业设计:单片机教室智能照明控制系统(含源码、硬件和论文)

    发表回复