找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8989|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机串口发送数据道上位机客户端

[复制链接]
跳转到指定楼层
楼主
本帖最后由 dabing89 于 2018-10-22 09:25 编辑

串口的应用是及其广泛的,串口是单片机和外部设备联系的通道,比如扫描枪,扫描仪,热敏打印机等等,好多接口都是232或者485接口,如果没有串口,单片机就只能和自己玩,这是很无聊的,串口分为收信息和发信息,我们先来看一下发信息,下面程序的作用是将HELLO WORLD通过串口软件,在电脑上显示出来。
  1. /********************************************************
  2. *描述:串口发送“hello world” 到电脑上  数据帧格式 9600 N 8 1
  3. *      
  4. QQ597627977
  5. ********************************************************/
  6. #include "stc15w.h"
  7. #include "string.h"//字符串比较函数


  8. /*******************************************************************************
  9. * 文件名:位定义
  10. * 描  述:
  11. * 功  能:
  12. * 作  者:大核桃
  13. * 版本号:1.0.1(2017.05.23)
  14. *******************************************************************************/
  15. typedef unsigned char uint8;
  16. typedef unsigned int  uint16;
  17. typedef unsigned long uint32;

  18. bit flag_led = 0;
  19. uint8 Usart1_Cmd = 0;
  20. uint8 Usart1_RxdBuf[20];
  21. uint8 Usart1_Cnt = 0;

  22. sbit LED0 = P1^0;

  23. /*******************************************************************************
  24. * 文件名:函数前置声明
  25. * 描  述:
  26. * 功  能:
  27. * 作  者:大核桃
  28. * 版本号:1.0.1(2017.05.23)
  29. *******************************************************************************/void Bsp_Power_Init(void);
  30. void UartInit(void);                //9600bps@11.0592MHz
  31. void Usart1_Write_NByte(unsigned char *buf, unsigned char len);        //多字节
  32. void Usart1_Write_Byte(unsigned char buf);//单字节

  33. /*******************************************************************************
  34. * 文件名:主循环入口
  35. * 描  述:
  36. * 功  能:
  37. * 作  者:大核桃
  38. * 版本号:1.0.1(2017.05.23)
  39. *******************************************************************************/
  40. void main(void)
  41. {
  42.         UartInit();                //9600bps@11.0592MHz

  43.         Usart1_Write_NByte("hello world\r\n", sizeof("hello world\r\n") - 1); //发送HELLO WORLD 到串口        
  44. //  Usart1_Write_Byte('h');
  45. //        Usart1_Write_Byte('e');
  46. //        Usart1_Write_Byte('l');
  47. //        Usart1_Write_Byte('l');
  48. //        Usart1_Write_Byte('o');

  49.         while(1);
  50. }

  51. /*******************************************************************************
  52. * 文件名:void UartInit(void)                //9600bps@11.0592MHz
  53. * 描  述: 串口配置
  54. * 功  能:
  55. * 作  者:大核桃
  56. * 版本号:1.0.1(2017.05.23)
  57. *******************************************************************************/
  58. void UartInit(void)                //9600bps@11.0592MHz
  59. {
  60.         SCON = 0x50;                //8位数据,可变波特率
  61.         AUXR &= 0xBF;                //定时器1时钟为Fosc/12,即12T
  62.         AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
  63.         TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
  64.         TL1 = 0xE8;                       //设定定时初值
  65.         TH1 = 0xFF;                    //设定定时初值
  66.         ET1 = 0;                    //禁止定时器1中断
  67.         TR1 = 1;                    //启动定时器1
  68. }

  69. /*******************************************************************************
  70. * 文件名:void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
  71. * 描  述: 串口数据写入函数,即串口发送函数,待发送数据指针 buf,数据长度 len
  72. * 功  能:
  73. * 作  者:大核桃
  74. * 版本号:1.0.1(2017.05.23)
  75. *******************************************************************************/
  76. void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
  77. {
  78.         while (len--)
  79.         {
  80.                 SBUF = *buf++;//向串口1发送数据
  81.                 while(TI == 0);//等待发送结束
  82.                 TI = 0;
  83.         }
  84. }

  85. /*******************************************************************************
  86. * 文件名:void Usart1_Write_Byte(unsigned char buf)
  87. * 描  述: 串口数据写入函数,即串口发送函数,待发送数据指针 buf,数据长度 len
  88. * 功  能:
  89. * 作  者:大核桃
  90. * 版本号:1.0.1(2017.05.23)
  91. *******************************************************************************/
  92. void Usart1_Write_Byte(unsigned char buf)
  93. {
  94.         SBUF = buf;//向串口1发送数据
  95.         while(TI == 0);//等待发送结束
  96.         TI = 0;
  97. }



复制代码


014 串口发.rar (32.1 KB, 下载次数: 134)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:743449 发表于 2020-5-17 10:40 | 只看该作者
谢谢分享
回复

使用道具 举报

板凳
ID:1049825 发表于 2022-10-31 19:34 | 只看该作者
对初学者的我来说,这很直观和实用.谢谢楼主.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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