|
报错如图所示
======================主程序==============================
#include <reg52.h>
#include "delay.h"
#include "ds18b20.h"
#include "1602.h"
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit dula=P2^6;
sbit wela=P2^7;
int tempis;
void main()
{
while(1)
{
tempis=get_temp();
init_1602(tempis);
display_1602();
}
}
==================温度传感器 C文件========================
#include <reg52.h>
#include "ds18b20.h"
#include "delay.h"
sbit ds=P2^2;
int temp;
/************************
* 初始化ds18b20
*************************/
void init_ds18b20()
{
int i;
i++;
ds=0;
i=103;
while(i>0)i--;
ds=1;
i=4;
while(i>0)i--;
}
/************************
* 向ds18b20写一个字节
*************************/
void write_byte(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
ds=0;
i++;
i++;
ds=1;
i=8;while(i>0)i--;
}
else
{
ds=0;
i=8;while(i>0)i--;
ds=1;
i++;i++;
}
}
}
/************************
* 在ds18b20读一个位
*************************/
bit tempreadbit(void)
{
uint i;
bit dat;
ds=0;i++;
ds=1;i++;i++;
dat=ds;
i=8;while(i>8)i--;
return(dat);
}
/************************
* 在ds18b20读一个字节
*************************/
uchar tempread() //8位构成一个字节
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
/************************
* 获取温度
*注释:获取的温度为整数,类型为整型
*************************/
uchar get_temp(void)
{
uchar a,b;
init_ds18b20();
delay(1);
write_byte(0xcc);
write_byte(0x44);
delay(1);
init_ds18b20();
delay(1);
write_byte(0xcc);
write_byte(0xbe);
a=tempread();
b=tempread();
temp=b;
temp<<=8;
temp=temp|a;
temp=temp*0.0625;
return temp;
}
==========温度传感器头文件=========================================
#ifndef __DS18B20_H__
#define __DS18B20_H__
#define uchar unsigned char
extern uchar get_temp(void);
#endif
=======液晶C文件======================================================
#include "1602.h"
#include "delay.h" //调用其中的延时函数
#include <reg52.h>
sbit lcdrs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
/************************
* 写命令
*************************/
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************
* 写数据
*************************/
void write_date(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************
* 1602初始化
*************************/
void init_1602()
{
wela=0;
dula=0;
lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
write_com(0x80);
}
/************************
* 液晶显示
*************************/
void display_1602(int x)
{
write_date('t');
delay(5);
write_date('e');
delay(5);
write_date('m');
delay(5);
write_date('p');
delay(5);
write_date(x/10+32);
delay(5);
write_date(x%10+32);
delay(5);
write_date(':');
delay(5);
write_date(0xdf);
delay(5);
write_date('C');
delay(5);
}
==============液晶头文件===================================================
#ifndef __1602_H__
#define __1602_H__
#define uchar unsigned char
extern void init_1602();
extern void display_1602();
#endif
===============延时函数============-================================
#include "delay.h"
/************************
* 延时函数
*注释:延时xms
*************************/
void delay(uchar x)
{
int a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
#ifndef __DELAY_H__
#define __DELAY_H__
#define uchar unsigned char
#define uint unsigned int
extern void delay(uchar x);
#endif |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|