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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于IIC總線的AD轉換模塊PCF8591

作者:我行天下   來源:本站原創   點擊數:  更新時間:2014年03月30日   【字體:


/*本程序使用普中開發板調試*/

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

#define addw 0x90
#define addr 0x91

sbit scl=P2^0;
sbit sda=P2^1;

sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^7;

uchar  Ch0value,Ch1value;

void delayms(int i) 
{ int x,y;
for (x=i;x>0;x--)
 for(y=110;y>0;y--); 
}

void usdelay()
{
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_(); 
}


void start() //開始信號
{//時鐘線在高電平時,數據線由高變低即為開始信號 由高變低即為開始信號
sda=1;
usdelay();
scl=1;
usdelay();
sda=0;//數據線由高變低即為開始信號
usdelay();
scl=0;
}

void stop() //結束信號
{//時鐘線在高電平時,數據線由低變高即為結束信號
sda=0;
usdelay();
scl=1;
usdelay();
sda=1;
usdelay();
sda=0; //這句可有可無
scl=0; //這句可有可無
}

void ack()//應答信號 
{ uchar i;
scl=1;
usdelay(); 
    while((sda==1)&&(i<200))i++;
scl=0;
    usdelay();
}

void Noack()  //不應答
{
sda=1; //時鐘線高電平時,數據線高,即為不應答
usdelay();
    scl=1;
usdelay();
scl=0;
    usdelay();
}


void send_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
  {  
   scl=0;
   usdelay();
   sda=(bit)(dat&0x80); //數據傳送是由高到低
   //(bit)為強制轉換命令,把數據變為非0即1的一位數據庫
   usdelay();
   scl=1;
   usdelay();
   dat<<=1;
   }
  scl=0;
  usdelay();
  sda=1;//釋放總線
  usdelay();
}

uchar read_byte()
{

uchar i,k;
scl=0;
usdelay();
sda=1; //釋放總線
usdelay();
for(i=0;i<8;i++)
  {
   scl=1;
   usdelay();
   k=(k<<1)|sda;//判斷8次,移位7次
   scl=0;
   usdelay();  
  }
return k;
}
 

uchar read_adc(uchar channel)
{
  uchar temp;
  start();
  send_byte(addw);
  ack();
  send_byte(0x40|channel);
  ack();
  start();
  send_byte(addr);
  ack();
  temp=read_byte();
  Noack();
  stop();
  return temp;

}

void init()
{
  scl=1;
  sda=1;
}
 

/*********1602程序********************/

  void write_com(uchar com)
 {
  rs=0;
  rw=0;
  en=0;
  P0=com;
  delayms(2);
  en=1;
  delayms(2);
  en=0;
  }


void write_dat(uchar dat)
 {
  rs=1;
  rw=0;
  en=0;
  P0=dat;
  delayms(2);
  en=1;
  delayms(2);
  en=0;
  }

void zfc(uchar *p)
{
 while(*p!=0)
 write_dat(*p++);
}

void init_1602()
{
write_com(0x38);
  delayms(2);
write_com(0x0c);
 delayms(2);
write_com(0x06);
 delayms(2);
write_com(0x01);
write_com(0x80);
zfc("Channel 0 :");
write_com(0x80+0x40);
zfc("Channel 1 :");
}

void display()
{
uchar a0,a1,a2, b0,b1,b2;
a0=Ch0value*196/10000;
a1=Ch0value*196%10000/1000;
a2=Ch0value*196%1000/100;

b0=Ch1value*196/10000;
b1=Ch1value*196%10000/1000;
b2=Ch1value*196%1000/100;
write_com(0x80+11);
write_dat(0x30+a0);
write_dat('.');
write_dat(0x30+a1);
write_dat(0x30+a2);
write_dat('V');

write_com(0x80+0x40+11);
write_dat(0x30+b0);
write_dat('.');
write_dat(0x30+b1);
write_dat(0x30+b2);
write_dat('V');

}
void main()

   init_1602();
   init();
    while(1)
{
 Ch0value=read_adc(0);
delayms(50);
Ch1value=read_adc(1);
delayms(50);
 display();
}
}
 

關閉窗口

相關文章

主站蜘蛛池模板: 欧美一区 | 亚洲精品国产综合区久久久久久久 | 91久久| 久久艹免费视频 | 国产精品日韩欧美一区二区三区 | 国产精品爱久久久久久久 | 免费毛片网 | 国产片一区二区三区 | 亚洲精品一区中文字幕乱码 | 99热播精品 | 日韩精品在线一区 | 琪琪午夜伦伦电影福利片 | 自拍偷拍一区二区三区 | 高清视频一区二区三区 | 欧美精品黄 | av一级久久| 一区二区视频在线观看 | 影音先锋中文字幕在线观看 | 韩日中文字幕 | 国产乱码精品一区二区三区五月婷 | 18成人在线观看 | 岛国av一区二区 | 久久精品国产清自在天天线 | 国产小视频在线看 | 自拍视频网 | 成人久久久 | 日日操操| 亚洲欧美激情国产综合久久久 | 欧美精产国品一二三区 | 久久综合久久综合久久 | 日韩色图在线观看 | 亚洲国产成人在线视频 | 国产高清一区二区 | 四虎影院在线观看av | 国产精品久久久久久久久久久新郎 | 99久久国产综合精品麻豆 | 欧美一区二区三区视频 | 亚洲先锋影音 | 91在线| 中文字幕一区二区三区在线视频 | 成人精品国产免费网站 |