求教大神,用ADC0809和89C51单片机实现对两路模拟信号并在LCD1602交替显示?
不知道怎么回事,我们把板子焊出来后,在while(1)循环时,只显示一个数据。也就是先采集到哪个。那么LCD上面交替显示的两个量都是一样的。相当于只采集到了一个数据。通道...
不知道怎么回事,我们把板子焊出来后,在while(1)循环时,只显示一个数据。也就是先采集到哪个。那么LCD上面交替显示的两个量都是一样的。相当于只采集到了一个数据。通道貌似没有选中一样。但是如果只显示一个数据的话就完全正常。一在循环里面加采集两路的,就出现这样的问题。希望大神能够帮忙解决!!
仿真图:
程序:
#include <reg51.h>#include<lcd1602_IO.h>#include<intrins.h>
sbit a=P2^0;sbit ST=P3^2;sbit OE=P3^0;sbit EOC=P3^1;unsigned char N;void T0_int();
void T0_int(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256; EA=1; TR0=1; ET0=1;
}
void T0_timer() interrupt 1 using 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;N++;}
unsigned char getdata; void main(){ unsigned char T; unsigned char Z; T0_int(); LCD_INT(); while(1) { ST=0; OE=0; ST=1; CPU_DELAYTIME(1000); a=0; //===选择通道0 CPU_DELAYTIME(3); ST=0; while(EOC==0); CPU_DELAYTIME(50000); OE=1; CPU_DELAYTIME(50000); getdata=P1; CPU_DELAYTIME(50000); OE=0; CPU_DELAYTIME(50000); CLR_SCREEN(); T=getdata; LCD_PRINTF(1,4,"Temp=%d"); LCD_PRINTF(2,8,"C%d"); LCD_PRINT(2,2,4,T); CPU_DELAYTIME(5000); //============对光敏电阻量进行检测(通道7) ST=0; OE=0; ST=1; CPU_DELAYTIME(1000); a=1; CPU_DELAYTIME(3); ST=0; while(EOC==0); CPU_DELAYTIME(50000); OE=1; CPU_DELAYTIME(50000); getdata=P1; CPU_DELAYTIME(50000); OE=0; CPU_DELAYTIME(50000); CLR_SCREEN(); Z=getdata; LCD_PRINTF(1,4,"Iv=%d"); LCD_PRINTF(2,8,"cd%d"); LCD_PRINT(2,2,4,Z); CPU_DELAYTIME(5000); }} 展开
仿真图:
程序:
#include <reg51.h>#include<lcd1602_IO.h>#include<intrins.h>
sbit a=P2^0;sbit ST=P3^2;sbit OE=P3^0;sbit EOC=P3^1;unsigned char N;void T0_int();
void T0_int(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256; EA=1; TR0=1; ET0=1;
}
void T0_timer() interrupt 1 using 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;N++;}
unsigned char getdata; void main(){ unsigned char T; unsigned char Z; T0_int(); LCD_INT(); while(1) { ST=0; OE=0; ST=1; CPU_DELAYTIME(1000); a=0; //===选择通道0 CPU_DELAYTIME(3); ST=0; while(EOC==0); CPU_DELAYTIME(50000); OE=1; CPU_DELAYTIME(50000); getdata=P1; CPU_DELAYTIME(50000); OE=0; CPU_DELAYTIME(50000); CLR_SCREEN(); T=getdata; LCD_PRINTF(1,4,"Temp=%d"); LCD_PRINTF(2,8,"C%d"); LCD_PRINT(2,2,4,T); CPU_DELAYTIME(5000); //============对光敏电阻量进行检测(通道7) ST=0; OE=0; ST=1; CPU_DELAYTIME(1000); a=1; CPU_DELAYTIME(3); ST=0; while(EOC==0); CPU_DELAYTIME(50000); OE=1; CPU_DELAYTIME(50000); getdata=P1; CPU_DELAYTIME(50000); OE=0; CPU_DELAYTIME(50000); CLR_SCREEN(); Z=getdata; LCD_PRINTF(1,4,"Iv=%d"); LCD_PRINTF(2,8,"cd%d"); LCD_PRINT(2,2,4,Z); CPU_DELAYTIME(5000); }} 展开
3个回答
展开全部
要是有仿真环境和程序直接调试,找问题会快一些,给你发了私信
追问
调试了好久了都不行。分别测的时候完全对的。但是一接上两路就不对了
调试了好久了都不行。分别测的时候完全对的。但是一接上两路就不对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你换一个通道试试,我曾经也出现过同样的问题,感觉有几个通道有问题,后来换了一个通道就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询