找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1819|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
电路原理图如下:


简要说明:
一、 尺寸:长180mmX107mmX25mm
二、 主要芯片:STC12C5A60S2 (兼容51系列单片机)
三、 工作电压:直流12(另有24V继电器可选)
四、串口下载程序 (支持TTL下载程序
五、 特点:
1、具有电源指示。(供电电源有防接反保护)
215输入(包括:1路模拟量输入,2路高速光电输入,12路光电隔离输入
312路光隔离继电器输出控制
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. 实现功能:上、下位机485、232接口控制测试程序
  4. 上位机编译环境:Vs2008(VB.net)
  5. 使用芯片:STC12C5A60S2
  6. 晶振:11.0592MHZ
  7. 编译环境:Keil
  8. 硬件环境:15路输入12路输出带485和232接口  
  9. *********************************************************************/
  10. /********************************************************************
  11. 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
  12.                                                  485通信 ,        波特率默认为9600.
  13. 单片机接收PC机发送的ASC||码如下:

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

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

  28. 15、第1路关:PC发送'a';
  29. 16、第2路关:PC发送'b';
  30. 17、第3路关:PC发送'c';
  31. 18、第4路关:PC发送'd';
  32. 19、第5路关:PC发送'e';
  33. 20、第6路关:PC发送'f';
  34. 21、第7路关:PC发送'g';
  35. 22、第8路关:PC发送'h';
  36. 23、第9路关:PC发送'j';
  37. 24、第10路关:PC发送'k';
  38. 25、第11路关:PC发送'l';
  39. 26、第12路关:PC发送'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; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
  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. //高速脉冲输入,    触发信号高低可选
  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.                             延时函数
  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.                            输出处理函数
  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,八位数据,可变波特率                             
  123.         AUXR1=0x00;        //1T工作方式                                  
  124.         BRT=0XFD;         //设置波特率9600                                 
  125.         AUXR=0x10;        //启动波特率发生器                                 
  126.         EA=1;                 //开总中断                                                  
  127.         IE2=0x01;        //开串口2中断                                 
  128. }
  129. /********************************************************************
  130.                             配置IO口
  131. *********************************************************************/
  132. void init(void)
  133. {
  134.    P1M1|=0X01;    //0000 0001        //因为此IO口直接引出,外加下拉电阻。所以配置IO口的时候需要把它设定为“开漏模式”
  135.    P1M0|=0X01;    //0000 0001
  136.    P4M1|=0x00;    //0111 0000         //P4口设置为“输入模式”
  137.    P4M0 =0x00;          //0000 0000   
  138.    P4SW|=0x70;          //0100 0000        //P4^6设置成普通IO口
  139. }
  140. /********************************************************************
  141.                             串口1和串口2 配置
  142. *********************************************************************/
  143. void B485_send(uchar c)
  144. {

  145.   SBUF=S2BUF=c;
  146. }
  147. /********************************************************************
  148.                             主函数
  149. *********************************************************************/
  150. void main()
  151. {
  152.    Init_Com();//串口初始化
  153.    init();   //输入口P4口功能设定
  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) //接收数据判断
  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; //  全关
  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路关
  193.                 case 'b': OUT2=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第2路关
  194.                 case 'c': OUT3=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第3路关
  195.                 case 'd': OUT4=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第4路关
  196.                 case 'e': OUT5=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第5路关
  197.                 case 'f': OUT6=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第6路关
  198.                 case 'g': OUT7=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第7路关
  199.                 case 'h': OUT8=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第8路关
  200.                 case 'j': OUT9=1; delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第9路关
  201.                 case 'k': OUT10=1;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第10路关
  202.                 case 'l': OUT11=1;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第11路关
  203.                 case 'm': OUT12=1;delay(k);SBUF=S2BUF=dat;dat=0xee;break;           //  第12路关

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

  213. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
GYJ-0085_15路输入12路输出继电器可编程模块485及232发货资料rar.rar (11 MB, 下载次数: 99)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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