标题:
单片机光照强度检测程序
[打印本页]
作者:
balalanen
时间:
2019-12-12 14:41
标题:
单片机光照强度检测程序
不同光照强度下,数码管的数字随之变换
单片机源程序如下:
#include <reg52.h>
#include "iic.h"
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
unsigned char dspbuf[]={10,10,10,10,10,10,10,10};
unsigned char dspcom=0;
unsigned char adc_pcf8591(void);
bit adc_flag;//a-d转换的标志位
unsigned int ms,value;
void display();
void dac_pcf8591(unsigned char date);
void cls_buzz()
{
P0=0XFF;
P2=P2&0X1F|0XA0;
P2&=0X1F;
}
void cls_led()
{
P0=0XFF;
P2=P2&0X1F|0X80;
P2&=0X1F;
}
void main(void)
{
unsigned char value;
cls_buzz();
cls_led();
TMOD=0X01;//用T0做;若用T1做,要改成0x10,TH1,TL1,ET1,TR1
TH0=0XFC;
TL0=0X66;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(adc_flag)
{
adc_flag=0;
value=adc_pcf8591();
dac_pcf8591(value);
(value>=100)?(dspbuf[5]=value/100):(dspbuf[5]=10);//条件?满足:不满足
(value>=10)?(dspbuf[6]=value%100/10):(dspbuf[6]=10);//条件?满足:不满足
dspbuf[7]=value%10;
}
}
}
void int_t0() interrupt 1
{
TH0=0xfc;
TL0=0x66;
if(++ms==500)
{
ms=0;
adc_flag=1;
}
display();
}
void display()
{
P0=0XFF;//消除鬼影
P2=P2&0X1F|0XE0;
P2&=0X1F;
P0=1<<dspcom;
P2=0X1F|0XC0;
P2&=0X1F;
P0=tab[dspbuf[dspcom]];
P2=P2&0X1F|0XE0;
P2&=0X1F;
if(++dspcom==8)
dspcom=5;
}
unsigned char adc_pcf8591(void)
{
unsigned char temp;//返回值变量
IIC_Start();
IIC_SendByte(0X90);
IIC_WaitAck();
IIC_SendByte(0X01);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0X91);
IIC_WaitAck();
temp=IIC_RecByte();//读数据
IIC_Ack(1);//发送应答
IIC_Stop();
return temp;
}
void dac_pcf8591(unsigned char date)
{
IIC_Start();//起始信号
IIC_SendByte(0X90);//发送pcf8591写地址
IIC_WaitAck();//等待应答
IIC_SendByte(0X40);//选择D/A转换
IIC_WaitAck();
IIC_SendByte(date);//选择D/A转换
IIC_WaitAck();
IIC_Stop();
}
void write_delay(unsigned char t)
{
unsigned char i;
while(t--)
{
for(i=0;i<112;i++);
}
}
复制代码
所有资料51hei提供下载:
光照强度检测.zip
(34.37 KB, 下载次数: 45)
2019-12-12 14:40 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
悟饭Gohan
时间:
2020-1-8 08:45
谢谢楼主
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1