基於PCF8591的I_2C總線A_D_D_A轉換的資料

2021-01-04 電子產品世界
/*******************

程序功能:

通過DA轉換把輸出電壓逐漸增大,

使加在上面的發光二級管慢慢變亮

到最亮後再變暗,如此循環

*******************/


/*******************

D/A轉換

*******************/

#include

#define uint unsigned int

#define uchar unsigned char

#define PCF8591 0x90//PCF8591的地址

sbit sda=P2^0;

sbit scl=P2^1;

void delay()//執行空語句,微秒級延時函數

{;;}

void delay1ms(uint z)//延時1ms

{

uint x,y;

for(x=z;x>0;x--)

{

for(y=0;y<=110;y++)

{

}

}

}

void init()//初始化狀態下SCL和SDA都為高電平

{

scl=1;

delay();

sda=1;

delay();

}

void start()//在SCL為高電平時SDA由高電平到低電平

{

sda=1;

delay();

scl=1;

delay();

sda=0;

}

void respons()

/*

應答信號,SCL在高電平期間,SDA被從設備拉為低電平表示應答。

(sda==1)和i<255相與,表示若在一段時間內沒有從器件的應答則主器件

默認從器件已經收到數據而不再等待應答信號

*/

{

uchar i;

scl=1;

delay();

while((sda==1)&&(i<250))

{

i++;

}

scl=0;

delay();

}

void stop()//SCL在高電平期間,SDA一個上升沿停止信號

{

sda=0;

delay();

scl=1;

delay();

sda=1;

}

void write_byte(uchar date)//寫一個字節

{

uchar i,temp;

temp=date;

for(i=0;i<8;i++)

{

temp=temp<<1;

scl=0;//只有在SCL為0期間才允許SDA數據線上的狀態才允許變化

delay();

sda=CY;//PSW的寄存器的CY進位標誌位

delay();

scl=1; //SCL時鐘信號為高電平期間數據線上的數據必須保持穩定 delay();

delay();

}

scl=0;

delay();

sda=1;//釋放總線

delay();

}

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();

}

//delay();here is a bug

return k;

}


void write_address(uchar address,uchar date)

{

start();

write_byte(0x90);

respons();

write_byte(address);

respons();

write_byte(date);

respons();

stop();

}

uchar read_address(uchar address)

{

uchar date;

start();

write_byte(0x90); //10010000 前四位固定 接下來三位全部被接地了 所以都是0 最後一位是寫 所以為低電平

respons();

write_byte(address);

respons();

start();

write_byte(0x91);

respons();

date=read_byte();

stop();

return date;

}

void main()

{

uint count;

init();

while(1)

{

write_address(0x40,count);

delay1ms(5);

count++;

if(count>250)

{

count=0;

}

}


}



/*******************

程序功能:

旋轉A/D電位器,將模擬量變成數字量,並用數碼管顯示其結果。

*******************/


/*******************

A/D轉換

*******************/

#include

#define uint unsigned int

#define uchar unsigned char

#define PCF8591 0x90//PCF8591的地址

sbit sda=P2^0;

sbit scl=P2^1;

sbit LS138A=P2^2;//138解碼器的3位 控制數碼管的

sbit LS138B=P2^3;

sbit LS138C=P2^4;

uchar num,ge,shi,bai;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f};//段選

void delay()//執行空語句,微秒級延時函數

{;;}

void delay1ms(uint z)//延時1ms

{

uint x,y;

for(x=z;x>0;x--)

{

for(y=0;y<=110;y++)

{

}

}

}

void init()//初始化狀態下SCL和SDA都為高電平

{

scl=1;

delay();

sda=1;

delay();

}

void start()//在SCL為高電平時SDA由高電平到低電平

