unit1.pas

来自「用AVR单片机控制LCD点阵显示屏的程序。」· PAS 代码 · 共 297 行

PAS
297
字号
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    CommX1: TCommX;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Charcter: TButton;
    DEMO2: TButton;
    DEMO3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Form1Create(Sender: TObject);
    procedure CommX1Receive(Sender: TObject; ReceiveSize: Integer);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure CharcterClick(Sender: TObject);
    procedure DEMO2Click(Sender: TObject);
    procedure DEMO3Click(Sender: TObject);
  private
	 { Private 愰尵 }
  public
	 { Public 愰尵 }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ "弶婜壔" }
procedure TForm1.Form1Create(Sender: TObject);
begin
	CommX1.BitRate 		:= 38400;
	CommX1.BufLenReceive	:= 1024 * 16;
	CommX1.BufLenTrans	:= 1024 * 1;
	CommX1.CharSize		:= 8;
	CommX1.FlowCtrl		:= cfcNONE;
	CommX1.ParityBit		:= cpbNONE;
	CommX1.PortNo			:= 1;
	CommX1.StopBit			:= csb1;
	CommX1.TimeOutReceive:= 3000;
	CommX1.TimeOutTrans	:= 3000;
	CommX1.PortOpen;
end;

{ 庴怣妱崬 }
procedure TForm1.CommX1Receive(Sender: TObject; ReceiveSize: Integer);
var c, i: integer;
	 s, buf: string;
