標題:
單片機光照強度檢測程序
[打印本頁]
作者:
balalanen
時間:
2019-12-12 14:41
標題:
單片機光照強度檢測程序
不同光照強度下,數(shù)碼管的數(shù)字隨之變換
單片機源程序如下:
#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轉(zhuǎn)換的標志位
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();//讀數(shù)據(jù)
IIC_Ack(1);//發(fā)送應(yīng)答
IIC_Stop();
return temp;
}
void dac_pcf8591(unsigned char date)
{
IIC_Start();//起始信號
IIC_SendByte(0X90);//發(fā)送pcf8591寫地址
IIC_WaitAck();//等待應(yīng)答
IIC_SendByte(0X40);//選擇D/A轉(zhuǎn)換
IIC_WaitAck();
IIC_SendByte(date);//選擇D/A轉(zhuǎn)換
IIC_WaitAck();
IIC_Stop();
}
void write_delay(unsigned char t)
{
unsigned char i;
while(t--)
{
for(i=0;i<112;i++);
}
}
復(fù)制代碼
所有資料51hei提供下載:
光照強度檢測.zip
(34.37 KB, 下載次數(shù): 45)
2019-12-12 14:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
悟飯Gohan
時間:
2020-1-8 08:45
謝謝樓主
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1