实验八 动态数码管显示

数码管动态扫描过程

     在数码管动态扫描的实现中,一般采用共阳或共阴极的数码管。通过微控制器或其他电子设备的驱动,依次点亮每个数码管的每个段,同时关闭其他数码管的所有段。当每个数码管的段都被扫描并点亮后,再继续扫描下一个数码管。这样,数码管将连续显示多个数字,从而实现动态的数字显示效果。在某一时段,只让其中一位数码管“位选端”有效,并送出相应的字型显示编码。此时,其它位的数码管因“位选端”无效而都处于熄灭状态;下一时段按顺序选通另外一位数码管,并送出相应的字型显示编码,依此规律循环下去,即可使各位数码管分别间断地显示出相应的字符。这一过程称为动态扫描显示。

#include "reg51.h"//头文件 桥梁

sbit w1=P2^0;//位选端,选择哪个数码管亮起来
sbit w2=P2^1;
sbit w3=P2^2;
sbit w4=P2^3;

char led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
            0xF8,0x80,0x90};//数码管显示字符码

void delay(); //延时函数 子函数的声明
						
void main()
{
	while(1)
	{
		P0=led[1];//送1的数据到端口
		w1=1;  //控制显示的位置(共阳极 1就选中亮起来 0的未选中,灭)
		w2=0;
		w3=0;
		w4=0;
		delay();//延时
		P0=0XFF;//场消隐,就是让数码管不亮
		
		P0=led[2];
		w1=0;
		w2=1;
		w3=0;
		w4=0;
		delay();
		P0=0XFF;//场消隐,就是让数码管不亮
		
		P0=led[3];
		w1=0;
		w2=0;
		w3=1;
		w4=0;
		delay();
		P0=0XFF;//场消隐,就是让数码管不亮
		
		P0=led[4];
		w1=0;
		w2=0;
		w3=0;
		w4=1;
		delay();
		P0=0XFF;//场消隐,就是让数码管不亮
	}
}

void delay()
{
	unsigned int  i=400;
	while(i--);
}

图一  数码管动态显示完整代码 

图二  数码管动态显示仿真显示

    利用P0端作为数据输出端,P2^0/ P2^1/P2^2/P2^3作为位选端,实现单片机控制显示1234的动态显示。其中最为重要的一点是场消隐(就是让数码管不显示)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Esky2005

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值