欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 用單片機驅動ADC0808時仿真不出來,求大神幫忙解答!感激不盡 [打印本頁]

作者: 奔跑別聽    時間: 2018-3-20 15:15
標題: 用單片機驅動ADC0808時仿真不出來,求大神幫忙解答!感激不盡
問題描述:用proteus仿真時,不管兩個變阻器怎么調節,始終是兩個紅燈亮。求大神幫忙解答。
硬件描述:我用的是AT89C51,ADC0808,四個LED燈,兩個滑動變阻器代替模擬兩個傳感器。ADC0808接口:IN0接滑動變阻器RVI,IN1接滑動變阻器RV2,ADDA、B、C分別接P2.0、P2.1、P2.2,ALE和START接P0.6,CLOCK接單片機ALE經過四分頻,EOC接P0.2,OE接P0.0,OUT1~OUT8接P3端口。P1.0和P1.2接紅燈,P1.1和P1.3接綠燈。硬件圖如下:


實現的功能:不停地將兩個滑動變阻器RV1和RV2的模擬電壓信號通過ADC0808轉換成數字信號輸出到單片機P3端口,當RV1的輸出電壓超過2.5V時,P1.0紅燈亮,否則P1.1綠燈亮;當RV2的輸出電壓超過2.5V時,P1.2紅燈亮,否則P1.3綠燈亮。
匯編程序:        
                ORG    0000H  //開始
CHONG:    CLR    P0.0     //OE置0
                MOV    P2,#0  //選擇IN0端口
                CLR    P0.6      //啟動A/D轉換
                SETB   P0.6
                CLR    P0.6   
                JNB    P0.2,$    //等待轉換結束
                SETB   P0.0      //轉換結束則將OE置1,允許輸出
                MOV    A,P3      //將ADC0808的輸出放到A
                SUBB   A,#80H  //將其減去2.5V
                ANL    A,#80H     //判斷余數是正數還是負數
                JNZ    YWZC        //若為負數則模擬電壓小于2.5V,轉變阻器1正常顯示程序;否則順序執行變阻器1不正常顯示程序
                CLR    P1.0           //紅燈1亮
                SETB   P1.1           //綠燈1滅
                SJMP   COCGQ      //轉RV2判斷
YWZC:      CLR    P1.1            //紅燈1滅
                 SETB   P1.0           //綠燈1亮
COCGQ:    CLR    P0.0          //OE置0,以下程序判斷RV2
                MOV    P2,#01    //選擇IN1端口
                SETB   P0.6        //啟動A/D轉換
                CLR    P0.6
                JNB    P0.2,$      //等待轉換結束
                SETB   P0.0       //轉換結束則將OE置1,允許輸出
                MOV    A,P3       //將ADC0808的輸出放到A
                SUBB   A,#80H  //將其減去2.5V
                ANL    A,#80H   //判斷余數是正數還是負數
                JNZ    COZC       //若為負數則模擬電壓小于2.5V,轉變阻器2正常顯示程序;否則順序執行變阻器2不正常顯示程序
                CLR    P1.2      //紅燈2亮
                SETB   P1.3      //綠燈2滅
                SJMP   COBZC    //轉移
COZC:      CLR    P1.3        //紅燈2滅
               SETB   P1.2        //綠燈2亮
COBZC:    SJMP   CHONG    //轉第一步,無限循環


作者: zl2168    時間: 2018-3-21 10:28
本帖最后由 zl2168 于 2018-3-21 10:30 編輯

實例81  ADC0808中斷方式A-D(ALE輸出CLK)
Proteus仿真一下,確認有效。

實例81 ADC0808A-D( ALE輸出CLK,中斷方式).rar (54.32 KB, 下載次數: 40)
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1.書中電路和程序設計有詳細說明,程序語句條條有注解。



作者: 奔跑別聽    時間: 2018-3-21 11:35
zl2168 發表于 2018-3-21 10:28
實例81  ADC0808中斷方式A-D(ALE輸出CLK)
先Proteus仿真一下,確認有效。
以上摘自張志良編著《80C51單 ...

為什么你的單片機XTALE1和XTALE2沒接晶振,而他的ALE引腳能直接接到ADC0808的clock
作者: zl2168    時間: 2018-3-21 14:58
第一個問題:Proteus仿真時系統默認,實際電路必須接。
作者: zl2168    時間: 2018-3-21 15:09
第二個問題:51單片機,無讀寫外RAM操作時,ALE信號固定為CPU時鐘頻率的1/6,可用作0808的CLK信號
作者: zl2168    時間: 2018-3-21 15:10
本帖最后由 zl2168 于 2018-3-21 15:15 編輯

實例82  ADC0808查詢方式A-D(ALE輸出CLK)
實例82 ADC0808A-D( ALE輸出CLK,查詢方式).rar (54.04 KB, 下載次數: 8)

查詢方式時,0809 EOC端可不必通過反相器與INT0或INT1相連,直接與80C51 P1口或P3口中任一端線相連,不斷查詢EOC電平,當EOC高電平時,表示0809A-D完成,即可讀0809A-D

作者: zl2168    時間: 2018-3-21 15:11
本帖最后由 zl2168 于 2018-3-21 15:16 編輯

實例83  ADC0808延時方式A-D(ALE輸出CLK)
實例83 ADC0808A-D( ALE輸出CLK,延時等待方式).rar (54.13 KB, 下載次數: 8)

延時等待方式時,0809 EOC端可不必與80C51相連,而是根據時鐘頻率計算出A-D轉換時間,每路每次需64個時鐘周期,80C51一機周發出2ALE信號,因此需要32個機器周期,略微延長后直接讀A-D轉換值。

作者: zl2168    時間: 2018-3-21 15:12
本帖最后由 zl2168 于 2018-3-21 15:14 編輯

實例84  ADC0808并行A-D(虛擬CLK)
實例84 ADC0808A-D(虛擬CLK).rar (35.75 KB, 下載次數: 7)

Proteus仿真一下,確認有效。以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1.書中電路和程序設計有詳細說明,程序語句條條有注解。

作者: zl2168    時間: 2018-3-21 15:21
以上4例有雙解c和匯編程序,取之于《單片機原理與控制技術——雙解匯編和C51》第3版ISBN 978-7-111-42393-5機械工業出版社和《單片機學習指導及習題解答——雙解匯編和C51》第2版ISBN 978-7-111-42431-4機械工業出版社。程序語句條條有注解,便于閱讀理解,便于自學。
作者: 程序新手    時間: 2018-3-24 13:40
你的單片機XTALE1和XTALE2沒接晶振,而他的ALE引腳能直接接到ADC0808的clock




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1