把七或八只发光二极管组合在一个模件上组成了个8字和小数点,用以显现数字。为了削减管脚,把各个发光管的其间同一个极接在一同作为共用点,因而就产生了共阳极和共阴极数码之说。共阳管便是把各个发光管的正极接在一同,而共阴管就刚好相反。见下图:
先不接上图的R2和74HC244,将数码管一个段直接接地。调理R1,测得S9012基极电流为0.21mA时集电极也便是数码管上已有40mA,阐明扩大倍数足够了。这时接上R2和74HC244,调理R2使数码管电流控制在15mA,这样当8个段一同点亮时三极管上得经过120mA的电流。而基极上需求0.63mA,为了减小三极管的负荷应使三极管过饱和,,调理R1使基极电流为2mA,此刻测得集电极和漏极之间的电压约0.1V。好!此刻R1为2K。R2为240欧姆。
接下来便是确认电路。电路的接口与AT89S51间有三组接口:段码、位码和电源。为了让AT89S51独立出来这三级接口都选用插针做接口,用排线自在衔接到AT89S51的P1-P3口,电源用短路帽衔接,完成后的板子见下图
。
//六位管码管在以0.3秒的间隔在闪耀,这是选用查询方法的,比较占CUP资源
# include
typedef unsigned char uchar;
uchar co
uchar co
uchar co
uchar co
uchar co
void delay(int n);
void main(void)
{
{
}
{
}
======================================
当我插把程序写入片子,插上电运行时,是乱码。你猜怎么回事?
本来那个P2口方向是反的,您留意过没有,在AT89S51管脚摆放上,P0–P1和P3都是上方为PX_0。而唯一P2口管脚摆放是下方为P2_0。方向则好是反的。已然反了,我就把段码表重写一下。再试,一切正常。
在这里我说一下段码的摆放,好多人问数码管段码是怎么摆放的,我也在网上查了,如同没有什么规范的排法,随自己的接法而定,这也是导致为什么在网上下载的一些数码管程序在自己的板子上不能正常显现的原因。就遍及而言我最上面的那张图示的标法最多,在上面程序里原方案也是P2_0对应段码a(也便是上面的横)。一直到P2_7对应段为h(便是小数点)。成果哪知道P2口刚好是反的。这样一来也便是倒过来了,P2_0对应段h(小数点了)。例如我原先界说的数码管显现“2”段码为10100100B的,一接反了就不再是“2”了。而要想再显现“2”那就把段码的高低位倒过来。改为00100101B就OK了。

# include
typedef unsigned char uchar;
uchar co
uchar co
uchar i,aa; //界说全局变量
bit fg;
{