wulin 发表于 2023-6-7 15:49 多谢,我再好好琢磨~ |
Intel2006 发表于 2023-6-7 13:15 你仔细看一下甲机代码,只在初始化时发送一次,如果乙机还没有准备好,当然收不到,后续也没有信号了。 |
多谢,但是我设置了消隐并修改了硬件为7SEG-MPX6-CA之后,显示是6个“0”,还是没解决啊?感觉甲机的数据传送到乙(串口助手可以检测到数据发送),但并没有成功给buffer[]赋值,使得这个数组还是初始化的样子。请问您知道里面的原因吗? |
是的,我昨晚也发现它用的是共阴极了。教材还是国家特等奖,但例程不止这一个有问题。 |
Intel2006 发表于 2023-6-7 00:41 ![]() |
Intel2006 发表于 2023-6-7 00:41 消隐是问题之一,从你的图片看明显是数码管用错了,要用共阳。 |
多谢楼上的回复,但似乎不是消隐的问题。 |
void disp() { unsigned char w,i,j; w=0x01; //位码赋初值 for(i=0;i<6;i++) { P2=0xff; // 消隐 P1=tab[buffer[i]]; // 送共阳极显示字型段码,buffer[i]作为数组分量的下标 P2=~w; // 送反相后的位码 for(j=0;j<100;j++);// 显示延时 w<<=1; // w左移一位 } } |
P2口输出经过了反相器74LS04,所以在程序中的P1和P2输出刚好反好,应该为 P1=~tab[buffer[i]]; // 送共阳极显示字型段码,buffer[i]作为数组分量的下标 P2=w; // 送反相后的位码 另外仿真时,数码管显示未消影,所以最终要把程序改成如下就对了: P1=0; P1=~tab[buffer[i]]; // 送共阳极显示字型段码,buffer[i]作为数组分量的下标 P2=w; // 送反相后的位码 |