找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2973|回复: 0
收起左侧

RS485工控六入六出模块电路图与上位机及单片机源码全套资料下载 带常闭

[复制链接]
ID:280979 发表于 2018-2-1 12:37 | 显示全部楼层 |阅读模式
【简要说明】
一、 尺寸:长122mmX宽87mmX高20mm
二、
主要芯片:
单片机STC12C5A60S2 继电器 光耦
三、
工作电压:
有直流12V及24V可选。
0.png
资料包含以下源码:
上位机通过485、232接口控制测试程序完整版本
上位机通过485、232接口控制测试程序完整版本 - 多机控制
完整版modbus6路完善版本(看门狗)232+485
调试程序
输入发送程序_循环发送
通过串口1或2与上位机通讯可查询输入输出状态


四、特点:
电路结构简单,稳定可靠,采用最新款STC单片机,运行速度快,单片机预留扩展接口
1、具有6路输入信号指示灯,6继电器吸合指示灯,电源指示灯
2、板子功耗小于6W
3、额定切换电流10A以内,切换电压250V以内
4、单路最大切换功率500W 额定功率300W
5、继电器寿命1000000次以上。
6、电器绝缘电阻100M
7、触电耐压1000V
8、继电器最大吸合时间15mS 毫秒
9、继电器最大释放时间5mS  毫秒
10、工作温度-40度至 +70度
11、工作湿度 40%  ~ 80%RH
12、6路光电隔离输入,6路光电隔离输出
13、6输入高电平有效(即:PNP输入)
14、6路输出开关量输出(即:干接点输出)
15、具有MAX232通讯和RS485通讯两种模式可选。
16、单片机有IO口都引出,客户可以自己编程扩展功能
17、可以选择使用内部EEPROM 作为存储单元
18、电路具有,防反接保护、过流保护、续流保护等
19、单片机可以自行更换,可以选择替换型的STC系列单片机
20、我们提供电路相关的,原理图、例程、开发环境、下载软件等相关资料
适用场合:工业控制、产品开发、项目设计,自动化改造等

GYJ-0040_工控六入六出(485)带常闭的电路原理图如下:
0.png 0.png

PCB图:
0.png

元件清单:
0.png 0.png

实物图与接线图等:
DSC_0211.JPG DSC_0212.JPG DSC_0213.JPG DSC_0214.JPG IMG_.jpg IMG_20.jpg

