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