|
這是我曾經(jīng)做的智能儀器設(shè)計(jì)實(shí)驗(yàn),ADC0808與單片機(jī)8051的中斷方式接口電路。采用線選法規(guī)定其端口地址,用單片機(jī)的P2.7引腳作為為選信號(hào),因此端口地址為7FFFH。片選信號(hào)和 信號(hào)一起經(jīng)或非門產(chǎn)生ADC0808的啟動(dòng)信號(hào)START和地址鎖存信號(hào)ALE;片選信號(hào)和 信號(hào)一起經(jīng)或非門產(chǎn)生ADC0808輸出允許信號(hào)OE,OE=1時(shí)選通三態(tài)門,使輸出鎖存器中的轉(zhuǎn)換結(jié)果送入數(shù)據(jù)總線。ADC0808的EOC信號(hào)經(jīng)反相后接到8051的 引腳,用于產(chǎn)生轉(zhuǎn)換完成的中斷請(qǐng)求信號(hào)。ADC0808芯片的3位模擬量輸入通道地址碼輸入端A、B、C分別接到8051的P0.0、P0.1和P0.2,故只要向端口地址7FFFH分別寫入數(shù)據(jù)00H~07H,即可啟動(dòng)模擬量輸入通道0~7進(jìn)行A/D轉(zhuǎn)換。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
6.jpg (162.6 KB, 下載次數(shù): 41)
下載附件
電路圖
2019-3-10 15:56 上傳
單片機(jī)源程序如下:
- #include"reg52.h"
- #include"absacc.h"
- #define ADC 0x7fff //定義ADC0808端口地址
- unsigned data ADCDat[8] _at_ 0x30 ;
- unsigned i=0;
- main()
- {
- EX1=1; IT1=1; EA=1;
- XBYTE[ADC]=i; //啟動(dòng)ADC0808第0通道
- while(1)
- {
- if(P3^3==0) //查詢P3^3狀態(tài)
- P1=ADCDat[0] ; } //第0通道轉(zhuǎn)換結(jié)果送至P1口顯示
- }
- int1()interrupt 2 using 1
- {
- ADCDat[i]=XBYTE[ADC]; //讀取ADC0808轉(zhuǎn)換結(jié)果并存入內(nèi)存
- i++;
- XBYTE[ADC]=i; //啟動(dòng)ADC0808下一通道
- if(i==8)
- {
- i=0;
- XBYTE[ADC]=i; //重新啟動(dòng)ADC0808第0通道
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
ADC接口實(shí)驗(yàn).zip
(19.45 KB, 下載次數(shù): 53)
2019-3-10 15:58 上傳
點(diǎn)擊文件名下載附件
電路圖(可直接仿真)+程序 下載積分: 黑幣 -5
|
|