|
楼主译码错了。建议如下译码(共阳),这样错了很容易调整。 #define SEGA 0xfe #define SEGB 0xfd #define SEGC 0xf7 #define SEGD 0xdf #define SEGE 0xef #define SEGF 0xfb #define SEGG 0xbf #define CHAR_0 SEG_A&SEG_B&SEG_C&SEG_D&SEG_E&SEG_F //0 #define CHAR_1 SEG_B&SEG_C //1 #define CHAR_2 SEG_A&SEG_B&SEG_D&SEG_E&SEG_G //2 #define CHAR_3 SEG_A&SEG_B&SEG_C&SEG_D&SEG_G //3 #define CHAR_4 SEG_B&SEG_C&SEG_F&SEG_G //4 #define CHAR_5 SEG_A&SEG_C&SEG_D&SEG_F&SEG_G //5 #define CHAR_6 SEG_A&SEG_C&SEG_D&SEG_E&SEG_F&SEG_G //6 #define CHAR_7 SEG_A&SEG_B&SEG_C //7 #define CHAR_8 SEG_A&SEG_B&SEG_C&SEG_D&SEG_E&SEG_F&SEG_G//8 #define CHAR_9 SEG_A&SEG_B&SEG_C&SEG_D&SEG_F&SEG_G //9 #define CHAR_A SEG_A&SEG_B&SEG_C&SEG_E&SEG_F&SEG_G //a #define CHAR_b SEG_C&SEG_D&SEG_E&SEG_F&SEG_G //b #define CHAR_C SEG_A&SEG_D&SEG_E&SEG_F //c #define CHAR_d SEG_B&SEG_C&SEG_D&SEG_E&SEG_G //d #define CHAR_E SEG_A&SEG_D&SEG_E&SEG_F&SEG_G //e #define CHAR_F SEG_A&SEG_E&SEG_F&SEG_G //f #define CHAR_r SEG_E&SEG_G //r #define CHAR_N SEG_A&SEG_B&SEG_C&SEG_E&SEG_F //N #define CHAR_n SEG_C&SEG_E&SEG_G //n #define CHAR_H SEG_B&SEG_C&SEG_E&SEG_F&SEG_G //H #define CHAR_Blank 0xff uchar code smg_du[]={CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9,CHAR_A,CHAR_b,CHAR_C,CHAR_d,CHAR_E,CHAR_F,CHAR_Blank}; |
| 查看一下是共阴还是共阳 在看数码管的编码是否对应 |
| 显示编码是对的。可能是仿真软件问题,仿真软件对延时的要求很精准。 |
| 毕竟是仿真,有的元件与实际有差异。楼主把双联数码管改成2个单个数码管,就能正常显示了。 |
估计是数码管的编码问题 ![]() |