作业帮 > 综合 > 作业

proteus仿真0-5V的ADC0808单片机电压表,为什么滑动变阻器滑到中间采样值突变为0,采样最大值为2.5V

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/04 20:29:23
proteus仿真0-5V的ADC0808单片机电压表,为什么滑动变阻器滑到中间采样值突变为0,采样最大值为2.5V

#include<reg52.h>
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
//sbit psb=P1^3;
sbit START=P3^4;
sbit EOC=P3^3;
sbit OE=P3^2;
sbit ALE=P3^1;
sbit CLK=P3^5;
#define uint unsigned int 
#define uchar unsigned char
uint i;
uchar vol,v;
uchar code table[]={"nit"};
uchar code table1[]={"CO:"};
void delay(uint z)
{
  uint x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void write_com(uchar com)    //LCD指令程序
{
  en=0;
  rs=0;
  delay(5);
  P0=com;
  delay(5);
  en=1;
  delay(5);
  en=0;
}
void write_data(uchar dat)   //LCD数据程序
{
  en=0;
  rs=1;
  delay(5);
  P0=dat;
  delay(5);
  en=1;
  delay(5);
  en=0;
}
void write_xianshi(uchar add,int date)
{
 char bai,shi,ge;
 bai=date/100;
 shi=date%100/10;
 ge=date%10;
 write_com(0x80+0x40+add);//显示位置
 write_data(0x30+bai);
 write_data(0x2e);
 write_data(0x30+shi);
 write_data(0x30+ge);
}
void init()
{
  en=0;
  rw=0;          //LCD写操作
  write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口
  write_com(0x0c);//开显示不显示光标
  write_com(0x06);//显示一个数据后光标自动加1
  write_com(0x01);//清屏
for(i=0;i<(sizeof(table)-1);i++)   //第一行输入
{
    write_com(0x80+i);
    write_data(table[i]);
}
for(i=0;i<(sizeof(table1)-1);i++)  //第二行输入
{
    write_com(0x80+0x40+i);
    write_data(table1[i]);
}
}
void start(void)
{
 ALE=1;
 delay(1);
 START=1;
 delay(1);
 ALE=0;
 delay(1);
 START=0;
}
void check(void)
{
 while(EOC==1)
 delay(1);
 while(EOC==0)
 delay(1);
 OE=1;
 delay(1);
 vol=P1;
 OE=0;
}
void deal(void)
{
 if(vol>=251)
  vol=250;
  v=vol*2;
}
void timer0( ) interrupt 1 //定时器0工作方式1
{
  TH0=0xff;   //定时时间高八位初值
  TL0=0xfe;   //定时时间低八位初值
  CLK=!CLK;     //取反
}
void main()
{
 TMOD=0X01;     //定时器中断0
 CLK=0;      //脉冲信号初始值为0
 TH0=0xff;   //定时时间高八位初值
 TL0=0xfe;   //定时时间低八位初值
 EA=1;      //开CPU中断
 ET0=1;      //开T/C0中断
 TR0=1;
  init();
  while(1)
 {
  start();
  check();
  deal();
 write_xianshi(5,v);
 }
}
proteus仿真0-5V的ADC0808单片机电压表,为什么滑动变阻器滑到中间采样值突变为0,采样最大值为2.5V
#include
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
//sbit psb=P1^3;
sbit START=P3^4;
sbit EOC=P3^3;
sbit OE=P3^2;
sbit ALE=P3^1;
sbit CLK=P3^5;
#define uint unsigned int
#define uchar unsigned char
uint i;
//uchar vol,v;----把这行,改成下面两行
uchar vol;
uint v;
//---------后面的,都不用改动
uchar code table[]={"nit"};
……
试试看.
------------------------------
说明:
void deal(void)
{
if(vol>=251)
vol=250;
v=vol*2;-----就是这句,超出了 v 的范围.
}
proteus仿真0-5V的ADC0808单片机电压表,为什么滑动变阻器滑到中间采样值突变为0,采样最大值为2.5V AD采样电路?单片机3.3V ADC采样口,能采样电源为5V的模拟信号吗? 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,测量结果用4为数码显示 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,测量结果用4为数码显示. 利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,精度越高越好 如果我的单片机的基准电压为3.3V,而外部的模拟量输入为0—5V我要对这个模拟量直接用单片机的内部AD进行采样,该怎么办 滑动变阻器的规格为 0-500欧 当滑动变阻器的滑片在最左端a时 电压表的示数是3V 在最右端b时 示数为2.5V 如图所示电路中,滑动变阻器的最大值为30欧姆,将滑动变阻器滑片P移动到B端,闭合开关S,发现电压表的示数变为6V,当P移 已知电源电压为10V ,定值电阻5欧与滑动变阻器20欧的电阻串联电压表测滑动变阻器的电压,滑动变阻器 u电源=12v,滑动变阻器为0~50欧姆,r1=10欧姆,当p从a滑到b端时,求电压表和电流表的 如图所示,电源电压一定,定值电阻R0的阻值为5欧,当滑动变阻器的滑片P由A位置滑到B位置时,电压表的读数由4V变到8V, 电源电压4.5V不变,定值电阻5Ω变阻器最大为20Ω电流表为0到0.6A电压表为0到3V为保护电路,变阻器的范围