nwq0902

【技术分享】基于嵌入式电路设计与制作

0
阅读(7436)

 

一、硬件实现系统PCB板的制作

1打印:打印时应将上层(红线)进行镜像。再在打印属性里将多余属性

的层线删除。

在打印预览页面确认无误之后选择1:1比例打印。打印时应选用油性纸,以防纸张在热转移时因过热而燃烧。

 

2热转移:将打印好的纸紧贴铜板,再包上一层油纸进行热转移。最好过三次。

在第二面进行热转移时应仔细对齐以防焊盘错位。

(可以用铁丝加已固定)

转移三次拆纸时,应注意将纸全部拆除,否则会导致下一步的腐蚀不彻底。

 

3腐蚀:腐蚀选择三氯化铁或浓盐酸与双氧水的混合液。建议选择前者(不会产生刺激性气体、但成本较高)。在腐蚀过程中,应将板子在液体中来回漂动以加快腐蚀效率。腐蚀时注意安全。 

4钻孔:打孔应垂直,一气呵成。在打孔打磨好后建议先用万用表测试相应的钻孔是否都联通,减小后续调试的难度。

5焊接:建议先焊接高度低的原件再焊接高度高的原件(易于操作)。注意

正反面。焊接时的正确操作应该是:将焊锡靠在引脚与焊盘上,再将烙铁靠在焊锡上,待焊锡化开后用烙铁将其弄成锥形。焊接时动作应劲尽量快并保持整个板子的美观。 

二、系统硬件调试

对于我们初学者来说,大多数同学焊接好了的板子不能立刻有相应的效果,应该进行调试。在调试时建议使用万用表二极管档或200欧档,

若能有导通时鸣叫的万用表最好。若数码管的某一位不亮,对照PCB原理图检测相应的位码引脚及相应的连线。若不同位码的相同码不亮,对照PCB原理图检测相应的段码引脚及相应的连线。芯片的引脚编码是从昨上开始编码的,编码为”U”型,从1开始的。

调试过程漫长又枯燥,需要极大的耐性。调试时应保持良好的心态。

 

软件实现

 

TinyHMI

键盘显示板调试程序:

 

#include"595_cfg.h" 

#include"595.h" 

#include"delay100us.h" 

#include<8051.h> 

#include"Port.h" 

 

#ifndef TinyHMI_cfg 

#define TinyHMI_cfg 

#define uchar unsigned char 

#define uint unsigned int 

#define 

 

Sck_CP 

 

P0_0 

#define 

 

RCK_STR 

 

P0_1 

#define 

 

DAT_D 

 

P0_2 

#define 

 

KEY 

 

P0_3 

#define _nop_() 

static 

code 

TinyHMI_duan[]={{0x00},{0x3f},{0x06},{0x5b},{0x4f},{0x66},{0x6d},{0x7d},{0x07},{0x7f},{0x6f}}; 

static code TinyHMI_wei[]={{0x00},{0x01},{0x02},{0x04},{0x08},{0x10},{0x20},{0x40},{0x80}}; 

uint keyvalue; 

 

void TinyHMI_STR(void) 

RCK_STR =1;

 

 

=1; 

char delay100us(unsigned int uiDly) 

unsigned char k; 

 

}while (--k!=0); 

 

}while (--uiDly!=0); 

 

return 0; 

void TinyHMI_Display(unsigned char Data

//8

位串入并出带锁存送数子程序

unsigned char i; 

 

for (i=0;i<8;i++){ 

 

 

DAT_D=Data&0x80; 

 

 

Data<<=1; 

TinyHMI_CP(); 

 

void TinyHMI_Show(unsig,unsigned j) 

TinyHMI_Display(TinyHMI_duan[i+1]); 

TinyHMI_Display(~TinyHMI_wei[j+1]); 

 

TinyHMI_STR(); 

 

delay100us(22); 

void TinyHMI_Scan(void) 

unsigned i; 

 

for (i=0;i<9;i++){ 

 

 

TinyHMI_Display(TinyHMI_duan[i]); 

 

 

TinyHMI_Display(~TinyHMI_wei[i]); 

 

 

TinyHMI_STR(); 

 

 

if(KEY==0)keyvalue=i; 

 

 

if(keyvalue==1)TinyHMI_Show(1,0); 

 

 

if(keyvalue==2)TinyHMI_Show(2,1); 

 

 

if(keyvalue==3)TinyHMI_Show(3,2); 

 

 

if(keyvalue==4)TinyHMI_Show(4,3); 

 

 

if(keyvalue==5)TinyHMI_Show(5,4); 

 

 

if(keyvalue==6)TinyHMI_Show(6,5); 

 

 

if(keyvalue==7)TinyHMI_Show(7,6); 

 

 

if(keyvalue==8)TinyHMI_Show(8,7); 

 

 

delay100us(22); 

 

void main(void)

while(1) 

 

TinyHMI_Scan(); 

 

三、实现效果

 

初始时八位依次显示