基于51单片机的灯盘检测(PCF8591+CD4051 )

        基于51单片机的灯盘检测系统使用,AT89C51作为系统主控,采用PCF8591+CD4051进行循环检测,本次的led灯一共有90个并在每个led上做了一个断路模拟开关,部分led上还设置了击穿模拟开关,led点亮使用PNP三极管进行导通,低电平的导通方式。

一、参考代码

1、扫描灯盘

        本次设计使用PCF8591和CD4051配合进行90个led的扫描,首先使用传入的变量进行通道选择DA、DB、DC分别使用的引脚是P22、P23、P24进行CD4051通道的选择,ADC读取采取统一通道,即AN0通道。接着再使用成对的CD4051进行扫描,以此类推最后进行了90个led的扫描。

void ScanLed(unsigned char n)
{
	//选择灯盘 1110 0011
	P2 &= 0xE3;
	//选择灯盘
	P2 |= (n << 2);	
	//清除低四位
	P1 &= 0xF0;
	
	j=0;
	while(j<16){
		if(led_state == n+1){
			P1 &= 0xf0;
			//选择通道
			P1 |= j;
			//获取ADC的值
			Invalue = read_AD_data(0x40);
			
			if(Invalue==0 || Invalue>=250){
				if(n==0){err1_led[num1] = n*16+j-1;num1++;}
				if(n==1){err2_led[num2] = n*16+j-1;num2++;}
				if(n==2){err3_led[num3] = n*16+j-1;num3++;}
				if(n==3){err4_led[num4] = n*16+j-1;num4++;}
				if(n==4){err5_led[num5] = n*16+j-1;num5++;}
			}					
		}
		j++;	
	}
}

2、主函数

        下面是本次设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值