久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3784|回復(fù): 2
收起左側(cè)

GYJ-0099_458通訊控制工控板(八路控制)單片機(jī)源碼與資料分享

[復(fù)制鏈接]
ID:280979 發(fā)表于 2018-3-18 01:05 | 顯示全部樓層 |閱讀模式
GYJ-0099_458通訊控制工控板八路控制產(chǎn)品使用說(shuō)明書(shū)
【簡(jiǎn)要說(shuō)明】
一、尺寸:長(zhǎng)176mmX寬72mmX高20mm
二、主要芯片:單片機(jī)STC12C2052AD 繼電器 光耦
三、工作電壓:有直流12V及24V可選。
四、特點(diǎn):
電路結(jié)構(gòu)簡(jiǎn)單,穩(wěn)定可靠,采用最新款STC單片機(jī),運(yùn)行速度快
1、具有8繼電器吸合指示燈,電源指示燈
2、板子功耗小于5W
3、額定切換電流10A以?xún)?nèi),切換電壓250V以?xún)?nèi)
4、單路最大切換功率500W 額定功率300W
5、繼電器壽命1000000次以上。
6、電器絕緣電阻100M
7、觸電耐壓1000V
8、繼電器最大吸合時(shí)間15mS毫秒
9、繼電器最大釋放時(shí)間5mS毫秒
10、工作溫度-40度至+70度
11、工作濕度40%~80%RH
12、8路光電隔離輸出
13、485通信控制,可以多塊聯(lián)機(jī)。
14、8路輸出開(kāi)關(guān)量輸出(即:干接點(diǎn)輸出)
15、具有TTL(UART)通訊和RS485通訊兩種模式可選。
16、資料開(kāi)源,客戶(hù)可以自己編程
17、可以選擇使用內(nèi)部EEPROM 作為存儲(chǔ)單元
18、電路具有,防反接保護(hù)、過(guò)流保護(hù)、續(xù)流保護(hù)等
19、單片機(jī)可以自行更換,可以選擇替換型的STC系列單片機(jī)
20、我們提供電路相關(guān)的,原理圖、例程、開(kāi)發(fā)環(huán)境、下載軟件等相關(guān)資料
適用場(chǎng)合:工業(yè)控制、產(chǎn)品開(kāi)發(fā)、項(xiàng)目設(shè)計(jì),自動(dòng)化改造等
【標(biāo)注說(shuō)明】
接線說(shuō)明
  
輸出控制設(shè)備

輸出舉例說(shuō)明(開(kāi)關(guān)量輸出、干接點(diǎn)輸出)
下載口說(shuō)明也可以UART

