找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机+ADC0808数据采样程序问题

[复制链接]
跳转到指定楼层
楼主
最近用ADC0804学习数据转换,正常,可用ADC0808在proteus上仿真时出现不能正确解析中间量的问题:调节电位器在最大时能显示“0”v,调节电位器最小时,能采集并显示“5”v,可是调节到中间位置时就乱了。百思不得要领,还请个位老师和大虾指点,非常感谢!
程序如下:
#include <reg52.h>
#include <intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;

u8 qian,bai,shi,ge;
u8 code shuju[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit clk=P3^0;
sbit start=P3^1;
sbit eoc=P3^2;
sbit oe=P3^3;
sbit ada=P3^4;
sbit adb=P3^5;
sbit adc=P3^6;
sbit dp=P1^7;

void inittime()//定时器初始化
{
        TMOD=0x02;
        TH0=0xfb;
        TL0=0xfb;
        EA=1;
        ET0=1;
        TR0=1;
}
void timer0() interrupt 1//定时器函数
{
        clk=~clk;
}
void delay(u8 z)//延时函数
{
        while(z--);
}

void display()//数码管显示函数
{                        
        P2=0xfe|0x80;//指定哪位数码管显示,不影响高4位的值
        P1 = shuju[qian];
        dp=1;//增加小数点
        delay(50);
        
        P2=0xfd|0x80;
        P1 = shuju[bai];
        //dp=1;
        delay(50);

        P2=0xfb|0x80;
        P1 = shuju[shi];
        //dp=1;
        delay(50);
        
        P2=0xf7|0x80;
        P1 = shuju[ge];
        delay(50);        
}


void adc_get()//ADC采集及转换函数
{
u16 temp = 0;         //转换电压值
u8 x = 0;    //存储P0口的数值        
        ada=adb=adc=0;
        start=0;
        start=1;
        delay(5);
        start=0;
        while(eoc!=1);
        oe=1;
        x=P0;
        oe=0;
        temp = x * (1.0/255)*5*1000; //读取的电压扩大1000倍               
qian=temp/1000;
bai=temp%1000/100;
shi=temp%100/10;
ge=temp%10;

}
void main()
{
inittime();
while(1)        
{                        
adc_get();
display();               
}
}

1.jpg (225 KB, 下载次数: 80)

1.jpg

2.jpg (230.11 KB, 下载次数: 85)

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

使用道具 举报

沙发
ID:213173 发表于 2021-4-1 12:45 | 只看该作者
数字电压表ADC0808.zip (84.54 KB, 下载次数: 22)

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:151348 发表于 2021-4-1 13:58 | 只看该作者
高低位接反了,adc的out1脚是高位

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:825397 发表于 2021-4-1 15:05 | 只看该作者
imxuheng 发表于 2021-4-1 13:58
高低位接反了,adc的out1脚是高位

太谢谢你,恍然领悟!肯请版主奖励!
回复

使用道具 举报

5#
ID:825397 发表于 2021-4-1 15:07 | 只看该作者
imxuheng 发表于 2021-4-1 13:58
高低位接反了,adc的out1脚是高位

一直在程序上打转,浪费不少精力,你一下子点出了问题所在。
回复

使用道具 举报

6#
ID:883031 发表于 2021-4-1 15:16 | 只看该作者
器件手册没仔细阅读,粗心大意造成的失误,可以理解。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:825397 发表于 2021-4-1 15:32 | 只看该作者
cn_zhx 发表于 2021-4-1 15:16
器件手册没仔细阅读,粗心大意造成的失误,可以理解。

非常赞同你的意见!
回复

使用道具 举报

8#
ID:825397 发表于 2021-4-1 15:34 | 只看该作者

谢谢你的分享!
回复

使用道具 举报

9#
ID:520434 发表于 2021-6-7 14:26 | 只看该作者

太强了,我头疼了一上午,看了你的,顿然醒悟,必须给个
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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