久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> 常用芯片 >> 瀏覽文章

PCF8591調(diào)試日志

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年04月27日   【字體:

    了解一款芯片應(yīng)該從它的datasheet開始,因為網(wǎng)上的中文資料也比較多,所以也就沒有看原版的英文資料,雖然知道這不是個好習(xí)慣,但確實能省些時間(好吧,其實我真的只是懶而已)。

 
    
 
 
    
    PCF8591是具有I2C總線借口的8位AD/DA轉(zhuǎn)換芯片,內(nèi)部為單一電源供電(25~6V),典型值為5V,CMOS工藝。PCF8591有4路AD輸入,屬逐次比較型,內(nèi)含采樣保持電路;1路8位DA輸出,內(nèi)含DAC數(shù)據(jù)寄存器。AD/DA轉(zhuǎn)換的最大速率約為11KHz。
 
    PCF8591內(nèi)部可編程控制字有兩個,一個是地址選擇字,另一個為轉(zhuǎn)換控制字。Philips規(guī)定AD器件高四位地址為1001,低三位地址為引腳地址A0,A1,A2,由硬件電路決定。因此,I2C系統(tǒng)中最多可以掛載8個有總線接口的AD器件。地址的最后一位為方向位R/W,MCU向AD器件進(jìn)行讀操作時為1,進(jìn)行寫操作時為0。總線操作時,由器件地址、引腳地址和方向位組成的從地址為主控制器發(fā)送的第一字節(jié)。
    PCF8591的轉(zhuǎn)換控制字存放在控制寄存器中,用于實現(xiàn)期間的各種功能。總線操作時為主控制器發(fā)送的第二字節(jié)。






 
 
    以下為具體代碼及注釋:

#include
 
#define uchar unsigned char
#define uint unsigned int
#define PCF8591 0x90
 
sbit SCL=P2^0;
sbit SDA=P2^1;
sbit dula=P3^6;
 
uchar code table1[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar code table2[10]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
 
void delay();
void delay_ms(uchar x);
void init_i2c();
void start_i2c();
void stop_i2c();
void response_i2c();
void write_byte(uchar dat);
void write_add(uchar address,uchar dat);
uchar read_byte();
uchar read_add(uchar control);
void display(uchar n);
 
void main()
{
uchar num;
init_i2c();
while(1)
{
num=read_add(0x41);
display(num);
}
}
 
void delay()
{;;}
 
void delay_ms(uchar x)
{
uchar i,j;
for(i=x;i>0;i--)
for(j=125;j>0;j--);
}
 
void init_i2c()
{
SCL=1;
delay();
SDA=1;
delay();
}
 
void start_i2c()
{
SDA=1;
delay();
SCL=1;
delay();
SDA=0;
delay();
}
 
void stop_i2c()
{
SDA=0;
delay();
SCL=1;
delay();
SDA=1;
delay();
}
 
void response_i2c()
{
uchar i;
SCL=1;
delay();
while((SDA==1)&&(i<255))
i++;
SCL=0;
delay();
}
 
void write_byte(uchar dat)
{
uchar temp,i;
temp=dat;
for(i=0;i<8;i++)
{
temp<<=1;
SCL=0;
delay();
SDA=CY;
delay();
SCL=1;
delay();
}
SCL=0;
delay();
SDA=1;
delay();
}
 
void write_add(uchar address,uchar dat)
{
start_i2c();
write_byte(PCF8591);
response_i2c();
write_byte(address);
response_i2c();
write_byte(dat);
response_i2c();
stop_i2c();
}
 
uchar read_byte()
{
uchar i,k;
SCL=0;
delay();
SDA=1;
delay();
for(i=0;i<8;i++)
{
SCL=1;
delay();
k=(k<<=1)|SDA;
SCL=0;
delay();
}
return k;
}
 
uchar read_add(uchar control)
{
uchar dat;
start_i2c();
write_byte(PCF8591);
response_i2c();
write_byte(control);
response_i2c();
start_i2c();
write_byte(PCF8591+1);
response_i2c();
dat=read_byte();
stop_i2c();
return dat;
}
 
 
void display(uchar n)
{
uchar bai,shi,ge;
bai=n/100;
shi=(n/10);
ge=n;
dula=0;
P2=table1[7];
dula=1;
dula=0;
P0=table2[bai];
dula=1;
dula=0;
delay_ms(5);
 
dula=0;
P2=table1[6];
dula=1;
dula=0;
P0=table2[shi];
dula=1;
dula=0;
delay_ms(5);
 
dula=0;
P2=table1[5];
dula=1;
dula=0;
P0=table2[ge];
dula=1;
dula=0;
delay_ms(5);
}
 
    通過PCF8591的調(diào)試,不光掌握了一種AD/DA芯片,更是學(xué)習(xí)了I2C這種用途極廣的通訊方式,活到老學(xué)到老。
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 国产精品日本一区二区在线播放 | h视频免费在线观看 | 日韩在线视频免费观看 | 极情综合网 | 国户精品久久久久久久久久久不卡 | 男人天堂社区 | 精品一区二区三区免费毛片 | 国产人成精品一区二区三 | 精品国产色| 国产精品久久久久久 | 亚洲精品综合一区二区 | 青青操av | 一区二区国产精品 | 亚洲福利一区二区 | 成人精品一区二区三区 | 亚洲精品二三区 | 欧美性乱| 国产一区二区精品在线 | 国产福利在线播放 | 日本aa毛片a级毛片免费观看 | av在线播放一区二区 | cao视频| 久久一区二区三区四区 | 亚洲精品乱码久久久久久蜜桃 | 精品国产一区二区三区成人影院 | 中文字幕日韩一区二区 | 狠狠综合久久av一区二区小说 | 久久国产精品-国产精品 | 欧美一a一片一级一片 | 久久久久久久国产精品视频 | 欧美自拍日韩 | 中文字幕国产精品 | 日本亚洲一区 | 国产婷婷 | 久草视频在线播放 | 亚洲国产精品视频一区 | 亚洲电影第1页 | 日韩免费福利视频 | 成人免费精品视频 | 天天看天天操 | 黄色片在线看 |