![]() |
發布時間: 2022-1-8 01:51
正文摘要:如圖,總有F的鬼影 單片機源程序如下: #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit din=P2^2; sbit cs =P2^1; sbit clk=P2^0; ... |
建議多看看數據手冊 |
188610329 發表于 2022-1-8 19:08 好的。謝謝了 |
egsresrhtrhrtst 發表于 2022-1-8 16:25 你最好,好好看看手冊,究竟需要發些什么, 你上面的代碼,很多操作都是無意義的。 初始化,定義亮度,這些都是只需要做一次的,然后就是定義每一個位的亮滅,當你顯示不需要變化的時候,就不用再操作7219,產生變化的時候,其實也只需要更新發生變化的地址的數據而已。而不是所有的地址數據全都更新 |
本帖最后由 egsresrhtrhrtst 于 2022-1-8 16:27 編輯 188610329 發表于 2022-1-8 13:41 謝謝,把while放到后邊確實沒有了,這是我參考論壇里的動態顯示的程序改的,想著靜態顯示一下,弄了好久都不行,你說的莫名其妙的程序是說的write_7219_byte(0x00);;這些發送空值得程序嗎,這些不是要傳送的嘛。 |
MAX7219, 是顯示驅動器。 他只需要你把點陣數據發給他,他就會自動顯示,換句話說,你數據不發生變化的前提下,是不需要,也不應該去反復的刷 7219的, 所以,你在while(1) 里面 不停的發是什么鬼? 你只要去掉while(1),把它放在main的結尾, while(1); 就不會有那所謂的“鬼影”。 然后順帶說一下, 那所謂的“鬼影”, 就是你在發送 數據一的時候,后面莫名其妙增加的那些數據,發送數據二的時候,被正確的數據覆蓋,所以只顯示一小會兒,就成了所謂的鬼影,換言之你的這種數據發送方法是有問題的。 |
消影時間不夠吧 |
這個算法的效率太低了 可以參考論壇某個帖子 里面的程序很簡潔 |