智能加湿器毕业设计 - 图文(10)

2019-08-31 21:14

华北水利水电大学毕业设计

附录Ⅱ 汇编源程序

/*头文件*/

#include #include #define uint unsigned int #define uchar unsigned char

#define yh 0x80 //LCD第一行的初始位置 #define er 0x80+0x40 //LCD第二行初始位置 sbit DHT=P1^2; //温湿度传感器数据线 sbit set_key=P1^5; //“设置”键 K1 sbit add_key=P1^6; //“加”键 K2 sbit cut_key=P1^7; // “减”键 K3 sbit mode_key=P1^4; // “模式”键 K3 sbit key=P1^3; // “报警”键 K3 sbit speak=P3^7; // 蜂鸣器 sbit led=P3^6; // led sbit rs=P1^0; sbit en=P1^1; unsigned char shiZ,check; uchar temp,a;

uchar code tab1[]={\ %\显示的固定字符 uchar code tab2[]={\ %\显示的固定字符 uchar set_deta=60; uchar set_deta1=40; uchar XX[2]; uchar tate[2];

uchar read_data[5]; uchar flog4;

void delay_10us() { uchar i; i--;i--;i--;i--;i--;i--; }

void delay_1ms(uint xms)//延时函数,有参函数 { uint x,y; for(x=xms;x>0;x--) for(y=124;y>0;y--); }

//****液晶写入指令函数****// void write_1602com(uchar com)

{

39

华北水利水电大学毕业设计

rs=0;//数据/指令选择置为指令 P0=com;//送入数据 delay_1ms(1); en=1;//拉高使能端,为制造有效的下降沿做准备 delay_1ms(1); en=0;//en由高变低,产生下降沿,液晶执行命令 }

//***液晶写入数据函数****// void write_1602dat(uchar dat) { rs=1;//数据/指令选择置为数据 P0=dat;//送入数据 delay_1ms(1); en=1; //en置高电平,为制造下降沿做准备 delay_1ms(1); en=0; //en由高变低,产生下降沿,液晶执行命令 }

//***液晶初始化函数****// void lcd_init() { write_1602com(0x38);//设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 write_1602com(0x0c);//开显示不显示光标 write_1602com(0x06);//整屏不移动,光标自动右移 write_1602com(0x01);//清显示 write_1602com(er+0); for(a=0;a<7;a++) { write_1602dat(tab2[a]); } write_1602com(yh+0); for(a=0;a<5;a++) { write_1602dat(tab1[a]); } }

/*****************温湿度传感器DHT11 读一个字节函数******************/ uchar read_byte() { uchar value,i; for(i=0;i<8;i++) //一个字节有八位 所以用for循环 { value=value<<1; //从字节高位开始读 需要移位 while(DHT==0);

40

华北水利水电大学毕业设计

delay_10us(); delay_10us(); delay_10us(); if(DHT) //判断读到是“1”还是“0” { value=value|0x01; //如果是“1” value的值就要加一 while(DHT!=0) //等待这一位数据结束 因为70us的高电平表示“1” { // DHT=1; } } } return value; //返回读到的这一字节数据 }

/*****************温湿度传感器DHT11 读数据函数******************/ /**一个完整的数据一共是五个字节******************/ void read_value() { uchar i; DHT=0; delay_1ms(20); DHT=1; delay_10us(); delay_10us(); delay_10us(); delay_10us(); if(DHT==0) { while(DHT!=1); DHT=1; while(DHT==1); for(i=0;i<5;i++) { read_data[i]=read_byte();//将读到的五个字节数据放到数组read_data【5】中 } } }

/**********处理读到的温湿度数据******************/ void pro_value() { read_value(); temp=read_data[0]+read_data[1]+read_data[2]+read_data[3]; if(read_data[4]==temp) //检测读到的数据是否正确 {

41

华北水利水电大学毕业设计

shiZ=read_data[0]; //湿度整数部分 } tate[0]=shiZ/10; //将湿度的整数部分的十位和个位分开 tate[1]=shiZ; write_1602com(yh+2); for(a=0;a<2;a++) { write_1602dat(tate[a]+0x30); } }

void pros_data() { XX[0]=set_deta/10; XX[1]=set_deta; write_1602com(er+4); for(a=0;a<2;a++) { write_1602dat(XX[a]+0x30); } }

void display1() //设置显示 {

pros_data(); }

void display2() //设置显示 {

write_1602com(er+4); write_1602dat(set_deta1/10+0x30); write_1602com(er+5); write_1602dat(set_deta1+0x30); }

void key_caa() { if(set_key==0) { delay_1ms(5); if(set_key==0) { flog4=!flog4; while(set_key==0); } } if(flog4==1)

42

华北水利水电大学毕业设计

{ if(add_key==0) { delay_1ms(5); if(add_key==0) { set_deta=set_deta+1; while(add_key==0); if(set_deta>99) { set_deta=99; } } } if(cut_key==0) { delay_1ms(5); if(cut_key==0) { set_deta=set_deta-1; while(cut_key==0); if(set_deta<=0) { set_deta=0; } } } display1(); } }

void baojing() { if(key==0) { delay_1ms(5); if(key==0) { speak=0; led=1; while(key==0); } } else

43


智能加湿器毕业设计 - 图文(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016社会工作者(初级)综合能力讲义汇编

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: