-
P0埠真實資料位址輸出端,無法連線AD控制端A、B、C,當微控制器傳送資料時,P0埠的值發生變化時,你的AD a、B、C對應的通道選擇埠也發生了變化,結果不正常。 將 A、B 和 C 連線到 P1 或 P2。
接地意味著您只使用通道 0 作為 AD,只要您只使用通道 0 輸入模擬資料即可。 看完圖,最主要的是需要測量幾組模擬量,如果只有一組,則完全接地,如果是多組,則需要連線到P1埠或P2埠。
這不是很清楚,但如果你看看你放在上面的程式,就沒有問題。 你要從頭開始,看看出了什麼問題。
-
float adc0809(void)
adda=0;選擇輸入通道 0
addb=0;
addc=0;
oe=0;以下三個命令是啟動 AD0809ST=0; st=1;
st=0;delaynms(1);
while(!eoc);等待轉換結束。
oe=1;檢索讀取的資料。
延遲一點。 ad_data0=ad_0809 ;在其他函式中返回 ad first 的值。
oe=0;return ad_data0;
ADDA、ADDB、ADDC直接連線,注意上拉電阻和定義AD 0809是AD的輸出端和微控制器的介面,可以設定到P1埠,通訊有問題。
-
是的,但它一直是零頻道。
-
adc0809
應用說明: 1)ADC0809具有內部輸出鎖存器,可直接連線到AT89S51微控制器。
2) 在初始化期間,使 ST 和 OE 訊號都為低電平。
3) 將要轉換的通道的位址傳送到埠 A、B 和 C。
4) 在 ST 端子處給出至少 100ns 寬的正脈衝訊號。
5)轉換是否完成,我們根據EOC訊號進行判斷。
6) 當EOC變為高電平時,OE為高電平,轉換後的資料輸出到微控制器。
-
看看你的原理圖就知道了。
-
1.位址是人工定義的,在51微控制器中,P0埠是低階位址8位和資料埠8位分時復用,所有連線到位址匯流排的裝置都必須有乙個位址間隔(位址塊),例如RAM62256需要32kbyte,0000H--7FFFH,這是乙個晶元選擇訊號。
AD轉換器需要乙個,通過位址解碼器,解碼的“間隔”,即儲存器的晶元選擇訊號,解碼器可以分為1、2、4、8個塊---1個是單個位址,必須是解碼器; 看自己需要選擇,選擇一塊,必要時,這塊也可以用解碼器再次解碼,原則上可以去單個位址,ADC0809需要8個位址,用低電平位址線A0、A1、A2三條,以及上面描述的晶元選擇訊號線,完成裝置8路AD轉換器的選擇, 低階位址線可以共享,晶元選擇線不能與其他裝置共享。
2、外部資料輸入到P0埠需要有相應的裝置進行選擇,並且需要讀寫訊號線,這裡用RD讀數訊號,它不是單次傳輸,它與位址線一起完成裝置的讀寫操作。
在本例中,您需要選擇ADC器件(晶元選擇),還需要選擇哪些轉換器輸出(A0、A1、A2)。
data=p0 命令與 data=p1 相同,沒有位址輸出,沒有 RD 輸出,即沒有選擇裝置。
AT89C52 C 系列是早期產品。 沒有了程式設計和看門狗,為了區別於早期產品,將新產品改為具有看門狗和ISP功能的AT89S52,ISP就是程式設計的意思。早期是晶格的專利技術,現在被大量使用。 >>>More
定義 uint unsigned int 等效於在程式集中定義乙個 16 位整數變數 n,該變數分為上層 8 位 nh 和下層 8 位 nl >>>More
這並不難,我就是這樣學會的。 只要找到正確的路,還是可以避免那麼多彎路的,我上學的時候走了很多彎路,靠自己一步一步想出來。您可以新增我了解詳細資訊,我會幫助您!