单片机怎么通过串口发送一串数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机怎么通过串口发送一串数据?相关的知识,希望对你有一定的参考价值。

通过SBUF! 一块是接受,一块发送!还要设置工作方式。

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
参考技术A 通过SBUF! 一块是接受,一块发送!还要设置工作方式,去好好看下书! 参考技术B /*********************************************************
*
*
* 单片机发送
*
*
*
*
*
*********************************************************/
#include "REG52.H"
sbit LED01_01 = P3^6;
sbit LED02_02 = P3^7;
#define SHUMG_DAT P0
bit value_vek;
unsigned char value_temp = 0;
unsigned char value_Date = 0;
unsigned char value_Outk = 0;
unsigned char code value_table[] =

0xC0,
0xF9,
0xA4,
0xB0,
0x99,
0x92,
0x82,
0xF8,
0x80,
0x90
; //共阳极0-9显示断码
/*
* 带参数的延时1ms延时子函数
*/
void Delay_1ms(unsigned int time)

unsigned int x, y;
for(x = time; x > 0; x--)
for(y = 120; y > 0; y--);

/*
* USART串口初始化子函数
*/
void Serports_Init(void)

TMOD = 0x20;
TH0 = 0xFD;
TL0 = 0xFD;
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;

/*
* USART串口数据发送子函数
*/
void USART_Buf(unsigned char add)

SBUF = add;
while(!TI);
TI = 0;

/*
* 单片机串口发送数据
*/
void Scan_keyOutCmd(void)

if(Keyat_02 == 0)

Delay_1ms(5);
if(Keyat_02 == 0)

value_Date++;
if(value_Date == 9)

value_Date = 0;


while(Keyat_02 == 0);


/*
* 程序函数主体
*/
int main(void)

P0 = P2 = 0x00;
P3 = 0xFF;
Serports_Init();
while(1)

Display_ShumagCmd();
Scan_keyOutCmd();
switch(value_Date) //对应发送数据

case 0: USART_Buf(0xC0);
break;
case 1: USART_Buf(0xF9);
break;
case 2: USART_Buf(0xA4);
break;
case 3: USART_Buf(0xB0);
break;
case 4: USART_Buf(0x99);
break;
case 5: USART_Buf(0x92);
break;
case 6: USART_Buf(0x82);
break;
case 7: USART_Buf(0xF8);
break;
case 8: USART_Buf(0x80);
break;
case 9: USART_Buf(0x90);
break;
default: break;



/*
* USART串口中断服务程序
*/
void Serial_sports()interrupt 4

RI = 0; //清除接收标志
value_Outk = SBUF; //接收
参考技术C #include<reg52.h>
void main(void)

TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)




void UART_SER(void)interrupt 4 //串口中断函数

unsigned char Temp;
if(RI) //串口接收

RI=0;
Temp=SBUF;
P1=Temp;

if(TI) //串口发送

TI=0;
SBUF=Temp;




最简单的例程,希望你能看懂

52单片机通过usb 串口发送数据给linux,minicom来接收

在window下,串口调色精灵可以收到单片机发来的数据,但是minicom就是接收不到,就指导

在Linux下首先要对minicom进行下串口设置,你可以看下/dev/下的设备,你插入串口的话,会多出来哪个设备,往往都是/dev/ttyUSB*,具体自己看下.设置minicom的话,命令是:minicom -s,也可以自己去找资料.在minicom里要把串口还有波特率都设置好,与单片机代码相符合的波特率.设置好minicom之后重开minicom,这个时候你收发的话,minicom就会显示出接收到的数据了. 参考技术A minicom 要设定波特率之类的才行,也就是说使用前要设置minicom.另外minicom不同于串口助手。相当与windows下的超级终端。追问

我设置过了的,我用的是usb串口,是不是与普通的串口一样

追答

你先把串口接收和发送线短接,看看minicom上发数据是不是会显示回来,这是最基本的串口调试方法,如果发东西没有回来的话,就说明你的minicom没有设置好,具体的设定方法请百度查查。

参考技术B 这个东西很麻烦的,usb接口是48m的晶振,usb转串口是四分频的也就是12m的,单片机一般用11.0592m,晶振不统一,不管使用那款晶振兼容性都不好,除非使用双晶振的转换器,价格不会低于50人民币的。

以上是关于单片机怎么通过串口发送一串数据?的主要内容,如果未能解决你的问题,请参考以下文章

52单片机如何对PC串口发送来的数据进行存储,存储在哪?RAM还是ROM中?

STM32单片机通过USART1接收到数据后,怎么把接收到的数据通过单片机的CAN口发送出去啊?

单片机怎么通过串口发送unsigned int类型的数据?

单片机串口发送的数据一直是00;求解

通过串口接受的指令点亮LED

单片机串口通信控制led灯的点亮