单片机怎么通过串口发送一串数据?
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中?