单片机与温湿度传感器

2025-04-07 13:49:27
推荐回答(3个)
回答1:

//下面是我用52做的LCD1602的驱动,移植很容易的,匹配一下延时函数就好了,关于你温湿 //度传感器的那个驱动也是非常好移植的,你可以网上找一下

#include
#include

typedef unsigned char unint8;
typedef unsigned char unint16;
#define LCD_DATA P2//P2可根据需要自己更改

sbit LCD_RS = P1^0; //可根据你自己的电路连接需要自己更改
sbit LCD_RW = P1^1; //可根据你自己的电路连接需要自己更改
sbit LCD_EN = P1^2; //可根据你自己的电路连接需要自己更改
sbit LCD_RST = P1^3; //可根据你自己的电路连接需要自己更改

uchar code table1[]={"0123456789abcdef"};
void delay_ms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i<250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
/*********************************************************************************/
void LCD_WCMD(uchar cmd)
{
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
LCD_DATA = cmd;
delay_ms(1);
LCD_EN = 1;
delay_ms(1);
LCD_EN = 0;
}

void LCD_WDAT(uchar dat)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
LCD_DATA = dat;
delay_ms(1);
LCD_EN = 1;
delay_ms(1);
LCD_EN = 0;
}

void LCD_INIT()
{
LCD_WCMD(0x34);
delay_ms(5);
LCD_WCMD(0x30);
delay_ms(5);
LCD_WCMD(0x0C);
delay_ms(5);
LCD_WCMD(0x01);
delay_ms(5);
}

void main()
{
uchar i=0;
Init_Device();
LCD_INIT();

while(1)
{
LCD_WCMD(0x80);//从第一行开始显示
for(i=0;i<10;i++)
{
LCD_WCMD(0x80+0x40+i);//显示123....ef
LCD_WDAT(table1[i]);
delay(5000);
LCD_WCMD(0x80+i);
LCD_WDAT(table1[i]);
delay(5000);
}
delay(10000);
}
}

回答2:

把你的程序拿出来看看,给你改

回答3:

给你做Proteus仿真