標(biāo)題: A/D轉(zhuǎn)換測量電壓,并將結(jié)果顯示在數(shù)碼管上,電壓顯示為0? [打印本頁]
作者: 九零后大將 時(shí)間: 2018-9-6 09:30
標(biāo)題: A/D轉(zhuǎn)換測量電壓,并將結(jié)果顯示在數(shù)碼管上,電壓顯示為0?
利用ADC0809測量電壓,并將測量結(jié)果顯示在數(shù)碼管上,程序燒錄進(jìn)去,數(shù)碼管顯示為0,時(shí)序也沒發(fā)現(xiàn)什么問題,就是讀不出數(shù)據(jù)?哪位大神幫忙檢查一下,謝謝
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰極數(shù)碼管0~9數(shù)碼,不帶小數(shù)點(diǎn)
uchar code table2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //共陰極數(shù)碼管0~9數(shù)碼,帶小數(shù)點(diǎn)
sbit _CLK=P1^7; //時(shí)鐘信號輸入線
sbit _ST=P1^6; //轉(zhuǎn)換啟動信號
sbit _EOC=P1^5; //轉(zhuǎn)換結(jié)束信號
sbit _OE=P1^4; //輸出允許信號
sbit _ALE=P1^3; //地址鎖存輸入線
sbit _A=P1^0; //
sbit _B=P1^1; //
sbit _C=P1^2; //輸入地址線
sbit LED1=P2^0; //數(shù)碼管1段選控制位,低電平有效
sbit LED2=P2^1; //數(shù)碼管2段選控制位,低電平有效
sbit LED3=P2^2; //數(shù)碼管3段選控制位,低電平有效
void delay_us(uint m) //@12.000MHz
{
while(m--)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void display(uchar num)
{
uchar g1,g2,g3;
uint sum;
sum=(500/255)*num;//電壓轉(zhuǎn)換,5V做外參考電壓,分成256份
g3=sum/100; //個(gè)位
g2=sum/100%10; //十分位
g1=sum%10; //百分位
P2=0xfe;
P0=table2[g1];
delay_us(10);
P2=0xfd;
P0=table1[g2];
delay_us(10);
P2=0xfb;
P0=table1[g3];
delay_us(10);
}
void adc()
{
uchar num;
_ST=0;
_OE=0;
_ALE=0;
_A=0;
_B=0;
_C=0; //選擇第一個(gè)通道即IN0
_ALE=1; //上升沿,通道鎖存地址
_ST=1; //上升沿,對所有寄存器清零
_ST=0; //下降沿啟動轉(zhuǎn)換
while(!_EOC);
_OE=1;
num=P3;
_OE=0;
display(num);
}
void main()
{
TMOD=0x00;
TH0=0xFF;
TL0=0xFA;
TR0=1;
ET0=1;
EA=1;
while(1)
{
adc();
delay_us(100);
}
}
void Timer0() interrupt 2
{
TH0=0xFF;
TL0=0xFA;
_CLK=~_CLK; //時(shí)鐘信號
}
作者: 小貓貓愛吃魚 時(shí)間: 2018-9-6 11:11
你好!無法的軟件和硬件的問題
1、器件端口連接和程序,是否對應(yīng)
2、ADC0809 對時(shí)鐘有要求,是否滿足
3、靜態(tài)給數(shù)碼管幾個(gè)數(shù)據(jù),看顯示是否正常
4、處理問題的時(shí)候,采用排除法
作者: 九零后大將 時(shí)間: 2018-9-6 13:28
ADC0809沒有輸出數(shù)據(jù)
作者: erli122 時(shí)間: 2018-9-6 16:08
我也在學(xué)習(xí) AD轉(zhuǎn)換 但是我用的是STC單片機(jī)自身帶的
作者: 九零后大將 時(shí)間: 2018-9-7 16:26
我這邊單片機(jī)不帶ADC功能
作者: cjm82 時(shí)間: 2018-9-9 23:42
沒必要用0809了,0809價(jià)格貴,而且只有8位,還需要提供時(shí)鐘,占用IO口也多,現(xiàn)在隨便一款4塊錢一片的51片上集成ADC性能完爆0809
作者: 北極泥 時(shí)間: 2018-9-10 10:52
可以用一個(gè)簡單的14腳 IC 搞定,如 芯海 義隆 九齊 華潤 晟矽微 等等
作者: sxhwdz 時(shí)間: 2018-9-10 12:51
g2=sum/100%10; //十分位,這條語句是錯的,正確的應(yīng)該是:g2=sum%100/10;
作者: zl2168 時(shí)間: 2018-9-12 07:45
本帖最后由 zl2168 于 2018-9-12 12:54 編輯
介紹你幾個(gè)參考案例,自己去對照研究。
實(shí)例81 ADC0808中斷方式A-D(ALE輸出CLK)
0809ad1.jpg (314.76 KB, 下載次數(shù): 69)
下載附件
2018-9-12 12:51 上傳
實(shí)例82 ADC0808查詢方式A-D(ALE輸出CLK)
0809ad2.jpg (313.32 KB, 下載次數(shù): 59)
下載附件
2018-9-12 12:52 上傳
實(shí)例83 ADC0808延時(shí)方式A-D(ALE輸出CLK)
0809ad3.jpg (311 KB, 下載次數(shù): 83)
下載附件
2018-9-12 12:52 上傳
實(shí)例84 ADC0808并行A-D(虛擬CLK)
0809ad4.jpg (242.47 KB, 下載次數(shù): 71)
下載附件
2018-9-12 12:53 上傳
先Proteus仿真一下,確認(rèn)有效。以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil C和Proteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。
作者: shang1205 時(shí)間: 2018-9-12 10:13
g2=sum/100%10; //十分位,這條語句是錯的,正確的應(yīng)該是:g2=sum%100/10;
作者: 九零后大將 時(shí)間: 2018-10-30 10:31
多謝。。。。。。。。。。。。。
作者: 九零后大將 時(shí)間: 2018-10-30 14:53
謝啦,我再研究一下
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |