如题:
只是把以下内容调了程序段的后面, 它又可以显示"0-7'''了
" P0=DIG_CODE[i];//P0口发送段码 j=100; //扫描间隔时间设定 while(j--); P0=0x00; //消隐
}"
求
分析过程....
延时的位置放错了,导致当前位选择为下一次服务了。
追问先谢谢您可以实现功能的另外一种参考样子.
其实我想要的是去如何理解我自己写的程序,为什么当初不行,修改后又可以,过程,对我这初学者,理解原程序语句含义,很要紧,请原谅我钻牛角尖....
我已经解释了: 延时的位置放错了,导致当前位选择为下一次服务了。
现在你调过来了,就正确了。
我也知道是 位 不对,非硬件问题....
因为程序上,原是先 " 段 " 后 " 位" ,后改为先"位"后"段", 结果是可以显示0-7的...
所以很纠结,奇怪...,位,段的先后顺序有关系么?
求解...
for(i=0;i<8;i++;)//此步已经执行了i++;
{
switch(i)到些步是先执行case1,当P0=DIG_CODE[i]在for前时,下面有P0=0x00,所以case1时显示是0,当然,你的case不动,那只要把延时和消隐那两句放在后面就可以了
C 语言51单片机,求解8位数码管上动态显示0-7,为什么会显示...
void main(){ unsigned char i,j; while(1) for (i=0; i<8; ++i) { P0=DIG_CODE[i]; \/\/发段码 P2=i<<1; \/\/发位选 for (j=0; j<100; ++j); \/\/延时 }} 延时的位置放错了,导致当前位选择为下一次服务了。
帮个忙 编个数码管显示1234的c语言程序啊
sbit LATCH2=P2^3;\/\/ 位锁存 unsigned char code dofly_DuanMa[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};\/\/ 显示段码值12345670 unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};\/\/分别对应相应的数码管点亮,即位码 void Delay...