51单片机和计算机之间实现串口通信的电路图 5

只要电路图,主要的程序也可以写写,我只想单片机输出1或者0然后存进电脑的数据库里... 只要电路图,主要的程序也可以写写,我只想单片机输出1或者0然后存进电脑的数据库里 展开
 我来答
x10031987
2010-05-24 · TA获得超过280个赞
知道答主
回答量:75
采纳率:100%
帮助的人:70.7万
展开全部

串口通讯参考程序如下:

来源:深入浅出AVR单片机

#include<reg51.h>

unsigned char UART_RX; //定义串口接收数据变量

unsigned char RX_flag; //定义穿行接收标记

/*********************************************************************************************

函数名:UART串口初始化函数

调  用:UART_init();

参  数:无

返回值:无

结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)

备  注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]

/**********************************************************************************************/

void UART_init (void){

 EA = 1; //允许总中断(如不使用中断,可用//屏蔽)

 ES = 1; //允许UART串口的中断

 TMOD = 0x20; //定时器T/C1工作方式2

 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)

 TH1 = 0xF3; //定时器初值高8位设置

 TL1 = 0xF3; //定时器初值低8位设置

 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)

 TR1 = 1; //定时器启动    

}

/**********************************************************************************************/

/*********************************************************************************************

函数名:UART串口接收中断处理函数

调  用:[SBUF收到数据后中断处理]

参  数:无

返回值:无

结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)

备  注:过长的处理程序会影响后面数据的接收

/**********************************************************************************************/

void UART_R (void) interrupt 4  using 1{ //切换寄存器组到1

 RI = 0;   //令接收中断标志位为0(软件清零)

 UART_RX = SBUF; //将接收到的数据送入变量 UART_data

 RX_flag=1;  //标记接收

 //用户函数内容(用户可使用UART_data做数据处理)

 

 //SBUF = UART_data; //将接收的数据发送回去(删除//即生效)

 //while(TI == 0); //检查发送中断标志位

 //TI = 0;  //令发送中断标志位为0(软件清零)

/**********************************************************************************************/

/*********************************************************************************************

函数名:UART串口发送函数

调  用:UART_T (?);

参  数:需要UART串口发送的数据(8位/1字节)

返回值:无 

结  果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式

备  注:

/**********************************************************************************************/

void UART_T (unsigned char UART_data){ //定义串口发送数据变量

 ES=0;    //禁止穿行中断

 SBUF = UART_data; //将接收的数据发送回去

 while(TI == 0);  //检查发送中断标志位

 TI = 0;   //令发送中断标志位为0(软件清零)

 ES=1;   //打开穿行中断

}

/*********************************************************************************************

函数名:UART串口发送字符串函数

调  用:UART_S (?);

参  数:需要UART串口发送的数据(8位/1字节)

返回值:无 

结  果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式

备  注:

/**********************************************************************************************/

void UART_S(unsigned char *str)

{

 while(1)

 {

  if(*str=='\0') break;

  UART_T(*str++);

 }

}

/*********************************************************************************************

函数名:主函数

调  用:main();

参  数:

返回值:无 

结  果:

备  注:

/**********************************************************************************************/

void main()

{

 unsigned char Buf_data[]={"      welcome to MCU world.     \n\r"};

 UART_init();

 UART_S(Buf_data);

 while(1){

  if(RX_flag==1)

  {

   UART_T(UART_RX);

   RX_flag=0;

  }

 }

祝愿楼主马到功成

jack_wang0823
2010-05-24 · TA获得超过2957个赞
知道大有可为答主
回答量:4143
采纳率:87%
帮助的人:1447万
展开全部

12 和11脚接 MCU 51 的P3,0 P3.1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萍水e相逢
2010-05-24 · TA获得超过3万个赞
知道大有可为答主
回答量:5.9万
采纳率:46%
帮助的人:1.4亿
展开全部
单片机 板上有 DB9 嘛?其实 就是 MAX232?

有的 话,和 电脑 可以直接 连

否则 用 E232TTL RS232/TTL电平无源转换器

请看 武汉鸿伟光电 有 连接示意图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
因贝特工作
2010-05-24 · TA获得超过283个赞
知道小有建树答主
回答量:489
采纳率:0%
帮助的人:331万
展开全部
RS232,MAX232,好好看,网上有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式