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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5415|回復: 3
打印 上一主題 下一主題
收起左側

19052耐壓器單片機自動測試項目

[復制鏈接]
跳轉到指定樓層
樓主
本例通過c51單片機實現自動測試耐壓的功能,主要器件單片機最小電路、三極管、電阻、繼電器----行程開關、光電開關,LED燈+蜂鳴器。

原理圖占無,稍后上傳。


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

  4. sbit gdian=P0^0;                                                          // 光電開關                                                  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;                                  // 行程開關                                                 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. /*********延時子函數************/
  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. /*********放行子函數************/
  25. void flag()
  26. {
  27.         delay(500);
  28.         fangx=1;
  29.         delay(3000);
  30.         fangx=0;
  31. }


  32. /*********初始化子函數************/
  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;                                                                                                           //          黃燈、綠燈、紅燈關閉
  47.         led_R=0;                                                                                                        
  48.         kais=0;                                                                                                                  
  49.         fangx=0;                                                                                                        //         放行賦值關閉
  50.         stop0=0;                                                                                                        //         啟動耐壓關閉
  51.         repeat=0;                                                                                                        //         啟動耐壓后設置的 標志位清除
  52. }         

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


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

  61. void keyscan()
  62. {

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

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

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

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

  100.                 }        
  101. }


  102.          

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

  105. void ok()
  106. {

  107.                 if(num==60)
  108.                 {
  109.                         kais=0;                                                  // 關閉耐壓儀啟動按鍵
  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. /*********************************************         主函數            *********************************************************************/
  137. void main()
  138. {
  139.     init();
  140.         while(1)
  141.         {
  142.                 keyscan();
  143.             ok();


  144.         }
  145.                         
  146. }

  147.                                          

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

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


  160. /****功能:設置啟動后超時無反應報警(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黑下載附件…………
復制代碼

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


評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

你是偉城嗎

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人av在线 | 国产亚洲精品a | 久久免费香蕉视频 | 午夜视频网站 | 欧洲性生活视频 | 日韩一二区 | 国产亚洲精品综合一区 | 午夜天堂精品久久久久 | 中文字幕亚洲无线 | 一区二区三区四区视频 | 亚洲国产小视频 | h视频在线观看免费 | 国产精品久久午夜夜伦鲁鲁 | 精品免费av | 久久躁日日躁aaaaxxxx | 九九久久精品视频 | 97视频网站| 精品国产乱码久久久久久果冻传媒 | 国产98色在线 | 日韩 | 一区二区av | 欧美中文字幕 | 中文字幕精品视频 | 成人a视频片观看免费 | 日韩中文一区 | 日韩成人免费av | 999国产视频| 国产中文字幕网 | 91av国产在线视频 | 国产午夜精品久久久久免费视高清 | 欧美日韩在线免费观看 | 久久综合九色综合欧美狠狠 | 色888www视频在线观看 | 国产成人精品福利 | 亚洲三区在线观看 | 亚洲欧洲一区二区 | 久久久一区二区三区 | 国产精品久久久久久久久久 | 中文字幕欧美一区 | 国产欧美一区二区三区日本久久久 | 精品国产一区二区久久 | 欧美日韩精品久久久免费观看 |