标题: 单片机RS485串行通信模拟仿真通讯Proteus工程+源代码 [打印本页]

作者: 明威    时间: 2018-11-26 22:51
标题: 单片机RS485串行通信模拟仿真通讯Proteus工程+源代码
RS485串行口模拟仿真通讯,课程设计
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<AT89X52.H>//AT89X52.h指的就是s或c都可以用。C和S在看门狗、定时器上面有一定的区别,因而实际应用该单片机时要包含对应的头文件

  2. #define uchar unsigned char
  3. #define uint   unsigned int

  4. bit FS_Bit = 0;   //发送标志位

  5. code  uchar  TEXT0[] = "next\r\n\n";
  6. code  uchar  TEXT1[] = "祝老师身体健康\r\n\n";


  7. void delay(uint i);   //延时函数
  8. void Uart_Char(uchar Value); //发送一个数据
  9. void Prints(uchar *Value);  //发送一组数据

  10. void main(void)
  11. {

  12. TMOD = 0x20;         //设置波特率为9600和定时器1工作方式
  13. TL1 = 0xFD;          //设置初始值
  14. TH1 = 0xFD;
  15. SCON = 0x50;         //设置串行口工作方式
  16. PCON = 0x00;
  17. TR1 = 1;           //允许发送
  18. ET0 = 1;           //启动定时器
  19. ES = 1;           //串行中断允许
  20. EA = 1;
  21.         //发送数据
  22.          Prints(TEXT0);
  23.    Prints(TEXT1);

  24.   
  25.    delay(60000);       //延时
  26.         while(1);
  27. }

  28. void INIT_Uart(void) interrupt 4
  29. {
  30. if(RI)           //如果收到数据
  31.   {
  32.    RI = 0;
  33.   }
  34. else
  35.   {
  36.    TI = 0;         //发送完一个数据
  37.    FS_Bit = 0;        //清标志位
  38.   }
  39. }





  40. //发送一个数据
  41. void Uart_Char(uchar Value)
  42. {
  43. SBUF = Value;         //发送数据
  44. FS_Bit = 1;          //设置发送标志位
  45. while(FS_Bit);
  46. }




  47. //发送一组数据
  48. void Prints(uchar *Value)
  49. {
  50. while((*Value) != '\0')        //如果没有发送完毕
  51.   {
  52.    Uart_Char(*Value);      //发送一位数据
  53.    Value++;         //指针指向下一位数据
  54.   }
  55. }



  56. //延时函数
  57. void delay(uint i)
  58.     {
  59.       while(--i );
  60.    }
复制代码

所有资料51hei提供下载:
串行口模拟仿真通讯.zip (70.22 KB, 下载次数: 87)



作者: hf6    时间: 2018-12-1 14:59
图片与内容不相符,差评
作者: littlejia    时间: 2019-10-21 19:14
不符就是没有参考价值了呗

作者: lcw996    时间: 2019-10-30 08:16
参考一下,感谢楼主
作者: fontex    时间: 2019-12-20 08:20
正在学习RS485,谢谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1