GYJ006330路继电器可编程模块485及232产品使用手册.docx

上传人:b****1 文档编号:15029475 上传时间:2023-06-29 格式:DOCX 页数:40 大小:2.47MB
下载 相关 举报
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第1页
第1页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第2页
第2页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第3页
第3页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第4页
第4页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第5页
第5页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第6页
第6页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第7页
第7页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第8页
第8页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第9页
第9页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第10页
第10页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第11页
第11页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第12页
第12页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第13页
第13页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第14页
第14页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第15页
第15页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第16页
第16页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第17页
第17页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第18页
第18页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第19页
第19页 / 共40页
GYJ006330路继电器可编程模块485及232产品使用手册.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

GYJ006330路继电器可编程模块485及232产品使用手册.docx

《GYJ006330路继电器可编程模块485及232产品使用手册.docx》由会员分享,可在线阅读,更多相关《GYJ006330路继电器可编程模块485及232产品使用手册.docx(40页珍藏版)》请在冰点文库上搜索。

GYJ006330路继电器可编程模块485及232产品使用手册.docx

GYJ006330路继电器可编程模块485及232产品使用手册

30路继电器可编程模块485及232产品使用手册

简要说明:

一、 尺寸:

长233.7mmX宽182.7mmX高25mm

二、 主要芯片:

STC12C60S2支持双串口(支持51系列DIP40封装单片机)

三、 工作电压:

直流12伏供电(另有24V供电)

四、 串口1(COM1)下载程序,(RS485口使用单机机内部串口2均可与上位机通讯)

五、输出供电采用延时通电电路(1至10秒可调)

功能:

当输出接有被控制设备,避免单片机初次上电(或下载程序)时,输出设备误动作。

此功能在实际应用中起到很大作用

五、 特点:

            1、具有电源指示。

            2、三十路带光电隔离输出控制继电器。

              3、标准的11.0592M晶振。

(便于设置串口波特率)

            4、具有上电复位和手动复位。

            5、支持51系列DIP40封装单片机。

  

5、输出三十路继电器的供电采用延时供电 (避免被控制设备误动作)        

            6、输出三十路具有LED指示。

             7、三十路12V继电器控制,控制设备。

            8、可控制交流220V/10A一下设备。

            9、具有RS232和RS485通信功能(可以同时和上位机通信)。

             10、单片机无加密,可插拔更换,可随意更改程序。

使用说明:

【标注说明】

【接线图】

【应用举例接线图】

【可以作为输入设备的产品】

【可作为输出控制的设备】

【原理图】

由于原理图比较大,购买后提供PDF格式的。

【PCB图】

【上位机界面】(提供源代码)

【测试程序】(其它测试程序购买后提供)

实现功能:

30路输出顺序闭合

*********************************************************************/

#include//库文件

#include

#defineucharunsignedchar//宏定义无符号字符型

#defineuintunsignedint//宏定义无符号整型

/********************************************************************

初始定义

*********************************************************************/

uchari;

/********************************************************************

延时函数

*********************************************************************/

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/********************************************************************

主函数

*********************************************************************/

voidmain()

{

P4SW|=0x20;//配置P4.5为IO口

P4M0|=0x10;//配置P4.4为IO口

P4M1|=0x10;

P0=P1=P2=P3=0xff;

P4|=0x30;

while

(1)

{

OUT1=0;

delay(3000);

OUT2=0;;

delay(3000);

OUT3=0;

delay(3000);

OUT4=0;

delay(3000);

OUT5=0;

delay(3000);

OUT6=0;

delay(3000);

OUT7=0;

delay(3000);

OUT8=0;

delay(3000);

OUT9=0;

delay(3000);

OUT10=0;

delay(3000);

OUT11=0;

delay(3000);

OUT12=0;

delay(3000);

OUT13=0;

delay(3000);

OUT14=0;

delay(3000);

OUT15=0;

delay(3000);

OUT16=0;

delay(3000);

OUT17=0;

delay(3000);

OUT18=0;

delay(3000);

OUT19=0;

delay(3000);

OUT20=0;

delay(3000);

OUT21=0;

delay(3000);

OUT22=0;

delay(3000);

OUT23=0;

delay(3000);

OUT24=0;

delay(3000);

OUT25=0;

delay(3000);

OUT26=0;

delay(3000);

OUT27=0;

delay(3000);

OUT28=0;

delay(3000);

OUT29=0;

delay(3000);

OUT30=0;

delay(3000);

P0=P1=P2=P3=0xff;

P4|=0x30;

delay(6000);

}

}

/********************************************************************

结束

*********************************************************************/

/******************************

程序功能:

modbusRTU模式设置读取十六个继电器状态,以及内部保持寄存器的设置读取

硬件测试环境:

单片机stc89C52RC十六继电器485接口控制板

通信协议:

晶振:

11.0592波特率:

96008位数据1位停止位偶校验485通位接口P3.7控制方向端

控制板地址:

修改localAddr(变量)

线圈个数:

16个线圈地址范围:

0x0000~0x000F

保持寄存器个数:

16个(字节型)寄存器地址:

0x0000~0x000F

\\******************************\\

功能码简介:

02:

读取单个线圈状态

03:

读取多个保持寄存器

05:

设置单个线圈状态

06:

设置单个寄存器值

0F:

设置多个线圈

10:

设置多个保持寄存器

汇成科技:

华龙电子直销

作者:

yang

QQ:

790244909

*******************************/

