微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机模数转换仿真程序问题,求解

51单片机模数转换仿真程序问题,求解

时间:10-02 整理:3721RD 点击:
按下面的程序,仿真是成功的,但是滑动变阻器左移到最边上,数码管显示的是2.55,到最右是0.00,但理论上应该是最左为5.00。很不解,求指教。d*2的话就正常了。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit CLK=P1^3;
sbit ST=P1^2;
sbit EOC=P1^1;
sbit OE=P1^0;
void DelayMS(uint ms)
{
uchar i;
while(ms--)
  for(i=0;i<120;i++);
}
/******************显示采集的电压**********************************/
void Display_Result(uchar d)
{
P2=0xf7;
P0=DSY_CODE[d%10];  //注意:当d变为2*d时候,显示正确,但不知why
DelayMS(5);
P2=0xfb;
P0=DSY_CODE[d%100/10];
DelayMS(5);
P2=0xfd;
P0=DSY_CODE[d/100]|0x80;
DelayMS(5);
}
void main()
{
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
P1=0x3f; //通道选择
while(1)
{
  ST=0;ST=1;ST=0; //ADC启动
  while(EOC==0); //转换结束信号
  OE=1;  //输出使能
  Display_Result(P3);
  OE=0;
}
}
void Timer0_INT() interrupt 1
{
CLK=~CLK;
}


是不是ADC没有校准?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top