{

sda=1;

delay();

scl=1;

delay();

sda=0;



技術專區

相關焦點

  • PCF8591A/D D/A之間轉換
    /******************** A/D D/A之間轉換********************/#include#define uint unsigned int#define uchar
  • ADDA系列PCF8591的驅動程序
    (1); //發送非就答位 Stop_I2c(); //結束總線 return(c);}//******************************************************************/main(){ char i,j;while(1){/********以下AD-DA處理******
  • PCF8591 AD/DA轉換MSP430程序
    PCF8591用的也是IIC 總線,有了昨晚寫的總線協議,倒不是很難,下一步可以考慮做一個不精確的信號發生器,睡覺去咯!iic.h文件的源碼在這裡:http://www.51hei.com/mcu/2319.html本文引用地址:http://www.eepw.com.cn/article/201611/324032.htm#ifndef __PCF8591_h#define __PCF8591_h#include "basic.h"
  • PCF8591 DA驅動程序
    K4 = P1^7; //停止健sbit BEEP = P3^6; //蜂鳴器uchar code dis1[] = {" PCF-8591 "};uchar code dis2[] = {" DA CONVERTER "};uchar code dis3[] = {" K2: D/A CHOOSE "};uchar code dis4[] =
  • 【分享】PCF8591的硬體接口
    3個地址引腳A0、A1、A2用於編程硬體地址,允許最多8個器件連接到I2C總線而不需要額外的片選電路。器件的地址、控制以及數據都是通過I2C總線來傳輸,我們先看一下PCF8591的原理圖,如圖1所示。圖1PCF8591原理圖其中引腳1、2、3、4是4路模擬輸入,引腳5、6、7是I2C總線的硬體地址,8腳是數字GND,9腳和10腳是I2C總線的SDA和SCL。
  • PCF8591(AD-DA)晶片-51單片機程序
    注: PCF8591 是8位AD-DA晶片 轉換數據0---5 對應 0--255 通信協議IIC 模擬量輸出值和電壓的關係: 輸出電壓=(參考電壓-基點電位)/255
  • 1296: a/b + c/d
    1296: a/b + c/d題目描述給你2個分數,求他們的和,並要求和為最簡形式。輸入輸入首先包含一個正整數T(T<=1000),表示有T組測試數據,然後是T行數據,每行包含四個正整數a,b,c,d輸出
  • C|類型混合運算、賦值、函數傳參和返回的轉換及副作用
    >假設變量c、i、f、d的類型分別是char、int、float、double,則:c+i // c自動轉換為int,結果為intc+i+f // c自動轉換為int,和i運算後,結果為int,轉換為double, // f自動轉換為double,運算最後結果為floatc+i+f+d // c自動轉換為int,和i運算後,結果為int,轉換為double, // f自動轉換為
  • AVR單片機PCF8591AD-DA實驗
    //PCF8591 AVR單片機程序 默認為輸入模式下通道0開始通道0光敏電阻,通道1,熱敏電阻,通道2電位器,通道3外接電位器,如有標點符號丟失格式錯亂的情況可從這裡下載源碼:http://www.51hei.com/
  • I²C總線、UART總線和A/D轉換器應用設計
    本文導讀在傳統的基於寄存器的開發模式中,使用一個外設往往要閱讀英文手冊,理解寄存器每一位的含義,一步一步操作、調試,十分麻煩。AWorks提供的外設通用接口不僅可以跨平臺復用,而且非常簡潔,一個外設往往只有2~3個接口。本文將介紹通用的I²C、UART和ADC接口。
  • 基於cocos2d-x的跨平臺遊戲製作
    cocos2d-x的跨平臺遊戲製作網易科技訊 3月31日,第四屆CocoaChina開發者大會暨Cocos2d-x技術研討會在北京劇院舉行,樂迪通RedAtems  CEO劉萬千,以「基於Cocos2d-X的跨平臺遊戲製作」為題進行演講。
  • 音頻總線I2S協議
    Sound)總線, 又稱 集成電路內置音頻總線,是飛利浦公司為數字音頻設備之間的音頻數據傳輸而制定的一種總線標準,該總線專門用於音頻設備之間的數據傳輸,廣泛應用於各種多媒體系統。3 I2S收發模塊FPGA的仿真設計i2s_test模塊為i2s_in和i2s_out模塊的頂層,i2s_in模塊將輸入的串行數據轉換成並行的數據,然後i2s_out模塊將並行數據轉換成串行數據輸出
  • 採用抗反射膜提高a-Si:H/μc-Si:H串結薄膜太陽能電池的轉換效率
    光伏(PV)組件的前玻璃表面上的透明抗反射膜(ARC)是一項成熟的技術,它通過減少空氣-玻璃界面的表面反射增加入射光的透射率,這樣就增強光的吸收而提高了太陽能電池的轉換效率。在文獻中可以找到有可能適用於PV的一些抗反射材料、膜結構和製備技術的評論。現在,ARC的商業應用已在基於c-Si的PV組件規模生產中實現。
  • [每日C語言」printf()函數(1)
    諸如,我們在列印int型的時候需使用%d符號,在列印字符的時候需使用%c符號。這些符號被稱之為轉換說明,它指定了如何把數據轉換成可顯示的形式。下面就來看看ANSI C標準為print()提供的各種轉換說明。
  • 王哲:如何使用Cocos2d-x開發遊戲?
    IT茶館訪談第七期訪談Cocos2d-X創始人王哲: 如何使用Cocos2d-x開發遊戲.?根據開源社區的保守統計,基於Cocos2D-X開發的遊戲全球範圍內已經突破一億安裝量。
  • 基於MSP430 Timer_B的D/A轉換及C語言源程序
    用其比較模式產生的PWM可以實現D/A轉換(D/A conversion)。1.2 PWM D/A簡介很多嵌入式的微控制器(microcontroller)應用都需要產生模擬信號。在MSP430F449中就是採用CCR0來控制周期T,而用與定時器對應的CCRx寄存器來控制可變佔空比,進而實現D/A轉換。2.2 解析度
  • 基於cocos2d-x for XNA的WP遊戲開發
    cocos2d-x for XNA的WP遊戲開發網易科技訊 3月31日,第四屆CocoaChina開發者大會暨Cocos2d-x技術研討會在北京劇院舉行,微軟技術平臺經理徐玉濤與Cocos2d-X開發者張曉明進行了主題為「基於Cocos2d-X forXNA的Windows  Phone遊戲開發」的演講。
  • 蘋果風味十足 富德i368d雙模無線滑鼠
    蘋果簡約至薄風格受到大家推崇,富德i368d雙模無線滑鼠就是此類風格產品中的代表之一,將至薄在滑鼠上發揮到極致,再薄點手感更舒適點,成為手心間把玩的趣物。富德i368d雙模無線滑鼠可以說是滑鼠界的「窈窕淑女」,嬌小可人的身形,手掌可完全貼合在鼠背上,滑鼠與手掌大面積接觸增多受力點位置,符合人體工學,移動滑鼠更輕鬆不費力氣。富德i368d雙模無線滑鼠「腰寬」57.6mm,「身高」114mm,「胸圍」(鼠背最高處)22mm,質重50g,可見其至薄程度,很蘋果範兒。
  • C語言中char int轉換問題
    printf("%d", a[0]-0);//輸出結果為32,int轉化為char*********************************** linux c ***********************************(1)字符串轉換成數字,用atoi,atol,atof,分別對應的是整型,long
  • 基於cocos2d-x的遊戲框架設計
    cocos2d-x的遊戲框架設計網易科技訊 3月31日,第四屆CocoaChina開發者大會暨Cocos2d-x技術研討會在北京劇院舉行,人人網遊戲開發工程師李成進行了主題為《基於cocos2d-x的遊戲框架設計》的演講。