485通信說(shuō)明
默認(rèn)發(fā)貨程序協(xié)議提供源代碼客戶(hù)可以自己更改。
485通訊控制板通訊協(xié)議
波特率 9600
通訊協(xié)議格式如下:發(fā)送十六進(jìn)制
協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00~FF
01~05
00~FF
BB
解釋
第一個(gè)數(shù)據(jù)
第二個(gè)數(shù)據(jù)
第三個(gè)數(shù)據(jù)
第四個(gè)數(shù)據(jù)
最后一個(gè)數(shù)據(jù)
功能1:改變板子地址
舉例:更改地址:(發(fā)貨默認(rèn)地址00注意:多個(gè)板子并聯(lián)使用時(shí)需要不同地址

協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
01
01
BB
解釋
開(kāi)始數(shù)據(jù)
向00地址發(fā)送
改變地址
將地址改成01
數(shù)據(jù)結(jié)束
功能2:打開(kāi)某個(gè)繼電器
舉例:打開(kāi)第一塊板子的第一個(gè)繼電器

協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
02
01
BB
解釋
開(kāi)始數(shù)據(jù)
向00地址發(fā)送
打開(kāi)某路功能
打開(kāi)第一路
數(shù)據(jù)結(jié)束
功能3:關(guān)閉某個(gè)繼電器
舉例:關(guān)閉第二路板子的第三個(gè)繼電器

協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
01
03
03
BB
解釋
開(kāi)始數(shù)據(jù)
向01地址發(fā)送
關(guān)閉某路功能
關(guān)閉第三路
數(shù)據(jù)結(jié)束
功能4:打開(kāi)某塊板子的所有繼電器
舉例:打開(kāi)第一塊板子的全部繼電器

協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
04
FF
BB
解釋
開(kāi)始數(shù)據(jù)
向00地址發(fā)送
打開(kāi)所有功能
打開(kāi)所有繼電器
數(shù)據(jù)結(jié)束
功能5:關(guān)閉某塊板子的所有繼電器
舉例:關(guān)閉第三塊板子的全部繼電器

協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
02
05
00
BB
解釋
開(kāi)始數(shù)據(jù)
向02地址發(fā)送
關(guān)閉所有功能
關(guān)閉所有繼電器
數(shù)據(jù)結(jié)束
功能6:查詢(xún)繼電器狀態(tài)
舉例:查詢(xún)第一塊板子的第二路狀態(tài)

協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
06
02
BB
解釋
開(kāi)始數(shù)據(jù)
向00地址發(fā)送
查詢(xún)功能
查詢(xún)第二路
數(shù)據(jù)結(jié)束
查詢(xún)返回信息分析 繼電器關(guān)閉返回值(關(guān)閉返回00)
協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
07
00
BB
解釋
開(kāi)始數(shù)據(jù)
00地址返回
返回功能
繼電器狀態(tài)關(guān)閉
數(shù)據(jù)結(jié)束
查詢(xún)返回信息分析 繼電器打開(kāi)返回值(打開(kāi)返回01)
協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
07
01
BB
解釋
開(kāi)始數(shù)據(jù)
00地址返回
返回功能
繼電器狀態(tài)打開(kāi)
數(shù)據(jù)結(jié)束
板子地址清零控制
協(xié)議
啟始位
地址位
功能位
數(shù)據(jù)位
結(jié)束位
控制
AA
00
00
00
BB
解釋
開(kāi)始數(shù)據(jù)
00
地址清零

數(shù)據(jù)結(jié)束

原理圖(提供PDF格式的原理圖及PCB)更清晰
免費(fèi)提供與此工控板有關(guān)的:資料、例程、原理圖
芯片資料、軟件。
尺寸圖
【圖片展示】
配套DIN外殼效果

默認(rèn)發(fā)貨程序提供源代碼客戶(hù)可以自己更改。
  1. #include "main.h"
  2. #include "init.h"

  3. //#define address 0x00                    //板子地址
  4. #define ENABLE_IAP 0x83 //系統(tǒng)工作時(shí)鐘<12MHz 時(shí),對(duì)IAP_CONTR 寄存器設(shè)置此值
  5. #define CMD_IDLE 0jm
  6. #define CMD_READ 1
  7. #define CMD_PROGRAM 2
  8. #define CMD_ERASE 3
  9. #define ENABLE_IAP 0x83//SYSCLK<12MH
  10. #define IAP_ADDRESS 0x0000              //存儲(chǔ)地址
  11. sfr IAP_DATA = 0xE2;
  12. sfr IAP_ADDRH = 0xE3;
  13. sfr IAP_ADDRL = 0xE4;
  14. sfr IAP_CMD = 0xE5;
  15. sfr IAP_TRIG = 0xE6;
  16. sfr IAP_CONTR = 0xE7;

  17. uint8 add;    //掉電保持485的地址
  18. uint8 j=0;
  19. uint8 dat=0X00;   
  20. bit flag_zx=0;

  21. uint8 sendPosi=0;     //發(fā)送緩沖區(qū)指針
  22. uint8 receCount=0;    //接收緩沖區(qū)指針
  23. uint8 sendCount=0;    //需要發(fā)送數(shù)據(jù)個(gè)數(shù)
  24. uint8 receTimeOut=0;  //通訊超時(shí)值
  25. uint8 byteCount=5;    //發(fā)送個(gè)數(shù)

  26. uint8 sendBuf[10];                //發(fā)送緩沖區(qū)
  27. uint8 receBuf[10];    //接收緩沖區(qū)
  28. /********************************************************************
  29.                             定義 ISP/IAP/EEPROM 命令
  30. *********************************************************************/

  31. void IapIdle();//禁用 ISP/IAP/EEPROM functionmake 單片機(jī) 在 一 安全 狀態(tài)
  32. uint8 IapReadByte(uint16 addr);//讀數(shù)據(jù)
  33. void IapProgramByte(uint16 addr, uint8 dat);//寫(xiě)數(shù)據(jù)
  34. void IapEraseSector(uint16 addr);//擦除數(shù)據(jù)


  35. void delay()//延時(shí)程序
  36. {
  37.               uint8 m,n,s;
  38.               for(m=100;m>0;m--)
  39.               for(n=200;n>0;n--)
  40.               for(s=248;s>0;s--);
  41. }




  42. /****************發(fā)送函數(shù)*********************/
  43. void senduart2()
  44. {
  45.     sendPosi++;
  46.     SBUF=sendBuf[0];
  47. }
  48. /*****************清空發(fā)送緩沖區(qū)*************************/
  49. void clear_receBuf()
  50. {
  51.     uint8 i;
  52.               for(i=0;i<8;i++)
  53.               {
  54.                   receBuf[i]=0;
  55.               }
  56. }
  57. void main()
  58. {
  59.               delay();
  60.     clear_receBuf();
  61.     add= IapReadByte(0x01);//讀取存儲(chǔ)的值
  62.               if(add==0xff)
  63.                  add=0x00;
  64.     t0_init(1);     //1ms
  65.     ConfigUART1(9600);
  66.               TR0=1;
  67.               EA=1;

  68.                                  

  69.     while(1)
  70.               {

  71.                  if(flag_zx==1)
  72.                  {  
  73.                       flag_zx=0;
  74.                                 //0         1       2       3        4                           
  75.                                           //起始位   地址位  功能位   數(shù)據(jù)位  結(jié)束位
  76.                                           if((receBuf[0]==0xaa)&&(receBuf[4]==0xbb)&&(receBuf[1]==add))                //如果開(kāi)始位和結(jié)束位,還有地址都正確,進(jìn)行下一步判斷
  77.                                           {
  78.                                              if(receBuf[2]==0x01)  //修改板子地址
  79.                                              {
  80.                                                   add=receBuf[3];
  81.                                                             IapEraseSector(0);  //擦除扇區(qū)
  82.                     IapProgramByte(0x01,add);//寫(xiě)入新的地址                                      
  83.                                              }
  84.                                              else if(receBuf[2]==0x02)  //打開(kāi)單路繼電器
  85.                                              {
  86.                                                                switch(receBuf[3])
  87.                                                                       {
  88.                                                                           case 0x01: OUT1=0; break;
  89.                                                                                     case 0x02: OUT2=0; break;
  90.                                                                                     case 0x03: OUT3=0; break;
  91.                                                                                     case 0x04: OUT4=0; break;
  92.                                                                                     case 0x05: OUT5=0; break;
  93.                                                                                     case 0x06: OUT6=0; break;
  94.                                                                                     case 0x07: OUT7=0; break;
  95.                                                                                     case 0x08: OUT8=0; break;
  96.                                                                       }
  97.                                              }
  98.                                              else if(receBuf[2]==0x03)  //關(guān)閉單路繼電器
  99.                                              {
  100.                                                                switch(receBuf[3])
  101.                                                                       {
  102.                                                                           case 0x01: OUT1=1; break;
  103.                                                                                     case 0x02: OUT2=1; break;
  104.                                                                                     case 0x03: OUT3=1; break;
  105.                                                                                     case 0x04: OUT4=1; break;
  106.                                                                                     case 0x05: OUT5=1; break;
  107.                                                                                     case 0x06: OUT6=1; break;
  108.                                                                                     case 0x07: OUT7=1; break;
  109.                                                                                     case 0x08: OUT8=1; break;
  110.                                                                       }                                 
  111.                                              }
  112.                                              else if(receBuf[2]==0x04)  //打開(kāi)全部繼電器
  113.                                              {
  114.                                                   if(receBuf[3]==0xff)
  115.                                                   {
  116.                                                                           OUT1=0;
  117.                                                                                     OUT2=0;
  118.                                                                                     OUT3=0;
  119.                                                                                     OUT4=0;
  120.                                                                                     OUT5=0;
  121.                                                                                     OUT6=0;
  122.                                                                                     OUT7=0;
  123.                                                                                     OUT8=0;
  124.                                                                       }
  125.                                              }
  126.                                              else if(receBuf[2]==0x05)  //關(guān)閉全部繼電器
  127.                                              {
  128.                                                   if(receBuf[3]==0x00)
  129.                                                   {
  130.                                                                           OUT1=1;
  131.                                                                                     OUT2=1;
  132.                                                                                     OUT3=1;
  133.                                                                                     OUT4=1;
  134.                                                                                     OUT5=1;
  135.                                                                                     OUT6=1;
  136.                                                                                     OUT7=1;
  137.                                                                                     OUT8=1;
  138.                                                                       }                                 
  139.                                              }
  140.                                              else if(receBuf[2]==0x06)  //查詢(xún)繼電器
  141.                                              {
  142.                                                                       sendBuf[0]=0xaa;
  143.                                                                       sendBuf[1]=add;
  144.                                                                       sendBuf[2]=0x07;
  145.                                                                       //sendBuf[3]=0xfe;
  146.                                                                       sendBuf[4]=0xbb;
  147.                                                                       senduart2();
  148.                                                  switch(receBuf[3])
  149.                                                            {
  150.                                                                case 0x01: if(OUT1==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  151.                                                                          case 0x02: if(OUT2==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  152.                                                                          case 0x03: if(OUT3==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  153.                                                                          case 0x04: if(OUT4==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  154.                                                                          case 0x05: if(OUT5==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  155.                                                                          case 0x06: if(OUT6==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  156.                                                                          case 0x07: if(OUT7==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  157.                                                                          case 0x08: if(OUT8==0) sendBuf[3]=0xFF;else sendBuf[3]=0x00;break;
  158.                                                                          default:break;
  159.                                                            }
  160.                                              }                                          
  161.                                           }
  162.                                           if((receBuf[0]==0xaa)&&(receBuf[1]==0x00)&&(receBuf[2]==0x00)&&(receBuf[3]==0x00)&&(receBuf[4]==0xbb))
  163.                                           {
  164.                                                   add=0x00;
  165.                                                             IapEraseSector(0);  //擦除扇區(qū)
  166.                     IapProgramByte(0x01,0x00);//寫(xiě)入新的地址                                                         
  167.                                           }
  168.                                           clear_receBuf();
  169.                             }
  170.               }
  171. }


  172. /**********************************************************
  173. 放在主函數(shù),定時(shí)0溢出中斷函數(shù),
  174. *********************/
  175. void t0(void) interrupt 1 using 0 //定時(shí)中斷服務(wù)函數(shù)
  176. {
  177.                 TH0=T0RH;
  178.               TL0=T0RL;
  179.               if(receTimeOut>0)                 
  180.               {
  181.                     receTimeOut--;
  182.                               if((receTimeOut==0)&&(receCount>0))    //如果10ms接收不到數(shù)據(jù),把數(shù)據(jù)指針清零,重新更新緩沖區(qū)
  183.                               {
  184.                                              receCount=0;                      //接收緩沖區(qū)指針
  185.                               }
  186.               }
  187. }
  188. /********************* 串口1中斷服務(wù)函數(shù) ********************************/
  189. void InterruptUART() interrupt 4
  190. {
  191.               if(TI)
  192.               {
  193.                             TI = 0;
  194.                             if(sendPosi<byteCount)
  195.         {
  196.                      SBUF=sendBuf[sendPosi];                           
  197.                      sendPosi++;
  198.                   }
  199.                   else
  200.                      sendPosi=0;
  201.                    }
  202.               else if(RI)
  203.               {
  204.                             RI = 0;
  205.                             receTimeOut = 10;    //通訊超時(shí)值
  206.                             receBuf[receCount] = SBUF;
  207.                             receCount++;          //接收地址偏移寄存器加1
  208.                             if(receCount>4)
  209.                               flag_zx=1;
  210.                             receCount &= 0x0f;    //最多一次只能接收16個(gè)字節(jié)
  211.               }
  212. }

  213. void IapIdle(){//禁用 ISP/IAP/EEPROM functionmake 單片機(jī) 在 一 安全 狀態(tài)
  214.     IAP_CONTR = 0;                 //
  215.               IAP_CMD = 0;                 //
  216.               IAP_TRIG = 0;                 //
  217.               IAP_ADDRH = 0x80;  //
  218.               IAP_ADDRL = 0;                 //
  219. }
  220. uint8 IapReadByte(uint16 addr){//讀數(shù)據(jù)
  221.    uint8 dat;
  222.    IAP_CONTR = ENABLE_IAP;
  223.    IAP_CMD = CMD_READ;
  224.    IAP_ADDRL = addr;
  225.    IAP_ADDRH = addr >> 8;
  226.    IAP_TRIG = 0x46;
  227.    IAP_TRIG = 0xb9;
  228.    _nop_();
  229.    dat = IAP_DATA;
  230.    IapIdle();
  231.    return dat;
  232. }
  233. void IapProgramByte(uint16 addr, uint8 dat){//寫(xiě)數(shù)據(jù)
  234.    IAP_CONTR = ENABLE_IAP;
  235.    IAP_CMD = CMD_PROGRAM;
  236.    IAP_ADDRL = addr;
  237.    IAP_ADDRH = addr >> 8;
  238.    IAP_DATA = dat;
  239.    IAP_TRIG = 0x46;
  240.    IAP_TRIG = 0xb9;
  241.    _nop_();
  242.    IapIdle();
  243. }
  244. void IapEraseSector(uint16 addr){//擦除數(shù)據(jù)
  245.    IAP_CONTR = ENABLE_IAP;
  246.    IAP_CMD = CMD_ERASE;
  247.    IAP_ADDRL = addr;
  248.    IAP_ADDRH = addr >> 8;
  249.    IAP_TRIG = 0x46;
  250.    IAP_TRIG = 0xb9;
  251.    _nop_();
  252.    IapIdle();
  253. }
復(fù)制代碼
0.png

全部資料51hei下載地址:
GYJ-0099_458通訊控制工控板八路控制發(fā)貨資料.rar (9.45 MB, 下載次數(shù): 28)


回復(fù)

使用道具 舉報(bào)

ID:338810 發(fā)表于 2018-10-12 13:28 | 顯示全部樓層
黑幣太貴了,希望有用
回復(fù)

使用道具 舉報(bào)

ID:140085 發(fā)表于 2018-11-9 15:26 | 顯示全部樓層
波特率可以修改嗎,只能9600?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: www.久久久久久久久 | 国产精品一区在线 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 国产最新网址 | 九色综合网 | 欧美色a v| 在线中文字幕第一页 | 麻豆国产一区二区三区四区 | 亚洲综合精品 | 黄色免费在线观看网址 | 男女羞羞视频免费 | 亚洲视频中文字幕 | 欧美精品一 | 日韩成人精品在线 | 久草网免费 | 日本在线网址 | 精品久久久久久久久久久久久久 | 成人av免费 | 91.色| 久久久久久免费毛片精品 | 黄色在线观看 | 国产资源视频 | a级黄色网 | 久草新在线 | 日本精品一区二区三区在线观看视频 | 日日日干干干 | 鸳鸯谱在线观看高清 | 亚洲一区二区视频在线播放 | 欧美视频第二页 | 日本精品一区二区三区视频 | 一本一道久久a久久精品蜜桃 | 日韩在线免费视频 | 久久久久久免费观看 | 97精品超碰一区二区三区 | 国外激情av | 国产精品久久久久久久久 | 成年女人免费v片 | 欧美三区 | 视频一区二区三区四区五区 | 狠狠干美女 | 久久久噜噜噜www成人网 |