• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 大神帮我看看!proteus51单片机adc0808转换不准确问题

大神帮我看看!proteus51单片机adc0808转换不准确问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了proteus adc0808,proteus仿真adc0808,单片机adc0808,adc0808与单片机连接,单片机大神等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 大神帮我看看!proteus 51单片机 adc0808 转换不准确问题
描述:

本帖最后由 u012842154 于 2016-07-29 16:05:21 编辑

adc080851单片机proteus仿真

大神们好,下面是小弟仿真得 adc0808 测量输入电压后 将值用16进制数反馈给 串口调试助手,但是只有在测量+5V 和 0V得时候 反馈ff 和 00 是正确得 别的中间得值都不对(我加了个直流电压表看输入电压 再把得出得数据 *   5/256  但是值都对应不上)
 
#include<reg51.h>
#include"hbx.h"
void initTimer0(void);
void SendOneByte(uchar c);
uchar date;
sbit add_a = P3^5;
sbit add_b = P3^6;
sbit add_c = P3^7;
sbit ale = P3^4;
sbit clo = P3^3;
sbit sta = P1^0;
sbit eoc = P1^1; 
sbit oe = P3^2;
void main(void){
   initTimer0();
   add_a = add_b =add_c = 0;
  while(1){
   oe = 0;
   sta = 0;
   sta = 1;
   sta = 0;
   ale = 1;
   
while( eoc == 0 );
oe = 1;
date = P2;
oe = 0;
SendOneByte(date);
}
}
void initTimer0(){
TMOD = 0x22;
    TH0 = 0xfb;
    TL0 = 0xfb;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
SCON = 0x40;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    TR1 = 1;
}
void timer0Interrupt(void) interrupt 1{
clo =~ clo;
}
void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}
 

 大神帮我看看!proteus 51单片机 adc0808 转换不准确问题


解决方案1:

#include<reg51.h>
void initTimer0(void);
void SendOneByte(unsigned char c);
unsigned char date;
sbit add_a = P3^5;
sbit add_b = P3^6;
sbit add_c = P3^7;
sbit ale = P3^4;
sbit clo = P3^3;
sbit sta = P1^0;
sbit eoc = P1^1;         
sbit oe = P3^2;
 
 
void main(void){
 
int timeout;
   initTimer0();
 
   add_a = add_b =add_c = 0;
  while(1){
   oe = 0;
 
   sta = 0;
   sta = 1;
   sta = 0;
 
   ale = 1;
 
    timeout=0;
    while ((eoc == 0)&&(timeout++<5000));
 
    oe = 1;
    date = P2;
    oe = 0;
    SendOneByte(date);
    }
 
}
 
 
void initTimer0(){
 
    TMOD = 0x22;
    TH0 = 0xfb;
    TL0 = 0xfb;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
    SCON = 0x40;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    TR1 = 1;
}
 
void timer0Interrupt(void) interrupt 1{
 
    clo =~ clo;
 
}
 
 
void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}

解决方案2:

ADC0808的21脚是高位P2.7才对的,17脚接P2.0,输出是16进码,
所以对口要用16进码才看到东西的,
还有这程序没有timeout,这有机会Halt的。
while ((eoc == 0)&&(timeout++<5000));
还有其它问题的。
 大神帮我看看!proteus 51单片机 adc0808 转换不准确问题
#include<reg51.h>
void initTimer0(void);
void SendOneByte(unsigned char c);
unsigned char date;
sbit add_a = P3^5;
sbit add_b = P3^6;
sbit add_c = P3^7;
sbit ale = P3^4;
sbit clo = P3^3;
sbit sta = P1^0;
sbit eoc = P1^1;         
sbit oe = P3^2;
 
 
void main(void){
 
   initTimer0();
 
   add_a = add_b =add_c = 0;
  while(1){
   oe = 0;
 
   sta = 0;
   sta = 1;
   sta = 0;
 
   ale = 1;
 
    
    while( eoc == 0 );
 
    oe = 1;
    date = P2;
    oe = 0;
    SendOneByte(date);
    }
 
}
 
 
void initTimer0(){
 
    TMOD = 0x22;
    TH0 = 0xfb;
    TL0 = 0xfb;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
    SCON = 0x40;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    TR1 = 1;
}
 
void timer0Interrupt(void) interrupt 1{
 
    clo =~ clo;
 
}
 
 
void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 大神帮我看看!proteus51单片机adc0808转换不准确问题

相关文章

  • 2017-06-17中断控制器
  • 2017-06-05 ESP8266模块如何加接软线天线
  • 2017-06-05 高手帮忙————在线等待急死了啊!!!
  • 2017-06-05 vxworks67加载RTL8139驱动的问题
  • 2017-06-05 刚进一家公司,对给的任务不是很明白,求帮助
  • 2017-06-05 cc2530读取ADE7753自带SPI主模式收发问题
  • 2017-06-05 如何在U盘上实现引导扇区的写入?
  • 2017-06-05 MTK非MMItask怎么收到MSG_ID_APP_SOC_NOTIFY_IND(socket通知信号)?
  • 2017-06-05 热释电红外传感器(PIR)中的一些参数理解,请教
  • 2017-06-05 远距离身份识别

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • win7下wince7的调试问题。
    • wince6如何实现只读不写flash。mini2440
    • 请教一个关于DEBUGMSG的问题
    • 怎么把CC2541的电池电量获取,在广播出去
    • 怎么样解决这样的问题,偶尔蓝屏,死机的问题。
    • 为什么在window2003下使用softice调不了win32程序?
    • wince启动慢,运行慢的原因?
    • 新手请教驱动入门问题100分
    • inte815显卡声卡驱动问题在线等待急急急!~~~
    • 马上大四了,选择就业,正在纠结深圳和北京这两个城市

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有