新人刚开始学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++;
}
}
|