|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
[求助]一個(gè)LED點(diǎn)陣顯示的函數(shù)問(wèn)題 |
| 作者:網(wǎng)絡(luò)同行 欄目:單片機(jī) |
這是這個(gè)功能函數(shù),請(qǐng)各位大俠幫我看看。 5為場(chǎng)點(diǎn)數(shù),3為行點(diǎn)數(shù)*8為實(shí)際點(diǎn)數(shù)。 void DisplayToptoBottom()//ÉÏ&MICRO;½ÏÂ4 { CHAR v,n; int h=0,x; bit a=HIGH; for(n=0;n<=5;n++)//一場(chǎng),為一動(dòng)態(tài)處理 { for(x=0;x<200;x++) { h=0; a=HIGH; for(v=1;v<=5;v++)///一幀 { CLK_H=LOW; DATA_H=a; CLK_H=HIGH; a=LOW; for(;h<(3*v);) { //for(b=0;b<(CONST_H_POINT*(CONST_V_POINT-n));b++) SBUF=0x00; if(h<(3*n))SBUF=0x00; else SBUF=CCDataRom[CData_Value_K][h]; h++; while(!TI); TI=0; } lock_state(); //LOCK_H=LOW; //_nop_();_nop_(); //LOCK_H=HIGH; } } } } 目前出現(xiàn)的問(wèn)題是它能顯示一些圖像比如說(shuō)A,但如果讓它滿屏顯示,會(huì)出現(xiàn)閃爍現(xiàn)像而不是逐行顯示現(xiàn)像。 行用的硬件為8051RC通UART口的串行移位功能與595連接實(shí)現(xiàn)的。 場(chǎng)為模擬串行移位功能通過(guò)595實(shí)現(xiàn)。 請(qǐng)問(wèn)是硬件問(wèn)題還軟件問(wèn)題,如何解決。 如果各位大俠曾經(jīng)遇到過(guò)這樣的問(wèn)題,能否告知,小菜在此不勝感激 |
| 2樓: | >>參與討論 |
| 作者: aibxyz 于 2005/9/16 9:24:00 發(fā)布:
掃描最好在定時(shí)中斷里做 另外,你是不是還添加了滾屏功能 如果是,滾屏功能不要放在這,這樣結(jié)構(gòu)混亂 還有l(wèi)ock_state()是延時(shí)加鎖定595的程序么 |
|
| 3樓: | >>參與討論 |
| 作者: 網(wǎng)絡(luò)同行 于 2005/9/16 10:03:00 發(fā)布:
lock_state()加鎖定功能,另外你說(shuō)的中斷,如果屏幕小的話沒(méi)問(wèn)題,但如大的話,我不用定時(shí)中斷都顯太慢,如果用了以后會(huì)產(chǎn)生數(shù)據(jù)未傳完,而另一幀數(shù)據(jù)又到了的結(jié)果。 另外您所提到的結(jié)構(gòu),上面只不過(guò)是一個(gè)功能函數(shù),有可能寫(xiě)得混亂了一點(diǎn)噢,它所實(shí)現(xiàn)的只有一種功能,那就是逐行顯示。(滾屏功能) 20*5只不過(guò)是一個(gè)實(shí)驗(yàn)板,真正的可能是40*40帶RGB三色。也就是40*120,我是保證uart口每秒鐘的數(shù)量為4800*100/8的數(shù)據(jù)量,否則就有可能出現(xiàn)屏閃現(xiàn)像,(這其中還沒(méi)有考慮到,其它一些功能函數(shù)的處理程序) 不過(guò)還是感謝一樓的建議,謝謝。 也同時(shí)希望哪位大俠解決一下小菜現(xiàn)在的這個(gè)問(wèn)題。 |
|
| 4樓: | >>參與討論 |
| 作者: aibxyz 于 2005/9/16 11:43:00 發(fā)布:
如果屏幕大,用單片機(jī)是來(lái)不及的,即使你一直在循環(huán)掃描 這個(gè)時(shí)候應(yīng)該用硬件掃描了,比如火車(chē)站的那種車(chē)次顯示屏 想掃描沒(méi)有閃爍,就要保證每次的間隔相等 lock_state()里沒(méi)有延時(shí)的話,那你的延時(shí)在那啊 |
|
| 5樓: | >>參與討論 |
| 作者: 沒(méi)有如果 于 2005/9/16 22:42:00 發(fā)布:
樓上的都是高手啊 |
|
| 6樓: | >>參與討論 |
| 作者: 網(wǎng)絡(luò)同行 于 2005/9/20 16:29:00 發(fā)布:
595三態(tài)門(mén)啊,它在傳送數(shù)據(jù)的時(shí)候并口引腳信號(hào)是不會(huì)變的,所以我沒(méi)有使用延時(shí)。 另外掃描速度可用6CLOCK的芯片沒(méi)有問(wèn)題,大概在105Hz左右。 現(xiàn)在最希望的還是上面的那個(gè)關(guān)于全屏?xí)r的問(wèn)題,請(qǐng)各位大俠伸出源助之手吧!。。。。。! 「該帖子被 網(wǎng)絡(luò)同行 在 2005-9-21 16:08:55 編輯過(guò)」 |
|
| 7樓: | >>參與討論 |
| 作者: 網(wǎng)絡(luò)同行 于 2005/9/22 8:12:00 發(fā)布:
自己先頂一下,期待大俠們的幫助 |
|
| 8樓: | >>參與討論 |
| 作者: aibxyz 于 2005/9/22 12:23:00 發(fā)布:
595的輸出鎖定不能算是延時(shí),因?yàn)槟愕某绦蛟诓粩嗟难h(huán) 當(dāng)一次循環(huán)結(jié)束后,你又送數(shù)據(jù)了,這樣來(lái)看延時(shí)也只有那些指令執(zhí)行的時(shí)間 點(diǎn)亮?xí)r間的比例并不高 |
|
| 9樓: | >>參與討論 |
| 作者: 網(wǎng)絡(luò)同行 于 2005/9/22 16:05:00 發(fā)布:
如果傳送15個(gè)字節(jié)的數(shù)據(jù)說(shuō)時(shí)間不夠長(zhǎng)的話,那么我傳送3個(gè)字節(jié)又怎么樣,我在3個(gè)字節(jié)上是成功的。 另外請(qǐng)樓上的想一想,我的每次鎖定是緊接著前一次的。 同時(shí)我不希望再討論這個(gè)問(wèn)題,實(shí)踐是沒(méi)有問(wèn)題。 我所擔(dān)心的是一提全屏點(diǎn)時(shí)不能出現(xiàn)動(dòng)態(tài)圖像,其它,我想應(yīng)該沒(méi)有什么問(wèn)題了,而且這個(gè)的逆續(xù)掃描已經(jīng)實(shí)現(xiàn)。 也不知道什么原因,兩個(gè)完全想同函數(shù)只是將 if(h<(3*n))SBUF=CCDataRom[CData_Value_K][h]; else SBUF=0x00; 改成if(h<(3*n))SBUF=0x00; else SBUF=CCDataRom[CData_Value_K][h]; 我想應(yīng)該出現(xiàn)在數(shù)據(jù)接口UART或者是595不支持長(zhǎng)時(shí)間置高或者至低, 但是還是有許多不明白,請(qǐng)專家們多多幫忙了。 應(yīng)該如何來(lái)解決這種比較棘手的問(wèn)題。 或者有什么工具可跟蹤uart口的數(shù)呢?????????? ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
| 10樓: | >>參與討論 |
| 作者: aibxyz 于 2005/9/22 16:46:00 發(fā)布:
占空比的意義不是說(shuō)15個(gè)字節(jié)會(huì)比3個(gè)字節(jié)高,因?yàn)樽止?jié)數(shù)不同,你的頻率也變了。 你這種方法讓每次的掃描頻率和顯示延遲時(shí)間存在很大的不確定性,所以你看到某種狀況下好像是好的并不是說(shuō)就真的是正確的。剛工作時(shí)偶也常這樣想,認(rèn)為既然開(kāi)始都看到這個(gè)程序/這塊板子運(yùn)行正常,就以為后來(lái)出的問(wèn)題肯定是后面那里改的不對(duì)了。其實(shí)很多時(shí)候,一開(kāi)始的設(shè)計(jì)已經(jīng)錯(cuò)了,只是沒(méi)有被發(fā)現(xiàn)而已。 而且這種方法,如果有其它中斷發(fā)生,也會(huì)發(fā)生不確定的閃爍。 所以,偶很不贊成你的這種方法。不但因?yàn)橐陨险f(shuō)的不確定性。 還因?yàn)?br>1、對(duì)CPU的占有率太高 2、這樣程序跑飛的概率會(huì)增大 3、對(duì)器件的損耗也會(huì)加大 另外,不要遇到問(wèn)題就去懷疑器件 |
|
| 11樓: | >>參與討論 |
| 作者: 網(wǎng)絡(luò)同行 于 2005/9/23 12:40:00 發(fā)布:
但是如果按照你所說(shuō)那樣,使用定時(shí)器,那么就會(huì)出現(xiàn)速度跟不上的原因。因?yàn)?1實(shí)在是太慢了。如果不能完全占有CPU就不能夠進(jìn)行正常的顯示工作。 當(dāng)初設(shè)計(jì)的時(shí)候說(shuō)做一個(gè)簡(jiǎn)單的就可以,所以綜合以后就使用了51,現(xiàn)在看來(lái)可能AVR更適合它。 現(xiàn)在所有的一切不可改變,也只能犧牲性能了…… 你所說(shuō)的,不應(yīng)該懷疑硬件問(wèn)題,本來(lái)我也是這么想的,但經(jīng)過(guò)無(wú)數(shù)次的實(shí)驗(yàn),磨光了所有信心后,不得不做出這種懷疑。 如你有好辦法不仿說(shuō)出來(lái)讓我們這些小菜共享你的經(jīng)驗(yàn)好嗎? 另外,你上面所說(shuō)中斷,我也考慮進(jìn)去了,如果進(jìn)入中斷那么會(huì)自動(dòng)停止顯示。我想不會(huì)因?yàn)橹袛喽a(chǎn)生的閃爍吧? 有一點(diǎn)我十分感謝你,我猜想,是不是因器件性能降低而導(dǎo)致這種不確定性。 但是又有一個(gè)疑惑,為什么我在傳送一些圖案的時(shí)候,它又會(huì)按照我預(yù)想工作呢? |
|
| 12樓: | >>參與討論 |
| 作者: aibxyz 于 2005/9/23 13:07:00 發(fā)布:
22。1184M情況下51做32X8是沒(méi)問(wèn)題的,這個(gè)偶做過(guò) 如果再大,就要用別的方法了,如硬件掃描,偶記得當(dāng)時(shí)使用了8片6264做顯存,然后掃描電路不通過(guò)單片機(jī)直接從6264里讀取數(shù)據(jù)送到顯示屏。 硬件是可能有問(wèn)題的,偶說(shuō)的是懷疑器件,硬件電路是你們剛設(shè)計(jì)的,但一般的器件已經(jīng)很多年被很多人使用過(guò)了。 器件性能損耗不是說(shuō)你在這短時(shí)間就會(huì)體現(xiàn)的,所以也不用懷疑。 中斷進(jìn)入后會(huì)停頓,但中斷結(jié)束后又退回到原來(lái)繼續(xù)顯示,這就造成了閃爍。 如果發(fā)現(xiàn)當(dāng)初設(shè)計(jì)又問(wèn)題,最好是重新設(shè)計(jì),除非問(wèn)題還不大,而項(xiàng)目時(shí)間又很緊,那先想辦法調(diào)試到一般用戶無(wú)法看出來(lái)的狀態(tài),然后再去重新設(shè)計(jì)以來(lái)補(bǔ)救 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |