思路:
用四段数码管显示一个四位数。
1、把要显示的数字的每一位都分开,用一个数组val[4]存起来,如val[0] = 千位, val[1] = 百位,
val[2] =十位, val[3] = 个位。
2、段选和位选通过查表的方式。将每位数字通过循环的方式输出。
3、原理是人眼的视觉暂留,所以需要确定扫描的时间间隔,时间间隔用延时函数delay()。这个延时函数时间过长,数码管看起来就是全亮。如果时间太短,会出现闪烁,合适的时间自己去试。
4、在点亮每位数码管之间需要延时同时还需要消隐。例如P0 = 0xff 或者是P0=0x00,具体取决于共阴还是共阳。
电路:
四位数码管,段选接P0口,位选分别接P34~P37连续接
例程:
#include
typedef unsigned char uchar;
typedef unsigned int uint;
//段选,用查表的方式
uchar code SegSelect[] =
{~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x40};//共阳
//uchar code SegSelect[] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//共阴
uint g_num = 0;
uchar g_count = 0;
sbit wei0