标题: 基于ADC0809的电阻测量 [打印本页]

作者: hutians    时间: 2015-2-10 17:51
标题: 基于ADC0809的电阻测量
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdrs=P2^0;     //LCD读写
sbit lcden=P2^1;     //LCD使能
//*****************************************
sbit DA=P2^2;     
sbit DB=P2^3;
sbit DC=P2^4;
sbit ST=P2^5;    //LCD驱动口
sbit OE=P2^6;
sbit EOC=P2^7;
sbit F=P3^0;
//********************************************
sbit KR=P3^1;   
uchar num;
uchar code table_1[16]="taoyiming.c";
uchar table_2[16]="0.00000";
void delay(uint x)    //延时函数   
{
  uint i,j;
for(i=x;i>0;i--)
  for(j=110;j>0;j--);
}
void write_com(uchar com)     //LCD写指令函数
{
lcdrs=0;
P0=com;
delay(1);      
lcden=1;
delay(1);
lcden=0;
}
void write_data(uchar date)    //LCD写数据函数   
{
lcdrs=1;
P0=date;
delay(1);
lcden=1;
delay(1);
lcden=0;
}
void display()
{
  write_com(0x80+0x40);
for(num=0;num<7;num++)      
{
   write_data(table_2[num]);
  delay(1);
}   
}
void ad0809()
{
uchar a;
float b=222;
uint i;
DC=0;
DA=DB=1;
  ST=1;
_nop_();    //延时一个机器周期
ST=0;
display();
while(EOC!=1);
P1=0xff;
OE=0;
_nop_();
OE=1;
_nop_();
a=P1;
OE=0;
b=a*(5.0/256.0)*10000;
i=(uint)b;
table_2[0]=i/10000+48;
table_2[1]='.';
table_2[2]=i/1000%10+48;
table_2[3]=i/100%10+48;
table_2[4]=i/10%10+48;
table_2[5]=i%10+48;   
display();   
}
void init()           //初始化函数  
{
  lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<11;num++)      
{
   write_data(table_1[num]);
  delay(1);
}
TMOD=0X01;
TH2=(65536-5000)/256;
TL2=(65536-5000)%256;
EA=1;
ET2=1;
TR2=1;
}
void main()
{
init();
  while(1)
{
  KR=1;
  if(KR==0){while(KR==0);ad0809();}
   
}  
}
void timer()interrupt 5
{
  TH2=(65536-5000)/256;
TL2=(65536-5000)%256;
F=0;
F=~F;
}   


由于没有找到有源晶振,所以我就用定时器产生一个时钟脉冲,
void timer()interrupt 5
{
  TH2=(65536-5000)/256;
TL2=(65536-5000)%256;
F=0;
F=~F;
}   
由于时间问题,我就不把实物展示出来了,下面是我的电路连接图:




排阻部分








电源部分








液晶部分






ADC0809部分






单片机部分






被测电阻和按键部分





作者: wzwzwwh    时间: 2015-12-19 22:53
想问一下后面的两个按键是起什么作用?1602怎么不显示阻值呢
作者: songxia8013    时间: 2018-12-31 11:10
你这个是电压测量吧,测出来是电压,而且你的图的ADC0808部分的12脚没接电源,16脚没接地,10脚没有CLOCK网络标号。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1