|
用ds18b20顯示溫度,hs1101顯示濕度,但我寫的濕度程序編譯沒有錯誤,就是在lcd12864上不顯示,有沒有大神幫我看一下,會不會是我的定時器和計(jì)數(shù)器寫錯了。//main.c
單片機(jī)源程序如下:
/*主程序?yàn)槌绦虻娜肟冢糜谡{(diào)用各個子程序。注意一般將
“#include <STC15.H>”頭文件放在程序開始,這樣后面
的頭文件如#include "oled.h"和"Display.h"就不需包含“#include <STC15.H>”頭文件了。*/
#include "STC15.H"
#include "OLED.h"
#include "Display.h"
#include "delay_ms.h"
#include "ds18b20.h"
#include "lcd12864cx.h"
#include "11.h"
#define uint unsigned int
#define uchar unsigned char
uchar tem0,tem1;
uchar code num[]={"0123456789."};
uchar dats;
void GPIO_Init();
void T0_Init();
void T1_Init();
void T1_Init()//計(jì)數(shù)器
{
TMOD=0X40; //0100 0000
TH1=0x00;
TL1=0x00;
EA=1;
ET1=1;
TR1=1;
}
/*
T1 每50000us中斷一次
*/
void T0_Init()//定時器
{
TMOD=0x00; //0000 0000
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void T1_ISR() interrupt 3
{
//EA =0;
//TR0=0;
//TR1=0;
//TR0=1;
//TR1=1;
//EA=1;
}
void T0_ISR() interrupt 1
{
// unsigned char m;
// m++;
// if(m>=20)
// {m=0;
tem0=TH1;
tem1=TL1;
// }
}
void main()
{
uint temp;
GPIO_Init();
OLED_Clear();
clrram ();
OLED_Init();
hello_init();
display_init();
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
OLED_Clear();
T0_Init();
T1_Init();
lcd_display();
oled_display();
while(1)
{
// tran();
dats=tran();
temp=read_temperature();
co_disp(0,2,temp/100,temp%100/10,num);
co_disp(0,3,10,temp%10,num);
co_disp(1,3,dats/10,dats%10,num);
//co_disp(1,4,dat/10,num2%10,num);
//co_disp(3,2,num3/10,num3%10,num);
// co_disp(3,6,num4/10,num4%10,num);
if(flag==1)
OLED_ShowString(28,0,"T:+",16);
if(flag==0)
{
if((temp/100==0)&&(temp%100/10==0)&&(temp%10==0))
OLED_ShowString(28,0,"T:0",16);//不顯示+00.0℃;而是顯示000.0℃。
else
OLED_ShowString(28,0,"T:-",16);
}
OLED_ShowNum(52,0,temp/10,2,16);
OLED_ShowString(68,0,".",16);
OLED_ShowNum(76,0,temp%100,1,16);
OLED_ShowString(32,2,":+",16);
OLED_ShowString(96,2,":-",16);
}
// OLED_ShowNum(48,2,num1,2,16);
//OLED_ShowNum(112,2,num2,2,16);
}
//這是hs1101的程序
#include <STC15F2K60S2.H>
#include "11.h"
#define uint unsigned int
#define uchar unsigned char
uchar RH;
uint f=0;//初值
uchar tran()
{
uchar p;
f=tem0*256+tem1;
f=f*20;
if((6805<=f)&&(f<=8292))//相對濕度在有效范圍內(nèi)0%--100% RH=RH1+10*(Freq1-Freq)/(Freq1-Freq2)
{
if((6805<f)&&(f<=6977))
{RH=90+10*(6977-f)/(6977-6805);}
if( (6977 < f)&&(f<=7140))
{RH=80+10*(7140-f)/(7140-6977);}
if((7140<f)&&(f<=7296))
{ RH=70+10*(7296-f)/(7296-7140); }
if((7296<f)&&(f<=7444))
{ RH=60+10*(7444-f)/(7444-7296); }
if((7444< f)&&(f<=7589))
{ RH=50+10*(7589-f)/(7589-7444); }
if((7589<f)&&(f<=7729))
{ RH=40+10*(7729-f)/(7729-7589); }
if((7729<f)&&(f<=7869))
{ RH=30+10*(7869-f)/(7869-7729); }
if((7869<f)&&(f<=8008))
{ RH=20+10*(8008-f)/(8008-7869); }
if((8008<f)&&(f<=8148))
{ RH=10+10*(8148-f)/(8148-8008); }
if((8148<f)&&(f<=8292))
{ RH=0+10*(8292-f)/(8292-8148); }
}
else
{
RH=0;
}
for (p=0;p<200;p++)
for (p=0;p<200;p++); //延時
return RH;
}
51hei.png (8.32 KB, 下載次數(shù): 45)
下載附件
2022-2-23 21:39 上傳
Keil代碼下載:
新建文件夾 (13) - 副本.zip
(124.68 KB, 下載次數(shù): 11)
2022-2-23 21:07 上傳
點(diǎn)擊文件名下載附件
溫濕度檢測
|
|