CT107D_pcf8591_光敏电阻/*光敏电阻:根据光的强度,改变电阻,从而输出模拟电压,此为ADpcf8591的AIN1输入端,接下来怎么做,你懂的*/
#include
#define rst573 P2&=0x1f
#define ledY4C P2|=0x80
#define beeY5C P2|=0xa0
#define smgY6C P2|=0xc0
#define smgY7C P2|=0xe0
sbit sclIIC=P2^0;
sbit sdaIIC=P2^1;
sbit P04=P0^4;
sbit P06=P0^6;
...
/*光敏电阻:根据光的强度,改变电阻,从而输出模拟电压,此为ADpcf8591的AIN1输入端,接下来怎么做,你懂的*/
#include
#define rst573 P2&=0x1f
#define ledY4C P2|=0x80
#define beeY5C P2|=0xa0
#define smgY6C P2|=0xc0
#define smgY7C P2|=0xe0
sbit sclIIC=P2^0;
sbit sdaIIC=P2^1;
sbit P04=P0^4;
sbit P06=P0^6;
sbit P36=P3^6;
sbit rs1602=P2^0;
sbit wr1602=P2^1;
sbit en1602=P1^2;
void delay4us()
{;;}
void delay6us(unsigned char us)
{
while(us--);
}
void init107()
{
P36=0;
rst573;
//close led
P0=0xff;
ledY4C;
rst573;
//close bee
P06=0;
P04=0;
beeY5C;
rst573;
//close smg
P0=0x00;
smgY6C;
rst573;
}
void startIIC()
{
sdaIIC=1;
delay4us();
sclIIC=1;
delay4us();
sdaIIC=0;
delay4us();
sclIIC=0;
delay4us();
}
void stopIIC()
{
sdaIIC=0;
delay4us();
sclIIC=1;
delay4us();
sdaIIC=1;
delay4us();
sclIIC=0;
delay4us();
}
void response()
{
unsigned char i;
sdaIIC=1;
i=200;
sclIIC=1;
delay4us();
while(sdaIIC==1&&i--);
sclIIC=0;
}
void writeIIC(unsigned char temp)
{
unsigned char i;
for(i=8;i;i--)
{
temp<<=1;
sdaIIC=CY;
delay4us();
sclIIC=1;
delay4us();
sclIIC=0;
delay4us();
}
}
unsigned char readIIC()
{
unsigned char temp,i;
for(i=8;i;i--)
{
temp<<=1;
sclIIC=1;
delay4us();
temp|=sdaIIC;
delay4us();
sclIIC=0;
delay4us();
}
return temp;
}
void ADpcf8591()
{
startIIC();
writeIIC(0x90);
response();
writeIIC(0x01);//对准AIN1
response();
stopIIC();
}
unsigned char readAD()
{
unsigned char temp;
startIIC();
writeIIC(0x91);
response();
temp=readIIC();
response();
stopIIC();
return temp;
}
void dat1602(unsigned char dat)
{
unsigned char temp;
do
{
rs1602=0;
wr1602=1;
en1602=1;
temp=P0;
}while(temp&0x80);
rs1602=1;
wr1602=0;
P0=dat;
en1602=1;
en1602=0;
}
void com1602(unsigned char com)
{
unsigned char temp;
do
{
rs1602=0;
wr1602=1;
en1602=1;
temp=P0;
}while(temp&0x80);
rs1602=0;
wr1602=0;
P0=com;
en1602=1;
en1602=0;
}
void init1602()
{
com1602(0x38);//显示模式设置指令 1602固定的第一句指令
com1602(0x0e);//光标打开,不闪烁
com1602(0x06);//写入一个字符后指针地址加1,写一个字符时整屏不移动
//
com1602(0x07);//写入一个字符后指针地址加1,写一个字符时整屏移动
com1602(0x01);//清屏显示,数据指针清0
}
void main()
{
unsigned char vol,vol1;
init107();
ADpcf8591();
init1602();
while(1)
{
vol=readAD();
if(vol!=vol1)
{
com1602(0x80);
vol1=vol;
dat1602(vol/100+'0');
delay6us(255);
dat1602(vol%100/10+'0');
delay6us(255);
dat1602(vol%10+'0');
delay6us(255);
}
}
}
本文档为【CT107D_pcf8591_光敏电阻】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。