ADC0832驅動程序講解.ppt
2011年春,第十二講模數(shù)轉換(ADC0832)應用,一、ADC0832介紹二、C語言程序設計三、實訓,2011年春,一、ADC0832介紹,8-BitResolution;EasyMicroprocessorinterfaceorStand-AloneOperation;OperatesRatiometricallyorWith5-VReference;SingleChannelorMultiplexedTwinChannelsWithSingle-EndedorDifferentialInputOptions;InputRange0to5VWithSingle5-VSupply;InputsandOutputsAreCompatibleWithTTLandMOSConversionTimeof32msatCLK=250kHz;DesignedtoBeinterchangeableWithNationalSemiconductorADC0831andADC0832,1、Feature,2011年春,一、ADC0832介紹,2、引腳說明,芯片接口說明:CS_片選使能,低電平芯片使能;CH0模擬輸入通道0,或作為IN+/-使用;CH1模擬輸入通道1,或作為IN+/-使用;GND芯片參考零電位(地);DI數(shù)據(jù)信號輸入,選擇通道控制;DO數(shù)據(jù)信號輸出,轉換數(shù)據(jù)輸出;CLK芯片時鐘輸入;Vcc/REF電源輸入及參考電壓輸入(復用),2011年春,一、ADC0832介紹,3、與MCU的常用連接電路,2011年春,一、ADC0832介紹,4、工作時序與通道選擇,2011年春,(1)當要進行A/D轉換時,須先將CS使能端置于低電平并且保持低電平直到轉換完全結束。此時芯片開始轉換工作;(2)同時由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號。(3)在第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前DI端應輸入2位數(shù)據(jù)用于選擇通道功能,其功能項資料。,MCU對ADC0832控制過程:,2011年春,(4)如資料所示,當此2位數(shù)據(jù)為“1”、“0”時,只對CH0進行單通道轉換。當2位數(shù)據(jù)為“1”、“1”時,只對CH1進行單通道轉換。當2位數(shù)據(jù)為“0”、“0”時,將CH0作為正輸入端IN+,CH1作為負輸入端IN-進行輸入。當2位數(shù)據(jù)為“0”、“1”時,將CH0作為負輸入端IN-,CH1作為正輸入端IN+進行輸入。,(5)到第3個脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數(shù)據(jù)輸出DO進行轉換數(shù)據(jù)的讀取。,2011年春,(6)從第4個脈沖下沉開始由DO端輸出轉換數(shù)據(jù)最高位DATA7。(7)隨后每一個脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個脈沖時發(fā)出最低位數(shù)據(jù)DATA0,一個字節(jié)的數(shù)據(jù)輸出完成。(8)也正是從此位開始輸出下一個相反字節(jié)的數(shù)據(jù),即從第11個字節(jié)的下沉輸出DATA0。隨后輸出8位數(shù)據(jù),到第19個脈沖時數(shù)據(jù)輸出完成,也標志著一次A/D轉換的結束。(9)最后將CS置高電平禁用芯片,直接將轉換后的數(shù)據(jù)進行處理。,2011年春,ADC0832時序圖,MSB(MostSignificantBit),意為最高有效位;LSB(LeastSignificantBit)。,2011年春,二、C語言程序設計,AT89C51對ADC0832的控制過程:1、建立連接,啟動轉換;2、接收數(shù)據(jù);3、數(shù)據(jù)處理。,2011年春,二、C語言程序設計,1、建立連接,啟動轉換,ADC0832時序圖,2011年春,2、接收數(shù)據(jù),ucharGet_Result_Ch0()uchari,dat1=0,dat2=0;cs=0;clk=0;dio=1;_nop_();_nop_();clk=1;_nop_();_nop_();clk=0;dio=0;_nop_();_nop_();clk=1;_nop_();_nop_();clk=0;dio=1;_nop_();_nop_();clk=1;_nop_();_nop_();clk=0;_nop_();_nop_();,for(i=0;i<8;i+)clk=1;_nop_();_nop_();clk=0;_nop_();_nop_();dat1=dat1<<1|(uchar)(dio);for(i=0;i<8;i+)dat2=dat2|(uchar)(dio)<<i);clk=1;_nop_();_nop_();clk=0;_nop_();_nop_();cs=1;return(dat1=dat2)?dat1:0;,sbitcs=P10;sbitclk=P11;sbitdio=P12;,2011年春,3、數(shù)據(jù)處理精度,ucharcodeline1="CurrentVoltage:"uchardisplay_buffer="0.00V"voidmain()floatres;unsignedintd;Initialize_LCD();Delay_Ms(10);while(1)res=Get_Result_Ch0()/256.0*500.0;d=(unsignedint)(res);display_buffer0=d/100+0;display_buffer2=(d/10)%10+0;display_buffer3=d%10+0;Display_String(0,0,line1);Display_String(0 x46,1,display_buffer);,2011年春,三、實訓,要求:1、熟悉ADC0832的工作原理;2、修改原理圖,使用1通道轉換,增加按鍵,實現(xiàn)簡單的人機交互;3、編寫程序與調(diào)試。,2011年春,這節(jié)課就到這里謝謝大家!,