新人剛開始學51,想寫一個模塊化的數碼管顯示,起初用的是unsigned char,發現位數不夠后更改為unsigned int,現在最多卻只能顯示到511,在輸入為1時顯示257,求大佬幫助。
#include <reg52.h>
#include "Delay.h"
sbit SMG_DU = P2^6;
sbit SMG_WE = P2^7;
unsigned char SMG_D[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
unsigned char SMG_W[] = {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}
void SMG_Display(unsigned int NUM)
{
unsigned int SMG_TEMP;
unsigned char SMG_i=0;
SMG_TEMP=NUM;
while(SMG_TEMP)
{
P0=0xFF;
SMG_WE=1;
P0=SMG_W[SMG_i];
SMG_WE=0;
P0=0x00;
SMG_DU=1;
P0=SMG_D[SMG_TEMP%10];
Delay(1);
SMG_DU=0;
SMG_TEMP/=10;
SMG_i++;
}
}
|