标题:
51单片机串口发送数据道上位机客户端
[打印本页]
作者:
dabing89
时间:
2018-10-22 09:23
标题:
51单片机串口发送数据道上位机客户端
本帖最后由 dabing89 于 2018-10-22 09:25 编辑
串口的应用是及其广泛的,串口是单片机和外部设备联系的通道,比如扫描枪,扫描仪,热敏打印机等等,好多接口都是232或者485接口,如果没有串口,单片机就只能和自己玩,这是很无聊的,串口分为收信息和发信息,我们先来看一下发信息,下面程序的作用是将HELLO WORLD通过串口软件,在电脑上显示出来。
/********************************************************
*描述:串口发送“hello world” 到电脑上 数据帧格式 9600 N 8 1
*
QQ597627977
********************************************************/
#include "stc15w.h"
#include "string.h"//字符串比较函数
/*******************************************************************************
* 文件名:位定义
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本号: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;
/*******************************************************************************
* 文件名:函数前置声明
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本号: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); //多字节
void Usart1_Write_Byte(unsigned char buf);//单字节
/*******************************************************************************
* 文件名:主循环入口
* 描 述:
* 功 能:
* 作 者:大核桃
* 版本号: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); //发送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位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/*******************************************************************************
* 文件名:void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
* 描 述: 串口数据写入函数,即串口发送函数,待发送数据指针 buf,数据长度 len
* 功 能:
* 作 者:大核桃
* 版本号:1.0.1(2017.05.23)
*******************************************************************************/
void Usart1_Write_NByte(unsigned char *buf, unsigned char len)
{
while (len--)
{
SBUF = *buf++;//向串口1发送数据
while(TI == 0);//等待发送结束
TI = 0;
}
}
/*******************************************************************************
* 文件名:void Usart1_Write_Byte(unsigned char buf)
* 描 述: 串口数据写入函数,即串口发送函数,待发送数据指针 buf,数据长度 len
* 功 能:
* 作 者:大核桃
* 版本号:1.0.1(2017.05.23)
*******************************************************************************/
void Usart1_Write_Byte(unsigned char buf)
{
SBUF = buf;//向串口1发送数据
while(TI == 0);//等待发送结束
TI = 0;
}
复制代码
串口发.JPG
(131.87 KB, 下载次数: 70)
下载附件
2018-10-22 09:23 上传
014 串口发.rar
(32.1 KB, 下载次数: 135)
2018-10-22 09:25 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
kbli
时间:
2020-5-17 10:40
谢谢分享
作者:
wyl138
时间:
2022-10-31 19:34
对初学者的我来说,这很直观和实用.谢谢楼主.
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1