计控 粮仓温度自动检测系统 - 图文(7)

2019-08-31 11:42

课程设计:粮仓温度自动检测系统 RW=0;

E=0; //E置

低电平(写指令时,,

// 就是让E从0到1发生正跳变,所以应先置\

P0=y; //将数

据送入P0口,即将数据写入液晶模块

_nop_();

_nop_();

_nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=1; //E置高

电平

_nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E

由高电平跳变成低电平时,液晶模块开始执行命令

}

/*****************************************************

函数功能:对LCD的显示模式进行初始化设置

**************************

*************************/

void LcdInt(void) {

delay(15);

//延时15ms,首次写指令时应给LCD一段较长的反应时间

Write_com(0x38); //显

示模式设置:16×2显示,5×7点阵,8位数据接口

delay(5); //延时5ms Write_com(0x38); delay(5);

Write_com(0x38); //3次写

设置模式

delay(5);

Write_com(0x0c); //显示

模式设置:显示不开0c,有光标0e,光标闪烁0f

delay(5);

// Write_com(0x06); //显示模式设置:光标右移,字符不移

delay(5);

Write_com(0x01); //清屏

幕指令,将以前的显示内容清除

delay(5);

}

void wendu(void) {

unsigned char TL,TH,TN; 28

课程设计:粮仓温度自动检测系统 //储存暂存器的温度低位

//unsigned char //储存暂存器的温度高位

unsigned char i,j; //储存温度的整数部分

//unsigned char TD;

if((TH&0xf8)!=0x00)//

判断高五位 得到温度正负标志

{ flag=1;

TL=~TL; //取反 //储存温度的小数部分

// LcdInitiate();

//将液晶初始化

// delaynms(5);

//延时5ms给硬件一点反应时间

if(Init_DS18B20()==0)

//display_error();

//display_explain();

//display_symbol(); //显示温度说明

// display_dot(); //显示温度的小数点

// display_cent(); //显示温度的单位

//不断检测并显示温度

{ flag=0;

ReadyReadTemp();

//读温度准备

TL=ReadOneChar(); //先读的是温度值低位

TH=ReadOneChar();

//接着读的是温度值高位 TH=~TH; //取反

tltemp=TL+1; //低位加

1

TL=tltemp;

if(tltemp>255) TH++; //如果低8位大于255,向高8位进1

TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16

i=TN/10;j=TN;

WriteAddress(0x49);WriteData('t');WriteData(s[10]);WriteData(s[i]);WriteData(s[j]);

WriteData(0x27);WriteData(0x43);

//这样得出的是温度的整数部分,小数部分被丢弃了

//TD=(TL)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,

}

29

课程设计:粮仓温度自动检测系统 else {TN=TH*16+TL/16; //delay(10); }

//实际温度值=(TH*256+TL)/16,即:TH*16+TL/16

} //这样得出的是温度的整数部分,小数部分被丢弃了

//TD=(TL)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,

i=TN/10;j=TN;

if(TN>8) {

e=1; }

WriteAddress(0x49);WriteData('t');WriteData(0x3a);WriteData(s[i]);WriteData(s[j]);

WriteData(0x27);WriteData(0x43);

}

//这样得到的是温度小数部分的第一位数字(保留1位小数)

//display_temp1(TN);

//显示温度的整数部分

//display_temp2(TD);

//显示温度的小数部分

void main(void) //主函数

{

k1=1;k2=1;k3=1;k4=1;k5=1; FM=1;

l1=1;l2=1;l3=1;l4=0;

LcdInt(); //调用LCD初始化函数

delay(10);

//初始化

Write_com(0x01);//

清显示:清屏幕指令

delay(5);

WriteAddress(0x00); // 设置

显示位置为第一行的第1个字

delay(5);

30

课程设计:粮仓温度自动检测系统 //WriteData(0x32);WriteData(0x30);

WriteData(0x31);WriteData(0x32);

WriteData(0x2D);delay(5);

WriteData(0x30);delay(5);

WriteData(0x39);delay(5);

WriteData(0x2D);delay(5); WriteData(0x30);delay(5);

WriteData(0x31);delay(5);

WriteData(0x2f);delay(5);Write

Data(0x36);delay(5);

WriteAddress(0x40); WriteData(0x30);delay(5);

WriteData(0x30);delay(5);

WriteData(':');delay(5);

WriteData(0x30);delay(5);

WriteData(0x30);delay(5);

WriteData(':');delay(5);

WriteData(0x30);delay(5);

WriteData(0x30);delay(5);

WriteAddress(0x49);WriteData('t');d

elay(5);

WriteData(0x3A);delay(5);Write

Data(0x32);delay(5);WriteData(0x31);delay(5);

WriteData(0x27);delay(5);

WriteData(0x43);

delay(5);

TMOD|=0x01; //两定时器用0x11,一个用0x01

TH0=60;//(65536-50000)/256;

TL0=176;//(65536-50000)%6;

EA=1; ET0=1; TR0=1; //中断

//按键高

while(1)

/*******************/

{

31

课程设计:粮仓温度自动检测系统 if(e==1) {

FM=!FM;delay(5);

}

if(k1==0) //如果检测到低电平,说明按键按下

{

//

TMOD|=0x01;

//

TH0=60;//(65536-50000)/256;

//TL0=176;//(65536-50000)%6;

delay(10); //延时去抖,一般10-20ms

if(k1==0) //再次确认按键是否按下,没有按下则退出

{

while(k1==0);//如果确认按下按键等待按键释放,没有释放则一直等待

{

EA=~EA;ET0=~ET0; TR0=~TR0; //释放则执行需要的程序//关中断

if(EA==0)

{ Write_com(0x0e);delay(5);}

//

显示模式设置:显示不开0c,有光标0e,光标闪烁0f

if(EA==1)

{ Write_com(0x0c);delay(5);b=0;}

}

}

}

if(EA==0)

{ if(k2==0) //

如果检测到低电平,说明按键按下

{

delay(10); //延时去抖,一般10-20ms

if(k2==0) //再次确认按键是否按下,没有按下则退出

{

while(k2==0);//如果确认按下按键

32


计控 粮仓温度自动检测系统 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018-2024年中国高速铁路行业运营态势报告(目录) - 图文

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

马上注册会员

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