打印

请教个AD转换程序

[复制链接]
1778|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lihust|  楼主 | 2010-12-31 15:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include  <stc_new_8051.H>
#define  uchar unsigned char
#define  uint unsigned int
sbit  duan=P2^7;
sbit  wei=P2^6;
uchar code  table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0xbf,0x86,
0xdb,0xcf,0xe6,0xed,
0xfd,0x87,0xff,0xef};
void  delayms(uint xms)
{   
     uint i,j;
  for (i=xms;i>0;i--)
       for (j=110;j>0;j--);
}
void display(uchar bai ,uchar  shi,uchar  ge)
{
  duan=1;
  P0=table[bai];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0x7e;
  wei=0;
  delayms(5);
  duan=1;
  P0=table[shi];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0x7d;
  wei=0;
  delayms(5);
  duan=1;
  P0=table[ge];
  duan=0;
  P0=0xff;
  wei=1;
  P0=0x7b;
  wei=0;
  delayms(5);
}
  void main()
{
  uchar A1,A2,A3,wendu,adval;
  uint i;
  ADC_CONTR|=0x80;//开AD转换电源
  for  (i=0;i<10000;i++);
  P1ASF=0x01;   //选P1.0作为转换通道
  for  (i=0;i<10000;i++);
  ADC_CONTR|=0xE0;//
  AUXR1|=0x04;  //ADRJ=1
  ADC_CONTR|=0x08; //启动
  EADC=1;  //开AD中断
  EA=1;
  while(1); //等待中断
  adval=ADC_RESL;
  wendu=(adval*0.00527+1)/0.0075;
  A1=wendu/100;
  A2=wendu%100/10;
  A3=wendu%10;
  display(A1,A2,A3);
}
  void ADC_ISR (void)  interrupt  5   //中断函数
{
  uchar adval;
  adval=ADC_RESL;
  wendu=(adval*0.00527+1)/0.0075;
  A1=wendu/100;
  A2=wendu%100/10;
  A3=wendu%1;
  display(A1,A2,A3);
  ADC_CONTR&=0xE7;  //将标志位清零
  adval=ADC_RESL;
  ADC_CONTR|=0x08;  //重新启动AD
}

程序运行不成功,请大侠指点一下呗。

相关帖子

沙发
arao| | 2010-12-31 17:22 | 只看该作者
不懂,也想知道为什么,帮顶一个

使用特权

评论回复
板凳
qwqwqw2008| | 2010-12-31 19:01 | 只看该作者
本帖最后由 qwqwqw2008 于 2010-12-31 19:04 编辑

楼主是不是在学习 guotianxiang的单片机教程呀,怎么看怎么像呀,,具体的硬件电路是哪个,没有硬件电路怎么分析呢:lol

使用特权

评论回复
地板
lihust|  楼主 | 2011-1-1 14:38 | 只看该作者
我确实学过郭的单片机。
我今天上午找到原因了,错误如下:
AUXR1|=0x04;  //ADRJ=1   时,ADC_RES是高二位,ADC_RESL是低8位。
此程序是把低8位读取了,忽律了高二位,所以结果很不准确,经过调整,程序正确!

使用特权

评论回复
5
lihust|  楼主 | 2011-1-1 14:43 | 只看该作者
这种AD程序,在读取10位分辨率的时候,可能要注意结果寄存器的类型,否则会溢出。

使用特权

评论回复
6
lihust|  楼主 | 2011-1-1 15:12 | 只看该作者

111.jpg (81.79 KB )

111.jpg

使用特权

评论回复
7
lihust|  楼主 | 2011-9-25 10:39 | 只看该作者
这个问题,我搞明白了。

使用特权

评论回复
8
lord_fan| | 2011-9-25 12:17 | 只看该作者
这个问题,我搞明白了。
lihust 发表于 2011-9-25 10:39

历时半年搞明白了。:)
是什么问题?

使用特权

评论回复
9
冷血疯子鱼| | 2011-11-15 15:30 | 只看该作者
我都不明白,为嘛人们和我一样,写程序不喜欢分隔,看着真头大.

使用特权

评论回复
10
linty8433| | 2011-11-15 20:03 | 只看该作者
郭是不是指郭天祥呀,想当年,读书时,我也看过他讲得视频,老实说,讲得比老师好多了,通俗易懂。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

16

帖子

1

粉丝