找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2490|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

新手求教關(guān)于單片機(jī)+ADC0808仿真問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真目的:采用總線形式進(jìn)行ADC0808仿真
問題:1.輸出值范圍與預(yù)期不符,量程應(yīng)該為【0-5】,仿真結(jié)果是【0.88-3.45】且在變動(dòng)的過(guò)程中出現(xiàn)了大于9的數(shù);2.即使采集口沒有接其他東西,也會(huì)顯示一個(gè)定值;3.本來(lái)是采集IN0的數(shù)據(jù),但是如果IN1的模擬量變化,顯示的數(shù)據(jù)也會(huì)變化。
小弟我真的看不出來(lái),照著視頻一行一行敲的代碼,求助個(gè)位大佬的幫助。

出錯(cuò)情況
1.未連接有初值


2.量程不對(duì)



3.端口“串線”

代碼:
1.ADC0808
頭文件:
  1. #ifndef __ADC0809_H__
  2. #define __ADC0809_H__

  3. #include <REGX52.H>
  4. #include <absacc.H>

  5. sbit EOC    = P3^5;

  6. #define AD_IN0 XBYTE[0X7FF8]
  7. #define AD_IN1 XBYTE[0X7FF9]
  8. #define AD_IN2 XBYTE[0X7FFA]
  9. unsigned char ADC_Conv();
  10.         
  11. #endif
復(fù)制代碼
函數(shù)部分:
  1. #include "ADC0809.H"

  2. unsigned char ADC_Conv()
  3. {
  4.         unsigned char ad_result = 0;
  5.         AD_IN0  = 0x0000; //借助對(duì)端口地址執(zhí)行寫操作時(shí)序,來(lái)滿足A/D的操作時(shí)序
  6.         while(EOC == 0);//查詢方式  高電平結(jié)束
  7.         ad_result = AD_IN0;//借助對(duì)端口地址執(zhí)行讀操作時(shí)序,來(lái)滿足A/D的操作時(shí)序
  8.         return ad_result;
  9. }

復(fù)制代碼

2.主函數(shù) 與 顯示服務(wù)函數(shù)
  1. #include <REGX52.H>
  2. #include "DISPLAY.H"
  3. #include "ADC0809.H"

  4. void display_service();

  5. unsigned char ad_result = 0; // 0-255
  6. int ad_show = 0;

  7. void main()
  8. {

  9.         while(1)
  10.         {
  11.                 DotDig1 = 1;
  12.                 ad_result = ADC_Conv();
  13.                 ad_show = ad_result * 1.0 *500/255;  //5v - 500  255-份
  14.                 display_service();
  15.                 Display();
  16.         }
  17. }

  18. void display_service()
  19. {
  20.         LEDBUF[0]=23;
  21.         LEDBUF[1]=ad_show/100%10;
  22.         LEDBUF[2]=ad_show/10%10;
  23.         LEDBUF[3]=ad_show%10;
  24. }
復(fù)制代碼

附件:仿真與代碼
ADC0808總線型.zip (112.88 KB, 下載次數(shù): 8)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:625730 發(fā)表于 2022-1-26 10:06 | 只看該作者
最好把ADC部分的電路圖補(bǔ)全,這樣好分析一點(diǎn)。你的AD轉(zhuǎn)換函數(shù)應(yīng)該是不對(duì)的,沒有ADWR,ADRD等的設(shè)置。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2022-1-26 11:58 | 只看該作者
給你一個(gè)示例
數(shù)字電壓表ADC0808仿真.rar (76.21 KB, 下載次數(shù): 18)

回復(fù)

使用道具 舉報(bào)

地板
ID:526543 發(fā)表于 2022-1-26 12:54 | 只看該作者
ADC部分的電路圖補(bǔ)全一下
回復(fù)

使用道具 舉報(bào)

5#
ID:675269 發(fā)表于 2022-1-26 15:48 | 只看該作者
這個(gè)是adc部分的電路圖

回復(fù)

使用道具 舉報(bào)

6#
ID:675269 發(fā)表于 2022-1-26 15:51 | 只看該作者
123456ZXC1 發(fā)表于 2022-1-26 12:54
ADC部分的電路圖補(bǔ)全一下

您好,我補(bǔ)了一下,麻煩看一看
回復(fù)

使用道具 舉報(bào)

7#
ID:675269 發(fā)表于 2022-1-26 16:04 | 只看該作者
耽誤大家時(shí)間了,由于本人的粗心,沒有把ALE引腳的網(wǎng)絡(luò)標(biāo)號(hào)改掉。導(dǎo)致ALE沒有信號(hào)。改完之后可以正常的顯示。
但是我有些許疑問,第一,為什么不連接的時(shí)候會(huì)顯示一個(gè)固定值2.49。第二,如果我測(cè)得是端口一,但端口一沒有接任何東西此時(shí)應(yīng)該顯示第一個(gè)疑問的固定值,但是改變接在端口二的滑動(dòng)電阻改變電壓,此時(shí)數(shù)碼管顯示的值會(huì)變動(dòng),這種“串線”的情況是由于什么。如果正常端口一接入滑動(dòng)電阻,則端口二的變動(dòng)不會(huì)造成端口一數(shù)值的紊亂。
回復(fù)

使用道具 舉報(bào)

8#
ID:675269 發(fā)表于 2022-1-26 16:05 | 只看該作者
rsdwm 發(fā)表于 2022-1-26 15:48
這個(gè)是adc部分的電路圖

找到問題了  ALE引腳沒改
回復(fù)

使用道具 舉報(bào)

9#
ID:675269 發(fā)表于 2022-1-26 16:06 | 只看該作者
wulin 發(fā)表于 2022-1-26 11:58
給你一個(gè)示例

謝謝,不過(guò)我的是總線方式  這個(gè)是io口控制的
回復(fù)

使用道具 舉報(bào)

10#
ID:675269 發(fā)表于 2022-1-26 16:07 | 只看該作者
TEC 發(fā)表于 2022-1-26 10:06
最好把ADC部分的電路圖補(bǔ)全,這樣好分析一點(diǎn)。你的AD轉(zhuǎn)換函數(shù)應(yīng)該是不對(duì)的,沒有ADWR,ADRD等的設(shè)置。

謝謝,找到問題了,引腳標(biāo)號(hào)錯(cuò)了。方便看一下我新回復(fù)的問題嗎
回復(fù)

使用道具 舉報(bào)

11#
ID:675269 發(fā)表于 2022-1-26 16:07 | 只看該作者
123456ZXC1 發(fā)表于 2022-1-26 12:54
ADC部分的電路圖補(bǔ)全一下

謝謝,找到問題了,引腳標(biāo)號(hào)錯(cuò)了。方便看一下我新回復(fù)的問題嗎
回復(fù)

使用道具 舉報(bào)

12#
ID:625730 發(fā)表于 2022-1-26 17:40 | 只看該作者
rsdwm 發(fā)表于 2022-1-26 16:07
謝謝,找到問題了,引腳標(biāo)號(hào)錯(cuò)了。方便看一下我新回復(fù)的問題嗎

嘿嘿,不是很懂這個(gè)總線型方式。你的ADC0809的時(shí)鐘信號(hào)是單片機(jī)ALE引腳提供的?可以在仿真的時(shí)候加個(gè)示波器對(duì)照一下。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表