標(biāo)題: 為什么我的測(cè)試電壓不實(shí)時(shí)顯示,運(yùn)行一次顯示一次,是不是還要加個(gè)判斷+中斷 [打印本頁(yè)]

作者: zzyix123    時(shí)間: 2019-3-20 09:44
標(biāo)題: 為什么我的測(cè)試電壓不實(shí)時(shí)顯示,運(yùn)行一次顯示一次,是不是還要加個(gè)判斷+中斷
file:///C:/Users/dell/AppData/Roaming/Tencent/Users/201019512/QQ/WinTemp/RichOle/OJBOACFANY97WY$%60)M%60DH%25Q.png
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]="V1= V2= Vout=";//顯示字符。
  uchar code table1[]="v";           //顯示符號(hào)。
  uchar code table2[]="0123456789."; //顯示數(shù)字。
sbit  rs=P2^0;                       //LCD讀寫。
sbit  rw=P2^1;                       //LCD讀寫。
sbit  en=P2^2;                       //LCD使能。
////
sbit  CLK=P2^4;                      //ADC時(shí)鐘。
sbit  ST=P2^5;                       //ADC開(kāi)始。
sbit  EOC=P2^6;                     
sbit  OE=P2^7;
float V2;                           
uchar num;
uint V1,Vot,bai,shi,ge;
//延時(shí)函數(shù)
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
   for(y=120;y>0;y--);
}
void write_com(uchar com)//寫命令
{
rs=0;
rw=0;
P0=com;
delay(22);
en=1;
en=0;
}
void write_data(uchar date)//寫數(shù)據(jù)
{
rs=1;
rw=0;
P0=date;
delay(22);
en=1;
en=0;
}
void init()//初始化
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void adc()//ADC開(kāi)始采集數(shù)據(jù)
{
EA=1;
ST=0;
ST=1;
delay(22);
ST=0;
while(EOC==0);
OE=1;
EA=0;
V1=P1;
V2=((float)P1*5.0/255)*1.005;//*1.005 是數(shù)值255以內(nèi)的誤差補(bǔ)償系數(shù)。
OE=0;
}
display()//顯示函數(shù)
{
init();
write_com(0x80);
for(num=0;num<3;num++)
{
  write_data(table[num]);
  delay(5);
}
  write_com(0x83);
  for(num=0;num<1;num++)
{
  adc();
  V2=V2*100;
  bai=(int)V2/100;
  write_data(table2[bai]);
  delay(5);
  shi=(int)V2%100/10;
  write_data(table2[shi]);
  delay(5);
  ge=(int)V2%10;
  write_data(table2[ge]);
  delay(5);
  write_data(table2[10]);
  delay(5);   
}
  write_com(0x87);
   write_data(table2[0]);
  write_data(table1[0]);
  delay(5);
write_com(0x80+0x40);
for(num=0;num<5;num++)
{
  write_data(table[num+8]);
  delay(5);
}
  write_com(0x80+0x45);
  for(num=0;num<1;num++)
{
  adc();
  V2=V2*100;
  bai=(int)V2/100;
  write_data(table2[bai]);
  delay(5);   
  shi=(int)V2%100/10;
  write_data(table2[shi]);
  delay(5);
  ge=(int)V2%10;
  write_data(table2[ge]);
  delay(5);
  write_data(table2[10]);
  delay(5);
}
  write_com(0x80+0x49);
  write_data(table2[0]);
   write_data(table1[0]);
  delay(5);
while(1);
}
void main()
{
EA=1;
TMOD=0x01;
TH0=0xff;
TL0=0xb4;
ET0=1;
TR0=1;
while(1)
{
  adc();
  display();
}
}
void timer()interrupt 1
{
TH0=0xff;
TL0=0xf0;
CLK=~CLK;
}

OJBOACFANY97WY$`)M`DH%Q.png (252.57 KB, 下載次數(shù): 28)

OJBOACFANY97WY$`)M`DH%Q.png

作者: yzwzfyz    時(shí)間: 2019-3-20 13:10
畫(huà)出程序流程圖,你自己就清楚了。
作者: 小李子鐵頭    時(shí)間: 2019-3-20 16:40

1、只做了一次掃描,做一個(gè)函數(shù)不停的掃描,
2、把掃描函數(shù)時(shí)時(shí)顯示出來(lái)就可以。就算你調(diào)節(jié)也會(huì)跟著變化。

作者: zzyix123    時(shí)間: 2019-3-25 14:32
yzwzfyz 發(fā)表于 2019-3-20 13:10
畫(huà)出程序流程圖,你自己就清楚了。

謝謝,明白了1
作者: zzyix123    時(shí)間: 2019-3-25 14:33
小李子鐵頭 發(fā)表于 2019-3-20 16:40
1、只做了一次掃描,做一個(gè)函數(shù)不停的掃描,
2、把掃描函數(shù)時(shí)時(shí)顯示出來(lái)就可以。就算你調(diào)節(jié)也會(huì)跟著變化 ...

謝謝 明白了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1