找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1668|回复: 0
打印 上一主题 下一主题
收起左侧

教室人数实时检测系统-51单片机版程序

[复制链接]
跳转到指定楼层
楼主
ID:861850 发表于 2020-12-20 19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4  软件设计
本设计主要是对人员进出检测所做出一定报警以及提示的软件设置,在应对不同环境下实现不同的工作状态,以实现我们所需要的功能,主要是通过按键模拟人员的经过,然后再用液晶显示出来。
4.1 主程序设计
主程序软件流程图如下所示:主程序中main函数主要是引脚的初始化,给单片机引脚初始化,初始化LCD1602,初始化红外对管,通过对LCD1602赋值,采集进入教室的人数,显示在LCD1602上面进出人数我们采用按键的形式,检测完毕后按下确认键确认是否在我们需要的人数范围内,当少于我们需要的人数时,蜂鸣器会报警三秒,反之,则会LED亮三秒。

图 4.1  主程序流程图

4.2 按键程序设计
我们首先对单片机进行初始化,按键初始化以及显示初始化,给显示赋初值。进入按键判断阶段,当检测按下进入键时人数加一,当按下走出键时人数减一。
图4.2 按键程序流程图


4.3 LCD显示程序
初始化LCD1602,刚开始第一行显示“T_count:00  ”,第二行显示“C_count:00  ”。后面读取实时的人数后填入第一行的数值处,替代原先位置,第二行也是同样的操作。
图4.3 LCD显示程序流程图

#include<1602.h>
/****
*******1602检测忙函数
*****/
void check_busy()
{  
        P0=0xff;
        do
        {
                rs=0;
                wr=1;
                en=0;
                en=1;
        } while(busy==1);
        en=0;
}
/****
*******1602写数据忙函数
*****/
void lcd_write_date(uchar date)
{
        check_busy();
        en=0;
        LCD_PORT=date;
        rs=1;
        wr=0;
        en=1;
        en=0;
}
/****
*******1602写命令函数
*****/
void lcd_write_com(uchar com)
{
        check_busy();
        en=0;
        LCD_PORT=com;
        rs=0;
        wr=0;
        en=1;
        en=0;
}
/****
*******1602写温度函数
*****/
void lcd_wendu(uchar add,uchar date)
{
        uchar shi,ge;
        shi=date/10;
        ge=date%10;
        lcd_write_com(add);
        lcd_write_date(shi+'0');
        lcd_write_date(ge+'0');
}
/****
*******1602写字符串函数
*****/
void lcd_write_str(uchar add,uchar *dat)
{
        lcd_write_com(add);
        while(*dat != '\0')
        {
                lcd_write_date(*dat++);
        
        }
}
/****
*******1602写时间函数
*****/
void lcd_write_time(uchar add,uchar date)
{
        uchar shi,ge;
        shi=date/16;
        ge=date%16;
        lcd_write_com(add);
        lcd_write_date(shi+'0');
        lcd_write_date(ge+'0');

}
/****
*******1602初始化函数
*****/
void lcd_init()
{
        lcd_write_com(0x38);
        lcd_write_com(0x0c);
        lcd_write_com(0x06);
        lcd_write_com(0x01);

}

//////////////////////////////////////////////////////////////////

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表