欢迎来到天天文库
浏览记录
ID:9849211
大小:26.00 KB
页数:5页
时间:2018-05-12
《湿度传感器hs1101c语言的程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、//********应用频率计的思想来计算湿度,利用定时器计算频率脉冲F,**********////********再根据频率计算湿度。HS1101相当于一个电容变量,湿度变大电容也变大**********////********HS1101电容模拟信号经过NE555震荡后转变为频率信号*********************//#include#include#defineucharunsignedchar#defineuintunsignedintsbit
2、SCLK=P2^6;/***时钟信号即EN使能信号***/sbitCS=P2^4;/***片选信号即RS***/sbitSID=P2^5;/***数据信号即RW***/sbitPSB=P2^7;/***串、并行选择信号***/sbitout=P3^5;//湿度的输出端接单片机的定时器1口P3^5(因为该程序用定时器1来计数脉冲,用定时器0来定时1秒)//如果用定时器0来计数脉冲,则接P3^4口ucharflag;//定时器0定时1秒到uintmaichong;//定义频率脉冲,一定要定义为uint型,u
3、char型最大值只为255,而uint最大值为63335uintRH;//定义相对湿度uintC;ucharled[4]="";//频率数值,led缓存uchardis[3]="";//湿度数值,led缓存ucharvolatilecount0=0;//定时器0中断次数volatile定义的变量它的值在编译时是会改变的,跟const相反,而const定义的变量一直不会变的uintvolatilecount1=0;//定时器1中断次数voiddelay(uintxms){ucharx,y;for(x=xm
4、s;x>0;x--)for(y=110;y>0;y--);}/***************************************//*以串行协议发送数据*//***************************************/voidsend_bit(ucharbyte){ucharx;for(x=0;x<8;x++)//八位数据,一位一位发送//{if((byte<5、0//}SCLK=0;SCLK=1;//每发送一位,SCLK跳变一次,上升沿有效//}delay(5);}/***************************************//*写串口命令函数*//***************************************/voidwrite_com(ucharcom){CS=1;//每次传数据前把CS端拉高//send_bit(0xf8);//串行发送命令前必发0xf8识别命令//send_bit(com&0xf0);//0xf0为16、1110000,送高四位send_bit((com<<4)&0xf0);//0xf0为11110000,送低四位delay(5);CS=0;}/***************************************//*写串口数据函数*//***************************************/voidwrite_date(uchardate){CS=1;//每次传数据前把CS端拉高//send_bit(0xfa);//串行发送数据前必发0xfa识别数据//send_bi7、t(date&0xf0);//0xf0为11110000,送高四位//send_bit((date<<4)&0xf0);//0xf0为11110000,送低四位//delay(10);CS=0;}/***************************************//*液晶显示初始化*//***************************************/voidlcd_init(){PSB=0;//选择串口方式delay(5);write_com(0x30);//基本指令操作d8、elay(5);write_com(0x0c);//开显示,关光标delay(5);write_com(0x02);//地址归位delay(5);write_com(0x01);//清除液晶显示内容delay(5);}//显示字符串voidwrite_word(ucharadd,uchar*s){write_com(add);while(*s!=' '){write_date(*s);s++;delay(5);}}//基本显示voidse
5、0//}SCLK=0;SCLK=1;//每发送一位,SCLK跳变一次,上升沿有效//}delay(5);}/***************************************//*写串口命令函数*//***************************************/voidwrite_com(ucharcom){CS=1;//每次传数据前把CS端拉高//send_bit(0xf8);//串行发送命令前必发0xf8识别命令//send_bit(com&0xf0);//0xf0为1
6、1110000,送高四位send_bit((com<<4)&0xf0);//0xf0为11110000,送低四位delay(5);CS=0;}/***************************************//*写串口数据函数*//***************************************/voidwrite_date(uchardate){CS=1;//每次传数据前把CS端拉高//send_bit(0xfa);//串行发送数据前必发0xfa识别数据//send_bi
7、t(date&0xf0);//0xf0为11110000,送高四位//send_bit((date<<4)&0xf0);//0xf0为11110000,送低四位//delay(10);CS=0;}/***************************************//*液晶显示初始化*//***************************************/voidlcd_init(){PSB=0;//选择串口方式delay(5);write_com(0x30);//基本指令操作d
8、elay(5);write_com(0x0c);//开显示,关光标delay(5);write_com(0x02);//地址归位delay(5);write_com(0x01);//清除液晶显示内容delay(5);}//显示字符串voidwrite_word(ucharadd,uchar*s){write_com(add);while(*s!=' '){write_date(*s);s++;delay(5);}}//基本显示voidse
此文档下载收益归作者所有