标题:
stc15w4k32s4单片机做的温湿度测温DHT11 12864显示程序
[打印本页]
作者:
武略大韬
时间:
2018-12-19 07:43
标题:
stc15w4k32s4单片机做的温湿度测温DHT11 12864显示程序
stc15w4k32s4做的温湿度测量仪 给别人做的设计
单片机源程序如下:
/******************************************************
@title DHT11LCD12864显示
@author 王树辉
@since Keil uVision4
@version 1.0
@remark 温湿度测量
@crystal frequency 22.1184MHz
@site 6J408
******************************************************/
#include"STC15.h" /*时钟频率22.1184MHz*/
#include"typedef.h"
#include"delay.h"
#include"DHT11.H"
/*此函数功能是将所有I/O口配置为准双向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,"室内温度 湿度 ");
writestring(2,0,"设定温度:");
writestring(3,0,"设定湿度:");
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--;
}
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
Keil代码下载:
DHT11 12864 显示.zip
(115.73 KB, 下载次数: 184)
2018-12-19 07:42 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-12-19 15:13
补全原理图或者详细说明一下电路连接即可获得100+黑币
作者:
2389378677
时间:
2021-6-7 20:19
admin 发表于 2018-12-19 15:13
补全原理图或者详细说明一下电路连接即可获得100+黑币
有原理图吗
作者:
探险家的15
时间:
2021-12-6 20:19
IAP15w4k58s4的程序跟32s4的有什么区别没?
作者:
longqishi57777
时间:
2022-1-11 10:03
感谢分享,正在研究DHT11
作者:
51hei用户2107141
时间:
2022-5-5 09:04
STC15.h头文件需要自行安装
http://www.51hei.com/bbs/dpj-36960-1.html
作者:
kkcc123
时间:
2023-5-8 09:55
这个PSB定义的是12864的哪个脚,仿真中找不到
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1