[原创]问一个比较奇怪的问题

我用的单片机是c4051,用ch452驱动数码管显示.电路板是用的四线制(用了din,dclk,load)的,数码管正常显示.现在改为两线制(用scl,sda),用单片机节省出来的这个引脚和单的两一个引脚做灯显示.(我这个产品是测氧含量的,上升一个灯亮,下降另一个灯亮).现在在四线的基础上自己用工具改为两线的外在条件.现在程序能正常运行,但是灯显却只能分为两种情况.即只能(if ----else---上升或者不上升.).一旦把不升不降加进去,数码管不显示,用尽了许多if语句都不行.不知道什么原因. 大概程序如下: do{ {不断从ad中取得dat} if(dat>dat0)//上升dat0为上次的数值 { On_Off0=0; DelayN_1ms(15); On_Off0=1; DelayN_1ms(10);} else //下降或者不变 { On_Off1=0; DelayN_1ms(15) ; On_Off1=1; DelayN_1ms(10); } {送数码管显示} datt=dat; { } dat0=datt;把这次的数值赋予dat0 }while(1) 只要是把灯显的部分分为三中情况,上升下降或者相等.数码管就会出错,不显示.而我的程序在这个程序之前却有显示字符的部分.出奇的奇怪,一分为三种100%出错.不知道原因在那里. 灯是用三级管加发光二级管组成. 还有就是用手摸着三级管的几根线,有个灯会亮.

就是不动程序中的if else程序正常 一改为if elseif else 等三种情况就不错.程序好象不走,数码管不亮. 不知道原因在哪里,好困惑啊.好象其它的都改了,不知道addr线是怎么处理的.

反正就现在的情况的确很奇怪,100%的事,两种情况对,三中情况错.而要做的是三中情况

高手指点迷津,分析一下原因


你这样试一下: if(dat>dat0) //上升dat0为上次的数值 { } else{ //下降或者不变 if(dat==dat0){ } else { }

} 你用单片机的串口检测一下程序怎么运行的。


...测血氧么??


只有登录才能回复,可以选择微信账号登录