寫的數(shù)碼管滾動顯示1-9,但是顯示過程中這個5和6總是出現(xiàn)兩次,
調(diào)試發(fā)現(xiàn)是數(shù)組下標在改變過程中出現(xiàn)運算錯誤,但是實在想不通這是為什么
單片機源代碼和仿真圖在壓縮包里,請高手指點指點,多謝了.
cuowu.jpg (48.45 KB, 下載次數(shù): 54)
下載附件
2022-4-17 20:17 上傳
- #include <reg51.h>
- #include "delay.h"
- #include "display.h"
- void main()
- {
- uint i;
- uchar num = 0;
-
- while(1){
- for( num = 0; num <11; num++){
- dBuf[0] = dBuf[num+0];
- dBuf[1] = dBuf[num+1];
- dBuf[2] = dBuf[num+2];
- dBuf[3] = dBuf[num+3];
- Delay(1);
- for( i = 0; i < 2000; i++){
- display();
- }
-
- }
- }
- }
復制代碼- #include <reg51.h>
- #include "delay.h"
- #include "display.h"
- unsigned char code table[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x40,0x00 };
- unsigned char dBuf[] = { 1,2,3,4,5,6,7,8,9,10,1,2,3,4 }; //顯示數(shù)據(jù)緩沖區(qū)
- unsigned char code wCode[] = { 0xfe, 0xfd, 0xfb, 0xf7 }; //位選信號
- unsigned char num ;
- void display(){
-
- uchar i; //不要符初值,keil會自動初始化為0,且只做一次初始化
- //static uchar i = 0;
- //4 消隱
- DPORT = 0;
- //1 送段碼
- DPORT = table[dBuf[i]];
- //2 送位選
- WPORT = wCode[i];
- //3 延時 (所有數(shù)碼管一輪的時間合不要大于10ms
- Delay(1);
- DPORT = 0;
- i++;
- if( 4 == i ){
- i = 0;
- }
-
- }
復制代碼 |