新手学
单片机,没弄东PCF8591,照样子写了个程序。但是实现不了控制灯的亮度。而且只有几个值能发光
#include<reg52.h>
#include <intrins.h>
sbit SDA=P2^0;
sbit SCL=P2^1;
bit ack;
void start_IIC();
void stop_IIC();
void send_byte(unsigned char);
main()
{
start_IIC();
send_byte(0x90);
if(ack==0)
return(0);
send_byte(0xf0);//这里是控制灯发光的数字量
if(ack==0)
return(0);
stop_IIC();
}
void start_IIC()
{
SCL=1;
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
}
void stop_IIC()
{
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
}
void send_byte(unsigned char c)
{
unsigned char count;
for(count=0;count<8;count++)
{
if((c<<count)&0x80)
SDA=1;
else
SDA=0;
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
}
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
if(SDA==1)
ack=0;
else
ack=1;
SCL=0;
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
}
一周热门 更多>