微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位大神帮帮忙 51+ADC0809+1602 外部电压采集,显示频上只能显示“v” 不能测电压

各位大神帮帮忙 51+ADC0809+1602 外部电压采集,显示频上只能显示“v” 不能测电压

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="     V";
uchar num,temp,out;
sbit RS=P1^0;//输入指令=0;输入数据=1
sbit RW=P1^1;//写数据=1;读数据=0;
sbit E=P1^2;//使能信号,下降沿执行指令
sbit ST=P1^3;/*定义启动信号,上跳沿时所有内部寄存器清零;
                下跳沿时,开始AD转换,转换期间应保持低电平*/
sbit EOC=P1^4;/*定义转换结束信号,高电平时转换结束*/
sbit OE=P1^5;/*输出允许信号,高电平时输出转换数据;低电平时输出高阻态*/
sbit CLK=P3^2;/*时钟输出,通常使500KHz*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}
void lcd_w_com(uchar com)
{
RS=0;
RW=0;
P0=com;
delay(5);
E=1;
delay(5);
E=0;
}
void lcd_w_dat(uchar dat)
{
RS=1;
RW=0;
P0=dat;
delay(5);
E=1;
delay(5);
E=0;
}
void init()
{
RW=0;
E=0;
lcd_w_com(0x38);
lcd_w_com(0x0c);
lcd_w_com(0x06);
lcd_w_com(0x01);
lcd_w_com(0x80);
for(num=0;num<6;num++)
{
  lcd_w_dat(table[num]);
  delay(20);
}
TMOD=0x01;
EA=1;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
ET0=1;
}
void display()
{
uchar wei,ge,shi,bai,qian;
temp=out*1.96;  /*ADC0809位八位,2^8=256,所以最大AD值位255
                    0~5V,5/255=19.6mV*/
qian=temp/1000;
bai=temp%1000/100;
shi=temp/100%10;
ge=temp%10;
lcd_w_com(0x80+wei);
lcd_w_dat(0x30+qian);
lcd_w_dat(0x30+bai);
lcd_w_dat('.');
lcd_w_dat(0x30+shi);
lcd_w_dat(0x30+ge);
}
void main()
{
init();
while(1)
{  
  ST=0;
  OE=0;
  ST=1;
  delay(5);
  ST=0;//下跳沿,AD开始转换
  EOC=0;
  while(EOC==0);//等待转换完成
  OE=1;//输出转换得到的数据
  out=P2;
  delay(5);
  OE=0;//输出禁止
  display();//显示
  //delay(20);
}
}
void T0_time() interrupt 1
{
TH0=(65536-200)/256;
TL0=(65536-200)%256;
CLK=~CLK;
}

程序有问题吧             1002925094                             

哪里有问题啊   帮我指出来一下

需要可以联系我的

一下子看不出来,可以代做                             

加我QQ 吧                       我告诉你                  

不错的文件,值得收藏

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

网站地图

Top