標(biāo)題: 51單片機(jī)串口發(fā)送數(shù)據(jù)道上位機(jī)客戶端 [打印本頁]

作者: dabing89    時間: 2018-10-22 09:23
標(biāo)題: 51單片機(jī)串口發(fā)送數(shù)據(jù)道上位機(jī)客戶端
本帖最后由 dabing89 于 2018-10-22 09:25 編輯

串口的應(yīng)用是及其廣泛的,串口是單片機(jī)和外部設(shè)備聯(lián)系的通道,比如掃描槍,掃描儀,熱敏打印機(jī)等等,好多接口都是232或者485接口,如果沒有串口,單片機(jī)就只能和自己玩,這是很無聊的,串口分為收信息和發(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)



作者: kbli    時間: 2020-5-17 10:40
謝謝分享
作者: wyl138    時間: 2022-10-31 19:34
對初學(xué)者的我來說,這很直觀和實(shí)用.謝謝樓主.




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1