完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
需要改成至少三个SHT11传感器测量,并且增加按钮,按一下LCD就显示一组的温湿度 求大神指点!!!!!! 之前单点的程序如下 /*************端口定义******************** P1.0------SCK (SHT11) P1.1------DATA (SHT11) P0------DB0~DB7 (LCD1602) P2.0------RS (LCD1602) P2.1------RW (LCD1602) P2.2------E (LCD1602) *****************************************/ #include #include #include #include #include #include #define uchar unsigned char #define uint unsigned int #define TEMPUP 25 //温度上限 #define TEMPDOWN 18 //温度下限 #define HUMDOWN 45 //湿度上限 #define HUMUP 75 //湿度下限 ***it LcdRs= P2^0; //1602液晶端口定义 ***it LcdRw= P2^1; ***it LcdEn= P2^2; ***it led1 =P3^0; //报警灯端口定义 ***it led2 =P3^4; ***it beep =P3^1; //定义蜂鸣器端口 ***it ACC0 = ACC^0; ***it ACC7 = ACC^7; /******************************************************************/ /* 延时函数声明 */ /******************************************************************/ void mdelay(unsigned int t) { unsigned char n; for(;t>0;t--) for(n=0;n<125;n++) {;} } bit start; uchar str[7]; //向LCD写入命令或数据************************************************************ #define LCD_COMMAND 0 // Command #define LCD_DATA 1 // Data #define LCD_CLEAR_SCREEN 0x01 // 清屏 #define LCD_HOMING 0x02 // 光标返回原点 //设置显示模式************************************************************ #define LCD_SHOW 0x04 //显示开 #define LCD_HIDE 0x00 //显示关 #define LCD_CURSOR 0x02 //显示光标 #define LCD_NO_CURSOR 0x00 //无光标 #define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动 //设置输入模式************************************************************ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 // default #define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default unsigned char LCD_Wait(void); void LCD_Write(bit style, unsigned char input); /***********1602液晶显示部分子程序****************/ void delay(uint z) //延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void LCD_Write(bit style, unsigned char input) { LcdRs=style; P0=input; delay(5); LcdEn=1; delay(5); LcdEn=0; } void LCD_SetDisplay(unsigned char DisplayMode) //设置输出 { LCD_Write(LCD_COMMAND, 0x08|DisplayMode); } void LCD_Setinput(unsigned char InputMode) //设置输入 { LCD_Write(LCD_COMMAND, 0x04|InputMode); } void LCD_Initial() //初始化LCD函数 { LcdEn=0; LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 } void GotoXY(unsigned char x, unsigned char y) //液晶字符输入的位置 { if(y==0) LCD_Write(LCD_COMMAND,0x80|x); if(y==1) LCD_Write(LCD_COMMAND,0x80|(x-0x40)); } void Print(unsigned char *str) //将字符输出到液晶显示 { while(*str!=' |