久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 基于單片機教室人數實時檢測系統仿真及源程序 [打印本頁]

作者: bbxyliyang    時間: 2023-11-14 20:46
標題: 基于單片機教室人數實時檢測系統仿真及源程序
一、系統方案
1、本設計采用51單片機作為主控器。
2、紅外傳感器檢測進出人數,液晶1602顯示。
3、按鍵最多容納人數,煙霧報警。


二、硬件設計
原理圖如下:
三、單片機軟件設計
1、首先是系統初始化
void lcd_init()
{
        lcd_write_com(0x38);
        lcd_write_com(0x0c);
        lcd_write_com(0x06);
        lcd_write_com(0x01);

}
2、液晶顯示程序
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');
}
3、按鍵程序
void keyscan()
{


                if(K1==0)
                {
                    delayms(10);        //消除抖動
                        if(flag1==0)
                        {
                                flag1=1;
                                count++;
                                if(count>=100) count=99;
                        buf_3[0]=count/10+'0';
                        buf_3[1]=count%10+'0';
                        lcd_write_str(0x80+0x40+8,buf_3);

                        }
                }
                else flag1=0;


        if(K2==0)                //檢測按鍵K2(反轉)是否按下
        {
                delayms(10);        //消除抖動
                        if(flag2==0)
                        {
                                        flag2=1;
                                if(count>=1)
                        count--;
                        buf_3[0]=count/10+'0';
                        buf_3[1]=count%10+'0';
                        lcd_write_str(0x80+0x40+8,buf_3);

                        }

        }        
        else flag2=0;
if(K3==0)                //檢測按鍵K2(反轉)是否按下
        {
                delayms(10);        //消除抖動
                if(K3==0)
                {
                                if(count >= set)
                                        LED = 0;
                                else
                                {
                                        BUZ = 0;
                                        delayms(500);
                                        BUZ = 1;
                                        delayms(500);
                                        BUZ = 0;
                                        delayms(500);
                                        BUZ = 1;
                                        delayms(500);
                                }
                }
                while(!K3) //檢測按鍵是否松開
                {
                        delayms(3000);
                        BUZ = 1;        
                        LED = 1;
                }

        }        
  if(s1==0)                //檢測按鍵K2(反轉)是否按下
        {
                delayms(10);        //消除抖動
                if(s1==0)
                {
                                set++;
                          if(set>=100) set=99;
                                                buf_3[0]=set/10+'0';
                        buf_3[1]=set%10+'0';
                        lcd_write_str(0x80+8,buf_3);
                }
                while(!s1) //檢測按鍵是否松開
                {

                }

        }        
          if(s2==0)                //檢測按鍵K2(反轉)是否按下
        {
                delayms(10);        //消除抖動
                if(s2==0)
                {
                                if(set>=1) set--;
                                                buf_3[0]=set/10+'0';
                        buf_3[1]=set%10+'0';
                        lcd_write_str(0x80+8,buf_3);
                }
                while(!s2) //檢測按鍵是否松開
                {

                }

        }        
}

4、核心算法程序
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函數功能:主函數
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
void main(void)
{
        uint i;
        count = 0;
  TMOD = 0x01;         //T0 16位工作方式
  IR_1=1;                                   //發射端口常態為高電平

        lcd_init();
        lcd_write_str(0x80,buf_1);
        lcd_write_str(0x80+0x40,buf_2);
        lcd_write_str(0x80+0x40+8,"00");
  while(1)
  {
   keyscan();
                if(yw==0) BUZ=0;
                else BUZ=1;
  }
}

四、 proteus仿真設計
Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 男女精品久久 | 色性av | 91久久精品一区二区二区 | 米奇狠狠鲁 | 国产在线观看一区二区 | 欧美日韩国产一区二区三区 | 黄网站在线播放 | 国产精品夜夜夜一区二区三区尤 | 日韩一区二区三区四区五区六区 | 亚洲精色 | 国产91久久精品一区二区 | 亚洲成人第一页 | 国产高清自拍视频在线观看 | 欧美一级久久精品 | 97精品超碰一区二区三区 | 一区二区视频在线 | 欧美日韩国产一区二区三区 | 色综合色综合色综合 | 天堂网avav| 久久成人一区 | 日日操视频 | 国产高清在线 | 亚洲午夜精品一区二区三区他趣 | 国产精品高 | 91原创视频 | 中文字幕一区二区在线观看 | 黄色在线观看 | 亚洲午夜视频在线观看 | 成人国产精品一级毛片视频毛片 | 免费人成在线观看网站 | 欧美另类视频在线 | 国产精品久久久久久久久久久久冷 | 噜噜噜噜狠狠狠7777视频 | 超碰在线播 | 成人激情视频免费观看 | 亚洲人成在线播放 | 亚洲一区二区av | 影音先锋中文字幕在线观看 | 日韩精品一区二 | 日韩最新网址 | 91免费高清 |