begin
{
	buf := '';
	repeat
		c := CommX1.ReceiveChar;
		if c <> -1 then
			buf := buf + chr( c );
		Sleep( 2 );
	until CommX1.GetReceiveLength = 0;

	s := '';
	for i := 1 to Length( buf) do
		if ( ' ' < buf[ i ] ) and ( buf[ i ] < #$7F ) then
			s := s + buf[ i ]
		else
			s := s + format( '[$%x]', [ ord( buf[ i ]  ) ] );
	Memo1.Lines.Add( s );
}
end;

{ 儊儌挔偺僋儕傾 }
procedure TForm1.Button2Click(Sender: TObject);
begin
	Memo1.Clear;
end;

{ "CLS"儃僞儞 }
procedure TForm1.Button1Click(Sender: TObject);
begin
	CommX1.TransChar( 'I' );
end;

{ ABCD... }
procedure TForm1.Button3Click(Sender: TObject);
var t: integer;
begin
	for t := 1 to 11 do begin
		CommX1.TransString( 'L'+chr(t*7)+#8 );
		CommX1.TransString( 'C'+chr(t) );
	end;
end;

{ 幬傔暥帤 }
procedure TForm1.Button4Click(Sender: TObject);
var	t: integer;
begin
	for t := 0 to 7 do begin
		CommX1.TransString( 'L'+chr( t * 7 ) + chr( t ) );
		CommX1.TransString( 'C' + chr( t + 1 ) );
	end;
end;

{ PSET }
procedure TForm1.Button5Click(Sender: TObject);
var	i, j: integer;
		t, x, y: real;
begin

	for i := 0 to 1000 do begin
			t := 6.28 / 1000 * i;
			x := sin( t * 2) * 15 + 15;
			y := cos( t * 5) * 15 + 15;
		CommX1.TransString( 'P'+chr(trunc(x)) + chr(trunc(y)) );
	end;

	for i := 0 to 1000 do begin
			t := 6.28 / 1000 * i;
			x := sin( t * 2) * 15 + 15 + 90;
			y := cos( t * 3) * 15 + 15;
		CommX1.TransString( 'P'+chr(trunc(x)) + chr(trunc(y)) );
	end;

	CommX1.TransString( 'L'#35#0 );
	CommX1.TransString( 'C' + chr( ord( 'J' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'L'#43#2 );
	CommX1.TransString( 'C' + chr( ord( 'R' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'L'#51#4 );
	CommX1.TransString( 'C'#4 );
	CommX1.TransString( 'L'#59#6 );
	CommX1.TransString( 'C' + chr( ord( 'K' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'L'#67#8 );
	CommX1.TransString( 'C' + chr( ord( 'B' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'L'#75#10 );
	CommX1.TransString( 'C' + chr( ord( 'U' ) - ord( 'A' ) + 11) );


{
	for i := 0 to 121 do
		for j := 0 to 31 do
			CommX1.TransString( 'P'+chr(i) + chr(j) );
	for i := 0 to 121 do
		for j := 0 to 31 do
			CommX1.TransString( 'R'+chr(i) + chr(j) );
}
end;

{ DEMO }
procedure TForm1.Button6Click(Sender: TObject);
	procedure outc( c: byte; x: byte );
		var i: byte;
		begin
			for i := 0 to 3 do begin
				CommX1.TransString( 'L'+chr(x) + chr(i*8) );
				CommX1.TransString( 'C'+chr(c * 4 + 1 + i) );
			end;
		end;
begin
	outc( 2, 5 );
	outc( 3, 30 );
	outc( 4, 62 );
	outc( 5, 87 );

	CommX1.TransString( 'P'#57#10);
	CommX1.TransString( 'P'#57#11);
	CommX1.TransString( 'P'#57#12);
	CommX1.TransString( 'P'#58#10);
	CommX1.TransString( 'P'#58#11);
	CommX1.TransString( 'P'#58#12);
	CommX1.TransString( 'P'#59#10);
	CommX1.TransString( 'P'#59#11);
	CommX1.TransString( 'P'#59#12);

	CommX1.TransString( 'P'#57#22);
	CommX1.TransString( 'P'#57#23);
	CommX1.TransString( 'P'#57#24);
	CommX1.TransString( 'P'#58#22);
	CommX1.TransString( 'P'#58#23);
	CommX1.TransString( 'P'#58#24);
	CommX1.TransString( 'P'#59#22);
	CommX1.TransString( 'P'#59#23);
	CommX1.TransString( 'P'#59#24);
end;


procedure TForm1.CharcterClick(Sender: TObject);
	procedure SendChar( c: char );
		begin
			if c in [ 'A'..'Z' ] then
				CommX1.TransString( 'C' + chr( ord(c) - ord( 'A' ) + 1) )
			else if c in [ 'a'..'z' ] then
				CommX1.TransString( 'C' + chr( ord(c) - ord( 'a' ) + 27 ) )

		end;
	procedure SendStrings( st: string );
		var i: byte;
		begin
			for i := 1 to length( st ) do
				SendChar( st[ i ] );
		end;
begin
	CommX1.TransString( 'L'#40#10);
	SendStrings( 'Lissajous' );
	CommX1.TransString( 'L'#80#20);
	SendStrings( 'curve' );
end;

procedure TForm1.DEMO2Click(Sender: TObject);
var i: integer;
begin
	CommX1.TransString( 'L'#0#0 );
	for i := 1 to 20 do
		CommX1.TransString( 'C'+chr( i ) );
	CommX1.TransString( 'L'#0#10 );
	for i := 21 to 36 do
		CommX1.TransString( 'C'+chr( i ) );
end;

procedure TForm1.DEMO3Click(Sender: TObject);
var i: integer;
begin
	CommX1.TransString( 'L'#10#0 ); 	{2}
	CommX1.TransString( 'C'#43 );
	CommX1.TransString( 'L'#10#8 );
	CommX1.TransString( 'C'#44 );
	CommX1.TransString( 'L'#10#16 );
	CommX1.TransString( 'C'#45 );

	CommX1.TransString( 'L'#25#0 ); 	{1}
	CommX1.TransString( 'C'#40 );
	CommX1.TransString( 'L'#25#8 );
	CommX1.TransString( 'C'#41 );
	CommX1.TransString( 'L'#25#16 );
	CommX1.TransString( 'C'#42 );

	CommX1.TransString( 'L'#42#0 ); 	{3}
	CommX1.TransString( 'C'#46 );
	CommX1.TransString( 'L'#42#8 );
	CommX1.TransString( 'C'#47 );
	CommX1.TransString( 'L'#42#16 );
	CommX1.TransString( 'C'#48 );

	CommX1.TransString( 'L'#57#0 ); 	{4}
	CommX1.TransString( 'C'#49 );
	CommX1.TransString( 'L'#57#8 );
	CommX1.TransString( 'C'#50 );
	CommX1.TransString( 'L'#57#16 );
	CommX1.TransString( 'C'#51 );

	CommX1.TransString( 'L'#72#0 ); 	{5}
	CommX1.TransString( 'C'#52 );
	CommX1.TransString( 'L'#72#8 );
	CommX1.TransString( 'C'#53 );
	CommX1.TransString( 'L'#72#16 );
	CommX1.TransString( 'C'#54 );

	CommX1.TransString( 'L'#90#15 );
	CommX1.TransString( 'C'#7 );
	CommX1.TransString( 'C'#8 );
	CommX1.TransString( 'C'#9 );

	CommX1.TransString( 'P'#39#21 );
	CommX1.TransString( 'P'#40#21 );
	CommX1.TransString( 'P'#39#22 );
	CommX1.TransString( 'P'#40#22 );


	CommX1.TransString( 'L'#0#24 );
	CommX1.TransString( 'C' + chr( ord( 'R' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'C' + chr( ord( 'I' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'C' + chr( ord( 'T' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'L'#22#24 );
	CommX1.TransString( 'C' + chr( ord( 'O' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'C' + chr( ord( 'F' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'C' + chr( ord( 'F' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'L'#60#24 );
	CommX1.TransString( 'C' + chr( ord( 'S' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'C' + chr( ord( 'S' ) - ord( 'A' ) + 11) );
	CommX1.TransString( 'C' + chr( ord( 'B' ) - ord( 'A' ) + 11) );
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?