#include"hader\\main.h"

uint32dwTickCount,dwIntTick;//时钟

uint8idatasendBuf[32],receBuf[16];//发送接收缓冲区

uint8idatacheckoutError;//==2偶校验错

uint8idatareceTimeOut;//接收超时

uint8idatac10ms;//10ms计时

uint8idatac200ms;

bitb1ms,bt1ms,b10ms,bt10ms,b100ms,bt100ms;//定时标志位

bitrs232485;

//定时处理

voidtimeProc(void)

{

b1ms=0;

if(bt1ms)//如果1ms到

{

bt1ms=0;

b1ms=1;

if(receTimeOut>0)//如果接收超时值>0

{

receTimeOut--;//接收超时-1(1ms减1次)

if(receTimeOut==0&&receCount>0)//判断通讯接收是否超时

{

//b485Send=0;//将485置为接收状态

receCount=0;//将接收地址偏移寄存器清零

checkoutError=0;

}

}

}

}//voidTimerProc(void)

//初始化

voidinitInt(void)

{

SCON=0xd0;

TMOD=0x21;

PCON=0;

TH0=TIMER_HIGHT;

TL0=TIMER_LOW;

TH1=0xfd;

TL1=0xfd;//波特率9600

TR0=1;

TR1=1;

ET0=1;

ES=1;

EA=1;

//串口2设置

S2CON=0xd0;//方式1,9位数据,波特率不可变S2TB8偶校验位

BRT=0XFD;//设置波特率9600

AUXR=0x10;//启动串口1波特率发生器

IP=0x00;//优先级默认//开串口1中断

IE2=0x01;//开串口2中断

}

//初始化

voidinitProg(void)

{

P4SW|=0x20;//配置P4.5为IO口

P4M0|=0x10;//配置P4.4为IO口

P4M1|=0x10;

P0=P1=P2=P3=0xff;

P4|=0x30;

initInt();//初始化定时器

//b485Send=0;

}

//上电时读取上次线圈状态,并设置

voidforceMultipleCoils1()

{

uint8tempAddr;

uint8i,k;

uint8Data;

uint8exit=0;

for(k=0;k<4;k++)

{

switch(k)

{

case0:

Data=coilreg1;break;

case1:

Data=coilreg2;break;

case2:

Data=coilreg3;break;

case3:

Data=coilreg4;break;

}

for(i=0;i<8;i++)

{

if(Data&0x01==1)

setCoilVal(tempAddr,0);

else

setCoilVal(tempAddr,1);

Data=Data>>1;

tempAddr++;

if(tempAddr>=32)

{

exit=1;

break;

}

}

if(exit==1)

break;

}

}

voidmain(void)

{

initProg();

localAddr=EEPROMReadByte(0);//从EERPOM的相对0地址读取数据

coilreg1=EEPROMReadByte

(1);

coilreg2=EEPROMReadByte

(2);

coilreg3=EEPROMReadByte(3);

coilreg4=EEPROMReadByte(4);

forceMultipleCoils1();

if(localAddr>=10)

{

localAddr=1;

EEPROMSectorErase(0);//从EEPROM的相对0地址扇区擦除

EEPROMWriteByte(0,localAddr);

EEPROMWriteByte(1,coilreg1);

EEPROMWriteByte(2,coilreg2);

EEPROMWriteByte(3,coilreg1);

EEPROMWriteByte(4,coilreg2);

}

WDT_CONTR=0x32;//大概284.4ms

while

(1)

{

timeProc();

checkComm0Modbus();

}

}

//定时器01ms中断

voidtimer0IntProc()interrupt1

{

TL0=TIMER_LOW;

TH0=TIMER_HIGHT;

dwIntTick++;

bt1ms=1;

c10ms++;

c200ms++;

if(c10ms>=10)

{

c10ms=0;//20ms计时器清零

bt10ms=1;

WDT_CONTR=0x32;//

}

}//voidTimer0IntProc()

//串行中断1程序

voidcommIntProc()interrupt4

