📄 测电压.c
字号:
#include "reg51.h"
#include "lcd1602.c"
sbit start=P2^0;
sbit stop=P2^2;
sbit OE=P2^1;
sbit clk=P2^4;
sbit key=P3^0;
unsigned char flag;
void timerint()
{
TMOD=0x11;//设置定时器0为工作方式1(为十六位计数)
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
}
void main()
{
int temp,a,b,temp1;
int sum = 0;
LCD_Initial();
timerint();
GotoXY(5,0);
Print(" The Vol Is:");
while(1)
{ int k;
OE=0;
start=0;
start=1;
start=0;//下降沿,开始转换
while(stop==0)//查询是否转换结束
{K++;if(k>200)break;}
OE=1;
if(flag==0)
{
temp=P1;
a = temp*(1000/51)*1.028;//1.032是修正系数
temp=0;
GotoXY(1,1);
Print("DC");
GotoXY(4,1);
LCD_Write(1,a/1000+0x30);
Print(".");
LCD_Write(1,a%1000/100+'0');
LCD_Write(1,a%100/10+'0');
LCD_Write(1,a%10+'0');
Print("V");
}
if(flag==1)
{
temp1=P1;
b = temp1*(1000/51);
if(b>1.5) b=b*1.491;
if(b>1.0&&b<1.5) b=b*2;
GotoXY(1,1);
Print("AC");
GotoXY(4,1);
LCD_Write(1,b/1000+0x30);
Print(".");
LCD_Write(1,b%1000/100+'0');
LCD_Write(1,b%100/10+'0');
LCD_Write(1,b%10+'0');
Print("V");
}
OE=0;
delay(1000);
}
}
void time0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
clk=~clk;
if(key==0)
{
flag++;
while(key==0);
if(flag==2) flag=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -