標(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通過串口軟件,在電腦上顯示出來。
/********************************************************
*描述:串口發(fā)送“hello world” 到電腦上 數(shù)據(jù)幀格式 9600 N 8 1
*
QQ597627977
********************************************************/
#include "stc15w.h"
#include "string.h"//字符串比較函數(shù)
/*******************************************************************************
* 文件名:位定義
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本號:1.0.1(2017.05.23)
*******************************************************************************/
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
bit flag_led = 0;
uint8 Usart1_Cmd = 0;
uint8 Usart1_RxdBuf[20];
uint8 Usart1_Cnt = 0;
sbit LED0 = P1^0;
/*******************************************************************************
* 文件名:函數(shù)前置聲明
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本號:1.0.1(2017.05.23)
*******************************************************************************/void Bsp_Power_Init(void);
void UartInit(void); //9600bps@11.0592MHz
void Usart1_Write_NByte(unsigned char *buf, unsigned char len); //多字節(jié)
void Usart1_Write_Byte(unsigned char buf);//單字節(jié)
/*******************************************************************************
* 文件名:主循環(huán)入口
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本號:1.0.1(2017.05.23)
*******************************************************************************/
void main(void)
{
UartInit(); //9600bps@11.0592MHz
Usart1_Write_NByte("hello world\r\n", sizeof("hello world\r\n") - 1); //發(fā)送HELLO WORLD 到串口
// Usart1_Write_Byte('h');
// Usart1_Write_Byte('e');
// Usart1_Write_Byte('l');
// Usart1_Write_Byte('l');
// Usart1_Write_Byte('o');
while(1);
}
/*******************************************************************************
* 文件名:void UartInit(void) //9600bps@11.0592MHz
* 描 述: 串口配置
* 功 能:
* 作 者:大核桃
* 版本號:1.0.1(2017.05.23)
*******************************************************************************/
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR &= 0xBF; //定時器1時鐘為Fosc/12,即12T
AUXR &= 0xFE; //串口1選擇定時器1為波特率發(fā)生器
TMOD &= 0x0F; //設(shè)定定時器1為16位自動重裝方式
TL1 = 0xE8; //設(shè)定定時初值
TH1 = 0xFF; //設(shè)定定時初值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
}
/*******************************************************************************
* 文件名:void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
* 描 述: 串口數(shù)據(jù)寫入函數(shù),即串口發(fā)送函數(shù),待發(fā)送數(shù)據(jù)指針 buf,數(shù)據(jù)長度 len
* 功 能:
* 作 者:大核桃
* 版本號:1.0.1(2017.05.23)
*******************************************************************************/
void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
{
while (len--)
{
SBUF = *buf++;//向串口1發(fā)送數(shù)據(jù)
while(TI == 0);//等待發(fā)送結(jié)束
TI = 0;
}
}
/*******************************************************************************
* 文件名:void Usart1_Write_Byte(unsigned char buf)
* 描 述: 串口數(shù)據(jù)寫入函數(shù),即串口發(fā)送函數(shù),待發(fā)送數(shù)據(jù)指針 buf,數(shù)據(jù)長度 len
* 功 能:
* 作 者:大核桃
* 版本號:1.0.1(2017.05.23)
*******************************************************************************/
void Usart1_Write_Byte(unsigned char buf)
{
SBUF = buf;//向串口1發(fā)送數(shù)據(jù)
while(TI == 0);//等待發(fā)送結(jié)束
TI = 0;
}
復(fù)制代碼
串口發(fā).JPG
(131.87 KB, 下載次數(shù): 70)
下載附件
2018-10-22 09:23 上傳
014 串口發(fā).rar
(32.1 KB, 下載次數(shù): 135)
2018-10-22 09:25 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
kbli
時間:
2020-5-17 10:40
謝謝分享
作者:
wyl138
時間:
2022-10-31 19:34
對初學(xué)者的我來說,這很直觀和實(shí)用.謝謝樓主.
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1