找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 877|回复: 4
打印 上一主题 下一主题
收起左侧

为什么我的测试电压不实时显示,运行一次显示一次,是不是还要加个判断+中断

[复制链接]
跳转到指定楼层
楼主
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";           //显示符号。
  uchar code table2[]="0123456789."; //显示数字。
sbit  rs=P2^0;                       //LCD读写。
sbit  rw=P2^1;                       //LCD读写。
sbit  en=P2^2;                       //LCD使能。
////
sbit  CLK=P2^4;                      //ADC时钟。
sbit  ST=P2^5;                       //ADC开始。
sbit  EOC=P2^6;                     
sbit  OE=P2^7;
float V2;                           
uchar num;
uint V1,Vot,bai,shi,ge;
//延时函数
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)//写数据
{
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开始采集数据
{
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 是数值255以内的误差补偿系数。
OE=0;
}
display()//显示函数
{
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, 下载次数: 18)

OJBOACFANY97WY$`)M`DH%Q.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2019-3-20 13:10 | 只看该作者
画出程序流程图,你自己就清楚了。
回复

使用道具 举报

板凳
ID:349617 发表于 2019-3-20 16:40 | 只看该作者

1、只做了一次扫描,做一个函数不停的扫描,
2、把扫描函数时时显示出来就可以。就算你调节也会跟着变化。
回复

使用道具 举报

地板
ID:443783 发表于 2019-3-25 14:32 | 只看该作者
yzwzfyz 发表于 2019-3-20 13:10
画出程序流程图,你自己就清楚了。

谢谢,明白了1
回复

使用道具 举报

5#
ID:443783 发表于 2019-3-25 14:33 | 只看该作者
小李子铁头 发表于 2019-3-20 16:40
1、只做了一次扫描,做一个函数不停的扫描,
2、把扫描函数时时显示出来就可以。就算你调节也会跟着变化 ...

谢谢 明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表