24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 178  |  回复: 0
当前主题已经存档。

flynee

新虫 (初入文坛)


[资源] HS1101测湿度程序的修改 (555定时器),绝对好用

/***********读取T1口输入的频率值(10MS 11.0592HZ晶振)T0做定时器*****************/

#include
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 main()
{
//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,为下次准备

}
}

/* 如果您对此文章感觉满意的话,请投我一票。*/
[search]HS1101[/search]
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 flynee 的主题更新
信息提示
请填处理意见