|
寫的數(shù)碼管滾動(dòng)顯示1-9,但是顯示過程中這個(gè)5和6總是出現(xiàn)兩次,
調(diào)試發(fā)現(xiàn)是數(shù)組下標(biāo)在改變過程中出現(xiàn)運(yùn)算錯(cuò)誤,但是實(shí)在想不通這是為什么
單片機(jī)源代碼和仿真圖在壓縮包里,請(qǐng)高手指點(diǎn)指點(diǎ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();
- }
-
- }
- }
- }
復(fù)制代碼- #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 }; //位選信號(hào)
- unsigned char num ;
- void display(){
-
- uchar i; //不要符初值,keil會(huì)自動(dòng)初始化為0,且只做一次初始化
- //static uchar i = 0;
- //4 消隱
- DPORT = 0;
- //1 送段碼
- DPORT = table[dBuf[i]];
- //2 送位選
- WPORT = wCode[i];
- //3 延時(shí) (所有數(shù)碼管一輪的時(shí)間合不要大于10ms
- Delay(1);
- DPORT = 0;
- i++;
- if( 4 == i ){
- i = 0;
- }
-
- }
復(fù)制代碼 |
-
-
smggdxs.zip
2022-4-17 20:15 上傳
點(diǎn)擊文件名下載附件
17.94 KB, 下載次數(shù): 2
|