找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9630|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機串口發(fā)送數(shù)據(jù)道上位機客戶端

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74187 發(fā)表于 2018-10-22 09:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 dabing89 于 2018-10-22 09:25 編輯

串口的應(yīng)用是及其廣泛的,串口是單片機和外部設(shè)備聯(lián)系的通道,比如掃描槍,掃描儀,熱敏打印機等等,好多接口都是232或者485接口,如果沒有串口,單片機就只能和自己玩,這是很無聊的,串口分為收信息和發(fā)信息,我們先來看一下發(fā)信息,下面程序的作用是將HELLO WORLD通過串口軟件,在電腦上顯示出來。
  1. /********************************************************
  2. *描述:串口發(fā)送“hello world” 到電腦上  數(shù)據(jù)幀格式 9600 N 8 1
  3. *      
  4. QQ597627977
  5. ********************************************************/
  6. #include "stc15w.h"
  7. #include "string.h"//字符串比較函數(shù)


  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. * 文件名:函數(shù)前置聲明
  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);        //多字節(jié)
  32. void Usart1_Write_Byte(unsigned char buf);//單字節(jié)

  33. /*******************************************************************************
  34. * 文件名:主循環(huán)入口
  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); //發(fā)送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位數(shù)據(jù),可變波特率
  61.         AUXR &= 0xBF;                //定時器1時鐘為Fosc/12,即12T
  62.         AUXR &= 0xFE;                //串口1選擇定時器1為波特率發(fā)生器
  63.         TMOD &= 0x0F;                //設(shè)定定時器1為16位自動重裝方式
  64.         TL1 = 0xE8;                       //設(shè)定定時初值
  65.         TH1 = 0xFF;                    //設(shè)定定時初值
  66.         ET1 = 0;                    //禁止定時器1中斷
  67.         TR1 = 1;                    //啟動定時器1
  68. }

  69. /*******************************************************************************
  70. * 文件名:void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
  71. * 描  述: 串口數(shù)據(jù)寫入函數(shù),即串口發(fā)送函數(shù),待發(fā)送數(shù)據(jù)指針 buf,數(shù)據(jù)長度 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發(fā)送數(shù)據(jù)
  81.                 while(TI == 0);//等待發(fā)送結(jié)束
  82.                 TI = 0;
  83.         }
  84. }

  85. /*******************************************************************************
  86. * 文件名:void Usart1_Write_Byte(unsigned char buf)
  87. * 描  述: 串口數(shù)據(jù)寫入函數(shù),即串口發(fā)送函數(shù),待發(fā)送數(shù)據(jù)指針 buf,數(shù)據(jù)長度 len
  88. * 功  能:
  89. * 作  者:大核桃
  90. * 版本號:1.0.1(2017.05.23)
  91. *******************************************************************************/
  92. void Usart1_Write_Byte(unsigned char buf)
  93. {
  94.         SBUF = buf;//向串口1發(fā)送數(shù)據(jù)
  95.         while(TI == 0);//等待發(fā)送結(jié)束
  96.         TI = 0;
  97. }



復(fù)制代碼


014 串口發(fā).rar (32.1 KB, 下載次數(shù): 135)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:743449 發(fā)表于 2020-5-17 10:40 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

板凳
ID:1049825 發(fā)表于 2022-10-31 19:34 | 只看該作者
對初學(xué)者的我來說,這很直觀和實用.謝謝樓主.
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表