版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)項(xiàng)目AD-DA轉(zhuǎn)換實(shí)驗(yàn)【實(shí)驗(yàn)?zāi)康摹?、 學(xué)習(xí)I2C串行總線的工作原理2、 學(xué)習(xí)A/D芯片PCF8591的工作原理3、 學(xué)習(xí)C51編寫程序控制AD-DA轉(zhuǎn)換【實(shí)驗(yàn)內(nèi)容】1、 學(xué)習(xí)I2C總線的工作方式、尋址方式和數(shù)據(jù)傳輸過程;2、 學(xué)習(xí)A/D芯片PCF8591的引腳、電路圖及其控制字節(jié)的使用;3、 實(shí)現(xiàn)給定的程序,學(xué)習(xí)AD-DA轉(zhuǎn)換程序的編寫。4、 完成實(shí)習(xí)報(bào)告【實(shí)驗(yàn)原理】1. 連線: JP10 (P0)與JP12 用8PIN排線連接。2. I2C串行總線的工作原理(參考教材第九章第一節(jié))。3. PCF8591工作原理:PCF8591是具有I2C總線的接口的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 引腳說明圖5-2 PCF8591引腳圖引腳說明:AIN0AIN3:模擬輸入信號(hào)端A0A2:硬件地址端;Vss、VDD:輸入電壓端(2.56V);SDA:I2C總線輸入/輸出端;SCL:I2C總線時(shí)鐘信號(hào)輸入端;OSC:外部時(shí)鐘輸入/內(nèi)部時(shí)鐘輸出端;EXT:內(nèi)部/外部時(shí)鐘選擇輸入端;AGND:模擬信號(hào)接地端;AOUT:模擬量輸出端;VREF:電壓參考輸入端。3.3 器件總地址PCF8591采用典型的I2C總線接口器件尋址方式,即總線
3、地址由器件地址、引腳地址和方向組成。飛利浦公司規(guī)定A/D器件的地址都是1001。引腳地址為A0、A2、A2,其值由用戶選擇。因此I2C總線最多可以連接2×2×2=8個(gè)具有I2C總線接口的A/D器件。地址的最后一位是方向位,當(dāng)主控器對(duì)A/D器件進(jìn)行讀操作時(shí)為1,進(jìn)行寫操作時(shí)為0??偩€操作時(shí),由器件地址、引腳地址和方向位組成的從地址為主控器發(fā)送的第一個(gè)字節(jié)。3.4 控制字節(jié)圖5-3 PCF8591控制字節(jié)說明控制字節(jié)用于實(shí)現(xiàn)器件的各種功能??刂谱止?jié)存放在控制寄存器中??偩€操作時(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ī)開發(fā)板的電源與PC的USB口相連,且在PC機(jī)上安裝必要的軟件。具體步驟參見文件夾“軟件及其安裝說明”中的“單片機(jī)實(shí)驗(yàn)-軟件安裝說明書.doc”。2. 在KEIL環(huán)境中編寫和調(diào)試程序,具體操作步驟,請(qǐng)參見附錄“步驟一:在KEIL環(huán)境中編寫和調(diào)試程序”;3. 用程序燒錄軟件,具體操作步驟,請(qǐng)參見附錄“實(shí)驗(yàn)步驟二:燒錄HEX程序到單片機(jī)開發(fā)板中”;4
5、. 完成實(shí)習(xí)報(bào)告填寫工作;【附錄】實(shí)驗(yàn)步驟一:在KEIL環(huán)境中編寫和調(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ì)話框: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ì)話框:15. 選中剛才創(chuàng)建的ADC.c文件,然后單擊“Add”按鈕。則文件添加成功,顯示如下圖:16. 然后單擊“Close”按鈕,關(guān)閉添加文件窗口。然后,單擊程序編譯按鈕,如下圖顯示:17. 編譯結(jié)果顯示在界面下方的子窗口中,如果程序有錯(cuò)誤,則請(qǐng)修改程序直到無誤,如下圖:18. 選中左邊“Project Workspace”窗口中的“Target 1”并單擊右鍵,顯示如下的彈出菜單:19
13、. 選中其中的“Options for Target “Target 1”,在顯示如下圖窗口:20. 單擊標(biāo)簽頁“Output”,則顯示如下:21. 其中,“Name of Excutable”中是可執(zhí)行程序的名稱;將“Create Hex File”項(xiàng)打勾,然后單擊“確定”按鈕,并單擊圖標(biāo)重新編譯文件:22. 則生成HEX文件,如下圖所示:實(shí)驗(yàn)步驟二:燒錄HEX程序到單片機(jī)開發(fā)板中1. 單擊文件“PZISP自動(dòng)下載軟件.exe”,則顯示如下:2. 選擇如圖所示的芯片類型、波特率;并且單擊“打開文件”按鈕,選擇生成的HEX文件,然后單擊上圖中的“下載程序”按鈕,如下圖所示:3. 則可執(zhí)行程序燒
14、錄到單片機(jī)開發(fā)板中。注意:在程序下載前,必須將單片機(jī)的電源打開。步驟三,重復(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)總線 IICSendByte(0x90); /發(fā)送器件地址 check_ACK(); IICSendByte(0x40); /發(fā)送控制字節(jié) check_ACK(); IICSendByte(Val); /發(fā)送DAC的數(shù)值 check_ACK(); iic_stop(); /結(jié)束總線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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教科版四年級(jí)下冊科學(xué)科學(xué)教案+教材分析
- 2018年Q1中國移動(dòng)互聯(lián)網(wǎng)行業(yè)發(fā)展分析報(bào)告
- 能源有限公司企業(yè)標(biāo)準(zhǔn):基本建設(shè)管理標(biāo)準(zhǔn)
- 修繕協(xié)議書(2篇)
- 公共關(guān)系咨詢合同(2篇)
- 酒店租賃協(xié)議
- 房屋場地租賃合同書模板
- 博覽會(huì)總贊助協(xié)議書
- 土方車租賃合同
- 2025年金屬壓力及大型容器合作協(xié)議書
- GB/T 16823.3-2010緊固件扭矩-夾緊力試驗(yàn)
- GB/T 1446-2005纖維增強(qiáng)塑料性能試驗(yàn)方法總則
- 透水混凝土工程檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 2023年中荊投資控股集團(tuán)有限公司招聘筆試模擬試題及答案解析
- DPP-4抑制劑的臨床應(yīng)用及優(yōu)勢解析課件
- 《起重吊裝方案編制》課件
- 光伏扶貧項(xiàng)目可行性研究報(bào)告
- 鈑金沖壓件質(zhì)量要求
- 2022年高考全國甲卷語文試題評(píng)講課件55張
- 欠條(標(biāo)準(zhǔn)模版)
- 深圳京基·KKmall市場考察報(bào)告(45頁
評(píng)論
0/150
提交評(píng)論