一直以來就被單片機數碼管消影問題困擾,網上查了資料都說是加個P0=00(共陰數碼管),加了后沒啥變化,還是會有重影,今天突發奇想,P0=0x00后加了dula=1;dula=0;這兩句,問題解決了,我想應該是dula=1;dula=0;這兩句加了后地址鎖存器才會執行,單單加句P0=0x00是沒用的。 (附數碼管部分代,經常寫的人應該看得懂,另附兩種效果圖)
消影之前的效果:
微信圖片_20181001224534.jpg (180.78 KB, 下載次數: 108)
下載附件
2018-10-1 22:46 上傳
消影后:
微信圖片_20181001224541.jpg (257.54 KB, 下載次數: 102)
下載附件
2018-10-1 22:46 上傳
單片機源程序如下:
- uchar code table1[]={0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x00};
- uchar code table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
- void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)//顯示6位數碼管{
- P0=table2[0];
- wela=1;
- wela=0;
- P0=table1[a];
- dula=1;
- dula=0;
- delay(1);
- P0=0x00;dula=1;dula=0;//消影
- P0=table2[1];
- wela=1;
- wela=0;
- P0=table1[b];
- dula=1;
- dula=0;
- delay(1);
- P0=0x00;dula=1;dula=0;//消影
- P0=table2[2];
- wela=1;
- wela=0;
- P0=table1[c];
- dula=1;
- dula=0;
- delay(1);
- P0=0x00;dula=1;dula=0;//消影
- P0=table2[3];
- wela=1;
- wela=0;
- P0=table1[d];
- dula=1;
- dula=0;
- delay(1);
- P0=0x00;dula=1;dula=0;//消影
- P0=table2[4];
- wela=1;
- wela=0;
- P0=table1[e];
- dula=1;
- dula=0;
- delay(1);
- P0=0x00;dula=1;dula=0;//消影
- P0=table2[5];
- wela=1;
- wela=0;
- P0=table1[f];
- dula=1;
- dula=0;
- delay(1);
- P0=0x00;dula=1;dula=0;//消影
- }
復制代碼 |