
scan是用来控制哪个LED显示的。
通过左移让每个LED分时显示,由于速度很快,肉眼看不出闪烁。
SCAN=1,就是00000001,需要取反后发送到P1。
就是p1=~scan,然后左移1位scan就变为00000010,接下一个循环。
动态扫描就是给各个数码管依次显示,任意时间只有一个数码管亮,但闪烁的太快了,人眼分辨不出,给人的感觉就是每个数码管都在亮。一般过程就是赋值,开显示,延时,关显示,这是我以前写过的程序
#include <REGX52H>
main()
{unsigned int i;
while(1)
{P0=0x3f;//个位赋值
P1_0=0;//开显示
for(i=0;i<2;i++);//延时
P1_0=1;//关显示
P0=0x6;//十位
P1_1=0;
for(i=0;i<2;i++);
P1_1=1;
P0=0x5b;//百位
P1_2=0;
for(i=0;i<2;i++);
P1_2=1;
P0=0x4f;//千位
P1_3=0;
for(i=0;i<2;i++);
P1_3=1;}
}
这个是4位数码管,P0口接赋值端,P1口低四位接4个数码管的选通端,你要八个的话就把P1口的高四位再接到另外四个数码管的片选端,程序仿照就可以了
以上就是关于51单片机动态扫描问题。。。全部的内容,包括:51单片机动态扫描问题。。。、51单片机如何控制八个数码管,进行动态扫描、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)