⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 find1.pas

📁 这是我一时兴起现学现用的一个求单片机波特率的小程序! 选中"做何运算"后双击一次选中内容
💻 PAS
字号:
unit find1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ActnList, StdCtrls, Menus, Mask;

type
  TForm1 = class(TForm)
    btexit: TButton;
    Label1: TLabel;
    Label2: TLabel;
    disp: TMemo;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Button3: TButton;
    Label19: TLabel;
    ComBox: TComboBox;
    one1: TMaskEdit;
    one3: TMaskEdit;
    two1: TMaskEdit;
    two2: TMaskEdit;
    two3: TMaskEdit;
    three1: TMaskEdit;
    three2: TMaskEdit;
    one2: TMaskEdit;
    Label8: TLabel;
    procedure btexitClick(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure one1Enter(Sender: TObject);
    procedure one2Enter(Sender: TObject);
    procedure one3Enter(Sender: TObject);
    procedure two1Enter(Sender: TObject);
    procedure two2Enter(Sender: TObject);
    procedure two3Enter(Sender: TObject);
    procedure three1Enter(Sender: TObject);
    procedure three2Enter(Sender: TObject);
    procedure fourEnter(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComBoxDblClick(Sender: TObject);
    end  ;

var
  Form1: TForm1;
  whof,smod,tx : integer;
  fosc,bdr,bdr2 : double;
  sr :string;
  sst: integer;
  tup,tdown: double;
  fosc2: double;
implementation

{$R *.dfm}


procedure TForm1.btexitClick(Sender: TObject);
begin
close;
end;

procedure TForm1.Button3Click(Sender: TObject);
var    i,j : integer ;
begin

 if(button3.Caption = '开始查找(search now)' )
     then
      begin
        disp.Text := ' ';
        sr := ' ';
        case whof of
           1     :
             begin
                tdown := strtofloat(one2.text);
                tup   := strtofloat (one3.text);
                fosc  := strtofloat(one1.Text );
                if ComboBox1.Text = 'smod=0 ' then smod := 0
                   else if ComboBox1.Text ='smod=1' then smod := 1
                else
                 ;
                ///////////////////////////////////////////////////
                    if ComboBox2.Text = '2'
                      then // 串口方式2
                        begin
                        one2.Enabled :=false;
                        one3.Enabled :=false;
                        form1.Refresh ;
                        bdr := ((1+smod)* fosc)/64;
                        bdr := bdr * 1000000;
                        disp.Text :=floattostr(bdr);
                        end
                      else if  ComboBox2.Text = '0'
                      then // 串口方式0
                        begin
                        one2.Enabled :=false;
                        one3.Enabled :=false;
                        form1.Refresh ;
                        bdr := (fosc)/12;
                        bdr := bdr * 1000000;
                        disp.Text :=floattostr(bdr);
                        end
                      else if (combobox2.Text ='1') or (combobox2.Text ='3')
                      then  // 串口方式1或3
                        begin
                        for i :=0 to 255 do
                           begin
                           bdr := ((1+smod)* fosc)/(384*(256-i));
                           bdr := bdr * 1000000;
                           if (bdr > tdown) and ( bdr < tup )then
                              begin
                               sr :=disp.text+floattostr(bdr)+'    :';
                               sr :=sr+'当i='+inttostr(i)+' 时。';
                               disp.text :=sr+char(13)+char(10);
                              end;
                           end;
                        end
                        else
                        ;
                      //////////////find brod rate by fosc////////////////////
             end;

           2     :
             begin
                tdown := strtofloat(two2.text);
                tup   := strtofloat (two3.text);
                bdr   := strtofloat(two1.Text );
                if ComboBox1.Text = 'smod=0 ' then smod := 0
                   else if ComboBox1.Text ='smod=1' then smod := 1
                else
                 ;
                //////////////////find fosc by brd///////////////////
                    if ComboBox2.Text = '2'
                      then // 串口方式2
                        begin
                        one2.Enabled :=false;
                        one3.Enabled :=false;
                        form1.Refresh ;
                        fosc := 64* bdr /(1+smod);
                        disp.Text :=floattostr(fosc)+'MHz';
                        end
                      else if  ComboBox2.Text = '0'
                      then // 串口方式0
                        begin
                        one2.Enabled :=false;
                        one3.Enabled :=false;
                        form1.Refresh ;
                        fosc := bdr * 12;
                        disp.Text :=floattostr(bdr)+'MHz';
                        end
                      else if (combobox2.Text ='1') or (combobox2.Text ='3')
                      then  // 串口方式1或3
                        begin
                        for i :=0 to 255 do
                           begin
                           fosc := (384*bdr*(256-i))/(1+smod);
                           fosc := fosc / 1000000;
                           if (fosc > tdown) and ( fosc < tup )then
                              begin
                               sr :=disp.text+floattostr(fosc)+'MHz    :';
                               sr :=sr+'当i='+inttostr(i)+' 时。';
                               disp.text :=sr+char(13)+char(10);
                              end;
                           end;
                        end
                        else
                        ;
                      //////////////////////////////////////////////////
             end ;
           3     :
             begin
                fosc  := strtofloat(three1.Text );
                fosc2 := strtofloat(three2.Text );
                if ComboBox1.Text = 'smod=0' then smod := 0
                   else if ComboBox1.Text ='smod=1' then smod := 1
                else
                 ;
                ///////////////////////////////////////////////////
                    if ComboBox2.Text = '2'
                      then // 串口方式2
                        begin
                        form1.Refresh ;
                        bdr := ((1+smod)* fosc)/64;
                        bdr2:= ((1+smod)* fosc2)/64;
                        if(bdr <> bdr2) then
                           disp.Text :='不能找到相同的,除非频率相同或改更不同的SMOD'
                           else
                              begin
                           bdr:=bdr*1000000;
                           disp.text := floattostr(bdr)+char(13)+char(10)+'PS:波特率=((1+smod)* fosc)/64';
                              end;
                        end
                      else if  ComboBox2.Text = '0'
                      then // 串口方式0
                        begin
                        form1.Refresh ;
                        bdr := (fosc)/12;
                        if(fosc <> fosc2) then
                           disp.Text :='不能找到相同的,除非频率相同'
                           else
                              begin
                           bdr:=bdr*1000000;
                           disp.text := floattostr(bdr)+char(13)+char(10)+'PS:波特率=(fosc)/12';
                              end;
                        end
                      else if (combobox2.Text ='1') or (combobox2.Text ='3')
                      then  // 串口方式1或3
                        begin
                        if ComboBox1.Text = 'smod=0' then smod := 0
                         else if ComboBox1.Text ='smod=1' then smod := 1
                        else
                        ;
                        form1.Refresh ;
                        sr:=' ';
                        disp.Text := ' ';
                        for i :=0 to 255 do
                           begin
                           bdr := ((1+smod)* fosc)/(384*(256-i));
                           //**//
                           for j:=0 to 255 do
                             begin
                                bdr2:= ((1+smod)* fosc2)/(384*(256-j));
                                if (((bdr-bdr2)*(bdr-bdr2))*1000000000000<=4) and (bdr >0.009) then
                                    begin
                                     tup := bdr * 1000000;
                                     if(tup <> tdown)then
                                     begin
                                     sr :=disp.Text+floattostr(tup)+'    时THTL1=';
                                     sr := sr+floattostr(i)+'   THTL2='+floattostr(j);
                                     disp.Text := sr+char(13)+char(10);
                                     tdown:=tup;
                                     end
                                    end
                                else
                                ;
                             end;
                           //**//
                           end;
                           if(disp.Text = ' ') then disp.Text  := '找不到相同波特率';
                        end
                        else
                        ;
                      ////////////////////////////////////////////////
             end;
      end;
      button3.Caption := '结束查找';
   end
else
 if(button3.Caption = '结束查找') then
     begin
      button3.Caption := '开始查找(search now)';
              one1.enabled := false;
              one2.enabled := false;
              one3.enabled := false;
              two1.enabled := false;
              two2.enabled := false;
              two3.enabled := false;
              three1.enabled := false;
              three2.enabled := false;

              Button3.Enabled :=false;
     end;


end;

procedure TForm1.one1Enter(Sender: TObject);
begin
whof :=1;
end;

procedure TForm1.one2Enter(Sender: TObject);
begin
whof :=1;
end;

procedure TForm1.one3Enter(Sender: TObject);
begin
whof :=1;
end;

procedure TForm1.two1Enter(Sender: TObject);
begin
whof :=2;
end;

procedure TForm1.two2Enter(Sender: TObject);
begin
whof :=2;
end;

procedure TForm1.two3Enter(Sender: TObject);
begin
whof :=2;
end;

procedure TForm1.three1Enter(Sender: TObject);
begin
whof :=3;
end;

procedure TForm1.three2Enter(Sender: TObject);
begin
whof :=3;
end;

procedure TForm1.fourEnter(Sender: TObject);
begin
whof :=4;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
              one1.enabled := false;
              one2.enabled := false;
              one3.enabled := false;
              two1.enabled := false;
              two2.enabled := false;
              two3.enabled := false;
              three1.enabled := false;
              three2.enabled := false;

              Button3.Enabled :=false;
end;
procedure TForm1.ComBoxDblClick(Sender: TObject);
begin
              one1.enabled := false;
              one2.enabled := false;
              one3.enabled := false;
              two1.enabled := false;
              two2.enabled := false;
              two3.enabled := false;
              three1.enabled := false;
              three2.enabled := false;

              Button3.Enabled :=true;
              button3.Caption :='开始查找(search now)';
              if ComboBox1.Text = 'smod=0' then smod := 0
                 else if ComboBox1.Text ='smod=1' then smod := 1
              else
                 ;
if combox.Text = '1、由频率求波特率' then
    whof :=1
   else if combox.Text='2、由波特率求频率' then
    whof :=2
   else if combox.Text='3、由2个频率求波特率相同的THTHL' then
    whof :=3;
case whof of
    1 :
         begin
              one1.enabled := true;
              one2.enabled := true;
              one3.enabled := true;
         end;
    2:
         begin
              two1.enabled := true;
              two2.enabled := true;
              two3.enabled := true;
         end;
    3:
         begin
              three1.enabled := true;
              three2.enabled := true;
         end;

end;
end;
end.

⌨️ 快捷键说明

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