找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

GYJ-0085_15路輸入12路輸出繼電器可編程模塊485及232原理圖與源碼資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:280979 發(fā)表于 2018-3-18 00:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
電路原理圖如下:


簡要說明:
一、 尺寸:長180mmX107mmX25mm
二、 主要芯片:STC12C5A60S2 (兼容51系列單片機)
三、 工作電壓:直流12(另有24V繼電器可選)
四、串口下載程序 (支持TTL下載程序
五、 特點:
1、具有電源指示。(供電電源有防接反保護(hù))
2、15輸入(包括:1路模擬量輸入,2路高速光電輸入,12路光電隔離輸入。
3、12路光隔離繼電器輸出控制。
4、標(biāo)準(zhǔn)的11.0592M晶振。(便于設(shè)置串口波特率)
5、具有上電復(fù)位和手動復(fù)位。
6、獨立的串口通信及485通信。
7可以接315M帶解碼的無線接收模塊。
8、輸入輸出均有信號指示燈。
9繼電器開關(guān)量輸出,最大切換電壓220V,最大切換電流7A。最大切換功率200W。
10電流加有,光電隔離,續(xù)流二極管,壓敏電阻,抗干擾能力強。
11、四周有固定安裝孔,也可插入PCB107mm卡槽,安裝在DIN導(dǎo)軌上。
12、通訊穩(wěn)定,提供原理圖,及板子的參考例程。
13、單片機無加密,可插拔更換,帶有程序下載口,可隨意更改程序
14、端子采用螺旋壓接端子           
15、工作溫度-40度至 +70度
16、工作濕度 40%  ~ 80%RH

上位機通過485、232接口控制測試程序完整版本單片機源程序如下:

  1. /********************************************************************
  2.                             匯誠科技

  3. 實現(xiàn)功能:上、下位機485、232接口控制測試程序
  4. 上位機編譯環(huán)境:Vs2008(VB.net)
  5. 使用芯片:STC12C5A60S2
  6. 晶振:11.0592MHZ
  7. 編譯環(huán)境:Keil
  8. 硬件環(huán)境:15路輸入12路輸出帶485和232接口  
  9. *********************************************************************/
  10. /********************************************************************
  11. 單片機與PC機采用9針串口,MAX232通訊,波特率默認(rèn)為9600.
  12.                                                  485通信 ,        波特率默認(rèn)為9600.
  13. 單片機接收PC機發(fā)送的ASC||碼如下:

  14. 01、全開:PC發(fā)送'I';
  15. 02、全關(guān):PC發(fā)送'i';

  16. 03、第1路開:PC發(fā)送'A';
  17. 04、第2路開:PC發(fā)送'B';
  18. 05、第3路開:PC發(fā)送'C';
  19. 06、第4路開:PC發(fā)送'D';
  20. 07、第5路開:PC發(fā)送'E';
  21. 08、第6路開:PC發(fā)送'F';
  22. 09、第7路開:PC發(fā)送'G';
  23. 10、第8路開:PC發(fā)送'H';
  24. 11、第9路開:PC發(fā)送'J';
  25. 12、第10路開:PC發(fā)送'K';
  26. 13、第11路開:PC發(fā)送'L';
  27. 14、第12路開:PC發(fā)送'M'

  28. 15、第1路關(guān):PC發(fā)送'a';
  29. 16、第2路關(guān):PC發(fā)送'b';
  30. 17、第3路關(guān):PC發(fā)送'c';
  31. 18、第4路關(guān):PC發(fā)送'd';
  32. 19、第5路關(guān):PC發(fā)送'e';
  33. 20、第6路關(guān):PC發(fā)送'f';
  34. 21、第7路關(guān):PC發(fā)送'g';
  35. 22、第8路關(guān):PC發(fā)送'h';
  36. 23、第9路關(guān):PC發(fā)送'j';
  37. 24、第10路關(guān):PC發(fā)送'k';
  38. 25、第11路關(guān):PC發(fā)送'l';
  39. 26、第12路關(guān):PC發(fā)送'm';
  40. ************************************************************
  41. *********************************************************************/
  42. #include<STC12C5A60S2.H>                 //庫文件
  43. #include <intrins.h>
  44. #define uchar unsigned char//宏定義無符號字符型
  45. #define uint unsigned int  //宏定義無符號整型
  46. /********************************************************************
  47.                             初始定義
  48. *********************************************************************/

  49. unsigned char dat; //用于存儲單片機接收發(fā)送緩沖寄存器SBUF里面的內(nèi)容
  50. /********************************************************************
  51.                             初始定義
  52. *********************************************************************/
  53. /*定義十四個輸入*/
  54. //模擬量接口,做普通IO口時,高定平有效(這里用做普通IO口)
  55. sbit IN1=P1^0;         
  56. //開光量輸入   低電平有效
  57. sbit IN2=P1^1;                  
  58. sbit IN3=P1^4;
  59. sbit IN4=P1^5;
  60. sbit IN5=P1^6;
  61. sbit IN6=P1^7;
  62. sbit IN7=P3^4;
  63. sbit IN8=P3^5;
  64. sbit IN9=P3^6;
  65. sbit IN10=P3^7;
  66. sbit IN11=P4^6;
  67. sbit IN12=P4^5;                 
  68. sbit IN13=P4^4;
  69. //高速脈沖輸入,    觸發(fā)信號高低可選
  70. sbit IN14=P3^2;
  71. sbit IN15=P3^3;

  72. /*定義八位輸出*/
  73. sbit OUT1= P0^4;
  74. sbit OUT2= P0^5;
  75. sbit OUT3= P0^6;
  76. sbit OUT4= P0^7;
  77. sbit OUT5= P2^7;
  78. sbit OUT6= P2^6;
  79. sbit OUT7= P2^5;
  80. sbit OUT8= P2^4;
  81. sbit OUT9= P2^3;
  82. sbit OUT10=P2^2;
  83. sbit OUT11=P2^1;
  84. sbit OUT12=P2^0;
  85. /********************************************************************
  86.                             延時函數(shù)
  87. *********************************************************************/
  88. void delay(uchar t)
  89. {
  90.   uchar i,j;
  91.    for(i=0;i<t;i++)
  92.    {
  93.             for(j=250;j>0;j--);
  94.          { ;
  95.          }
  96.    }
  97. }
  98. /********************************************************************
  99.                            輸出處理函數(shù)
  100. *********************************************************************/
  101. void open_X3()
  102. {
  103. OUT1=0;OUT2=0;OUT3=0;OUT4=0;P2=0X00;
  104. }
  105. void clse_X3()
  106. {
  107. OUT1=1;OUT2=1;OUT3=1;OUT4=1;P2=0XFF;
  108. }
  109. /********************************************************************
  110.               功能:串口初始化,波特率9600,方式1
  111. *********************************************************************/
  112. void Init_Com(void)
  113. {
  114.     //串口初始化
  115.     TMOD = 0x20;
  116.     SCON = 0x50;
  117.     TH1 = 0xFd;
  118.     TL1 = 0xFd;
  119.     TR1 = 1;
  120.         ES=1;                //開串口1中斷         
  121.    //485接口初始化       
  122.     S2CON=0x50;        //方式1,八位數(shù)據(jù),可變波特率                             
  123.         AUXR1=0x00;        //1T工作方式                                  
  124.         BRT=0XFD;         //設(shè)置波特率9600                                 
  125.         AUXR=0x10;        //啟動波特率發(fā)生器                                 
  126.         EA=1;                 //開總中斷                                                  
  127.         IE2=0x01;        //開串口2中斷                                 
  128. }
  129. /********************************************************************
  130.                             配置IO口
  131. *********************************************************************/
  132. void init(void)
  133. {
  134.    P1M1|=0X01;    //0000 0001        //因為此IO口直接引出,外加下拉電阻。所以配置IO口的時候需要把它設(shè)定為“開漏模式”
  135.    P1M0|=0X01;    //0000 0001
  136.    P4M1|=0x00;    //0111 0000         //P4口設(shè)置為“輸入模式”
  137.    P4M0 =0x00;          //0000 0000   
  138.    P4SW|=0x70;          //0100 0000        //P4^6設(shè)置成普通IO口
  139. }
  140. /********************************************************************
  141.                             串口1和串口2 配置
  142. *********************************************************************/
  143. void B485_send(uchar c)
  144. {

  145.   SBUF=S2BUF=c;
  146. }
  147. /********************************************************************
  148.                             主函數(shù)
  149. *********************************************************************/
  150. void main()
  151. {
  152.    Init_Com();//串口初始化
  153.    init();   //輸入口P4口功能設(shè)定
  154.    while(1)
  155.    {              
  156.        if(IN2==0)  {delay(20);OUT1=0; while(!IN2); OUT1=1; B485_send('1');}
  157.        if(IN3==0)  {delay(20);OUT2=0; while(!IN3); OUT2=1; B485_send('2');}
  158.        if(IN4==0)  {delay(20);OUT3=0; while(!IN4); OUT3=1; B485_send('3');}
  159.        if(IN5==0)  {delay(20);OUT4=0; while(!IN5); OUT4=1; B485_send('4');}
  160.        if(IN6==0)  {delay(20);OUT5=0; while(!IN6); OUT5=1; B485_send('5');}
  161.        if(IN7==0)  {delay(20);OUT6=0; while(!IN7); OUT6=1; B485_send('6');}
  162.        if(IN8==0)  {delay(20);OUT7=0; while(!IN8); OUT7=1; B485_send('7');}
  163.        if(IN9==0)  {delay(20);OUT8=0; while(!IN9); OUT8=1; B485_send('8');}
  164.        if(IN10==0) {delay(20);OUT9=0; while(!IN10);OUT9=1; B485_send('9');}
  165.        if(IN11==0) {delay(20);OUT10=0;while(!IN11);OUT10=1;B485_send('X');}          
  166.        if(IN12==0) {delay(20);OUT11=0;while(!IN12);OUT11=1;B485_send('Y');}
  167.        if(IN13==0) {delay(20);OUT12=0;while(!IN13);OUT12=1;B485_send('Z');}
  168.        if(IN14==0) {delay(20);OUT1=0;while(!IN14);OUT1=1;B485_send('1');}
  169.        if(IN15==0) {delay(20);OUT2=0;while(!IN15);OUT2=1;B485_send('2');}
  170.           
  171.           
  172. switch(dat) //接收數(shù)據(jù)判斷
  173.         {
  174.                 uchar k;
  175.                 k=10;
  176.                 case 'I': open_X3();delay(k);SBUF=S2BUF=dat;dat=0xee;break; //  全開
  177.                 case 'i': clse_X3();delay(k);SBUF=S2BUF=dat;dat=0xee;break; //  全關(guān)
  178.                
  179.                 case 'A': OUT1=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第1路開
  180.                 case 'B': OUT2=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第2路開
  181.                 case 'C': OUT3=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第3路開
  182.                 case 'D': OUT4=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第4路開
  183.                 case 'E': OUT5=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第5路開
  184.                 case 'F': OUT6=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第6路開
  185.                 case 'G': OUT7=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第7路開
  186.                 case 'H': OUT8=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第8路開
  187.                 case 'J': OUT9=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第9路開
  188.                 case 'K': OUT10=0;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第10路開
  189.                 case 'L': OUT11=0;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第11路開
  190.                 case 'M': OUT12=0;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第12路開
  191.                                
  192.                 case 'a': OUT1=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第1路關(guān)
  193.                 case 'b': OUT2=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第2路關(guān)
  194.                 case 'c': OUT3=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第3路關(guān)
  195.                 case 'd': OUT4=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第4路關(guān)
  196.                 case 'e': OUT5=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第5路關(guān)
  197.                 case 'f': OUT6=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第6路關(guān)
  198.                 case 'g': OUT7=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第7路關(guān)
  199.                 case 'h': OUT8=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第8路關(guān)
  200.                 case 'j': OUT9=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第9路關(guān)
  201.                 case 'k': OUT10=1;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第10路關(guān)
  202.                 case 'l': OUT11=1;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第11路關(guān)
  203.                 case 'm': OUT12=1;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第12路關(guān)

  204.                 default:break;                                           //  跳出
  205.     }
  206.   }
  207. }
  208. /********************************************************************
  209.                           串口中斷函數(shù)
  210. *********************************************************************/
  211. void commIntProc() interrupt 4
  212. ……………………

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


所有資料51hei提供下載:
GYJ-0085_15路輸入12路輸出繼電器可編程模塊485及232發(fā)貨資料rar.rar (11 MB, 下載次數(shù): 99)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

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