您现在的位置:数码 >> 数码前景 >> 单个数码管显示09
有人去过北京中科医院 http://baidianfeng.39.net/a_bdfys/161223/5153159.html

一、实验要求

使用51单片机控制单个数码管,使其循环显示0-9.

二、实验原理

数码管(SegmentDisplays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。

(数码管原理图)(数码管共阴极接法)(数码管共阳极接法)(LED字形显示代码)

三、仿真图

1、proteus仿真图

四、程序

#includereg52.h

#includeintrins.h

#defineucharunsignedchar

#defineuintunsignedint

ucharcodeDSY_CODE[]=

{

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F

};

voidDelayMS(uintx)

{

uchart;

while(x--)

for(t=;t0;t--);

}

voidmain()

{

uchari=0;

P0=0x00;

while(1)

{

P0=DSY_CODE[i];

i=(i+1)%10;/*显示0-9*/

DelayMS();

}

}

解析:

1、由于仿真图采用的是共阴极数码管,故代码也需要保持一致,采用共阴极字形代码;当然也可以采用共阳极字形代码,但最会需要取反,使其变成共阴极:

P0=~DSY_CODE[i];//~是取反的标志。

2、这里需要用到延时函数。

voidDelayMS(uintx)

{

uchart;

while(x--)

for(t=;t0;t--);

}

这个延时函数的核心是一个whiLe和for循环嵌套,例如让x=10,cpu会在这里循环10*10次,这些时间大概就是10ms(但并不精确)。



转载请注明地址:http://www.abmjc.com/zcmbzz/1591.html

  • 上一篇文章:
  • 下一篇文章: 没有了
  •