找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2559|回復(fù): 2
收起左側(cè)

ADC0809顯示電壓,用了大佬的資源,可是有點問題,求幫助。

[復(fù)制鏈接]
ID:397940 發(fā)表于 2018-9-21 14:37 | 顯示全部樓層 |閱讀模式
這是仿真圖

143546ib7cc0cnxr7n7jcb.png
這是運行圖:就顯示不出來,左邊我自己加了一點

QQ圖片20180921143608.png

這是全部代碼:

#include<reg51.h>
#include<intrins.h>
#include<math.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define uchar unsigned char
#define uint unsigned int
float getdata;
float x;
uint temp;
uchar dispbuf[8]={10,10,10,10,10,0,0,0};
uchar*p="0123456789";
uchar code table[]="20141547YSH";
uchar num;
sbit ST=P2^0;
sbit OE=P2^2;
sbit EOC=P2^1;
sbit CLK=P2^4;
sbit rs=P3^5;
sbit e=P3^4;
void delay(uint z)
{
    uint x,y;
    for(x=0;x<z;x++)
      for(y=0;y<110;y++);
}

void write_com(uchar com)//寫指令函數(shù)
{
rs=0;//選擇寫命令模式

P0=com;//將要寫的命令字送到數(shù)據(jù)總線上
delay(5);
//使能端給一高脈沖,因為初始化函數(shù)中將e置零
e=1;
delay(5);
e=0;//將使能端置0以完成高脈沖
}
void write_data(uchar dat)//寫數(shù)據(jù)函數(shù)
{
rs=1;//選擇寫數(shù)據(jù)命令模式
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
void init()//初始化函數(shù)
{
e=0;
write_com(0x38);//設(shè)置8位格式 兩行
write_com(0x0c);//整體顯示 關(guān)光標(biāo) 不閃爍
write_com(0x06); //設(shè)置輸入方式 增量不移位
write_com(0x01); //清屏
}
void main()
{
init();
ST=0;
OE=0;
ET0=1; //允許定時器計時器0中斷
EA=1; //打開中斷總開關(guān)
TMOD=0x12;
TH0=246;
TL0=226;
TR0=1; //定時器0運行控制位,當(dāng)軟件清0時,關(guān)閉定時器0
ST=0;
while(1)
{
write_com(0x80);
   for(num=0;num<11;num++)
   {
      write_data(table[num]);
      delay(5);
    }
{
uchar i;
if(EOC==1)
{
OE=1;
getdata=P1;
OE=0;
//AD轉(zhuǎn)換:255/5=實(AD)/輸出
if (getdata>127)
{
  write_com(0x80+0x40);
  temp=(getdata-127)*10/255*100;
  write_data('+');
  write_data(p[temp/100]);//輸出整數(shù)位
  write_data('.'); //輸出小數(shù)點
  write_data(p[temp/10%10]);
  write_data(p[temp%10]);
  write_data('V');
  write_data(table[num]);
}
else
{
write_com(0x80+0x40);
temp=(127-getdata)*10/255*100+3;
write_data('-');
write_data(p[temp/100]);//輸出整數(shù)位
write_data('.'); //輸出小數(shù)點
write_data(p[temp/10%10]);
write_data(p[temp%10]);
write_data('V');
write_data(table[num]);
}
ST=1;
ST=0;
}
delay(200);
}
//write_com(0x01);
}
}
Voidtime0(void) interrupt 1 using 0//定時器計數(shù)器0
{
CLK=~CLK;
}



回復(fù)

使用道具 舉報

ID:303383 發(fā)表于 2018-9-21 17:14 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2018-9-22 09:57 | 顯示全部樓層
本帖最后由 zl2168 于 2018-9-22 17:07 編輯

并行ADC0809及其接口電路  
Proteus仿真一下,確認有效。
實例81  ADC0808中斷方式A-D(ALE輸出CLK)
實例81 ADC0808A-D( ALE輸出CLK,中斷方式).rar (54.32 KB, 下載次數(shù): 10)
0809ad1.jpg
實例82  ADC0808查詢方式A-D(ALE輸出CLK)
實例82 ADC0808A-D( ALE輸出CLK,查詢方式).rar (54.04 KB, 下載次數(shù): 5)
0809ad2.jpg
實例83  ADC0808延時方式A-D(ALE輸出CLK)
實例83 ADC0808A-D( ALE輸出CLK,延時等待方式).rar (54.13 KB, 下載次數(shù): 5)
0809ad3.jpg
實例84  ADC0808并行A-D(虛擬CLK)
實例84 ADC0808A-D(虛擬CLK).rar (35.75 KB, 下載次數(shù): 8)
0809ad4.jpg
以上摘自張志良編著《80C51單片機仿真設(shè)計實例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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