欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2118|回復: 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 單片機教程網

快速回復 返回頂部 返回列表