{

if(TI)

{

TI=0;

if(sendPosi

{

sendPosi++;

ACC=sendBuf[sendPosi];

TB8=P;//加上校验位

SBUF=sendBuf[sendPosi];

}

else//否则发送完毕,置接收状态

{

//b485Send=0;//发送完后将485置于接收状态

receCount=0;//清接收地址偏移寄存器

checkoutError=0;

}

}

elseif(RI)

{

RI=0;

rs232485=1;

receTimeOut=10;//通讯超时值

receBuf[receCount]=SBUF;

ACC=receBuf[receCount];

if(P!

=RB8)

checkoutError=2;//偶校验出错

receCount++;//接收地址偏移寄存器加1

receCount&=0x0f;//最多一次只能接收16个字节

}

}//voidCommIntProc()

//串口2中断

voiduart2_isr()interrupt8

{

if(S2CON&0x02)

{

S2CON&=~0x02;

if(sendPosi

{

sendPosi++;

ACC=receBuf[sendPosi];

if(P)

S2CON|=0x08;//76543210ResetValue

//sfrS2CON=0x9A;//S2ControlS2SM0S2SM1S2SM2S2RENS2TB8S2RB8S2TIS2RI00000000B

else

S2CON&=0xf7;

S2BUF=receBuf[sendPosi];

}

else//否则发送完毕,置接收状态

{

//b485Send=0;//发送完后将485置于接收状态

receCount=0;//清接收地址偏移寄存器

checkoutError=0;

}

}

elseif(S2CON&0x01)//接收

{

S2CON&=~0x01;

rs232485=0;

receTimeOut=10;//通讯超时值

receBuf[receCount]=S2BUF;

ACC=receBuf[receCount];

//if(P!

=RB8)

//checkoutError=2;//偶校验出错

receCount++;//接收地址偏移寄存器加1

receCount&=0x0f;//最多一次只能接收16个字节

}

}

 

/********************************************************************

*********************************************************************/

#include"STC12C5A60S2.H"

#include"INTRINS.H"

#defineucharunsignedchar//宏定义无符号字符型

#defineuintunsignedint//宏定义无符号整型

bitwrite=0;//写24C08的标志;

uchardat=0xee;//用于存储单片机接收发送缓冲寄存器SBUF里面的内容

ucharsj1;//存储数据值

ucharsj2;//存储数据值

ucharsj3;//存储数据值

ucharsj4;//存储数据值

ucharsj5;//存储数据值

/*

sfrIAP_DATA=0xC2;

sfrIAP_ADDRH=0xC3;

sfrIAP_ADDRL=0xC4;

sfrIAP_CMD=0xC5;

sfrIAP_TRIG=0xC6;

sfrIAP_CONTR=0xC7;

sfrP4=0xC0;

*/

//定义Flash操作等待时间及允许IAP/ISP/EEPROM操作的常数

//#defineENABLE_ISP0x80//系统工作时钟<30MHz时,对IAP_CONTR寄存器设置此值

//#defineENABLE_ISP0x81//系统工作时钟<24MHz时,对IAP_CONTR寄存器设置此值

#defineENABLE_ISP0x82//系统工作时钟<20MHz时,对IAP_CONTR寄存器设置此值

//#defineENABLE_ISP0x83//系统工作时钟<12MHz时,对IAP_CONTR寄存器设置此值

//#defineENABLE_ISP0x84//系统工作时钟<6MHz时,对IAP_CONTR寄存器设置此值

//#defineENABLE_ISP0x85//系统工作时钟<3MHz时,对IAP_CONTR寄存器设置此值

//#defineENABLE_ISP0x86//系统工作时钟<2MHz时,对IAP_CONTR寄存器设置此值

//#defineENABLE_ISP0x87//系统工作时钟<1MHz时,对IAP_CONTR寄存器设置此值

/********************************************************************

初始定义

*********************************************************************/

sbitOUT1=P2^6;

sbitOUT2=P2^7;

sbitOUT3=P4^4;

sbitOUT4=P4^5;

sbitOUT5=P0^7;

sbitOUT6=P0^6;

sbitOUT7=P0^5;

sbitOUT8=P0^4;

sbitOUT9=P0^3;

sbitOUT10=P0^2;

sbitOUT11=P0^1;

sbitOUT12=P0^0;

sbitOUT13=P1^0;

sbitOUT14=P1^1;

sbitOUT15=P1^4;

sbitOUT16=P1^5;

sbitOUT17=P1^6;

sbitOUT18=P1^7;

sbitOUT19=P3^2;

sbitOUT20=P3^3;

sbitOUT21=P3^4;

sbitOUT22=P3^5;

sbitOUT23=P3^6;

sbitOUT24=P3^7;

sbitOUT25=P2^5;

sbitOUT26=P2^4;

sbitOUT27=P2^3;

sbitOUT28=P2^2;

sbitOUT29=P2^1;

sbitOUT30=P2^0;

uchark=10;

/********************************************************************

函数声明

*********************************************************************/

unionunion_temp16

{

uintun_temp16;

ucharun_temp8[2];

}

my_unTemp16;

ucharByte_Read(uintadd);//读一字节,调用前需打开IAP功能

voidByte_Program(uintadd,ucharch);//字节编程,调用前需打开IAP功能

voidSector_Erase(uintadd);//擦除扇区

voidIAP_Disable();//关闭IAP功能

voidDelay();

/********************************************************************

延时函数

*********************************************************************/

voiddelay(uchart)

{

uchari,j;

for(i=0;i

{

for(j=13;j>0;j--);

{;

}

}

}

/********************************************************************

功能:

串口初始化,波特率9600,方式1

*********************************************************************/

voidInit_Com(void)

{

//串口初始化

TMOD=0x20;

SCON=0x50;

TH1=0xFd;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2