有没有大神可以帮忙看看呀?
问题一:温湿度显示不稳定(有事可以显示,有时会出现乱码),倘若把DHT11的显示代码放While(1)里面,那么当进行按键中断时,DHT11测试到的依然在屏幕二进行显示,如下图所示
问题二:当按了一次设置键时就直接可以对温度上限进行加或减操作。(理想的效果应该是:当按键中断的问题,当按第一次设置键时,LCD12864进行屏幕转换,当再按一次设设置键时设置最高温度,当按第三下设置键时,设置最低温度,以此类推,当设置键的按键次数大于5次时返回屏幕一。)
单片机源程序如下:
#include<reg52.h>
//#include<motor.h>
#include<DHT.h>
//#include<DHT.h>
#define uchar unsigned char
#define uint unsigned int
#define u8 unsigned char
#define u16 unsigned int
sbit RS = P1^0; //12864的RS控制端,硬件接到P1.0,在此一定要写P1.0
sbit RW = P1^1; //12864的RW控制端,硬件接到P1.1,在此一定要写P1.1
sbit E = P1^2; //12864的使能控制端,硬件接到P1.2,在此一定要写P1.2
sbit PSB = P1^3;//并串口选择信号
sbit RST = P1^4;//复位信号
sbit beep = P3^3;
sbit LED = P1^4;
sbit Kset = P3^2; //日期时间设置按钮,硬件接到P3.2
sbit Kadd = P1^5; //"加1"键,硬件接到P1.6
sbit Ksub = P1^6; //"减1"键,硬件接到P1.7
u8 ;Turn=0,WH=65,WL=12,SH=75,SL=21;//安全温湿度范围设置的变量
uchar j;
u8 table0[]="温度湿度控制系统";
u8 table1[]="湿度为: % ";
u8 table2[]="温度为: ℃ ";
//u8 table3[]= "℃";
u8 table4[]="开发者:大白菜 ";
u8 table5[]="最高温: ℃ ";
u8 table6[]="最低温: ℃ ";
u8 table7[]="最高湿: % ";
u8 table8[]="最低湿: % ";
u8 table9[]="0123456789";
void delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
/**********************************************************************
函数名称: |