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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3079|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)設(shè)計(jì)的免超載長途車自動(dòng)控制系統(tǒng)源程序+Proteus仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
性能指標(biāo):
     自動(dòng)檢測車門外是否有人,有人就自動(dòng)打開車門,延時(shí)10s;
     記錄從前門上車和后門下車的人數(shù),自動(dòng)判斷是否超重,超載人數(shù)可自行設(shè)置;
     乘客可通過獨(dú)立按鍵來發(fā)出下車指示,從而司機(jī)打開后門記錄人數(shù)減一;
     當(dāng)車內(nèi)人員未滿綠色顯示燈亮,如果有超載情況出現(xiàn)時(shí),車內(nèi)報(bào)警器自動(dòng)報(bào)警,同時(shí)車門紅色燈亮;
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit buz=P2^0;//超載時(shí)蜂鳴器報(bào)警
  5. sbit relay=P2^1;//超載時(shí)關(guān)閉客車發(fā)動(dòng)機(jī)
  6. sbit LED1=P2^2;//超載時(shí)紅燈警報(bào)
  7. sbit LED2=P2^3;//正常人數(shù)時(shí)綠燈指示
  8. sbit LED3=P2^4;//有人要下車時(shí)黃燈指示
  9. sbit SET=P2^5;//設(shè)置超載人數(shù)
  10. sbit getoff=P2^6;//乘客下車指示
  11. sbit geton=P2^7;//乘客上車檢測        
  12. sbit up=P3^5;//增加超載人數(shù)上限
  13. bit set_st;  //狀態(tài)標(biāo)志
  14. sbit P36=P3^6;
  15. sbit P37=P3^7;//定義數(shù)碼管引腳
  16. uchar max=5;//定義超載人數(shù)
  17. char count;//定義車內(nèi)人數(shù)
  18. uchar count1,count2,n1,n2;
  19. const uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //顯示0~9

  20. /*****延時(shí)子程序*****/
  21. void delay(uint num)
  22. {
  23. while( --num );
  24. }

  25. /*****外部中斷0*****/
  26. void int0() interrupt 0
  27. {
  28.   count++; //上車人數(shù)記錄
  29.   if (count>99)
  30.                 count=0;
  31. }

  32. /*****外部中斷1*****/
  33. void int1() interrupt 2
  34. {
  35.   count--; //下車人數(shù)記錄
  36.   if (count<0)
  37.                 count=0;
  38. }

  39. /*****設(shè)置超載人數(shù)*****/
  40. void set()
  41. {
  42. if(SET==0)
  43.   {
  44.    delay(200);
  45.          TR1 = 1;             //打開定時(shí)器1
  46.          set_st=1;
  47.   }
  48.         else if(SET==1)
  49.                 set_st=0;        
  50. }

  51. /*****顯示人數(shù)子程序*****/
  52. void Disp_num()
  53. {               
  54.            count2=count/10;                            //十位
  55.                 count1=count%10;                                        //個(gè)位
  56.                
  57.     P1=tab[count1];                                                //個(gè)位顯示
  58.     P36=1;
  59.     delay(50);                  
  60.     P36=0;
  61.                
  62.     P1=tab[count2];                                                //十位顯示
  63.     P37=1;
  64.     delay(50);
  65.     P37=0;
  66.         
  67. }

  68. /*****顯示超載人數(shù)子程序*****/
  69. void Disp_alarm()
  70. {
  71.           n2=max/10;                            //十位
  72.                 n1=max%10;                                        //個(gè)位
  73.                
  74.     P1=tab[n1];                                                //個(gè)位顯示
  75.     P36=1;
  76.     delay(50);                  
  77.     P36=0;
  78.                
  79.     P1=tab[n2];                                                //十位顯示
  80.     P37=1;
  81.     delay(50);
  82.     P37=0;
  83. }        

  84. /*****定時(shí)器0*****/
  85. void timer0isr(void) interrupt 1

  86. {
  87.         uchar i;
  88.         TH0=(65536-50000)/256;
  89.         TL0=(65536-50000)%256;//定時(shí)50ms
  90.         i++;
  91.         if(i==200)  //延時(shí)10s
  92.         {
  93.                 P0=0x03; //電機(jī)反轉(zhuǎn),關(guān)閉車門
  94.                 i=0;
  95.         }
  96. }

  97. /*****定時(shí)器1*****/
  98. void timer1isr(void) interrupt 3
  99. {
  100.         max++;
  101.   if (max>99)
  102.                 max=0;
  103. }        
  104.         
  105. void main(void)
  106. {
  107.         
  108.         IT0=1;           
  109.   IT1=1;                      //設(shè)置邊沿觸發(fā)方式
  110.   EX0=1;                      //打開 INT0 的中斷允許。
  111.   EX1=1;                      //打開 INT1 的中斷允許。
  112.   EA=1;                       //打開總中斷
  113.         
  114.         TMOD = 0x61;    //設(shè)定T/C0工作在計(jì)數(shù)器
  115.         TH1 = 256-1;
  116.         TL1 = 256-1;         //裝載計(jì)數(shù)初值
  117.         ET1 = 1;             //開T/C0中斷
  118.         TH0=(65536-50000)/256;
  119.         TL0=(65536-50000)%256;//定時(shí)50ms
  120.         ET0 = 1;             //開T/C0中斷

  121.         buz=0;
  122.         relay=0;
  123.         LED1=1;
  124.         LED2=1;
  125.         LED3=1;
  126.   P0=0x03;             //初始化
  127.         
  128.         while(1)
  129.   {
  130.         
  131.                 if(geton==0)//乘客上車檢測
  132.                 {
  133.                         P0=0x06; //電機(jī)正轉(zhuǎn),打開車門
  134.                   TR0=1;//打開定時(shí)器0
  135.           }
  136.                
  137.                 if(count>max)//超載
  138.                   {
  139.         relay=1;//超載時(shí)關(guān)閉客車發(fā)動(dòng)機(jī)
  140.                           LED1=0;//超載時(shí)紅燈警報(bào)
  141.                           LED2=1;//超載時(shí)關(guān)閉綠燈
  142.                                 
  143.                                 
  144.                                 buz=~buz;//超載蜂鳴器報(bào)警
  145.                                 delay(50);
  146.                           
  147.                         }
  148.                
  149.                 else if(count<=max)//人數(shù)正常
  150.                   {
  151.                           buz=0;//正常人數(shù)時(shí)關(guān)閉蜂鳴器
  152.                           relay=0;//正常人數(shù)時(shí)打開客車發(fā)動(dòng)機(jī)
  153.                           LED1=1;//正常人數(shù)時(shí)關(guān)閉紅燈
  154.                           LED2=0;//正常人數(shù)時(shí)綠燈指示
  155.                         }
  156.                                        
  157.                 if(getoff==0)//乘客下車檢測
  158.                   LED3=0;        //有人要下車時(shí)黃燈指示
  159.                                        
  160.                 else if(!INT1)//檢測乘客是否已經(jīng)下車
  161.                         LED3=1;//乘客下車后關(guān)閉黃燈
  162.                
  163.            set();//設(shè)置超載人數(shù)
  164.          
  165.                 if(set_st==0) //顯示車內(nèi)人數(shù)
  166.                 {
  167.                   Disp_num();
  168.                 }
  169.                
  170.                 if(set_st==1) //顯示超載人數(shù)上限值
  171.      {
  172.                    Disp_alarm();
  173.      }
  174.    }
  175. }
