老板最近不在,有点划水了!前几天的板子
通信问题查出来了,严格来说只是有了一个很有可能的猜想,利用2486通信,在和u***转串口连接的时候,需要使用一些电阻来稳定数据的传输,但是板子上面没有焊,其实
PCB板上是有贴片的焊点的,但是没有焊上贴片电阻。这个很有可能导致通信的失败!但是手边米有电阻,也没有办法证实这个猜想。不过我横向对比了其他的板子,在通信模块旁边都是焊接了电阻的,这也从一个侧面证实了这个猜测的正确性!不过具体的原因我不是很清楚!比较专业的名词叫做终端电阻。至于原理,本人就一窍不通了! 总之以后要记的,在485 通信的时候,要加上终端电阻。本次花了差不多两天半的时间,而同学只花了差不多两个小时就找到问题症结所在(对!这个问题不是我找到的.......),究其原因,还是因为对问题的定位不清楚,所以清楚地定位问题,往往会让我们事半功倍(至少上网查资料的时候,知道查什么)!
昨天看了一会儿C51谢了一个点亮数码管的函数,贴在下面(虽然很low,不过我感觉封装的还可以)
void nop(){
while(0);
}
unsigned char ledDuanData[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
//"0" //"1" //"2" //"3" //"4" //"5" //"6" //"7"
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71,
//"8" //"9" //"A" //"B" //"C" //"D" //"E" //"F"
0x40, 0x80, 0x00};
//"-"16 //小数点17 //熄灭
//数码管的位选是低电平有效,使用的时候记得取反
unsigned char ledWeiData[8]={0x01,0x02,0x04,0x08,0x010,0x020,0x40,0x80};
//参数duanc表示要选择的数值
//参数weic表示要选择的数位
void setLED(int duanc,int weic){
P0 = 0x00;
nop();
duan = 1;
nop();
duan = 0;
nop();//段选清零
P0 = 0xff;
nop();
wei = 1;
nop();
wei = 0;
nop();//位选清零
P0 = ledDuanData[duanc];
nop();
duan = 1;
nop();
duan = 0;
nop();//段选赋值
P0 = ~ledWeiData[weic-1];
nop();
wei = 1;
nop();
wei = 0;
nop();//位选赋值
}
之后几天要准备
电子设计大赛,可能写的东西有变化,但是我尽量更新不断
PS:本人现在大三,在嵌入式领域只能算是一个刚刚看见门槛的小学生,上面的写的东西大部分是我看的资料,也有一些是我的想法。如果您不小心点开了,又不幸看完了,那么我还真是感激不尽!当然,如果您愿意留下只言片语,或是交流,或是指正,鄙人更是感激万分!
末学后进在这里,希望与大家一起进步,成长!
0