pc与单片机通讯的高手看过来(100分)

  • 主题发起人 主题发起人 lvzhijong
  • 开始时间 开始时间
L

lvzhijong

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟用串口进行pc与单片机之间通讯
采用spcomm控件,有几个问题不明,请大虾指点:
1)单片机采用工作方式1,即1位起始位,8位数据,1位停止位.
可我找不到spcomm中设起始位的地方
2)由于初次接触串口即dephi,能给一个串口的例子吗?



 

用 TCommportDrv32 吧
 
1)我记得起始位就是1位,不用设置;不妨先设置好波特率,数据位,停止位,
2)设置并打开串口:
Comm1.CommName :='com1';
Comm1.Baudrate :=strtoint(Baud.Text);
Comm1.ByteSize:=_8;
Comm1.parity:=None;
Comm1.StopBits:=_1;
Comm1.StartComm;

在收到数据时,OnReceiveData事件中读出数据
发送数据:comm1.WriteCommData('....');
 
pc发送时 是不是串口自动加上起始位呢?
就如同单片机发送时会加上起始位一样?

to 康夫:
我也找不到 tcomportdrv32设起始位的地方

 
to liuge:
我用两台pc时不设起始位是没问题的
可单片机检测到rxd输入端由1到0的跳变,才开始接受一帧数据,
不设行么?除为pc发数据时串口自动加上起始的0
请大虾执教

 
不会没人帮我吧,我哭,wuwu~~~~
 
按照串行通信的格式,起始位为0,是自动添加的
我用MSCOMM控件和API函数做的PC机与单片机之间串口通信都没有问题
 
我用1pc发数据1pc收是没问题,数据接收正确
但用单片机(已进行电平转换)发数据,用1pc收(仍用接收pc数据时的接收程序)
时接收总是不对
如 mov sbuf,0cf 接收到的却是 ef
难道单片机发的数与pc的格式不同?
大虾救命!!!
 
我搞了很久的单片机 从没设什么起始位,不用设。你的数据出错有可能是你加了奇偶校验位。对串口通信有两种方式,
1.采用MSComm控件
2.自己采用线程方式。
3.我自己有一个交换机计费程序,采用线程方式,效果非常理想,数据响应很好。想要给我发Email
 
to 袁平:
多谢了 请mail: xiaoflyfly@263.net

单片机工作在方式1(8051),没有校验位
我用pc发时没问题的,换了单片机就出错
我单步执行单片机程序时发现SBUF一直是00
下面是单片机程序,请大虾帮我看看
主程序:
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1

MOV SCON,#50H
MOV PCON,#00H

ORL IE,#90H
MOV R0,#00H
MOV A,#0DFH
MOV SBUF,A

DELAY: SJMP DELAY
串口中断程序:
CLR EA
CLR TI

INC R0
MOV A,R0
CLR CY
SUBB A,#3H
JZ FINISH

MOV A,#0CFH
MOV SBUF,A
SETB EA

FINISH: RETI
 
TO:袁平
我做串口通讯,一直用MSCOMM控件,但我对先生的大作非常感兴趣。
Please Mail:windzzh@china.com
 
TO:袁平我对先生的大作非常感兴趣,能不能也给我一份。
mail to me:xumboys@263.net
 

谁能给我一份 TCommportDrv32 ,谢谢 ! gww@21cn.com
 
TO:袁平我对先生的大作非常感兴趣,能不能也给我一份。
mail to me:xumboys@263.net
 
1)232的起始位是固定的,不用设置
2)你的情况很可能是硬件问题,先查一下232电平转换的电路吧
 
多人接受答案了。
 
谁能给我一份 TCommportDrv32 ,谢谢 zbk@sypu.edu.cn
 

Similar threads

回复
0
查看
864
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部