|
發布時間: 2023-3-4 17:35
正文摘要:代碼如下:參照網上一位老師的程序修改后能點亮單個LED了。但是屏幕上有不規則LED閃爍干擾。各位老師幫忙看看是什么原因呢?非常感謝 這是抓拍的圖片. #include<reg52.h> sbit HC595_DS = P3^6; ... |
| 先查電路圖吧,代碼邏輯有問題,與電路有關 |
人中狼 發表于 2023-3-5 07:58 電路圖沒有,是其它設備上拆的點陣板子 大致理了一下線路 點亮了一些 ,想著用單片機來測試看看 |
405616736 發表于 2023-3-5 05:01 非常感謝,板子是以前設備上的,拆下來改的,所以電路上不是完全理清,想著單片機上面寫程序測試能測出來就先試試看了。 |
| 缺電路圖,代碼看著邏輯有問題 |
|
由unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列 判斷列為低電平有效,行為高電平有效 但Lattice_WriteData(buffer,0x7f,0xff); 行數據復制0x7f,0xff,給出除了第一個點都有效,這里與“點亮單個LED”就已經不相符。 建議了解情況行列的高低電平有效值,注意修改以下三行代碼: HC595_DS = value&(0x7f >> i); unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列 Lattice_WriteData(buffer,0x7f,0xff); |
大漠落日 發表于 2023-3-4 20:55 行列都用595驅動的不需要消隱 |
|
本帖最后由 405616736 于 2023-3-5 01:43 編輯 unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列 從數組0x7f,0xff推測你64列為低電平有效,對應行為高電平有效 Lattice_WriteData(buffer,0x7f,0xff); 這條代碼,行給出0x7f,0xff已經點亮出第一個外所有LED。與點亮單個LED了的想法不符了。 建議先弄清楚點陣屏的行列有效電平。 再重點關注以下幾行代碼 HC595_DS = value&(0x7f >> i); unsigned char buffer[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//64列Lattice_WriteData(buffer,0x7f,0xff); |
| 消隱沒有寫好 |
飛云居士 發表于 2023-3-4 18:11 線路檢查沒有問題,謝謝 |
| 檢查線路是否有接觸不良、短路等。如一切正常,程序中在往顯示緩沖區寫數據時,短暫關閉顯示。 |