有用过GM8125做串口拓展的吗??

2020-01-26 12:52发布

小弟最近在弄一个一转多串口的板子,调试了很久都不行,望大神指导..
不知道电路是否有问题。程序和电路都是按照官方给的做的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
xyz2008
1楼-- · 2020-01-26 17:52
7,8年以前用过
HadesHe
2楼-- · 2020-01-26 23:24
很老的片子了 现在32随便一个都串口5++
HadesHe
3楼-- · 2020-01-27 04:18
 精彩回答 2  元偷偷看……
wushifeng
4楼-- · 2020-01-27 07:28
HadesHe 发表于 2013-10-22 17:03
我会告诉你可能是电平不匹配吗

片子是有点老,因为是新手,所以选择了相对简单一点的方案。我调试的时候,将单片机串口的收发绕过GM8125收发是正常的。但是一旦把收发接到Gm8125上就没反应了。
HadesHe
5楼-- · 2020-01-27 11:39
wushifeng 发表于 2013-10-22 17:12
片子是有点老,因为是新手,所以选择了相对简单一点的方案。我调试的时候,将单片机串口的收发绕过GM8125 ...

那你现在是收不到还是发不出去呢?你CPU是5.0V的而8125是3.3V的 估计单片机接收不到数据
wushifeng
6楼-- · 2020-01-27 11:49
如果单片机和GM8125相连,接收不到也发不出去。你看看是不是我的代码有问题?
  1. /**************************************************************/
  2. /*CPU£ºAT89C51 */
  3. /*¾§ÌåƵÂÊ£º22.1184M */
  4. /*»úÆ÷ÖÜÆÚ£º0.54us */
  5. /*C51 */
  6. /**************************************************************/
  7. #include <stc12c5a60s2.h>
  8. #define DELAY_TIME 60000 //Delay time
  9. #define DELAY_TIME1 1

  10. /**********************I/O¶¨Òå***********************/
  11. sbit MS=P3^6; //GM8125¹¤×÷ģʽ¿ØÖÆ
  12. sbit RESET=P3^7; //GM8125¸´Î»Òý½Å¿ØÖÆ
  13. sbit SRADD0=P0^0;//GM8125½ÓÊÕµØÖ·µÚһλ
  14. sbit SRADD1=P0^1;//GM8125½ÓÊÕµØÖ·µÚ¶þλ
  15. sbit SRADD2=P0^2;//GM8125½ÓÊÕµØÖ·µÚÈýλ
  16. sbit STADD0=P0^4;//GM8125·¢Ë͵ØÖ·µÚһλ
  17. sbit STADD1=P0^5;//GM8125·¢Ë͵ØÖ·µÚ¶þλ
  18. sbit STADD2=P0^6;//GM8125·¢Ë͵ØÖ·µÚÈýλ

  19. /******************Êý¾Ý±äÁ¿¶¨Òå*****************/
  20. unsigned char SendBuff[5]={0xaa,0x45,0x67,0xbc,0xc9};
  21. unsigned char ReceiveBuff0;
  22. unsigned char ReceiveBuff1;
  23. unsigned char ReceiveBuff2;
  24. unsigned char ReceiveBuff3;
  25. unsigned char ReceiveBuff4;
  26. unsigned char ReceiveBuff5;
  27. unsigned char Contr_data;
  28. unsigned char ADD;

  29. unsigned char i=0 ,j1=0 ,j2=0 ,j3=0 ,j4=0 ,j5=0 ,c=0;
  30. /*********************************************/
  31. /*º¯ÊýÃû³Æ£ºdelay.C */
  32. /*º¯Êý¹¦ÄÜ£º ÑÓʱ³ÌÐò */
  33. /*********************************************/
  34. void delay(unsigned int m)
  35. {
  36. unsigned int n;
  37. n=0;
  38. while(n < m)
  39. {n++;}
  40. return;
  41. }



  42. /*********************************************/
  43. /*º¯ÊýÃû³Æ£ºsend0.c */
  44. /*º¯Êý¹¦ÄÜ£º Ñ¡Ôñ0¿ÚµØÖ· */
  45. /*********************************************/
  46. void sendwrite0()
  47. {
  48.         STADD0=0;
  49.         STADD1=0;
  50.         STADD2=0;
  51. }

  52. void sendread0()
  53. {
  54.         STADD0=0;
  55.         STADD1=0;
  56.         STADD2=0;
  57.         SRADD0=0;
  58.         SRADD1=0;
  59.         SRADD2=0;
  60. }




  61. /*********************************************/
  62. /*º¯ÊýÃû³Æ£ºsend1.c */
  63. /*º¯Êý¹¦ÄÜ£º Ñ¡Ôñ1¿ÚµØÖ· */
  64. /*********************************************/
  65. void send1()
  66. {
  67.         STADD0=1;
  68.         STADD1=0;
  69.         STADD2=0;
  70. }
  71. /*********************************************/
  72. /*º¯ÊýÃû³Æ£ºsend0.c */
  73. /*º¯Êý¹¦ÄÜ£º Ñ¡Ôñ2¿ÚµØÖ· */
  74. /*********************************************/
  75. void send2()
  76. {
  77.         STADD0=0;
  78.         STADD1=1;
  79.         STADD2=0;
  80. }
  81. /*********************************************/
  82. /*º¯ÊýÃû³Æ£ºsend0.c */
  83. /*º¯Êý¹¦ÄÜ£º Ñ¡Ôñ3¿ÚµØÖ· */
  84. /*********************************************/
  85. void send3()
  86. {
  87.         STADD0=1;
  88.         STADD1=1;
  89.         STADD2=0;
  90. }
  91. /*********************************************/
  92. /*º¯ÊýÃû³Æ£ºsend0.c */
  93. /*º¯Êý¹¦ÄÜ£º Ñ¡Ôñ4¿ÚµØÖ· */
  94. /*********************************************/
  95. void send4()
  96. {
  97.         STADD0=0;
  98.         STADD1=0;
  99.         STADD2=1;
  100. }
  101. /*********************************************/
  102. /*º¯ÊýÃû³Æ£ºsend0.c */
  103. /*º¯Êý¹¦ÄÜ£º Ñ¡Ôñ5¿ÚµØÖ· */
  104. /*********************************************/
  105. void send5()
  106. {
  107.         STADD0=1;
  108.         STADD1=0;
  109.         STADD2=1;
  110. }



  111. /*********************************************/
  112. /*º¯ÊýÃû³Æ£ºsend1_data.c */
  113. /*º¯Êý¹¦ÄÜ£º1¿Ú·¢ÉäÊý¾Ý
  114. /*********************************************/
  115. void send1_data()
  116. {
  117.         send1();
  118.         SBUF=ReceiveBuff1;
  119.         while(!TI);
  120.         TI=0;
  121. }
  122. /*********************************************/
  123. /*º¯ÊýÃû³Æ£ºsend2_data.c */
  124. /*º¯Êý¹¦ÄÜ£º2¿Ú·¢ÉäÊý¾Ý
  125. /*********************************************/
  126. void send2_data()
  127. {
  128.         send2();
  129.         SBUF=ReceiveBuff2;
  130.         while(!TI);
  131.         TI=0;
  132. }
  133. /*********************************************/
  134. /*º¯ÊýÃû³Æ£ºsend3_data.c */
  135. /*º¯Êý¹¦ÄÜ£º3¿Ú·¢ÉäÊý¾Ý
  136. /*********************************************/
  137. void send3_data()
  138. {
  139.         send3();
  140.         SBUF=ReceiveBuff3;
  141.         while(!TI);
  142.         TI=0;
  143. }
  144. /*********************************************/
  145. /*º¯ÊýÃû³Æ£ºsend3_data.c */
  146. /*º¯Êý¹¦ÄÜ£º4¿Ú·¢ÉäÊý¾Ý
  147. /*********************************************/
  148. void send4_data()
  149. {
  150.         send4();
  151.         SBUF=ReceiveBuff4;
  152.         while(!TI);
  153.         TI=0;
  154. }
  155. /*********************************************/
  156. /*º¯ÊýÃû³Æ£ºsend3_data.c */
  157. /*º¯Êý¹¦ÄÜ£º5¿Ú·¢ÉäÊý¾Ý
  158. /*********************************************/
  159. void send5_data()
  160. {
  161.         send5();
  162.         SBUF=ReceiveBuff5;
  163.         while(!TI);
  164.         TI=0;
  165. }
  166. void main()
  167. {
  168.         TMOD= 0x20; //Ö¸¶¨¶¨Ê±Æ÷1¹¤×÷ÔÚ·½Ê½2
  169.         IE = 0x90; //¿ª´®ÐпÚÖжÏ
  170.         SCON=0xc0; //´®Ðпڹ¤×÷ÔÚ·½Ê½3
  171.         TH1 = 0xf8; //×°È붨ʱÆ÷1³õÖµ,ÉèÖÃÖ÷»ú¹¤×÷²¨ÌØÂÊΪ7200bps
  172.         TL1 = 0xf8;
  173.         PCON=0x00;
  174.         RESET=0; //¶ÔGM8125½øÐи´Î»²Ù×÷
  175.         RESET=1;
  176.         delay(DELAY_TIME);
  177.         Contr_data=0xfc; //×°ÈëÃüÁî×Ö³õÖµ
  178.         TR1=1; //Æô¶¯¶¨Ê±Æ÷1
  179.     MS=0;
  180.         sendwrite0();
  181.         SBUF=Contr_data; //ÉèÖÃGM8125×Ó´®¿Ú²¨ÌØÂÊΪ19200bps£¬Ä¸´®¿Ú²¨ÌØÂÊΪ115200bps
  182.         while(!TI);
  183.         TI=0;
  184.         delay(DELAY_TIME);
  185.         REN=1;
  186.         MS=1; //¶ÁÃüÁî×Ö
  187.         sendread0();
  188.         delay(DELAY_TIME);
  189.         while (ReceiveBuff0!=Contr_data) //Ñé֤дÈëµÄÃüÁî×ÖÊÇ·ñÕýÈ·£¬²»ÕýÈ·ÔòÖØÐÂд
  190.         {
  191.         MS=0; //GM8125¹¤×÷ÔÚдÃüÁî×Ö¹¤×÷ģʽÏÂ
  192.         sendwrite0();
  193.         SBUF=Contr_data;       
  194.         while(!TI);
  195.         TI=0;
  196.         delay(DELAY_TIME);
  197.         REN=1;
  198.         MS=1; //¶ÁÃüÁî×Ö
  199.         sendread0();
  200.         delay(DELAY_TIME);
  201.         }
  202.         REN=0;
  203.         MS=0; //ÉèÖÃGM8125¹¤×÷ÔÚ¶àͨµÀ¹¤×÷ģʽÏÂ
  204.         TR1=0; //¶¨Ê±Æ÷1Í£Ö¹
  205.         TH1 = 0xff; //×°È붨ʱÆ÷1³õÖµ,ÉèÖÃÖ÷¿ØMCU¹¤×÷²¨ÌØÂÊΪ115200bps
  206.         TL1 = 0xff;
  207.         PCON=0x80;
  208.         TR1=1; //Æô¶¯¶¨Ê±Æ÷1
  209.     ReceiveBuff1=0X01;
  210.         ReceiveBuff2=0X02;
  211.         ReceiveBuff3=0X03;
  212.         ReceiveBuff4=0X04;
  213.         ReceiveBuff5=0X05;
  214.     while(1)
  215.     {
  216.       send1_data();
  217.           delay(DELAY_TIME);
  218.       
  219.       send2_data();
  220.           delay(DELAY_TIME);

  221.       send3_data();
  222.           delay(DELAY_TIME);

  223.       send4_data();
  224.           delay(DELAY_TIME);

  225.       send5_data();
  226.           delay(DELAY_TIME);
  227.     }
  228. }


  229. void CommReceive(void) interrupt 4
  230. {
  231.         int i;
  232.         if(RI)
  233.         {
  234.             for(i=0;i<1;i++)
  235.             {
  236.                  if(SRADD2==0&&SRADD1==0&&SRADD0==0)
  237.                  {
  238.                     ReceiveBuff0=SBUF; //¶ÁÃüÁî×Ö´æÈëReceiveBuff0
  239.                     break;
  240.                          }
  241.                          if(SRADD2==0&&SRADD1==0&&SRADD0==1)
  242.                  {
  243.                     ReceiveBuff1=SBUF; //¶ÁÃüÁî×Ö´æÈëReceiveBuff0
  244.                     break;
  245.                           }
  246.                           if(SRADD2==0&&SRADD1==1&&SRADD0==0)
  247.                   {
  248.                      ReceiveBuff2=SBUF; //¶ÁÃüÁî×Ö´æÈëReceiveBuff0
  249.                      break;
  250.                           }
  251.                           if(SRADD2==0&&SRADD1==1&&SRADD0==1)
  252.                   {
  253.                     ReceiveBuff3=SBUF; //¶ÁÃüÁî×Ö´æÈëReceiveBuff0
  254.                     break;
  255.                              }
  256.                           if(SRADD2==1&&SRADD1==0&&SRADD0==0)
  257.                   {
  258.                     ReceiveBuff4=SBUF; //¶ÁÃüÁî×Ö´æÈëReceiveBuff0
  259.                     break;
  260.                              }
  261.                           if(SRADD2==1&&SRADD1==0&&SRADD0==1)
  262.                   {
  263.                     ReceiveBuff5=SBUF; //¶ÁÃüÁî×Ö´æÈëReceiveBuff0
  264.                     break;
  265.                              }
  266.                   }
  267.                   RI=0;
  268.         }
  269. return;
  270. }
复制代码

一周热门 更多>