實驗報告 課程名稱 單片機原理與接口技術實驗 實驗名稱D-A轉換(PCF8591) 系別 電子信息科學學院 專業班級 15電子信息工程3班 指導教師 林* 學號1631*姓名_吳*_實驗日期_ 12.22實驗成績_______ 
一,實驗目的1、熟悉D/A轉換的原理。 2、熟悉PCF8591芯片的工作特性,進一步熟悉I2C總線工作的原理。 3、掌握PCF8591芯片D/A轉換的編程應用。 二,實驗設備 計算機一臺; 單片機實驗儀一臺; Keil C51和Proteus軟件; 示波器。 三,實驗內容 根據D/A轉換、I2C總線工作的原理和PCF8591手冊,從PCF8591的AOUT引腳輸出一個如下圖所示的三角波。提示:PCF8591芯片固定地址為1001。
四,實驗源程序 七,實驗總結及心得體會 通過本次實驗增加了對軟件的熟悉和使用,對電腦更加熟悉,加上了對課本上知識的了解和認識。
單片機源程序如下: - #include<reg52.h>
- #include<intrins.h>
- sbit SCL=P2^1; //I2C時鐘線
- sbit SDA=P2^0; //I2C數據線
-
-
-
-
-
-
-
- void start() //定義起始信號函數
- {
- SDA=1;
- SCL=1;
- _nop_();
- _nop_();
- SDA=0;
- _nop_();
- _nop_();
- SCL=0;
- }
-
- void stop() //定義停止信號產生函數
- {
- SDA=0;
- SCL=0;
- _nop_();
- _nop_();
- SCL=1;
- _nop_();
- _nop_();
- SDA=1;
- }
-
- void rack() //定義應答檢測函數
- {
- SCL=1;
- _nop_();
- _nop_();
- SCL=0;
- }
-
- void nack() //定義不應答信號產生函數
- {
- SDA=1;
- SCL=1;
- _nop_();
- _nop_();
- SCL=0;
- SDA=1;
- }
-
- void wbyte(unsigned char tmp) //寫字節函數
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- tmp=tmp<<1; //左移一位,移入CY
- SDA=CY; //移出位發送
- SCL=1;
- _nop_();
- _nop_();
- SCL=0;
- }
- rack();
- }
-
-
-
-
- void wdata(unsigned char dat)
- {
- unsigned char i;
- start();
- wbyte(0x90); //器件尋址
- wbyte(0x40);
- wbyte(dat); //寫數據
- stop();
- for(i=0;i<255;i++); //每寫一數據,
- for(i=0;i<255;i++); //都要延時
- }
-
- int main()
- {
- int i;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
|