我用的單片機是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ā)光二級管組成. 還有就是用手摸著三級管的幾根線,有個燈會亮.
查看: 5202
回復: 3
[原創(chuàng)]問一個比較奇怪的問題
strongbaby
發(fā)表于: 2007-01-18 15:04:00
熱門產品 :
CH585: 集成高速USB和NFC的藍牙MCU
strongbaby
發(fā)表于: 2007-01-18 15:19:00
就是不動程序中的if else程序正常 一改為if elseif else 等三種情況就不錯.程序好象不走,數碼管不亮. 不知道原因在哪里,好困惑啊.好象其它的都改了,不知道addr線是怎么處理的.
反正就現在的情況的確很奇怪,100%的事,兩種情況對,三中情況錯.而要做的是三中情況
高手指點迷津,分析一下原因
luoye268268
發(fā)表于: 2007-01-18 16:08:00
你這樣試一下: if(dat>dat0) //上升dat0為上次的數值 { } else{ //下降或者不變 if(dat==dat0){ } else { }
} 你用單片機的串口檢測一下程序怎么運行的。
...測血氧么??
請勿發(fā)布廣告和違法內容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯系方式,以便更好更快服務您
只有登錄才能回復,可以選擇微信賬號登錄