復(fù)制代碼

所有資料51hei提供下載:
51hei設(shè)計(jì).zip (164.87 KB, 下載次數(shù): 49)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本一区二区视频 | 久草热在线 | 欧美影院 | 日韩精品一区二区三区在线观看 | 欧美成人精品 | 亚洲综合色丁香婷婷六月图片 | 岛国在线免费观看 | 午夜激情免费 | 中文字幕视频在线看5 | 国产精品1 | 欧美性成人 | 国产成人精品一区二区三区视频 | 欧美精品一区在线发布 | 国产精品久久精品 | 91精品国产色综合久久不卡98口 | 久久y| 亚洲免费一区 | 99精品国产一区二区青青牛奶 | 人人叉 | av免费看在线 | 日韩精品在线播放 | 成人h视频在线 | 不卡的av在线 | 久久综合九九 | 特级生活片 | 狠狠狠| 欧美一级片在线看 | 久久一视频 | 视频一区中文字幕 | 国产在线一级片 | 色爱综合网 | 天天操天天射天天舔 | 亚洲视频免费在线观看 | 日本成人中文字幕 | 日韩欧美三区 | 欧美精品二区 | 国产成人久久久 | 日韩在线资源 | hsck成人网| 国产精品观看 | 午夜久久久久久久久久一区二区 |