搜索
bottom↓
回复: 3

求助,模块话处理关于温度在1602显示的问题,程序报错

[复制链接]

出0入0汤圆

发表于 2014-8-25 18:23:40 | 显示全部楼层 |阅读模式
报错如图所示
======================主程序==============================
#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周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2014-8-25 18:33:26 | 显示全部楼层
这个错好像是函数未声明,可是我已经声明了呀,包涵在1602.c里的

出0入0汤圆

 楼主| 发表于 2014-8-25 19:28:16 | 显示全部楼层
求大神帮助~

出0入0汤圆

发表于 2014-8-25 19:36:33 | 显示全部楼层
extern void display_1602(int x);
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表