找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5222|回复: 9
收起左侧

求教STC12C5A60S2+12864OLED+DS18B20无法显示温度(附件有KEIL工程)

[复制链接]
ID:232708 发表于 2017-9-12 19:02 | 显示全部楼层 |阅读模式

求教STC12C5A60S2+12864OLED+DS18B20无法显示温度(附件有KEIL工程)新人小白,代码是拼的,搞不好了希望在这里能得到帮助,怎么搞都没法显示温度,真心求教。下图是运行时照片,后面那个小点是乱码不知是什么鬼。

WIN_20170912_18_40_47_Pro.jpg






MAIN.c

#include "lq12864.h"

#include "ds18b20.h"

#include "REG52.h"



/**********************************定义变量*********************************/


unsigned int Temp_Buffer = 0;


/********************(STC12C5608AD  11MHZ z=1时精确延时1ms)*******************/

void delayms(unsigned int z)

{

unsigned int x,y;

for(x=z; x>0; x--)

for(y=1848; y>0; y--);

}


/*****************************************显示温度****************************/

void Display_Temp()

{

        Temp_Buffer = Get_temp();                                          //读取DS18B20的值

        LCD_WrCmd(0x80+0x40+10);                               

        if(flag_temper == 1)                                                //根据温度标志位显示温度正负

        {

                LCD_WrDat('-');       

        }

        if( Temp_Buffer/1000 != 0 )                                        //如果第一位为0,忽略显示

        {

                LCD_WrDat(Temp_Buffer/1000+0X30);           //显示温度百位值

        }

        LCD_WrDat(Temp_Buffer%1000/100+0X30);           //显示温度十位值

        LCD_WrDat(Temp_Buffer%100/10+0X30);           //显示温度个位值

        LCD_WrDat('.');                                                   //显示小数点

        LCD_WrDat(Temp_Buffer%10+0X30);                   //显示温度十分位值

        LCD_WrDat('C');                                                   //显示字符C

               

}

/***********************************主函数**********************************/

void main()

{

     unsigned char i;

         LCD_Init();                                                 //OLED初始化


         LCD_P8x16Str(0,3,"Wellcome to use!");         //显示欢迎界面

         delayms(1000);                                                         //延时

         LCD_CLS();                                                                 //清屏

         

         

         Temp_Buffer = Get_temp();                                          //读取DS18B20的值

         delayms(500);




         while(1)

        {

                for(i=0; i<8; i++)

                        {LCD_P16x16Ch(i*16,0,i);  //点阵显示

                        }

                LCD_P16x161Ch(0,2,0);

                LCD_P16x161Ch(16,2,1);

                LCD_P16x161Ch(32,2,2);

                LCD_P16x161Ch(48,2,3);

                LCD_P16x161Ch(64,2,4);

                Display_Temp();                                                           //获取并显示温度值

        }

}

这里红色部分的LCD_WrDatLCD_WrDat以及后面跟的参数我真的不理解,他们的定义在LQ12864.c里,下面我贴出来:



/*********************LCD写数据************************************/
void LCD_WrDat(unsigned char dat)         
{
unsigned char i=8;
LCD_DC=1;  
for(i=0;i<8;i++) //发送一个八位数据
{
LCD_SCL=0;  
LCD_SDA=dat&0x80;
LCD_SCL=1;            
dat<<=1;   
}
}
/*********************LCD写命令************************************/                                                                               
void LCD_WrCmd(unsigned char cmd)
{
unsigned char i=8;
LCD_DC=0;
for(i=0;i<8;i++) //发送一个八位数据
{
LCD_SCL=0;
LCD_SDA=cmd&0x80;
LCD_SCL=1;
cmd<<=1;;   
}        
}

不知道问题出在哪儿,小白虚心求教,也可能原因跟上面这些没有关系,下面我把Keil工程文件上传上来,希望各位大大能帮下小弟,虚心求教
stc51 ds18b20 oled.rar (55.06 KB, 下载次数: 151)

回复

使用道具 举报

ID:232708 发表于 2017-9-12 20:30 | 显示全部楼层
希望看到的帮小弟一把,谢谢了
回复

使用道具 举报

ID:82765 发表于 2017-9-12 20:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:232708 发表于 2017-9-13 13:20 | 显示全部楼层
cjjcjj1 发表于 2017-9-12 20:58
你好!你显示用固定数字,替代温度值,看是不是能显示;
如果可以显示,就是温度读取的问题;
如果不能显 ...

谢谢,我DS18B20好像坏掉了,用下面这个网上找的例程测串口无数据,手摸DQ端串口一直收到-01的数据,应该是DS18B20坏掉了,VCC和GND没有接反不知道为什么就坏掉了,买了点还在路上,等到货了再试吧,很感谢您 test.rar (26.76 KB, 下载次数: 55)
回复

使用道具 举报

ID:200351 发表于 2018-4-7 11:31 | 显示全部楼层
master_lee 发表于 2017-9-12 20:30
**** 作者被禁止或删除 内容自动屏蔽 ****

你的这个问题解决了没
回复

使用道具 举报

ID:300215 发表于 2018-4-15 08:46 | 显示全部楼层
你好!你显示用固定数字,替代温度值,看是不是能显示; 如果可以显示,就是温度读取的问题; 如果不能显示,就是你程序处理数据有问题; 可以加我QQ好友
回复

使用道具 举报

ID:404868 发表于 2018-11-6 18:49 | 显示全部楼层
master_lee 发表于 2017-9-12 20:30
**** 作者被禁止或删除 内容自动屏蔽 ****

我下载试过了,找不出问题在哪,代码我觉得没毛病啊,怪学艺不精把
回复

使用道具 举报

ID:439460 发表于 2019-2-15 13:30 | 显示全部楼层
CS片选端没接啊
回复

使用道具 举报

ID:476644 发表于 2019-2-15 13:46 | 显示全部楼层
硬件问题
回复

使用道具 举报

ID:439460 发表于 2019-3-14 11:36 | 显示全部楼层
是这个程序有问题,在其他单片机上显示温度是OK的DS18B20,这上面显示不了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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