单片机(AT89X52)四位数码管显示0123

用一片3线8线译码器来选择4个数码管,其中有四个输出端不用。

原理图如下:

讲解注释我都写到程序里了,直接上程序:

#include<reg51.h>
#define uchar unsigned char

unsigned char code LED[10]=    //0-9的数码管字形数组
{
    0x3F,                
    0x06,               
    0x5B,                
    0x4F,         
    0x66,                 
    0x6D,                
    0x7D,                 
    0x07,                
    0x7F,                
    0x6F,
};
sbit A0 = P1^0;
sbit A1 = P1^1;
sbit A2 = P1^2;
void main(void){
	uchar c=0;   //用于做延时
	uchar d=3;   //用作控制显示的位置
	while (1){
		for (c=0;c<80;c++);  //这个for循环用于延时
		P2=0;    //由于单片机复位时所有端口输出都为1,为了不产生鬼影,所以将P2口先置0
		if (++d>3) d=0;
		if (d==0)       //前面说了,d是用作索引,选择数码管显示的位置
		{
			P1=0x03;      //选通千位数码管进行显示
			P2=LED[0];    //千位显示0
		}
		else if (d==1)
		{	
			P1=0x02;
			P2=LED[1];
		}
		else if (d==2)
		{
			P1=0x01;
			P2=LED[2];
		}
		else
		{
			P1=0x00;
			P2=LED[3];
		}
	}
}

以上便是四位数码管显示0123的方法。待续。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值