徐錦鋼鄢 妍/.江西師范大學科學技術學院 .江西機電職業技術學院
PCF8591芯片在數模轉換電路中的應用研究
徐錦鋼1鄢 妍2/1.江西師范大學科學技術學院 2.江西機電職業技術學院
本文闡述了PCF8591芯片在數模轉換電路中的軟硬件設計方法,設計和繪制了使用PCF8591生成正弦波信號的電路圖,并使用proteus仿真軟件進行了測試,通過使用虛擬示波器觀察波形的方法驗證了數模轉換電路設計的正確性,并給出了電路圖和部分C語言源程序代碼。
PCF8591;數模轉換;仿真
數模轉換(D/A)是將離散的數字信號轉化為連續變化的模擬信號,例如我們在單片機系統中經常要將輸出的數字量轉化為具有一定波形規律的電流、電壓等模擬信號(正弦波、方波等),從而驅動負載進行工作。在具體設計中,通常采用專用的D/A芯片完成數模轉換功能,D/A芯片種類繁多,本文以PCF8591為例,闡述數模轉換電路的軟硬件設計方法。
PCF8591是一種兼有A/D模數轉換和D/A數模轉換功能的芯片,轉換精度為8bits。它具有4個模擬輸入、1個模擬輸出和1個IIC總線接口。最大轉換速率由IIC總線的最大速率決定。

圖1 電路連接圖
電路連接如上圖1所示,使用proteus繪制,主要包括PCF8591、1個發光二極管和1個觀察波形用的虛擬示波器。PCF8591的第9腳(SDA)和第10腳(SCL)分別接單片機的P2.0和P2.1,表示PCF8591和單片機通過IIC總線形式進行信息的讀寫交互,在做D/A轉換時,單片機通過SDA和SCL引腳將數字量送人PCF8591中去等待數模轉換;第5腳(A0)、第6腳(A1)和第7腳(A2)接地,表示PCF8591的外部器件地址為0;第12腳(EXT)接地,表示PCF8591使用其內部時鐘進行工作;第15腳(AOUT)為轉換完后對外輸出的模擬量[1],為便于觀察轉換效果,該引腳外接了1個發光二極管和1個虛擬示波器,如果電路設計合理并且程序編寫正確的話,發光二極管應該產生從暗漸變為亮的效果,同時虛擬示波器上可以觀察到規則的正弦波。
本文編寫了一個完整的PCF8591數模轉換測試程序,主要包括IIC總線啟動函數、IIC總線停止函數、IIC總線應答函數、發送字節函數以及寫入DA數模轉換函數。下面給出其中的2個函數作為示例,并給出程序注釋。
void Start()//IIC總線啟動函數
{
Sda=1;//Sda、Scl先置高
_nop_();
Scl=1;
_nop_();
Sda=0;//Sda、Scl再清零
_nop_();
Scl=0;
}
Sda、Scl先置高,后清零就完成了IIC總線的啟動工作[2]。
void Send(unsigned char Data)//發送1個字節函數
{
unsigned char BitCounter=8;
unsigned char temp;
do
{
temp=Data;//Data為要發送的數
Scl=0;
_nop_();
if((temp&0x80)==0x80)//如果Data最高位為1
Sda=1;//將Sda置為1
else
Sda=0;//否則將Sda清為0
Scl=1;
temp=Data<<1;//Data
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
按照圖1搭好電路后,將下面的正弦波編碼通過IIC總線送入到PCF8591中去,數模轉換后,AOUT口就能輸出按照正弦波規律變化的模擬電壓信號,最后在示波器上呈現出正弦波,同時發光二極管也會出現亮、滅、較暗、較亮的狀態變化,見下圖2所示。
uchar code SinWave[32]= {//正弦波編碼
127, 152, 176, 198, 217, 233, 245, 252,

圖2 測試結果
本文采用AT89S52單片機作為控制器,設計了基于PCF8591的數模轉換電路,論述了PCF8591的工作原理,給出了部分測試程序,并加以注釋。通過測試,該電路能夠正常工作。
[1]PCF8591芯片手冊[DB/OL].百度文庫,1997-04.
[2]黃智偉.全國大學生電子設計競賽訓練教程[M].北京:電子工業出版社,2006-06.
徐錦鋼(1983-),男,江西高安人,講師,碩士研究生,研究方向:自動化裝置軟硬件研制。