找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1875|回复: 2
打印 上一主题 下一主题
收起左侧

ADC0809显示电压,用了大佬的资源,可是有点问题,求帮助!!

[复制链接]
跳转到指定楼层
楼主
这是仿真图


这是运行图:就显示不出来,左边我自己加了一点



这是全部代码:

#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)//写指令函数
{
rs=0;//选择写命令模式

P0=com;//将要写的命令字送到数据总线上
delay(5);
//使能端给一高脉冲,因为初始化函数中将e置零
e=1;
delay(5);
e=0;//将使能端置0以完成高脉冲
}
void write_data(uchar dat)//写数据函数
{
rs=1;//选择写数据命令模式
P0=dat;
delay(5);
e=1;
delay(5);
e=0;
}
void init()//初始化函数
{
e=0;
write_com(0x38);//设置8位格式 两行
write_com(0x0c);//整体显示 关光标 不闪烁
write_com(0x06); //设置输入方式 增量不移位
write_com(0x01); //清屏
}
void main()
{
init();
ST=0;
OE=0;
ET0=1; //允许定时器计时器0中断
EA=1; //打开中断总开关
TMOD=0x12;
TH0=246;
TL0=226;
TR0=1; //定时器0运行控制位,当软件清0时,关闭定时器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转换:255/5=实(AD)/输出
if (getdata>127)
{
  write_com(0x80+0x40);
  temp=(getdata-127)*10/255*100;
  write_data('+');
  write_data(p[temp/100]);//输出整数位
  write_data('.'); //输出小数点
  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]);//输出整数位
write_data('.'); //输出小数点
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//定时器计数器0
{
CLK=~CLK;
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:303383 发表于 2018-9-21 17:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:111634 发表于 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, 下载次数: 10)

实例82  ADC0808查询方式A-D(ALE输出CLK)
实例82 ADC0808A-D( ALE输出CLK,查询方式).rar (54.04 KB, 下载次数: 5)

实例83  ADC0808延时方式A-D(ALE输出CLK)
实例83 ADC0808A-D( ALE输出CLK,延时等待方式).rar (54.13 KB, 下载次数: 5)

实例84  ADC0808并行A-D(虚拟CLK)
实例84 ADC0808A-D(虚拟CLK).rar (35.75 KB, 下载次数: 8)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1.书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表