GYJ-0040_工控六入六出(485)带常闭测试单片机源程序如下:
  1. /********************************************************************
  2.                             汇诚科技
  3. 实现功能:上、下位机485、232接口控制测试程序
  4. 上位机编译环境:Vs2008(VB.net)
  5. 使用芯片:STC12C5A60S2
  6. 晶振:11.0592MHZ
  7. 编译环境:Keil
  8. 硬件环境:六路输入输出带485和232接口  
  9. *********************************************************************/
  10. /********************************************************************
  11. 单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
  12. 单片机接收PC机发送的十六进制码表如下:
  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. 11、第一路关:PC发送'a';
  22. 12、第二路关:PC发送'b';
  23. 13、第三路关:PC发送'c';
  24. 14、第四路关:PC发送'd';
  25. 15、第三路关:PC发送'e';
  26. 16、第四路关:PC发送'f';
  27. ************************************************************
  28. *********************************************************************/
  29. #include<STC12C5A60S2.H>                 //库文件
  30. #include <intrins.h>
  31. #define uchar unsigned char//宏定义无符号字符型
  32. #define uint unsigned int  //宏定义无符号整型
  33. /********************************************************************
  34.                             初始定义
  35. *********************************************************************/

  36. unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
  37. /*定义八位数字量输入为单片机P0口*/
  38. sbit X00=P1^0;
  39. sbit X01=P1^1;
  40. sbit X02=P1^4;
  41. sbit X03=P1^5;
  42. sbit X04=P1^6;
  43. sbit X05=P1^7;
  44. /*定义八位数字量输出IO口*/
  45. sbit Y00=P2^0;  
  46. sbit Y01=P2^1;
  47. sbit Y02=P2^2;
  48. sbit Y03=P2^3;
  49. sbit Y04=P2^4;
  50. sbit Y05=P2^5;
  51. /********************************************************************
  52.                             延时函数
  53. *********************************************************************/
  54. void delay(uchar t)
  55. {
  56.   uchar i,j;
  57.    for(i=0;i<t;i++)
  58.    {
  59.             for(j=250;j>0;j--);
  60.          { ;
  61.          }
  62.    }
  63. }
  64. /********************************************************************
  65.                            输出处理函数
  66. *********************************************************************/
  67. void open_X3(uchar turm)
  68. {
  69.         char i;
  70.         for(i=7;i>=0;i--)
  71.         {
  72.                 turm=_crol_(turm,1);
  73.                 switch(i)
  74.                 {
  75.                   case 0:Y00=turm&0x01;break;
  76.                   case 1:Y01=turm&0x01;break;
  77.                   case 2:Y02=turm&0x01;break;
  78.                   case 3:Y03=turm&0x01;break;
  79.                   case 4:Y04=turm&0x01;break;
  80.                   case 5:Y05=turm&0x01;break;
  81.                   default:break;
  82.                 }
  83.          }
  84. }
  85. /********************************************************************
  86.               功能:串口初始化,波特率9600,方式1
  87. *********************************************************************/
  88. void Init_Com(void)
  89. {
  90.     //串口初始化
  91.     TMOD = 0x20;
  92.     SCON = 0x50;
  93.     TH1 = 0xFd;
  94.     TL1 = 0xFd;
  95.     TR1 = 1;
  96.         ES=1;                //开串口1中断         
  97.    //485接口初始化        
  98.     S2CON=0x50;        //方式1,八位数据,可变波特率                              
  99.         AUXR1=0x00;        //1T工作方式                                 
  100.          BRT=0XFD;         //设置波特率9600                                 
  101.          AUXR=0x10;        //启动波特率发生器                                 
  102.          EA=1;                 //开总中断                                                  
  103.         IE2=0x01;        //开串口2中断                                 
  104. }
  105. /********************************************************************
  106.                             配置P4口
  107. *********************************************************************/
  108. void P4_init(void)
  109. {
  110.     P4SW=0x70;   //配置P4口
  111.     P4M0&=0x80;         
  112.     P4M1&=0x80;
  113. }
  114. /********************************************************************
  115.                             配置P4口
  116. *********************************************************************/
  117. void B485_send(uchar c)
  118. {

  119.   SBUF=S2BUF=c;
  120. }
  121. /********************************************************************
  122.                             主函数
  123. *********************************************************************/
  124. void main()
  125. {
  126.    Init_Com();//串口初始化
  127.    P4_init();
  128.    while(1)
  129.    {              
  130.        if(X00==0) {delay(20);Y00=0;while(!X00);Y00=1;B485_send(0XA1);}
  131.            if(X01==0) {delay(20);Y01=0;while(!X01);Y01=1;B485_send(0XA2);}
  132.            if(X02==0) {delay(20);Y02=0;while(!X02);Y02=1;B485_send(0XA3);}
  133.            if(X03==0) {delay(20);Y03=0;while(!X03);Y03=1;B485_send(0XA4);}
  134.            if(X04==0) {delay(20);Y04=0;while(!X04);Y04=1;B485_send(0XA5);}
  135.            if(X05==0) {delay(20);Y05=0;while(!X05);Y05=1;B485_send(0XA6);}
  136.         switch(dat) //接收数据判断
  137.         {
  138.                 uchar k;
  139.                 k=10;
  140.                 case 'I': open_X3(0x00);delay(k);break; //  全开
  141.                 case 'i': open_X3(0xff);delay(k);break; //  全关
  142.                
  143.                 case 'A': Y00=0;delay(k);break;           //  第一路开
  144.                 case 'B': Y01=0;delay(k);break;           //  第二路开
  145.                 case 'C': Y02=0;delay(k);break;           //  第三路开
  146.                 case 'D': Y03=0;delay(k);break;           //  第四路开
  147.                 case 'E': Y04=0;delay(k);break;           //  第五路开
  148.                 case 'F': Y05=0;delay(k);break;           //  第六路开
  149.                
  150.                 case 'a': Y00=1;delay(k);break;           //  第一路关
  151.                 case 'b': Y01=1;delay(k);break;           //  第二路关
  152.                 case 'c': Y02=1;delay(k);break;           //  第三路关
  153.                 case 'd': Y03=1;delay(k);break;           //  第四路关
  154.                 case 'e': Y04=1;delay(k);break;           //  第五路关
  155.                 case 'f': Y05=1;delay(k);break;           //  第六路关

  156.                 default:break;                                           //  跳出
  157.     }
  158.   }
  159. }
  160. /********************************************************************
  161.                           串口中断函数
  162. *********************************************************************/
  163. void commIntProc() interrupt 4
  164. {
  165.         if(TI)
  166.                 TI = 0;
  167.         if(RI)
  168.          {
  169.           RI = 0;
  170.           dat = SBUF;
  171.          } //接收数据SBUF赋与dat        
  172. }
  173. /********************************************************************
  174.                          串口二(485) 发送接收中断函数
  175. *********************************************************************/
  176. void uart2_isr()  interrupt 8
  177. {
  178.    if( S2CON & 0x01 )
  179.          {
  180.                 S2CON &= ~0x01;
  181.                    dat= S2BUF;        
  182.          }
  183.         if( S2CON & 0x02 )
  184.         {
  185.           S2CON&=0xfd;
  186. ……………………

  187. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
vb上位机源码:
0.png

0.png 0.png

所有资料51hei提供下载:

GYJ-0040_工控六入六出(485)带常闭发货资料.rar (9.73 MB, 下载次数: 68)


回复

使用道具 举报

无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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