#include<stdio.h>
#include<reg51.h>
#include<string.h>
#define uint unsigned int
#define uchar unsigned char
uint a = 0;
uint b = 0;
uint c = 0;
uint d = 0;
long t1 = 0;
long t2 = 0;
float t = 0;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E =P2^2;
//***************************延时子程序***************************
void delay(uint i)
{
uint j;
for(;i>0;i--)
for(j=0;j<125;j++);
}
//***************************写指令子程序*************************
void write_com(uchar com)
{
RS=0;
RW=0;
P1=com;
E=1;
delay(1);
E=0;
}
//***************************写数据子程序*************************
void write_dat(uchar dat)
{
RS=1;
RW=0;
P1=dat;
E=1;
delay(1);
E=0;
}
//**********************光标定位函数******************************
void LcdPos (uchar Xpos,uchar Ypos)
{
uchar tmp;
Xpos&=0x0f;
Ypos&=0x01;
tmp=Xpos;
if(Ypos==1)
tmp|=0xc0;
tmp|=0x80;
write_com(tmp);
}
//***********************LCD初始化子程序**************************
LCDRset(void)
{
E=0;//**************使能端禁止
write_com(0X38);
delay(1);
write_com(0X01);//**清屏
delay(1);
write_com(0X0C);//**开显示光标不显示
delay(1);
write_com(0x06);//**光标加一
delay(1);
}
//*******************在指定行列显示字符子程序**********************
void writeChar(uchar Xpos,uchar Ypos,char c)
{
LcdPos(Xpos,Ypos);
write_dat(c);
}
//********************在指定行列写入指定字符串*********************
void writeString(uchar Xpos,uchar Ypos,char s[])
{
uchar p=0;
while(1)
{
writeChar(Xpos,Ypos,s[p]);
p++;
if(s[p]==0)
break;
if(++Xpos>15)
{
Xpos=0;
Ypos^=1;//异或运算
}
}
}
//***************************显示子程序****************************
void Display(void)
{
uchar c[16],d[16],e[16];
memset(c,0,sizeof(c));
memset(d,0,sizeof(c));
memset(e,0,sizeof(c));
t=((float)t1)/(t1+t2)*360;
sprintf(c,"%ld",t1);
writeString(0,0,c);
sprintf(d,"%ld",t2);
writeString(0,1,d);
sprintf(e,"%5.2f",t);
writeString(9,0,e);
}
void main(void)
{
IE = 0X0f;
TMOD = 0X99;
IT0 = 1;
IT1 = 1;
TR0 = 0;
TR1 = 0;
EA = 1;
LCDRset();
while(1)
{
if(t1!=0 && t2!=0)
{
Display();
delay(255);
}
else
{
writeString(0,0,".");
delay(255);
writeString(0,0,"..");
delay(255);
writeString(0,0,"...");
delay(255);
}
}
}
int1() interrupt 2
{
if(a == 0)
{
TR0 = 1;
TH0 = 0;
TL0 = 0;
b = 0;
}
a++;
if(a == 10)
{
TR0 = 0;
a = 0;
t1 = b*65536+TH0*256+TL0;
}
}
int_t0() interrupt 1
{
b++;
}
int0() interrupt 0
{
if(c == 0)
{
TR1 = 1;
TH1 = 0;
TL1 = 0;
d = 0;
}
c++;
if(c == 10)
{
TR1 = 0;
c = 0;
t2 = d*65536+TH1*256+TL1;
}
}
int_t1() interrupt 3
{
d++;
}
zhankongbi.rar_51 占空比_测量占空比
版权申诉
10 浏览量
2022-09-24
05:04:38
上传
评论
收藏 1KB RAR 举报
四散
- 粉丝: 54
- 资源: 1万+
评论0