PCF8591A/D D/A之間轉(zhuǎn)換
A/D D/A之間轉(zhuǎn)換
********************/
#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位 控制數(shù)碼管的
sbit LS138B=P2^3;
sbit LS138C=P2^4;
uint Ledout[8];//8位數(shù)碼管
uchar AD_change;
uint num0,num1,num2,num3;
uint count;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};//段選
void delay()//執(zhí)行空語句,微秒級延時函數(shù)
{;;}
void delay1ms(uint z)//延時1ms
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<=110;y++)
{
}
}
}
void init()//初始化狀態(tài)下SCL和SDA都為高電平
{
scl=1;
delay();
sda=1;
delay();
}
void start()//在SCL為高電平時SDA由高電平到低電平
{
sda=1;
delay();
scl=1;
delay();
sda=0;
}
void respons()
/*
應(yīng)答信號,SCL在高電平期間,SDA被從設(shè)備拉為低電平表示應(yīng)答。
(sda==1)和i<255相與,表示若在一段時間內(nèi)沒有從器件的應(yīng)答則主器件
默認(rèn)從器件已經(jīng)收到數(shù)據(jù)而不再等待應(yīng)答信號
*/
{
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)//寫一個字節(jié)
{
uchar i,temp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;//只有在SCL為0期間才允許SDA數(shù)據(jù)線上的狀態(tài)才允許變化
delay();
sda=CY;//PSW的寄存器的CY進(jìn)位標(biāo)志位
delay();
scl=1; //SCL時鐘信號為高電平期間數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定 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;
}
關(guān)鍵詞:
PCF8591ADD
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論