您的位置 首页 模拟

delphi与51单片机串行通讯

说明:可能前面几次首发不太准确delphi源码unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics

阐明:或许前面几回首发不太精确

//delphi源码

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm, StdCtrls;

type
TFCOMM = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
Comm1: TComm;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FCOMM: TFCOMM;
viewstring:string;
i:integer;
rbuf,sbuf:array[1..9] of byte;

implementation

{$R *.dfm}

procedure TFCOMM.FormShow(Sender: TObject);
begin
comm1.startcomm;
end;

procedure TFCOMM.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.stopcomm;
end;
//自定义发送数据进程

procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:= ;
commflg:=true;
for i:=1 to 9 do
begin
if not fcomm.comm1.writecommdata(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
//发送时字节间的延时
sleep(2);
viewstring:=viewstring+inttohex(sbuf[i],1)+ ;
end;
viewstring:=发送+viewstring;
fcomm.memo1.lines.add(viewstring);
fcomm.memo1.lines.add( );
if not commflg then
messagedlg(发送失利! ,mterror,[mbyes],0);
end;

procedure TFCOMM.Button1Click(Sender: TObject);
begin
sbuf[1]:=byte($95); //帧头
sbuf[2]:=byte($10); //指令号
sbuf[3]:=byte($20);
sbuf[4]:=byte($25);
sbuf[5]:=byte($95); //帧头
sbuf[6]:=byte($10); //指令号
sbuf[7]:=byte($20);
sbuf[8]:=byte($25);
sbuf[9]:=byte($25);
senddata;
end;

procedure TFCOMM.Button2Click(Sender: TObject);
begin
memo1.clear;
end;

procedure TFCOMM.Button3Click(Sender: TObject);
begin
close;
end;

procedure TFCOMM.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
begin
viewstring:=;
move(buffer^,rbuf,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttohex(rbuf[i],2)+ ;
viewstring:=接纳+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add();
end;
end.

//单片机源码

#include

void send(b)
{

SBUF=b;
while(TI==0);
TI=0;

}

void main()
{
int i=0,k;
unsigned int a[9];
TMOD=0x20;
TL1=0xfd;
TH1=0xfd;
SCON=0xd8;
PCON=0x00;
TR1=1;
while(1)
{ if(i>8)break;
while(RI==0);
RI=0;
a[i]=SBUF;
//for(k=0;k<200;k++);
i++;
}
for(i=0;i<9;i++)
{
send(a[i]);
//for(k=0;k<10000;k++);
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/261769.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部