單片機(jī)ad/da轉(zhuǎn)換
/*-----------------------------------------------
名稱:IIC協(xié)議 PCF8591 AD/DA轉(zhuǎn)換
內(nèi)容:使用DA輸入,數(shù)碼管顯示輸出數(shù)字量,LED顯示模擬電壓大小
------------------------------------------------*/
#include
#include "i2c.h"
#include "delay.h"
#include "display.h"
#define AddWr 0x90 //寫(xiě)數(shù)據(jù)地址
#define AddRd 0x91 //讀數(shù)據(jù)地址
extern bit ack;
bit WriteDAC(unsigned char dat);
/*------------------------------------------------
主程序
------------------------------------------------*/
main()
{
unsigned char num=0;
Init_Timer0();
while (1) //主循環(huán)
{
WriteDAC(num);
num++;//連續(xù)累加,值從0-255反復(fù)循環(huán),并顯示在數(shù)碼管上,
TempData[0]=dofly_DuanMa[num/100];
TempData[1]=dofly_DuanMa[(num%100)/10];
TempData[2]=dofly_DuanMa[(num%100)%10];
DelayMs(100);
}
}
/*------------------------------------------------
寫(xiě)入DA轉(zhuǎn)換數(shù)值
輸入?yún)?shù):dat 表示需要轉(zhuǎn)換的DA數(shù)值,范圍是0-255
------------------------------------------------*/
bit WriteDAC(unsigned char dat)
{
Start_I2c(); //啟動(dòng)總線
SendByte(AddWr); //發(fā)送器件地址
if(ack==0)return(0);
SendByte(0x40); //發(fā)送器件子地址
if(ack==0)return(0);
SendByte(dat); //發(fā)送數(shù)據(jù)
if(ack==0)return(0);
Stop_I2c();
}