我画了一块数码管的pcb,结果显示时总是乱码,总结经验如下:
图一
图二
1.由于我连线路的时候是按照自己思路的编码方式,而在写程序的时候,却依然使用传统编码方式的编码二产生错误!
2.不要太过于自信自己很久以前学过的东西,例如我记忆中认为传统是按照图一编码的,而实际上正确的编码方式是图二的。也就是我记错了!
3.在实际测试中出现问题时,要有勇气与决心去解决问题。而不是一遇到问题就回避。那样的话问题永远也不会被解决!
4.实际工作中做任何事情都应该一丝不苟,小小的错误往往会造成大的偏差。小错误其实并不小。
5.在实际中遇到问题时,要掌握好解决问题的方法。一步步排除问题出现的可能的因素,最后找到问题的症结所在。
以上内容那本人亲身经历,感触良深,仅以此记录这段错误,并给后人一警示!希望大家不要犯类似的错误!
我的编码方式的编码:
{0xc0,0xfc,0x89,0x83,0xa6,0x92,0x90,0xc7,0x80,0x82}; //共阳 0-9
{0x40,0x7c,0x09,0x03,0x26,0x12,0x10,0x47,0x00,0x02};//0-9共阳,带小数点
代码如下:
#include
#define uint unsigned int
uint yy[]={0xf7,0xfb,0xfd,0xfe,0xf7,0xfb,0xfd,0xfe,0xf7,0xfb};
#define wei P1
#define duan P2
#define LED7 XBYTE[0x9000]
#define LED6 XBYTE[0x9001]
#define LED5 XBYTE[0x9f02]
#define LED4 XBYTE[0x9f03]
#define LED3 XBYTE[0x9f04]
#define LED2 XBYTE[0x9f05]
#define LED1 XBYTE[0x9f06]
#define LED0 XBYTE[0x9f07]
uint xx[]={0x40,0x7c,0x09,0x03,0x26,0x12,0x10,0x47,0x00,0x02};//0-9共阳,带小数点
void init()
{
LED0=0;
LED1=0;
LED2=0;
LED3=0;
LED4=0;
LED5=0;
LED6=0;
LED7=0; //关掉数码管
//flag=2; //使步进电机一开始就处于停止状态
}
void delay(uint z)
{
uint x,y;
for(x=11;x>0;x--)
for(y=z;y>0;y--);
}
void main()
{
uint aa=12345678;
init();
while(1)
{
uint x;
// uint y;
for(x=0;x<10;x++)
{
wei=yy[x];
duan=xx[x];
delay(3000);
}
/*
wei=0xfd;
duan=t[1];
delay(5);
wei=0xfb;
duan=t[2];
delay(5);
wei=0xf7;
duan=t[3];
delay(5); */
/*
wei=0xef;
duan=t[7];
delay(500);
wei=0xdf;
duan=t[4];
delay(500);
wei=0xbf;
duan=t[5];
delay(500);
wei=0x7f;
duan=t[6];
delay(500);
*/
// wei=0xfd;
// duan=t[7];
// delay(500);
}
}
pcb如下:
阅读(1187) | 评论(0) | 转发(0) |