1、Altium教程EB1EB2Tester2软件设计C1精EB1 EB2 Tester_2软件设计第一部分 原理图 1.1 Audio.SchDocCLK DataIn7.0SoundOutU_DeltaSigma8DeltaSigma8.SCHDOCClockDOUT7.0ResetU_SineWaveGeneratorSineWave.VHD AudioOutDeltaSigmaClkResetDIVIDERRATIO15.0NOTEN7.0InvalidU_NoteDividerTableNoteDividerTable.Vhd/ NCNTL15.0LOADU1CDIVN_16GNDNot
2、eN7.0U4OR2SI15.0OA7.0OB7.0U3J16B_8B2Vol7.0A7.0B7.0P15.0U2MULTU8B-Entity name-Created (31.08.04-Created by Ch.W.-Modified (date, by whom-Description-Tristate IO BufferLibrary Ieee;use ieee.std_logic_1164.all;entity addTrans isport (sel : in std_logic;inp : in std_logic_vector(15 downto 0;outp : out s
3、td_logic_vector(15 downto 0;io : inout std_logic_vector(15 downto 0;end entity;architecture rtl of addTrans isbeginoutp Z;io Z; end architecture;. Summary Converts a monochrome image as a PCB Logo into a series of thin PCB tracks that can be placed on a PCB document as a logo. Copyright (c 2008 by P
4、urPer Limited Version 1.5 Changes For Version 1.5 - Fix off by one errors accessing Canvas.Pixels - Make more tolerant of non-monochrome images, now tracks are created at the boundary of white and non-white pixels - Use user customized layer names .VargvBoard : IPCB_Board;. Procedure RunConverterScr
5、ipt;BeginConverterForm.ShowModal;End; . Procedure PlaceATrack(ABoard : IPCB_Board; X1,Y1,X2,Y2 : TCoord; ALayer : TLayer, AWidth : Float;VarPCBTrack : IPCB_Track;Sheet : IPCB_Sheet;OffSet : TCoord;Begin/ obtain the coordinates of the sheet so can place logo within the boardSheet := ABoard.PCBSheet;O
6、ffSet := MilsToCoord(100;/ place a new track on the blank PCBPCBTrack := PCBServer.PCBObjectFactory(eTrackObject, eNoDimension, eCreate_Default;PCBTrack.Width := Round(MilsToCoord(1 * AWidth;PCBTrack.X1 := Sheet.SheetX + MilsToCoord(X1 + Offset;PCBTrack.Y1 := Sheet.SheetY + MilsToCoord(Y1 + Offset;P
7、CBTrack.X2 := Sheet.SheetX + MilsToCoord(X2 + Offset;PCBTrack.Y2 := Sheet.SheetY + MilsToCoord(Y2 + Offset;PCBTrack.Layer := ALayer;ABoard.AddPCBObject(PCBTrack;End; .Procedure ScalingFactorChange(Dummy : TObject;BeginConverterForm.lImageSize.Caption := FloatToStr(ConverterForm.Image1.Picture.Width
8、+ 1 * ConverterForm.eScalingFactor.Text + x + FloatToStr(ConverterForm.Image1.Picture.Height + 1 * ConverterForm.eScalingFactor.Text + mils;End; .Procedure TConverterForm.eScalingFactorChange(Sender: TObject;BeginScalingFactorChange(Nil;End; . Procedure TConverterForm.loadbuttonClick(Sender: TObject
9、;VarI, J : Integer;BeginIf OpenPictureDialog1.Execute thenBeginXPProgressBar1.Position := 0;XStatusBar1.SimpleText := Loading.;XStatusBar1.Update;/ loading a monochrome bitmap onlyImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName;/ Check if image is monochrome, otherwise prompt a warningIf Ima
10、ge1.Picture.Bitmap.PixelFormat pf1bit ThenBeginFor J := 0 to Image1.Picture.Height - 1 DoFor I := 0 to Image1.Picture.Height - 1 DoBeginIf Image1.Canvas.PixelsI,J clWhite ThenImage1.Canvas.PixelsI,J := clBlack;End;End;ScalingFactorChange(Nil;convertbutton.Enabled := True;LoadButton.Enabled := False;
11、XStatusBar1.SimpleText := Ready.;XStatusBar1.Update;End;End; . procedure TConverterForm.ConverterFormCreate(Sender: TObject;begin/ Create a standalone blank PCB document and add the new logo to it/ from the PCBLogoContainer d.s.CreateNewDocumentFromDocumentKind(PCB;/ GetCurrentPCBBoard returns a IPC
12、B_Board type.gvBoard := PCBServer.GetCurrentPCBBoard;If gvBoard = Nil ThenBeginShowWarning(A PCB document is not created properly.;ShowModal := mrError;EndElseSetupComboBoxFromLayer(ComboBoxLayers, gvBoard;end; . Procedure TConverterForm.convertbuttonClick(Sender: TObject;x, y, x1, FlipY, FlipX : In
13、teger;PixelColor : TColor;Start : Boolean;/PCBBoard : IPCB_Board;PCBLayer : TLayer;TrackWidth : Integer;BeginScreen.Cursor := crHourGlass;XPProgressBar1.Max := Image1.Picture.Height;PCBLayer := GetLayerFromComboBox(ComboBoxLayers, gvBoard;TrackWidth := StrToFloat(eScalingFactor.Text;/ ensure the lay
14、er selected is displayed in the PCB workspace gvBoard.LayerIsDisplayedPCBLayer := True;For Y := 0 to Image1.Picture.Height - 1 DoBeginXPProgressBar1.Position := Y;XPProgressBar1.Update;XStatusBar1.SimpleText := Converting.;XStatusBar1.Update;If (cbMirrorY.Checked ThenFlipY := YElseFlipY := Abs(Y - I
15、mage1.Picture.Height - 1;FlipY := FlipY * StrToFloat(eScalingFactor.Text;/ Denotes the start of a line on a row of an imageStart := False;For X := 0 To Image1.Picture.Width DoBeginIf (cbNegative.Checked ThenPixelColor := clBlackElsePixelColor := clWhite;If X Image1.Picture.Width ThenPixelColor := Im
16、age1.Canvas.Pixelsx,y;If cbMirrorX.Checked ThenFlipX := abs(X - Image1.Picture.WidthElseFlipX := X;FlipX := FlipX * StrToFloat(eScalingFactor.Text;If (cbNegative.Checked ThenBeginCase PixelColor OfclWhite :If Not (Start ThenBeginx1 := FlipX;Start := True;End;ElseBeginIf (Start ThenPlaceATrack(gvBoar
17、d, X1,FlipY,FlipX,FlipY, PCBLayer, TrackWidth;Start := False;End;End;EndElseBeginCase PixelColor OfclWhite:BeginIf (Start ThenPlaceATrack(gvBoard, X1,FlipY,FlipX,FlipY, PCBLayer, TrackWidth;Start := False;End;ElseIf Not (Start ThenBeginx1 := FlipX;Start := True;End;End;End;End;End;Screen.Cursor := c
18、rArrow;XStatusBar1.SimpleText := Done.;XStatusBar1.Update;/ toggle buttonsConvertButton.Enabled := False;LoadButton.Enabled := True;/ clear out progress barXPProgressBar1.Position := 0;XPProgressBar1.Update;/clear out imageImage1.Picture.Bitmap := nil;Client.SendMessage(PCB:Zoom, Action=All , 255, Client.CurrentView;End; . Procedure TConverterForm.exitbuttonClick(Sender: TObject;BeginClose;End; .
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1