找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 3196|回复: 0
打印 上一主题 下一主题
收起左侧

GYJ-0086_16路输入8路输出继电器可编程模块485及232原理图与源码资料

[复制链接]
跳转到指定楼层
楼主
简要说明:
一、 尺寸:长144mmX107mmX25mm
二、 主要芯片:STC12C5A60S2 51单片机的8~12(兼容51系列单片机)
三、 工作电压:直流12(另有24V继电器可选)
四、通过9串口下载程序 (同时支持TTL下载程序
五、 特点:
1、具有电源指示。(供电电源有防接反保护)
216输入(包括:2路模拟量输入,2路高速光电输入,12路光电隔离输入
38路光隔离继电器输出控制
4、标准的11.0592M晶振。(便于设置串口波特率)
5、具有上电复位和手动复位。
6独立的串口通信及485通信
7可以接315M带解码的无线接收模块
8输入输出均有信号指示灯
9继电器开关量输出,最大切换电压220V,最大切换电流7A最大切换功率200W
10电流加有,光电隔离,续流二极管,压敏电阻,抗干扰能力强
11四周有固定安装孔,也可插入PCB107mm卡槽,安装在DIN导轨上。
12通讯稳定,提供原理图,及板子的参考例程
13、单片机无加密,可插拔更换,带有程序下载口,可随意更改程序
14、端子采用螺旋压接端子           
15、工作温度-40度至 +70度
16、工作湿度 40%  ~ 80%RH



上位机通过485、232接口控制测试程序完整版本单片机源程序如下:

  1. /********************************************************************
  2.                             汇诚科技
  3. 使用芯片:STC12C5A60S2
  4. 晶振:11.0592MHZ
  5. 编译环境:Keil
  6. 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     

  7. *********************************************************************/
  8. /********************************************************************
  9. *********************************************************************/
  10. /********************************************************************
  11. 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.

  12. 单片机接收PC机发ASC||码表如下:

  13. 01、全开:PC发送'I';
  14. 02、全关:PC发送'i';

  15. 03、第一路开:PC发送'A';
  16. 04、第二路开:PC发送'B';
  17. 05、第三路开:PC发送'C';
  18. 06、第四路开:PC发送'D';
  19. 07、第五路开:PC发送'E';
  20. 08、第六路开:PC发送'F';
  21. 09、第七路开:PC发送'G';
  22. 10、第八路开:PC发送'H';

  23. 11、第一路关:PC发送'a';
  24. 12、第二路关:PC发送'b';
  25. 13、第三路关:PC发送'c';
  26. 14、第四路关:PC发送'd';
  27. 15、第五路关:PC发送'e';
  28. 16、第六路关:PC发送'f';
  29. 17、第七路关:PC发送'g';
  30. 18、第八路关:PC发送'h';

  31. **********************************************************************
  32. */
  33. #include "STC12C5A60S2.H"
  34. #define uchar unsigned char//宏定义无符号字符型
  35. #define uint unsigned int  //宏定义无符号整型
  36. /********************************************************************
  37.                             初始定义
  38. *********************************************************************/
  39. /*定义十四个输入*/
  40. //模拟量接口,做普通IO口时,高定平有效(这里用做普通IO口)
  41. sbit IN1=P1^0;         
  42. sbit IN2=P1^1;
  43. //开光量输入   低电平有效                  
  44. sbit IN3=P1^4;
  45. sbit IN4=P1^5;
  46. sbit IN5=P1^6;
  47. sbit IN6=P1^7;
  48. sbit IN7=P3^4;
  49. sbit IN8=P3^5;
  50. sbit IN9=P3^6;
  51. sbit IN10=P3^7;
  52. sbit IN11=P0^0;
  53. sbit IN12=P0^1;                 
  54. sbit IN13=P0^2;
  55. sbit IN14=P0^3;

  56. //高速脉冲输入,    触发信号高低可选
  57. sbit IN15=P3^2;
  58. sbit IN16=P3^3;

  59. /*定义八位输出*/
  60. sbit OUT1= P2^7;
  61. sbit OUT2= P2^6;
  62. sbit OUT3= P2^5;
  63. sbit OUT4= P2^4;
  64. sbit OUT5= P2^3;
  65. sbit OUT6= P2^2;
  66. sbit OUT7= P2^1;
  67. sbit OUT8= P2^0;
  68. /***********************************************************
  69.                             数据定义
  70. ***********************************************************/
  71. unsigned char dat=0xA1;

  72. /********************************************************************
  73.                             延时函数
  74. *********************************************************************/
  75. void delay(uchar t)
  76. {
  77.   uchar i,j;
  78.    for(i=0;i<t;i++)
  79.    {
  80.             for(j=250;j>0;j--);
  81.          { ;
  82.          }
  83.    }
  84. }
  85. /********************************************************************
  86.                            输出处理函数
  87. *********************************************************************/
  88. void open_X3()
  89. {
  90. P2=0X00;
  91. }
  92. void clse_X3()
  93. {
  94. P2=0XFF;
  95. }
  96. /********************************************************************
  97.               功能:串口初始化,波特率9600,方式1
  98. *********************************************************************/
  99. void Init_Com(void)
  100. {
  101.     //串口初始化
  102.     TMOD = 0x20;
  103.     SCON = 0x50;
  104.     TH1 = 0xFd;
  105.     TL1 = 0xFd;
  106.     TR1 = 1;
  107.         ES=1;                //开串口1中断         
  108.    //485接口初始化       
  109.     S2CON=0x50;        //方式1,八位数据,可变波特率                             
  110.         AUXR1=0x00;        //1T工作方式                                  
  111.         BRT=0XFD;         //设置波特率9600                                 
  112.         AUXR=0x10;        //启动波特率发生器                                 
  113.         EA=1;                 //开总中断                                                  
  114.         IE2=0x01;        //开串口2中断                                 
  115. }
  116. /********************************************************************
  117.                             配置IO口
  118. *********************************************************************/
  119. void init(void)
  120. {
  121. //   P1M1|=0X03;    //0000 0001        //因为此IO口直接引出,外加下拉电阻。所以配置IO口的时候需要把它设定为“开漏模式”
  122. //   P1M0|=0X03;    //0000 0001
  123. //   P4M1|=0x70;    //0111 0000         //P4口设置为“输入模式”
  124. //   P4M0 =0x00;          //0000 0000   
  125. //   P4SW|=0x40;          //0100 0000        //P4^6设置成普通IO口
  126. }
  127. /********************************************************************
  128.                             串口1和串口2 配置
  129. *********************************************************************/
  130. void B485_send(uchar c)
  131. {

  132.   SBUF=S2BUF=c;
  133. }
  134. /********************************************************************
  135.                             主函数
  136. *********************************************************************/
  137. void main()
  138. {
  139.    Init_Com();//串口初始化
  140. //  init();
  141.    while(1)
  142.    {              
  143.        if(IN3==0)  {delay(20);OUT1=0; while(!IN3);  OUT1=1; B485_send('1');}
  144.        if(IN4==0)  {delay(20);OUT2=0; while(!IN4);  OUT2=1; B485_send('2');}
  145.        if(IN5==0)  {delay(20);OUT3=0; while(!IN5);  OUT3=1; B485_send('3');}
  146.        if(IN6==0)  {delay(20);OUT4=0; while(!IN6);  OUT4=1; B485_send('4');}
  147.        if(IN7==0)  {delay(20);OUT5=0; while(!IN7);  OUT5=1; B485_send('5');}
  148.        if(IN8==0)  {delay(20);OUT6=0; while(!IN8);  OUT6=1; B485_send('6');}
  149.        if(IN9==0)  {delay(20);OUT7=0; while(!IN9);  OUT7=1; B485_send('7');}
  150.        if(IN10==0) {delay(20);OUT8=0; while(!IN10); OUT8=1; B485_send('8');}
  151.        if(IN11==0) {delay(20);OUT1=0; while(!IN11); OUT1=1; B485_send('9');}          
  152.        if(IN12==0) {delay(20);OUT2=0; while(!IN12); OUT2=1; B485_send('0');}
  153.        if(IN13==0) {delay(20);OUT3=0; while(!IN13); OUT3=1; B485_send('W');}
  154.            if(IN14==0) {delay(20);OUT4=0; while(!IN14); OUT4=1; B485_send('X');}
  155.            if(IN15==0) {delay(20);OUT5=0; while(!IN15); OUT5=1; B485_send('Y');}
  156.            if(IN16==0) {delay(20);OUT6=0; while(!IN16); OUT6=1; B485_send('Z');}
  157.                      
  158. switch(dat) //接收数据判断
  159.         {
  160.                 uchar k;
  161.                 k=10;
  162.                 case 'I': open_X3();delay(k);SBUF=S2BUF=dat;dat=0xee;break; //  全开
  163.                 case 'i': clse_X3();delay(k);SBUF=S2BUF=dat;dat=0xee;break; //  全关
  164.                
  165.                 case 'A': OUT1=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第1路开
  166.                 case 'B': OUT2=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第2路开
  167.                 case 'C': OUT3=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第3路开
  168.                 case 'D': OUT4=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第4路开
  169.                 case 'E': OUT5=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第5路开
  170.                 case 'F': OUT6=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第6路开
  171.                 case 'G': OUT7=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第7路开
  172.                 case 'H': OUT8=0; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第8路开
  173.                                
  174.                 case 'a': OUT1=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第1路关
  175.                 case 'b': OUT2=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第2路关
  176.                 case 'c': OUT3=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第3路关
  177.                 case 'd': OUT4=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第4路关
  178.                 case 'e': OUT5=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第5路关
  179.                 case 'f': OUT6=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第6路关
  180.                 case 'g': OUT7=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第7路关
  181.                 case 'h': OUT8=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第8路关

  182.                 default:break;                                           //  跳出
  183.     }
  184.   }
  185. }
  186. /********************************************************************
  187.                           串口中断函数
  188. *********************************************************************/
  189. void commIntProc() interrupt 4
  190. {
  191.         if(TI)
  192.                 TI = 0;
  193.         if(RI)
  194.          {
  195.           RI = 0;
  196.           dat = SBUF;
  197.          } //接收数据SBUF赋与dat       
  198. }
  199. /********************************************************************
  200.                          串口二(485) 发送接收中断函数
  201. *********************************************************************/
  202. void uart2_isr()  interrupt 8
  203. {
  204.    if( S2CON & 0x01 )
  205.          {
  206.                 S2CON &= ~0x01;
  207.                    dat= S2BUF;       
  208.          }
  209.         if( S2CON & 0x02 )
  210.         {
  211.           S2CON&=0xfd;
  212.         }
  213. }         
  214. /********************************************************************
  215.                               结束
  216. *********************************************************************/
复制代码

所有资料51hei提供下载:
GYJ-0086_16路输入8路输出继电器可编程模块485及232DXP资料发货资料.rar (9.3 MB, 下载次数: 52)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表