找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

19052耐壓器單片機(jī)自動測試項目

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:206620 發(fā)表于 2017-6-1 11:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本例通過c51單片機(jī)實現(xiàn)自動測試耐壓的功能,主要器件單片機(jī)最小電路、三極管、電阻、繼電器----行程開關(guān)、光電開關(guān),LED燈+蜂鳴器。

原理圖占無,稍后上傳。


單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit gdian=P0^0;                                                          // 光電開關(guān)                                                  2
  5. sbit led_H=P0^2;                                                          // 黃燈                                                             3
  6. sbit led_G=P0^6;                                                          // 綠燈                                                            5
  7. sbit led_R=P2^7;                                                          // 紅燈 + 蜂鳴器                                         9
  8. sbit kais=P2^4;                                                                  // 啟動                                                          4
  9. sbit fangx=P2^0;                                                          // 放行                                                        “7” 或 “3”

  10. sbit xingc=P1^0;                                  // 行程開關(guān)                                                 1
  11. sbit OK=P1^4;                                                                    //  PASS                                                         6
  12. sbit stop0=P1^7;                                                          // 手動停止
  13. sbit stop1=P3^3;                                                          // 停止 (外中斷1)                                 8
  14. sbit zd=P3^2;                                                                  // 外中斷 0(檢測控制手動停止)

  15. uint num;
  16. uchar repeat,temp;

  17. /*********延時子函數(shù)************/
  18. void delay(uint x )
  19. {
  20.         uint i,j;
  21.         for(i=x;i>0;i--)
  22.                 for(j=110;j>0;j--);
  23. }

  24. /*********放行子函數(shù)************/
  25. void flag()
  26. {
  27.         delay(500);
  28.         fangx=1;
  29.         delay(3000);
  30.         fangx=0;
  31. }


  32. /*********初始化子函數(shù)************/
  33. void init()
  34. {
  35.         TMOD=0x11;
  36.         TH0=(65536-45872)/256;
  37.         TL0=(65536-45872)%256;
  38.         TH1=(65536-45872)/256;                                                  
  39.         TL1=(65536-45872)%256;
  40.         EA=1;                                                                                                             //        開總中斷
  41.         ET0=1;                                                                                                                  //        定時器 0 允許
  42.         ET1=1;                                                                                                            //        定時器 1 允許
  43.         EX0=1;                                                                                                                   //        外部中斷 0 允許
  44.         EX1=1;                                                                                                                 //        外部中斷 1 允許

  45.         led_H=0;
  46.         led_G=0;                                                                                                           //          黃燈、綠燈、紅燈關(guān)閉
  47.         led_R=0;                                                                                                        
  48.         kais=0;                                                                                                                  
  49.         fangx=0;                                                                                                        //         放行賦值關(guān)閉
  50.         stop0=0;                                                                                                        //         啟動耐壓關(guān)閉
  51.         repeat=0;                                                                                                        //         啟動耐壓后設(shè)置的 標(biāo)志位清除
  52. }         

  53. /********停止子函數(shù)********/
  54. void gny()
  55. {
  56.          stop0=1;
  57.          delay(3000);
  58.          stop0=0;
  59. }


  60. /************************************鍵盤掃描***********************************************************************************/

  61. void keyscan()
  62. {

  63.                 /***************機(jī)器到位檢測**********************/
  64.         if(xingc==0)
  65.         {
  66.                 delay(10);
  67.                 if(xingc==0)                                                                                  // 檢測行程開關(guān),確認(rèn)機(jī)器到位
  68.                 {
  69.                         if(gdian!=0)
  70.                         {
  71.                                 delay(10);
  72.                                 if(gdian!=0)                                                                  //  無機(jī)器
  73.                                 {
  74.                                         flag();                                                                          //  開啟  放行子函數(shù)
  75.                                         stop0=0;                                                
  76.                                 }
  77.                         }

  78.          /********設(shè)置啟動后標(biāo)志位檢測***********/
  79.                 if(repeat!=1)
  80.                 {
  81.                         delay(10);
  82.                         if(repeat!=1)
  83.                         {
  84.                         
  85.       /**************光電開關(guān) 檢測是否有機(jī)器**********************/        
  86.                                                                  
  87.                                         if(gdian==0)                                                               
  88.                                         {
  89.                                                 delay(10);
  90.                                                 if(gdian==0)                                                                  // 檢測光電開關(guān),確認(rèn)有機(jī)器
  91.                                                 {
  92.                                                         led_H=1;                                                                  // 開啟工作指示燈
  93.                                                         kais=1;                                                                          // 啟動耐壓儀
  94.                                                         TR0=1;                                                                             // 啟動定時器 0 (超時無反應(yīng)檢測)

  95.                                                         repeat=1;         // 耐壓啟動后標(biāo)志位,屏蔽掃描時一直使        耐壓儀器開啟,只有復(fù)位初始化將標(biāo)志清零才檢測有無機(jī)器

  96.                                                 }
  97.                                         }        
  98.                         }
  99.             }        

  100.                 }        
  101. }


  102.          

  103. }
  104.   /********檢測定時器時間,檢測測試 PASS 函數(shù) *********/

  105. void ok()
  106. {

  107.                 if(num==60)
  108.                 {
  109.                         kais=0;                                                  // 關(guān)閉耐壓儀啟動按鍵
  110.                 }
  111.              /**********************超時檢測**************************                  **/
  112.                 if(num==600)                                                                      // 到 30 秒還沒測試完畢(OK或NG---num清零),num判斷。
  113.                 {
  114.                         num=0;
  115.                         led_H=1;                                                                           //        黃燈亮
  116.                         led_G=1;                                                                           //        綠燈亮
  117.                         led_R=1;                                                                   //        紅燈亮
  118.                         gny();
  119.                 }
  120.                                        


  121.                 /***********************判斷是否測試OK****************************/
  122.                 if(OK==0)               
  123.                 {
  124.                         delay(10);
  125.                         if(OK==0)
  126.                         {
  127.                                 led_H=0;
  128.                                 led_G=1;                                                                                                // 開啟綠燈
  129.                                 flag();                                                                                                // 放行
  130.                                 TR1=1;
  131.                                 TR0=0;
  132.                                 num=0;                                                    //啟動定時器 1
  133.                         }
  134.                  }         
  135. }

  136. /*********************************************         主函數(shù)            *********************************************************************/
  137. void main()
  138. {
  139.     init();
  140.         while(1)
  141.         {
  142.                 keyscan();
  143.             ok();


  144.         }
  145.                         
  146. }

  147.                                          

  148. /**** 手動停止:原理圖里通過繼電器常開和耐壓儀器的 stop 兩端連接,
  149.       儀器停止--為常閉和 stop 兩端連接,,兩種任選一,手動時繼電器
  150.           吸合,常閉端斷開,所以不會觸發(fā) IN1 。
  151.                                                                                             ****/

  152. void ex() interrupt 0
  153. {
  154.          
  155.          led_H=0;                                                                           //        關(guān)閉黃燈
  156.          led_G=0;                                                                           //  關(guān)閉綠燈
  157.          led_R=0;                                                                        //        關(guān)閉紅燈+蜂鳴器
  158.          gny();                                                                        
  159. }


  160. /****功能:設(shè)置啟動后超時無反應(yīng)報警(OK\NG信號)****/

  161. void time_T0() interrupt 1
  162. {
  163.         TH0=(65536-45872)/256;
  164.         TL0=(65536-45872)%256;
  165.         num++;                                                
  166. }




  167. /**** 判斷是否測試NG ,員工在判斷時需要 “手動再次停止” 一次耐壓儀器,因為輸出為高壓,確保安全起見***/

  168. void ex1() interrupt 2
  169. {
  170.                     
  171.                         led_H=0;
  172.                         delay(100);
  173. ……………………

  174. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
自動耐壓.rar (38.53 KB, 下載次數(shù): 17)
典型的蜂鳴器驅(qū)動電路.pdf (48 KB, 下載次數(shù): 13)
整流二極管-1N4001-4007-參數(shù)資料.pdf (71.46 KB, 下載次數(shù): 13)


評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2017-6-1 18:04 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

板凳
ID:169021 發(fā)表于 2017-6-3 01:49 | 只看該作者
好東東啊,這個很智能,樓主能發(fā)下原理圖嗎?
回復(fù)

使用道具 舉報

地板
ID:206620 發(fā)表于 2017-6-13 08:57
你是偉城嗎?我發(fā)你QQ里這里不會玩。添加不進(jìn)。

5#
ID:206620 發(fā)表于 2017-6-17 11:05
51hei小小 發(fā)表于 2017-6-3 01:49
好東東啊,這個很智能,樓主能發(fā)下原理圖嗎?

你是偉城嗎

6#
ID:3802 發(fā)表于 2019-1-25 10:57 | 只看該作者
值得擁有
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表