标题: 热敏电阻温度计 真的没看懂 显示屏数值不会变 [打印本页]

作者: 这东西123    时间: 2017-5-15 21:48
标题: 热敏电阻温度计 真的没看懂 显示屏数值不会变
真的没看懂,请教这个滑动变阻器滑动了,可是显示屏数值不会变。(热敏电阻温度计的proteus)

205606qe3e6ks97csk88ii.png (711.24 KB, 下载次数: 98)

205606qe3e6ks97csk88ii.png

作者: 额防护    时间: 2017-5-15 22:26
可能有三个原因1 ADC的接法可能有问题2 是程序的处理3原电路电压变化并不大,可以加一个放大电路
作者: 额防护    时间: 2017-5-15 22:27
注意电压变化的范围
作者: imxuheng    时间: 2017-5-16 11:38
贴上程序看看
作者: 这东西123    时间: 2017-5-17 15:46
imxuheng 发表于 2017-5-16 11:38
贴上程序看看

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

//
unsigned char code dispbitcode[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//
//

unsigned char code LEDcode[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
//
//
unsigned char dispbuf[8]={10,10,10,10,10,10,0,0};
//
unsigned char dispcount;
unsigned int uiResult;
bit sflag;
sbit START=P3^1;
sbit OE=P3^0;
sbit EOC=P3^2;
sbit P17=P1^7;
//

void delay(uint z)           //延时函数,约1ms
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void Display()
{for(dispcount=0;dispcount<5;dispcount++)
{P2=0xff;
P1=LEDcode[dispbuf[dispcount]];
if(dispcount==3)
{P17=1;}
P2=dispbitcode[dispcount];
delay(1);
P2=0xff;
}
}
//
void ADC0809()
{
        unsigned char i;
        unsigned long y;

//        START=0;
        START=1;
        START=0;
P0=0Xff;
//EOC=1;
while(EOC==0);
OE=1;
uiResult=P0;
OE=0;
y=uiResult;
uiResult=(y*2516)/128;
if(uiResult<2732)
{ uiResult=2732-uiResult;sflag=1;}
else
{ uiResult=uiResult-2732;sflag=0;}
i=4;
dispbuf[1]=0;
dispbuf[2]=0;
dispbuf[3]=0;
dispbuf[4]=0;
if(sflag==1)
{ dispbuf[0]=11;}
else
{ dispbuf[0]=10;}
dispbuf[5]=10;
dispbuf[6]=10;
dispbuf[7]=10;
while(uiResult/10)
{dispbuf=uiResult%10;
uiResult=uiResult/10;
i--;
}
dispbuf=uiResult;
}
//
void main(void)
{
        xdata unsigned char kk = 0;
        
        START=0;
OE=0;
uiResult=148;
while(1)
{
        kk++;
        Display();
        ADC0809();
}
}
//
作者: libin321    时间: 2018-12-20 13:57
加一个放大电路




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