使用51单片机,12M晶振,LCD1206液晶显示屏显示
#include"reg52h" //头文件
#define uint unsigned int
#define uchar unsigned char
int humi,temp,check;
uchar n,Readflag; //定义全局变量
sbit SPI = P1^1;
sbit RS = P2^4;
sbit RW = P2^5;
sbit EN = P2^6; //定义端口
void delayms(uchar ms);
void Init_Timer0(void); //函数声明
void write_com(uchar com) //LCD1206端口写函数
{
RS=0;
P0=com;
delayms(5);
EN=1;
delayms(5);
EN=0;
}
void write_data(uchar date) //LCD1206数据写函数
{
RS=1;
P0=date;
delayms(5);
EN=1;
delayms(5);
EN=0;
}
void LCD1602_init() //LCD1206初始化函数
{
RW=0;
EN=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void Display_Humi(int v,unsigned char position) ////////////湿度显示函数
{
int shu;
write_com(position);
write_data('R');
write_data('H');
shu=v%100/10;
write_data(shu+'0');
shu=v%10;
write_data(shu+'0');
write_data('%');
}
void Display_Temp(int v,unsigned char position) ///////////温度显示函数
{
int shu;
write_com(position);
write_data('T');
write_data('e');
write_data('m');
write_data('p');
write_data(':');
shu=v%100/10;
write_data(shu+'0');
shu=v%10;
write_data(shu+'0');
write_data(0xdf);
write_data('C');
}
void Display_Check(int v,uchar position) //校验位显示函数
{
int shu;
write_com(position);
write_data('C');
write_data('h');
write_data('e');
write_data('c');
write_data('k');
write_data(':');
shu=v/100;
write_data(shu+'0');
shu=v%100/10;
write_data(shu+'0');
shu=v%10;
write_data(shu+'0');
}
void delayms(uchar ms) //精确延时毫秒级函数
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void delayus(uchar us) //精确延时微秒级函数
{
while(us--);
}
void DHT_Rst() //DHT11启动函数
{
SPI=0; //主机拉低总线18ms以上
delayms(20);
SPI=1; //主机拉高总线约30us
delayus(14);/// 20-40us
while(SPI); //等待DHT11响应
while(!SPI); //等待DHT11拉高总线
}
uchar Readbit() //读一位程序
{
while(SPI);//等待总线变为低电平
while(!SPI);//等待总线变为高电平
delayus(5);//等待10us,执行下几条程序使用约20us
if(SPI)
return 1;
else
return 0; //////判断SPI总线状态,返回0或1
}
uchar Readbyte() //读一个字节程序
{
uchar i,dat;
dat=0;
for(i=0;i<8;i++) //重复读取8位数据
{
dat=dat<<1; //dat左移一次,总共8次
dat=Readbit()|dat; //dat和返回值,按位或
}
return dat; //返回dat
}
void ReadDHT() //读DHT11温湿度传感器
{
uchar buf[5],i; //定义临时变量
DHT_Rst(); //初始化传感器
for(i=0;i<5;i++) //读5字节,共40位
buf[i]=Readbyte();
SPI=1; //通讯结束,拉高总线
if(buf[0]+buf[1]+buf[2]+buf[3]==buf[4])//数据校验
{
humi=buf[0];//湿度值
temp=buf[2];//温度值
check=buf[4];//校验位值,校验位=湿度值+温度值(小数位为零)
}
}
void main() //主函数
{
Init_Timer0(); //初始化定时器
Readflag=0; //读标志位为0
LCD1602_init(); //初始化LCD1602液晶显示屏
while(1) //主循环
{
if(Readflag==1) //验证是否读
{
Readflag=0; //重置读标志位
ReadDHT(); //读一次DHT11
}
Display_Temp(temp,0x80);
Display_Humi(humi,0x8A);
Display_Check(check,0xc0); /////显示值
}
}
void Init_Timer0(void) //定时器初始化函数
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
void Timer0_isr(void) interrupt 1 //定时器中断服务程序
{
static unsigned int num;
TH0=(65536-10000)/256; //重新赋值 10ms
TL0=(65536-10000)%256;
num++;
if(num==20) //大致200ms
{
num=0;
Readflag=1; //激活读命令
}
}
纯手打,望采纳
先申请 注册 然后填写qq msn,加入qq校友录群 msn好友 邮件验证 赚15元购物券,凑够50元后,蝶翠诗股市开市(预定7月底)的时候可以卖出
如果邮费要12元,不用急,到D淘客那里领取 推荐免费试用装链接,通过qq/msn等发给女性好友,每位好友成功领取,赚取1元,满一百可以提现,那时不单运费赚回来了,而且还有88元现金赚呢。
用百度搜索一下DHC精装版就知道了
如何免费索取DHC化妆品试用装
网上索取免费DHC试用装你可以看到试用品一共有四件,都是DHC的经典产品(DHC免费试用装)。没有用过DHC产品的你可以通过体验免费试用装,感受DHC带给你的惊喜
如何索取DHC化妆品免费试用装我们大致的给大家做个简单的介绍:
第一步:点击这里打开免费索取DHC化妆品的网页地址
第二步:点击网页最底下的"现在索取"按钮
第三步:索取dhc试用装前,请回答以下问题(共3道)。请至少选择三项,然后点下一步
第四步:把所有的下一步点击完后,然后点击"索取试用装"按钮
第五部:按照要求输入您的详细****点击下一步即可(相同的手机号码、姓名、地址、只可索取一份dhc试用装!)
第六步:确认你的联系地址正确然后点击下一步
第七步:用您的手机编辑"RM",移动用户发送到625528002,联通用户发送到725528002注意发送这条短信是验证用的,短信收费一毛然后等待20天即可收到免费dhc化妆品试用装如果没有收到货请打电话800-820-8820进行咨询
注意:
■dhc试用装数量有限,仅限首次索样的顾客。(1人限申请1次试用装,复数申请恕不发送)
■相同的手机号码、姓名、地址,只可索取一份试用装。
■不同姓名,不同手机号码,相同地址最多只可索取3份DHC化妆品试用装。
■请以真实全名申请,否则挂号信将被退回。
■DHC试用装送达时间:上海10天以内,其他省市15天以内,若20天以后还未收到,请查询。
祝您免费索取dhc试用装成功点击下面的链接开始获取吧:)
1、准备需要取出内芯的dhc唇膏,如下图所示;
2、顺时针转动到尽头,可以看到唇膏已经是出不来的效果了,如下图所示;
3、然后扭到最底下继续往回拧,会听到“啪”一下,唇膏外壳就会分离,如下图所示;
4、接着取下套在上面的圆形环,如下图所示;
5、这样就可以取出dhc唇膏内芯,如下图所示。
欢迎分享,转载请注明来源:品搜搜测评网