資源簡介
51單片機PCF8591例子,AD和DA集成到一個芯片上,包括了AD和DA的讀寫程序
代碼片段和文件信息
/**********************************************************************************
*??標題:???????*************?DA-AD試驗*******************?????????????????????????*
* ??*
*???1.通過本例程了解并掌握AD-DA轉(zhuǎn)換芯片的基本原理和使用? ??*
*???2.了解掌握I2C總線接口的工作原理及一般編程方法。 ??*
*??? ??*
*????連接方法:JP8?(P1)與J12用跳線連接? ??????????*
*???? ??*
*?通過改變學(xué)習板上的2個電位器對應(yīng)的2段模擬輸入,實現(xiàn)模擬輸入,學(xué)員觀察數(shù)碼管的數(shù)字變化情況
*?通過改D[4]的值,實現(xiàn)模擬輸出,學(xué)員觀察學(xué)習板上DA處LED的亮度變化 ??*
* ??* ??*
*?注意:I2C驅(qū)動程序只能在12T模式下工作???6T模式自己修改相應(yīng)時序???????????????????*????????????????? ??????????????????????????????????????????????????????????????*
*?請學(xué)員認真消化本例程,懂得AD-DA?在C語言中的操作應(yīng)用??????????????????????? ??*
***********************************************************************************/
#include
#include?
#define??PCF8591?0x90????//PCF8591?地址
//else?IO
sbit????LS138A=P2^2;??
sbit????LS138B=P2^3;
sbit????LS138C=P2^4;??
//此表為?LED?的字模?共陰數(shù)碼管?0-9??-?
unsigned?char?code?Disp_Tab[]?=?{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};?
unsigned?char?AD_CHANNEL;
unsigned?long?xdata??LedOut[8];
unsigned?int??D[32];
?
/*******************************************************************
DAC?變換?轉(zhuǎn)化函數(shù)???????????????
*******************************************************************/
bit?DACconversion(unsigned?char?slaunsigned?char?c??unsigned?char?Val)
{
???Start_I2c();??????????????//啟動總線
???SendByte(sla);????????????//發(fā)送器件地址
???if(ack==0)return(0);
???SendByte(c);??????????????//發(fā)送控制字節(jié)
???if(ack==0)return(0);
???SendByte(Val);????????????//發(fā)送DAC的數(shù)值??
???if(ack==0)return(0);
???Stop_I2c();???????????????//結(jié)束總線
???return(1);
}
/*******************************************************************
ADC發(fā)送字節(jié)[命令]數(shù)據(jù)函數(shù)???????????????
*******************************************************************/
bit?ISendByte(unsigned?char?slaunsigned?char?c)
{
???Start_I2c();??????????????//啟動總線
???SendByte(sla);????????????//發(fā)送器件地址
???if(ack==0)return(0);
???SendByte(c);??????????????//發(fā)送數(shù)據(jù)
???if(ack==0)return(0);
???Stop_I2c();???????????????//結(jié)束總線
???return(1);
}
/*****************************************************************
- 上一篇:電梯系統(tǒng) UML 圖
- 下一篇:51單片機利用傳感器測距
評論
共有 條評論