
1,最好先使用不用转换的串口通讯;
2,将单片机的RXD和TXD通过RS232芯片后连接到PC机的串口;
3,在单片机内写一段能收能发的程序,很简单,不会写网上一大把,BAIDU一下;
4,在PC装一个串口调试软件,网上一大把,BAIDU一下;
5,通过串口调试软件收发数据,直接OK;
6,再通过VB自己写代码代替串口调试软件;
7,再试USB等硬件;
8,不需要协议。
单片机和微机通信的电气标准要一致,微机串口一般是RS232电气标准,所以要加电平转换芯片,大多用MAX232,一般单片机实验板上都提供这样的标准串口。
要分别编写上位机和下位机软件程序,单片机程序参照例程、教科书进行编写;上位机微机可采用VB,组态软件,Labview等软件编写,一般若是简单的通信,上位机程序编写很简单,例如VB中学会使用mscomm控件,有VB最基础知识的一天就能学会。
大可以没有单片机,没有MAX232,没有串行接口这些硬件就可以实现学习并掌握单片机与微机之间的串口通信。proteus可以仿真单片机,也是主流软件。
如今的笔记本电脑几乎都没有保留串口,而用USB接口取而代之,不过没关系,有了虚拟串口和串口调试助手,这些都解决了。你可以搜索一下虚拟串口,真的很不错的。
1、不知道你用什么单片机,无论什么单片机,串口通信都是标准的RS232,你在单片机中开串口通信,设置好数据位数和波特率,发送数据即可。
2、串口调试只是一个简单的上位机小软件,你网上随便搜索一下,一大堆。这种类似的软件可以接收外部传输给电脑的串口数据,当然,电脑也可以通过此软件将数据传输给外部设备,在这里就是指你的单片机,它们的协议是RS232。
3、PL2303网上有很多资料的,你要学会自己先搜索资料,尝试自己解决问题,不要一遇到问题就先去问人,实在自己解决不了再去求助,否则会阻碍你的进步。当然,不是说你不会进步,只是进步得会慢很多很多。
自已解决问题,也是一种能力的体现。
PL2303的图,我给你一份吧,我一直用着的,保证是可以实现的,请放心使用。就在文件里面有,你找一下PL2303那个模块电路就可以找到了。
有问题互相交流,大家一起进步!
RTL8019是ISA接口的网卡芯片,它已经包含了完整的物理层和MAC层,因此你只需要进行初始化内部寄存器以后,便可以进行数据收发了。要发送以太网数据包其实还是比较简单的,你只需要讲数据线、地址线、控制线、中断引脚接对了,然后用单片机访问外部总线便可以实现。但与计算机通讯,你可能还需要自己编写或者移植IP层,UDP或者TCP协议。当然你也可以在计算机进行原始MAC数据包通讯。
不要误人子弟,PC机往单片机每次可以发送任意个数据,MCU接收时候处理一下就OK了,
下面是我的程序,给你参考。
//中断方式接收PC机数据
/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
设计思路
接收到的数据存入到dat[50]数组中,
中断方式接收,每次中断接收后,开启定时器,
/////////////////////////////
//
//陈仲库
#include <reg51h>
#include <stdioh>
int dat[20];
unsigned char num=0;
int time=0;
bit MCU_RXD_FLG=0;
void COM_Init(void)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFD;
ES=1;EA=1;
TR1 = 1;
TI = 1;
TH0=0xfc; //T0定义初始值
TL0=0x18;
TR0=0; //关闭T0计时
ET0=1;
}
//向串口发送一个字符
void MCU_TXD(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
EA=0;
if(RI)
{
unsigned char ch;
TR0=0; time=0;
RI = 0;
ch=SBUF;
dat[num++]=ch;
TR0=1;
}
EA=1;
}
delay(int t){while(t--); }
/ PC发送数据必须以0XAA开头和以 0X55结束(帧头帧尾)/
void main(void)
{
int i=0;
COM_Init();
while(1)
{
if(MCU_RXD_FLG)
{
EA=0;
TR0=0;
if(dat[0]==0xAA && dat[num-1]==0x55)
for(i=0;i<num;i++) printf("%0x ",dat[i]);
num=0;
MCU_RXD_FLG=0;
EA=1;
}
}
}
void timer0() interrupt 1 //T0中断 定时01ms
{
EA=0;
TH0=0xfc;
TL0=0x18;
MCU_RXD_FLG=1;
TR0=0;
EA=1;
}
关于AT24C02程序网上多的是,很成熟的程序
OK希望对你能有帮助
51对于继电器的控制,只用高低电平就可以了。关键是,你在你的程序里要有一个判断子程序,判断单片机从PC机(通过RS485)穿过来的是什么数据,从而对单片机的某位置位或者复位。比如:你可以用一个if语句,如果收到的数据时11111,在置位,如果收到的数据时00000,则复位,相应的继电器就会动作了。
以上就是关于单片机与pc机通信 将单片机采集的ds18b20信息通过转串口线送入pc,在上位机显示,怎么处理他们的通信全部的内容,包括:单片机与pc机通信 将单片机采集的ds18b20信息通过转串口线送入pc,在上位机显示,怎么处理他们的通信、51单片机与PC机之间的硬件如何串口连接、pc机与单片机通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)