📄 hs1101与tlc555程序.txt
字号:
/***********读取T1口输入的频率值(10MS 11.0592HZ晶振)T0做定时器*****************/
#include <reg51.h>
unsigned int frequency,f1,f2;
void time1(unsigned char x)
{
unsigned int i,j;
for(i=0;i<200*x;i++)
for(j=0;j<50000;j++);
}
void clean(void)
{
ES=0;//串行口中断禁止
ET1=0;//T1溢出中断禁止
EX1=0;//外部中断1禁止
ET0=0;//T0溢出中断禁止
EX0=0;//外部中断0禁止
EA=0;//总中断禁止
}
unsigned int pinlu()
{ int i;
clean();
TMOD=0X51; //T1计数,方式1 T0定时,方式1
TH1=TL1=0; //T1计数清零
TH0=0Xdb;
TL0=0Xff; //T0定时10MS(11.0592HZ)
TF0=0; //T0溢出中断标志清零
ET0=ET1=1; //T0T1溢出中断开
TR0=TR1=1; //开T0 T1
while(TF0!=1) //定时时间到再往下执行
{;}
TR0=TR1=0; //关T0 T1
TF0=0; //T0溢出中断标志清零
i=TH1*256+TL1;
return(i);
}
void shidu()
{
//initlcm();
// clear();
//bg=1;
time1(2);
while(1)
{
frequency=pinlu()*100;
if((frequency>6033)&(frequency<6187)) f1=90;
//将测量数值转换为对应百分比, 1%-100%
if((frequency>6186)&(frequency<6331)) f1=80;
if((frequency>6330)&(frequency<6469)) f1=70;
if((frequency>6468)&(frequency<6601)) f1=60;
if((frequency>6600)&(frequency<6729)) f1=50;
if((frequency>6728)&(frequency<6854)) f1=40;
if((frequency>6853)&(frequency<6977)) f1=30;
if((frequency>6976)&(frequency<7101)) f1=20;
if((frequency>7100)&(frequency<7225)) f1=10;
if(frequency>7224) f1=00;
f2=frequency%100; //对测量数值取低两位
time1(1); //处理需要等待一段时间,否则f2=0
if((f1==60)||(f1==70)||(f1==90)) f2=f2/13; //对低两位数值取个位,
else if(f1==80) f2=f2/14;
else f2=f2/12;
time1(1);
f1=f1+f2; //将数据合成一起,送显示
f1=0x000; //清0,为下次准备
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -