微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 麻烦高手看下,简单的adc的问题

麻烦高手看下,简单的adc的问题

时间:10-02 整理:3721RD 点击:
#include "ADC.h"//adc模块程序
#include <REG51.H>
#include <intrins.h>
sbit ADC_start= P2^3;
sbit ADC_oe= P2^2;
sbit ADC_eoc =P3^6;
sfr ADDR = 0xA0;           //P2   = 0xA0;P2.0接A,P2.1接B,C接地
sfr ADC_data =0x90;        //P1 读数据
uchar ADC_flag=0;          //用来启动clock
uchar ADC(uchar port)
{
uchar back=0;
if(port<3)
{
ADDR=(ADDR&0xFC)|port;
ADC_start=0;
ADC_oe=0;
delay(30);
ADC_start=1;
delay(30);
ADC_start=0;
ADC_flag=1;
while(ADC_eoc==0);
ADC_oe=1;
back=ADC_data;
ADC_flag=0;
ADC_oe=0;
}
return(back);

}

#include <REG51.H>//主函数程序
#include <intrins.h>
#include "time0.h"
#include "ADC.h"
#include "LCD.h"
#include "math.h"
//#include "LCD1602.h"
//#include "DS1302.h"
#define uint unsigned int
#define uchar unsigned char
uchar show_count[6];
//char by[]={"askgj"};
void main()
{
uchar IN0,IN1,IN2;
delay(100);
initial_time0();
lcd_init();
EA=1;
ET0=1;
TR0=1;
while(1)
{
IN0=ADC(0);
IN1=ADC(1);
IN2=ADC(2);
show_count[0]=48;//万位
show_count[1]=48;//千位
show_count[2]=IN0/100+48;//百位
show_count[3]=(IN0%100)/10+48;//十位
show_count[4]=(IN0%10)+48;//个位
show_count[6]='\0';//百位
lcd_pos(2,0);
print(show_count);
delay(30);
show_count[0]=48;//万位
show_count[1]=48;//千位
show_count[2]=IN1/100+48;//百位
show_count[3]=(IN1%100)/10+48;//十位
show_count[4]=(IN1%10)+48;//个位
show_count[6]='\0';//百位
lcd_pos(3,0);
print(show_count);
delay(30);
show_count[0]=48;//万位
show_count[1]=48;//千位
show_count[2]=IN2/100+48;//百位
show_count[3]=(IN2%100)/10+48;//十位
show_count[4]=(IN2%10)+48;//个位
show_count[6]='\0';//百位
lcd_pos(4,0);
print(show_count);
delay(30);

//lcd_pos(2,0);
//print(by);
//delay(300);
// delay(3);
// clr_screen();

}

}
此处没有写出12864和时间函数的程序,为什么我我们的数据会在第四行有显示?麻烦高手看看,而且显示的数据不稳定

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

网站地图

Top