㈠ 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();
}
}