㈠ PCB代碼用什麼語言
PCB代碼用c和匯編都可以語言。
電路板使電路迷你化、直觀化,對於固定電路的批量生產和優化用電器布局起重要作用。電路板可稱為印刷線路板或印刷電路板。
FPC線路板,FPC線路板又稱柔性線路板柔性電路板是以聚醯亞胺或聚酯薄膜為基材製成的一種具有高度可靠性,絕佳的可撓性印刷電路板。
PCB代碼組成:
PCB進程式控制制塊是進程的靜態描述,由PCB、有關程序段和該程序段對其進行操作的數據結構集三部分組成。
在Unix或類Unix系統中,進程是由進程式控制制塊,進程執行的程序,進程執行時所用數據,進程運行使用的工作區組成。其中進程式控制制塊是最重要的一部分。
進程式控制制塊是用來描述進程的當前狀態,本身特性的數據結構,是進程中組成的最關鍵部分,其中含有描述進程信息和控制信息,是進程的集中特性反映,是操作系統對進程具體進行識別和控制的依據。
㈡ PCB電路板製作流程
PCB板製作生產流程
印刷電路板—內層線路—壓合—鑽孔—鍍通孔(一次銅)—外層線路(二次銅)—防焊綠漆—文字印刷—接點加工—成型切割—終檢包裝。
印刷電路板
在SMT加工中,印刷電路板(Printed Circuit Boards)是個關鍵零件。它搭載其他的電子零件並連通電路,以提供一個安穩的電路工作環境。如以其上電路配置的情形可概分為三類:
單面板:將提供零件連接的金屬線路布置於絕緣的基板材料上,該基板同時也是安裝零件的支撐載具。
雙面板:當單面的電路不足以提供電子零件連接需求時,便可將電路布置於基板的兩面,並在板上布建通孔電路以連通板面兩側電路。
多層板:在較復雜的應用需求時,電路可以被布置成多層的結構並壓合在一起,並在層間布建通孔電路連通各層電路。
內層線路
銅箔基板先裁切成適合加工生產的尺寸大小。基板壓膜前通常需先用刷磨、微蝕等方法將板面銅箔做適當的粗化處理,再以適當的溫度及壓力將干膜光阻密合貼附其上。將貼好乾膜光阻的基板送入紫外線曝光機中曝光,光阻在底片透光區域受紫外線照射後會產生聚合反應(該區域的干膜在稍後的顯影、蝕銅步驟中將被保留下來當作蝕刻阻劑),而將底片上的線路影像移轉到板面干膜光阻上。
撕去膜面上的保護膠膜後,先以碳酸鈉水溶液將膜面上未受光照的區域顯影去除,再用鹽酸及雙氧水混合溶液將裸露出來的銅箔腐蝕去除,形成線路。最後再以氫氧化鈉水溶液將功成身退的干膜光阻洗除。
對於六層(含)以上的內層線路板以自動定位沖孔機沖出層間線路對位的鉚合基準孔。完成後的內層線路板須以玻璃纖維樹脂膠片與外層線路銅箔黏合。在壓合前,內層板需先經黑(氧)化處理,使銅面鈍化增加絕緣性;並使內層線路的銅面粗化以便能和膠片產生良好的黏合性能。
疊合時先將六層線路﹝含﹞以上的內層線路板用鉚釘機成對的鉚合。再用盛盤將其整齊疊放於鏡面鋼板之間,送入真空壓合機中以適當之溫度及壓力使膠片硬化黏合。壓合後的電路板以X光自動定位鑽靶機鑽出靶孔作為內外層線路對位的基準孔。並將板邊做適當的細裁切割,以方便後續加工。
㈢ 我想開發電路板的程序,我是要c語言還是c 還是Java
首先C就是C語言。
電路板程序當然是C語言寫了,初學者推薦安裝Keil。有了一定基礎後就不推薦使用這些IDE了,這不利於你了解編譯的整個過程。後期要通過自己寫Makefile來編譯程序,通過命令行來燒寫程序。
頂層應用程序的話可以根據實際情況用Java開發Android程序,也可以用C++開發QT程序。但是燒寫在PCB里的Flash中的程序一定是用C開發的(匯編也行,但是一般只在單片機啟動初始化代碼中使用,調試程序的時候也經常要看反匯編)。
㈣ PCB電路板製作流程
1、根據電路功能需要設計原理圖。原理圖的設計主要是依據各元器件的電氣性能根據需要進行合理的搭建,通過該圖能夠准確的反映出該PCB電路板的重要功能,以及各個部件之間的關系。原理圖的設計是PCB製作流程中的第一步,也是十分重要的一步。通常設計電路原理圖採用的軟體是PROTEl。
㈤ protel dxp2004 畫好的原理圖及生成的PCB圖怎麼驗證正確性
右擊要編譯的項目,選擇Compile PCB Project***.PriPcb編譯電路板項目命令,程序開始編譯項目,批次電氣檢查就在其中,如果原理圖有問題,將出現Message面板,記錄錯誤與警告信息。
PCB在布線模式下會online DRC 在TOOL選項的第一項也有design rules check可以檢查電氣連接正確性
㈥ 電路板程序原理
1、電路板上的程序為什麼能運行?
因為程序是編程者按照一定的編程規則和器件原理把編譯後的代碼燒入單片機或其他可執行程序的器件中的,然後晶元就按照這些代碼去執行相關操作。
2、在什麼情況下程序不會運行或出亂?
這有很多原因,1)晶元受外部干擾導致晶元內如程序運行失常,2)晶元的電源供應不達要求或出錯導致晶元不能正常工作,當然此時程序也就不能運行了。3)由於電源接錯或使用年數已久導致晶元的損壞,程序也無從運行了。4)程序本身的漏洞。
個人拙見!僅供參考!
㈦ 給電路板寫程序那個叫什麼
給電路板寫程序那個叫:C或匯編。
硬體驅動:硬體初始化、向硬體中讀寫數據、硬體特殊功能的API介面。
系統函數:整個軟體的初始化、硬體的管理、應用軟體的管理、內存的管理。
程序變換之後,需要對程序進行檢查編寫是否有語法錯誤,這種檢查只能夠對語法進行自診斷,而跟設計內容無關。程序檢查需要點擊工具菜單欄的「程序檢查」。
兼容設計:
電磁兼容性是指電子設備在各種電磁環境中仍能夠協調、有效地進行工作的能力。目的是使電子設備既能抑制各種外來的干擾,使電子設備在特定的電磁環境中能夠正常工作,同時又能減少電子設備本身對其它電子設備的電磁干擾。
1、選擇合理的導線寬度由於瞬變電流在PCB電路板印製線條上所產生的沖擊干擾主要是由印製導線的電感成分造成的,因此應盡量減小印製導線的電感量。
2、採用正確的布線策略採用平等走線可以減少導線電感,但導線之間的互感和分布電容增加,如果布局允許,最好採用井字形網狀布線結構,具體做法是印製板的一面橫向布線,另一面縱向布線,然後在交叉孔處用金屬化孔相連。
㈧ 請問如何將C或匯編源程序或燒到自己製作的PCB板上 謝謝···
一. 安裝單片機程序編譯軟體KEIL。
1.點擊圖標 運行直至安裝完成。
2.點擊圖標 運行KEIL,然後選擇菜單「project」點擊「new……」點擊「 」建立新的工程。填寫好工程文件名選擇保存路徑後按「保存」,此時彈出一個窗口如下圖所示
點擊Atmel左邊的+號展開CPU的型號,選擇「AT89C51」按「確定」再生成一個對話框如下圖,再按「是」即可。
這時在工程左邊的文件指示欄中多了一個 這樣的圖標,點其左邊的+號可展開當前所包含的文件。
選擇菜單「File」「new」新建一個文本編輯器,按保存按鈕,在彈出的窗口填入文件名後綴為.C ,然後按保存即把這個C文本文件保存到這個工程的目錄下。
再在工程左邊的文件指示欄中指著 點擊右鍵選擇 選項把剛才建立的C文件加入來,按「Add」即可加入,這時就可以在C文本編輯器里編號程序了。
寫好程序後選擇菜單「project」選擇「 」打開的對話框如下圖所示
如果彈出來的不是這個對話框時可以重復一次「project」選擇「 」便可以打開,打開後在 這個方框里打上勾然後按「確定」才可以編譯生成單片機的燒寫文件HEX文件。這些選項都設置好並寫好源程序後就可以在菜單選項project選項中選擇 選項對源程序進行編譯,生成的HEX文件就在工程的目錄下。
本文章後面附帶的是HJSMSY-V1.0開發板的測試源程序,讀者可以將其復制到編譯器里編譯。此程序為一個簡單的計算器功能程序,數寫鍵依次對應電路板上的數字0--9,「A」鍵功能為清除,「B」鍵功能為等於,「C」鍵功能為+,「D」鍵功能為-,「E」鍵功能為*,「F」鍵功能為除。
二. 把單片機開發板用9針串口線與電腦連接好,用配套的USB供電線將單片機開發板供電,並關閉電路板上的電源開關。運行STC晶元燒寫軟體,
點擊圖標
打開下載界面如下圖
按這個圖裡面的設置設好參數後,點擊「Open File/打開文件」打開HEX文件,在打開的對話框中找到剛才所建立工程的目錄,在此目錄下可以找到剛才編譯得到的HEX文件,如果找不到則是還沒有在 這個方框里打上勾,回到工程里打上勾並按 編譯一次就行了。打開HEX文件確定後就點擊下載軟體的 ,再打開單片機開發板上的電源開關,這時電腦便自動與單片機連接並把程序下載到單片機里,下載完成後會有聲音提示的,或者可以在軟體界面上看得到。註:STC系列單片機是在開機的瞬間下載程序的,如果還未能連接成功可以關掉電源再開一次即可。
//HJSMSY-V1.0單片機開發板測試程序.C
//-----------------------------------------------
// <<計算器>>
//-----------------------------------------------
//編寫人:李春起
//編定日期:2010.06.26
//修改日期:
//============================================================
#include <AT89X52.H>
#define uchar unsigned char
#define uint unsigned int
uint comdata,vardata,dispdata;
unsigned char flag=0,incflag=0,maxflag=10,maxvar=1;
//===========共陽數碼管段碼表==================================
uchar code SEG7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code ACT[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
//================引腳定義=======================================
sbit yy=P3^2;
sbit jk=P3^4;
sbit k1=P2^3;
sbit k2=P2^2;
sbit k3=P2^1;
sbit k4=P2^0;
//=====子函數聲明======================================
void init(void);
void delay1(uint z);
void kk(void);
//===========程序初始化===============================
void init(void)
{
TMOD=0x01;
TH0=0xf4;
TL0=0x48;
ET0=1;
TR0=1;
EA=1;
}
//=====空操作延時子程序=======================
void delay1(uint z)
{
uint j,y;
yy=0;
for(j=0;j<z;j++)
{for(y=0;y<100;y++){;}}
yy=1;
for(j=0;j<z;j++)
{
for (y=0;y<3422;y++);
}
}
//========鍵盤掃描子程序===================
void kk(void)
{ P2=0xf0;
if(P2!=0xf0)
{
P2=0xef;
if(!k1){delay1(15);comdata=vardata;vardata=0;incflag=1;} //k13
if(!k2){delay1(15);comdata=vardata;vardata=0;incflag=2;} //k14
if(!k3){delay1(15);comdata=vardata;vardata=0;incflag=3;} //k15
if(!k4){delay1(15);comdata=vardata;vardata=0;incflag=4;} //k16
P2=0xdf;
if(!k1){delay1(15);if(vardata>6553){goto ab1;};vardata=((vardata*10)/maxflag+8*maxvar);dispdata=vardata;} //k9
ab1:if(!k2){delay1(15);if(vardata>6553){goto ab2;};vardata=((vardata*10)/maxflag+9*maxvar);dispdata=vardata;} //k10
ab2:if(!k3){delay1(15);vardata=0;dispdata=vardata;} // k11
if(!k4){delay1(15);switch (incflag){
case 1:{vardata=(comdata+vardata);dispdata=vardata;}break;
case 2:{vardata=(comdata-vardata);dispdata=vardata;}break;
case 3:{vardata=(comdata*vardata);dispdata=vardata;}break;
case 4:{vardata=(comdata/vardata);dispdata=vardata;}break;
default:break;
}
}//k12
P2=0xbf;
if(!k1){delay1(15);if(vardata>6553){goto ab3;};vardata=((vardata*10)/maxflag+4*maxvar);dispdata=vardata;} //k5
ab3:if(!k2){delay1(15);if(vardata>6553){goto ab4;};vardata=((vardata*10)/maxflag+5*maxvar);dispdata=vardata;} //k6
ab4:if(!k3){delay1(15);if(vardata>6553){goto ab5;};vardata=((vardata*10)/maxflag+6*maxvar);dispdata=vardata;} //k7
ab5:if(!k4){delay1(15);if(vardata>6553){goto ab6;};vardata=((vardata*10)/maxflag+7*maxvar);dispdata=vardata;} //k8
ab6:P2=0x7f;
if(!k1){delay1(15);if(vardata>6553){goto ab7;};vardata=((vardata*10)/maxflag+0*maxvar);dispdata=vardata;} //k1
ab7:if(!k2){delay1(15);if(vardata>6553){goto ab8;};vardata=((vardata*10)/maxflag+1*maxvar);dispdata=vardata;} //k2
ab8:if(!k3){delay1(15);if(vardata>6553){goto ab9;};vardata=((vardata*10)/maxflag+2*maxvar);dispdata=vardata;} //k3
ab9:if(!k4){delay1(15);if(vardata>6553){goto ab10;};vardata=((vardata*10)/maxflag+3*maxvar);dispdata=vardata;} //k4
ab10:;
}
}
//======定時器0中斷服務子程序================
void time0(void) interrupt 1
{
TH0=0xf4;
TL0=0x48;
P0=0xff;P1=0xff;
// 時鍾顯示子程序
switch(flag)
{
case 0:{P0=SEG7[dispdata%10];P1=ACT[0];flag=1;}break;
case 1:{P0=SEG7[(dispdata/10)%10];P1=ACT[1];flag=2;}break;
case 2:{P0=SEG7[(dispdata/100)%10];P1=ACT[2];flag=3;}break;
case 3:{P0=SEG7[(dispdata/1000)%10];P1=ACT[3];flag=4;}break;
case 4:{P0=SEG7[dispdata/10000];P1=ACT[4];flag=5;}break;
case 5:{P0=SEG7[0];P1=ACT[5];flag=0;}
default:break;
}
}
//=========主函數======================================
void main()
{
init();
yy=1;
jk=0;
while(1)
{
if((vardata/1000)>=9){maxflag=10;maxvar=0;}
else {maxflag=1;maxvar=1;}
kk();
}
}