




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)項(xiàng)目AD-DA轉(zhuǎn)換實(shí)驗(yàn)【實(shí)驗(yàn)?zāi)康摹?、 學(xué)習(xí)I2C串行總線(xiàn)的工作原理2、 學(xué)習(xí)A/D芯片PCF8591的工作原理3、 學(xué)習(xí)C51編寫(xiě)程序控制AD-DA轉(zhuǎn)換【實(shí)驗(yàn)內(nèi)容】1、 學(xué)習(xí)I2C總線(xiàn)的工作方式、尋址方式和數(shù)據(jù)傳輸過(guò)程;2、 學(xué)習(xí)A/D芯片PCF8591的引腳、電路圖及其控制字節(jié)的使用;3、 實(shí)現(xiàn)給定的程序,學(xué)習(xí)AD-DA轉(zhuǎn)換程序的編寫(xiě)。4、 完成實(shí)習(xí)報(bào)告【實(shí)驗(yàn)原理】1. 連線(xiàn): JP10 (P0)與JP12 用8PIN排線(xiàn)連接。2. I2C串行總線(xiàn)的工作原理(參考教材第九章第一節(jié))。3. PCF8591工作原理:PCF8591是具有I2C總線(xiàn)的接口的8位A/D及D/A轉(zhuǎn)換器。有4路A/
2、D轉(zhuǎn)換輸入,1路D/A模擬輸出。也即既可以做A/D轉(zhuǎn)換,也可以做D/A轉(zhuǎn)換。A/D轉(zhuǎn)換為逐次比較型。3.1 PCF8591電路圖圖5-1 PCF8591電路圖3.2 引腳說(shuō)明圖5-2 PCF8591引腳圖引腳說(shuō)明:AIN0AIN3:模擬輸入信號(hào)端A0A2:硬件地址端;Vss、VDD:輸入電壓端(2.56V);SDA:I2C總線(xiàn)輸入/輸出端;SCL:I2C總線(xiàn)時(shí)鐘信號(hào)輸入端;OSC:外部時(shí)鐘輸入/內(nèi)部時(shí)鐘輸出端;EXT:內(nèi)部/外部時(shí)鐘選擇輸入端;AGND:模擬信號(hào)接地端;AOUT:模擬量輸出端;VREF:電壓參考輸入端。3.3 器件總地址PCF8591采用典型的I2C總線(xiàn)接口器件尋址方式,即總線(xiàn)
3、地址由器件地址、引腳地址和方向組成。飛利浦公司規(guī)定A/D器件的地址都是1001。引腳地址為A0、A2、A2,其值由用戶(hù)選擇。因此I2C總線(xiàn)最多可以連接2×2×2=8個(gè)具有I2C總線(xiàn)接口的A/D器件。地址的最后一位是方向位,當(dāng)主控器對(duì)A/D器件進(jìn)行讀操作時(shí)為1,進(jìn)行寫(xiě)操作時(shí)為0??偩€(xiàn)操作時(shí),由器件地址、引腳地址和方向位組成的從地址為主控器發(fā)送的第一個(gè)字節(jié)。3.4 控制字節(jié)圖5-3 PCF8591控制字節(jié)說(shuō)明控制字節(jié)用于實(shí)現(xiàn)器件的各種功能。控制字節(jié)存放在控制寄存器中??偩€(xiàn)操作時(shí),為主控器發(fā)出的第二個(gè)字節(jié)。在進(jìn)行A/D轉(zhuǎn)換數(shù)據(jù)操作時(shí),首先是主控器發(fā)出起始信號(hào),然后發(fā)出讀尋址字節(jié),
4、被控器做出應(yīng)答后,主控器從被控器讀出第一個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出應(yīng)答,主控器從被控器讀出第二個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出應(yīng)答;.,一直到主控器從被控器中讀出第n個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出非應(yīng)答信號(hào),最后主控器發(fā)出停止信號(hào)。當(dāng)進(jìn)行D/A轉(zhuǎn)換時(shí),【實(shí)驗(yàn)步驟】1. 單片機(jī)開(kāi)發(fā)板的電源與PC的USB口相連,且在PC機(jī)上安裝必要的軟件。具體步驟參見(jiàn)文件夾“軟件及其安裝說(shuō)明”中的“單片機(jī)實(shí)驗(yàn)-軟件安裝說(shuō)明書(shū).doc”。2. 在KEIL環(huán)境中編寫(xiě)和調(diào)試程序,具體操作步驟,請(qǐng)參見(jiàn)附錄“步驟一:在KEIL環(huán)境中編寫(xiě)和調(diào)試程序”;3. 用程序燒錄軟件,具體操作步驟,請(qǐng)參見(jiàn)附錄“實(shí)驗(yàn)步驟二:燒錄HEX程序到單片機(jī)開(kāi)發(fā)板中”;4
5、. 完成實(shí)習(xí)報(bào)告填寫(xiě)工作;【附錄】實(shí)驗(yàn)步驟一:在KEIL環(huán)境中編寫(xiě)和調(diào)試程序1. 單擊桌面上的圖標(biāo),則顯示如下的窗口:2. 單擊菜單中的“Project”項(xiàng),則顯示如下的彈出菜單:3. 選擇其中的“New Project”菜單項(xiàng),則彈出如下的窗口:4. 在該窗口中,在“保存在(I):”中選擇保存項(xiàng)目的文件夾,同時(shí),在“文件名(N)”中鍵入項(xiàng)目名(注意:項(xiàng)目名最好是英文,而不是漢字;其次,項(xiàng)目名中不能加空格),鍵入項(xiàng)目名后,單擊“保存(S)”按鈕,則顯示如下的窗口:5. 在“Data base”中選擇“Atmel”項(xiàng),單擊其前面的“+”,顯示如下的選擇項(xiàng),從中選擇“AT89C51”,如下圖所示:
6、6. 單擊上圖中的“確定”按鈕,顯示如下的彈出窗口:7. 選擇其中的“是(Y)”按鈕。則新的項(xiàng)目創(chuàng)建成功,如下圖顯示:8. 單擊菜單項(xiàng)中的“File->New”,如下圖:9. 顯示如下的文件編輯框,如下圖所示:10. 點(diǎn)擊菜單中的“File->Save”,如下圖:11. 則顯示如下的對(duì)話(huà)框:12. 在“文件名(N)”中鍵入文件名ADC.c,然后單擊“保存”按鈕,返回文件編輯界面,并編輯如下的AD轉(zhuǎn)換程序:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar uns
7、igned char#define Delay4us() _nop_();_nop_();_nop_();_nop_();sbit SCL=P21;sbit SDA=P20;sbit LS138A=P22; sbit LS138B=P23;sbit LS138C=P24;uchar code tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;bit bdata IIc_ERROR;uchar temp;void iic_start()SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;void
8、iic_stop()SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;void slave_ACK(void)SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;void slave_NOACK(void)SDA=1;SCL=1;Delay4us();SDA=0;SCL=0;SDA=0;void check_ACK()SDA=1;SCL=1;IIc_ERROR=0;Delay4us();if(SDA=1)IIc_ERROR=1;SCL=0;void IICSendByte(unsigned char indata)unsigned c
9、har n=8;while(n-)SDA=(bit)(indata&0x80);SCL=1;Delay4us();SCL=0;indata=indata<<1;unsigned char IICreceiveByte(void)unsigned char n=8;unsigned char tdata=0;while(n-)SDA=1;SCL=1;tdata=tdata<<1;if(SDA=1)tdata=tdata|0x01;elsetdata=tdata&0xfe;SCL=0;return tdata;void ADC_PCF8591(unsigne
10、d char controlbyte)iic_start();IICSendByte(0x90);check_ACK();IICSendByte(controlbyte);check_ACK();iic_start();IICSendByte(0x91);check_ACK();IICreceiveByte();slave_ACK();temp=IICreceiveByte();slave_ACK();slave_NOACK();iic_stop();void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void d
11、isply(uchar count)uchar bai,shi,ge;bai=count/100;shi=count%100/10;ge=count%10;P0=tab1bai;LS138A=1; LS138B=0;LS138C=1; delay(5);P0=tab1shi;LS138A=0; LS138B=1; LS138C=1; delay(5);P0=tab1ge;LS138A=1; LS138B=1; LS138C=1; delay(5);void main()P1=0x00;while(1)ADC_PCF8591(0x04);disply(temp);13. 程序輸入完成后保存,選中
12、左邊窗口中的“Source Group 1”,然后單擊鼠標(biāo)右鍵,彈出如下的彈出菜單,然后單擊其中的“Add Files to Group “Source Group 1 ”,如下圖所示:14. 則顯示如下的對(duì)話(huà)框:15. 選中剛才創(chuàng)建的ADC.c文件,然后單擊“Add”按鈕。則文件添加成功,顯示如下圖:16. 然后單擊“Close”按鈕,關(guān)閉添加文件窗口。然后,單擊程序編譯按鈕,如下圖顯示:17. 編譯結(jié)果顯示在界面下方的子窗口中,如果程序有錯(cuò)誤,則請(qǐng)修改程序直到無(wú)誤,如下圖:18. 選中左邊“Project Workspace”窗口中的“Target 1”并單擊右鍵,顯示如下的彈出菜單:19
13、. 選中其中的“Options for Target “Target 1”,在顯示如下圖窗口:20. 單擊標(biāo)簽頁(yè)“Output”,則顯示如下:21. 其中,“Name of Excutable”中是可執(zhí)行程序的名稱(chēng);將“Create Hex File”項(xiàng)打勾,然后單擊“確定”按鈕,并單擊圖標(biāo)重新編譯文件:22. 則生成HEX文件,如下圖所示:實(shí)驗(yàn)步驟二:燒錄HEX程序到單片機(jī)開(kāi)發(fā)板中1. 單擊文件“PZISP自動(dòng)下載軟件.exe”,則顯示如下:2. 選擇如圖所示的芯片類(lèi)型、波特率;并且單擊“打開(kāi)文件”按鈕,選擇生成的HEX文件,然后單擊上圖中的“下載程序”按鈕,如下圖所示:3. 則可執(zhí)行程序燒
14、錄到單片機(jī)開(kāi)發(fā)板中。注意:在程序下載前,必須將單片機(jī)的電源打開(kāi)。步驟三,重復(fù)上面的步驟一和步驟二,編輯程序完成模數(shù)轉(zhuǎn)換程序,C51源程序名為DAC.c,程序內(nèi)容如下:#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define Delay4us() _nop_();_nop_();_nop_();_nop_();#define PCF8591 0x90 /PCF8591 地址sbit SCL=P21;sbit SDA=P20;sbit LS1
15、38A=P22; sbit LS138B=P23;sbit LS138C=P24;uchar code tab1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;bit bdata IIc_ERROR;sbit beep=P15;void iic_start()SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;void iic_stop()SDA=0;SCL=1;Delay4us();SDA=1;Delay4us();SCL=0;void slave_ACK(void)SDA=0;SCL=1;Dela
16、y4us();SCL=0;SDA=1;void slave_NOACK(void)SDA=1;SCL=1;Delay4us();SDA=0;SCL=0;SDA=0;void check_ACK()SDA=1;SCL=1;IIc_ERROR=0;Delay4us();if(SDA=1)IIc_ERROR=1;SCL=0;void IICSendByte(unsigned char indata)unsigned char n=8;while(n-)SDA=(bit)(indata&0x80);SCL=1;Delay4us();SCL=0;indata=indata<<1;vo
17、id DACconversion(/*unsigned char sla,unsigned char c,*/ unsigned char Val) iic_start(); /啟動(dòng)總線(xiàn) IICSendByte(0x90); /發(fā)送器件地址 check_ACK(); IICSendByte(0x40); /發(fā)送控制字節(jié) check_ACK(); IICSendByte(Val); /發(fā)送DAC的數(shù)值 check_ACK(); iic_stop(); /結(jié)束總線(xiàn)void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void disply(uchar count)uchar bai,shi,ge;bai=count/100;shi=count%100/10;ge=count%10;P0=tab1bai;LS138A=1; LS1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湘少版英語(yǔ)五年級(jí)上冊(cè)學(xué)習(xí)評(píng)估計(jì)劃
- 岳麓版九上歷史 第六單元 第23課-《第一次世界大戰(zhàn)》教學(xué)設(shè)計(jì)
- 金融科技公司投資入股協(xié)議書(shū)范文
- 城市供水管網(wǎng)維護(hù)管理方案計(jì)劃
- 2025蘇教版-五年級(jí)數(shù)學(xué)上冊(cè)-期末考評(píng)計(jì)劃
- 25年公司項(xiàng)目負(fù)責(zé)人安全培訓(xùn)考試試題答案高清版
- 2025年廠(chǎng)級(jí)職工安全培訓(xùn)考試試題及答案a4版
- 戶(hù)外廣告制作承包合同
- 人民群眾中介合同
- 電影視頻供貨合同范本
- 呼吸道疾病防治知識(shí)
- GB/T 27030-2025合格評(píng)定第三方符合性標(biāo)志的通用要求
- 2025 南沙區(qū)危險(xiǎn)化學(xué)品和化工醫(yī)藥企業(yè)防靜電安全指引
- 2024年南通市市屬事業(yè)單位統(tǒng)一招聘筆試真題
- 河南鄭州大學(xué)第二附屬醫(yī)院招聘考試真題2024
- (二模)溫州市2025屆高三第二次適應(yīng)性考試數(shù)學(xué)試卷(含答案詳解)
- 7.2做中華人文精神的弘揚(yáng)者 課件 -2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 2024年貴州省高考地理試卷(含答案詳解)
- 2025華電內(nèi)蒙古能源有限公司校園招聘筆試參考題庫(kù)附帶答案詳解
- 肝膿腫教學(xué)查房
- 2025高考數(shù)學(xué)專(zhuān)項(xiàng)講義第18講圓錐曲線(xiàn)中的極點(diǎn)極線(xiàn)問(wèn)題(高階拓展、競(jìng)賽適用)(學(xué)生版+解析)
評(píng)論
0/150
提交評(píng)論