AD转换结果送数码管显示时,末位不断跳动,怎样解决?

以下是程序代码:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitcs=P3^0;sb... 以下是程序代码:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit cs=P3^0;
sbit rd=P3^7;
sbit wr=P3^6;
sbit intr=P3^2;
uchar AD_data,shi,ge;

uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delay(uchar z) //延时函数ms级
{
uchar x,y;
for(x=0;x<z;x++)
for(y=0;y<120;y++);
}

void ADC08C4_init() //芯片初始化
{
cs=0;
}

void ex0_init() //外部中断0初始化
{
IT0=0; //低电平有效
EX0=1; //外部中断0允许位
EA=1; //开总中断
}

void ex0() interrupt 0 using 1 //外部中断0服务程序,将转换数据存取
{
rd=0;
delay(10);
AD_data=P1;
rd=1;
}

void AD_start() //开始转换程序
{
wr=1;
wr=0;
wr=1;
}

void data_deal() //数据处理程序,将数字信号转换成16进制
{
shi=AD_data/16;
ge=AD_data%16;
}

void display() //显示程序,用两位数码管显示转换得到的数字量
{
P2=0;
P0=table[shi];
delay(10);
P2=1;
P0=table[ge];
delay(10);
}

void main() //主函数
{
ADC08C4_init(); //芯片初始化
ex0_init(); //外部中断0初始化
while(1)
{
AD_start(); //开始转换程序
delay(5);
data_deal(); //数据处理程序,将数字信号转换成16进制
display(); //显示程序,用两位数码管显示转换得到的数字量
}
}
再补充一点,我的开发板没有AD转换芯片,我是通过搭建外围电路去完成的,芯片型号为ADC0804
展开
 我来答
百度网友7ddf8c1
2011-04-09 · TA获得超过157个赞
知道答主
回答量:55
采纳率:0%
帮助的人:52.2万
展开全部
存在纹波,多次采样求平均值可消除末尾跳动。

2024-11-14 广告
深圳市响河测控技术有限公司,坐落于电力电子产业密集的珠三角地区--广东深圳,是国内外前列的电力电子测试设备研发制造商,致力于为电力电子、科研提供高可靠性、高精度的电子测试设备。响河测控技术起源于航天航空产业,具备雄厚的技术研发力量及对高精度... 点击进入详情页
本回答由提供
爬行的山羊
2011-04-09 · TA获得超过3026个赞
知道大有可为答主
回答量:6445
采纳率:70%
帮助的人:1196万
展开全部
人家都是转成10进制你怎么转换成16进制的
追问
这个不是出现问题的原因吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-09
展开全部
我调试的ADC也是末位动 这个我想应该是我们无法确保转化后模拟量就一点也不变的原因 应该不用太在意这个了 没事 呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fei740316820
2011-04-09
知道答主
回答量:37
采纳率:100%
帮助的人:20万
展开全部
你不把电路图贴出来看不出来你是怎么接的,rd、wr是什么意思?读和写?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式