[原創(chuàng)]問一個比較奇怪的問題

我用的單片機是c4051,用ch452驅動數碼管顯示.電路板是用的四線制(用了din,dclk,load)的,數碼管正常顯示.現在改為兩線制(用scl,sda),用單片機節(jié)省出來的這個引腳和單的兩一個引腳做燈顯示.(我這個產品是測氧含量的,上升一個燈亮,下降另一個燈亮).現在在四線的基礎上自己用工具改為兩線的外在條件.現在程序能正常運行,但是燈顯卻只能分為兩種情況.即只能(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%出錯.不知道原因在那里. 燈是用三級管加發(fā)光二級管組成. 還有就是用手摸著三級管的幾根線,有個燈會亮.

就是不動程序中的if else程序正常 一改為if elseif else 等三種情況就不錯.程序好象不走,數碼管不亮. 不知道原因在哪里,好困惑啊.好象其它的都改了,不知道addr線是怎么處理的.

反正就現在的情況的確很奇怪,100%的事,兩種情況對,三中情況錯.而要做的是三中情況

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


你這樣試一下: if(dat>dat0) //上升dat0為上次的數值 { } else{ //下降或者不變 if(dat==dat0){ } else { }

} 你用單片機的串口檢測一下程序怎么運行的。


...測血氧么??


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频