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