c51单片机之数码管显示(共阳极数码管)

仿真图:

代码:

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar num=5;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //共阳极数码管段码
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};      //位选码
void delay(uint z)     //延迟函数
 {
 	uint x,y;
	for(x=z;x>0;x--)
	   for(y=110;y>0;y--);
 }
void main(){    //主函数
	uint i;
	while(1){            //动态刷新
	for(i=0;i<8;i++){    //逐位显示
		P2=wei[i];
		P0=table[i+1];
		delay(5);
		if(i==8)
			i=-1;
}
}
}

解析:

数码管的显示是单片机中最基本的功能,一般分为动态显示和静态显示,动态显示的原理就是利用人眼的视觉残留现象快速刷新数码管显示的内容来进行眼中不变的数字显示,一般分为三部分,①是位选码和段选码,位选码根据位选的接口来确定,段选码根据选用的是共阳极数码管还是共阴极数码管来确定。②是延迟部分,正常的延迟函数即可,最好带参数便于调试。③是显示函数,一般通过for循环来逐位输出,并通过while循环来进行动态刷新,一般使用中会用到锁存器进行信号的锁存,避免陷入死循环中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值