|
stc15w4k32s4做的溫濕度測(cè)量?jī)x 給別人做的設(shè)計(jì)
單片機(jī)源程序如下:
- /******************************************************
- @title DHT11LCD12864顯示
- @author 王樹(shù)輝
- @since Keil uVision4
- @version 1.0
- @remark 溫濕度測(cè)量
- @crystal frequency 22.1184MHz
- @site 6J408
- ******************************************************/
- #include"STC15.h" /*時(shí)鐘頻率22.1184MHz*/
- #include"typedef.h"
- #include"delay.h"
- #include"DHT11.H"
- /*此函數(shù)功能是將所有I/O口配置為準(zhǔn)雙向I/O口*/
- #define DATA P2
- int num1=25;
- int num2=35;
- void key();
- sbit RS=P4^1; //12864屏幕
- sbit WR=P4^2;
- sbit EN=P4^4;
- sbit PSB=P4^5;
- sbit key1=P0^0;
- sbit key2=P0^1;
- sbit fengshan=P0^2;
- sbit fengming=P0^3;
- sbit key3=P0^4;
- sbit key4=P0^6;
- void init_GPIO()
- {
- P0M0=P0M1=0x00;
- P1M0=P1M1=0x00;
- P2M0=P2M1=0x00;
- P3M0=P3M1=0x00;
- P4M0=P4M1=0x00;
- P5M0=P5M1=0x00;
- delay(10);
- }
- void writecmd(u8 cmd)
- {
- RS=0;
- WR=0;
- EN=0;
- DATA=cmd;
- delay(10);
- EN=1;
- delay(10);
- EN=0;
- }
- void writedat(u8 dat)
- {
- RS=1;
- WR=0;
- EN=0;
- DATA=dat;
- delay(10);
- EN=1;
- delay(10);
- EN=0;
- }
- void lcdpos(u8 X,u8 Y)
- {
- u8 pos;
- if(X==0)
- {X=0x80;}
- else if(X==1)
- {X=0X90;}
- else if(X==2)
- {X=0X88;}
- else if(X==3)
- {X=0X98;}
- pos=X+Y;
- writecmd(pos);
- }
- void writestring(u8 X,u8 Y,char *s)
- {
- lcdpos(X,Y);
- while(*s)
- {
- writedat(*s++);
- }
- }
- void init_12864()
- {
- PSB=1;
- writecmd(0x30);
- delay(10);
- writecmd(0x0c);
- delay(10);
- writecmd(0x01);
- delay(10);
- }
- void main()
- {
- struct DHT11 dat;
- init_GPIO();
- init_12864();
- writestring(0,0,"DHT111溫濕度顯示");
- writestring(1,0,"室內(nèi)溫度 濕度 ");
- writestring(2,0,"設(shè)定溫度:");
- writestring(3,0,"設(shè)定濕度:");
- while(1)
- {
-
-
- if(Read_DHT11(&dat)==SUCCESS)
- {
- lcdpos(1,4);
- writedat(dat.temp_int/10%10+0x30);
- writedat(dat.temp_int%10+0x30);
- lcdpos(2,6);
- writedat(num1/10%10+0x30);
- writedat(num1%10+0x30);
-
- if(key1==0)
- {
- delay(5);
- if(key1==0)
- {
- num1++;
- }
- }
- if(key2==0)
- {
- delay(5);
- if(key2==0)
- {
- num1--;
- }
- }
-
- if(dat.temp_int>num1)
- {
- fengshan=1;
- }
- else
- {
- fengshan=0;
- }
- lcdpos(1,7);
- writedat(dat.humi_int/10%10+0x30);
- writedat(dat.humi_int%10+0x30);
- lcdpos(3,6);
- writedat(num2/10%10+0x30);
- writedat(num2%10+0x30);
-
- if(key3==0)
- {
- delay(5);
- if(key3==0)
- {
- num2++;
- }
- }
- if(key4==0)
- {
- delay(5);
- if(key4==0)
- {
- num2--;
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
Keil代碼下載:
DHT11 12864 顯示.zip
(115.73 KB, 下載次數(shù): 184)
2018-12-19 07:42 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|