52单片机用ds18b20测温度,1602显示,程序仿真已经通过,但是烧录后实物测试1602只亮背光根本没有显示啊

实物用的单片机是c52rc,程序头文件用51应该没有影响?调节对比度也没有什么变化,有些没有显示但是第一行是黑块,我这里连黑块都没有啊!附上部分程序,请各位大神帮帮我看看是什么问题!#include<reg51.h> #include<intrins.h> #define DATA P1#define u8 unsigned char#define u16 unsigned intsbit RS=P2^0; sbit RW=P2^1; sbit EN=P2^2; sbit DQ=P2^7;sbit k1=P2^4;sbit k2=P2^5;u8 time;u16 x=15;u8 y;int wendu[]={0,1,2,3,4,5,6,7,8,9};void delay1ms();void Delaynms(u8 n);void LCD_Write_Command(u8 cmd);void LCD_Wdat(u8 dat);void Init_LCD();void display(u16 sg);void Init_DS18B20(void);u8 ReadOneChar(void);void WriteOneChar(u8 dat);u16 ReadyReadTemp(void); float tt; u16 Temp; u8 H,L ; Temp1=0x0000;void delay(u16 t){for(;t>0;t--);}void delay1ms(void) { unsigned char a,b; for(b=199;b>0;b--) for(a=1;a>0;a--);}void Delaynms(u8 n) { u8 i; for(i=0;i<n;i++) delay1ms(); }void LCD_Write_Command(u8 cmd){ RS=0; RW=0; EN=0; _nop_(); _nop_(); DATA=cmd; Delaynms(1); EN=1; Delaynms(1); EN=0; }void LCD_Wdat(u8 dat){ RS=1; RW=0; EN=0; DATA=dat; Delaynms(1); EN=1; Delaynms(1); EN=0;}void Init_LCD(){ LCD_Write_Command(0x02);Delaynms(1); LCD_Write_Command(0x06);Delaynms(1); LCD_Write_Command(0x0c);Delaynms(1); LCD_Write_Command(0x38);Delaynms(1); LCD_Write_Command(0x01);Delaynms(1);}

仿真与实物最大的差别是实物在初始化的时间是要按照规格书来做的,仿真可以省略,所以只要严格把时间延时做好应该就可以追问

延时应该怎么设置呢?

追答

看规格书,初始化的所有步骤都要按照规格书来做,延时可以按照你的delay来做

温馨提示:内容为网友见解,仅供参考
无其他回答

DS18B20+1602温度显示系统的显示问题
就是在用按键设置上下限温度的时候,1602显示不正常。具体是这样的,... 我正在做一个两路DS18B20检测温度,并实时显示在1602上的实验,并设置上下限报警。。温度的显示检测报警都没问题。就是在用按键设置上下限温度的时候,1602显示不正常。具体是这样的,在1602第一行我显示,warming temp,这个没问题,第二行显示:“ ...

51单片机温度传感器ds18b20、lcd1602液晶C程序
int get_temp_1(void);\/\/声明18B20读入温度函数 void delay(unsigned int x);\/\/声明延时函数 void read_ROM(void);\/\/声明18B20读ROM函数 int get_temp_d(void);\/\/声明获取温度函数 void ds_init(void);\/\/声明18B20初始化函数 void ds_getT(void);\/\/声明18B20获得温度显示值函数 \/*定义数码...

51单片机ds18b20小数显示1602
发出存在脉冲。51单片机ds18b20小数显示1602是因为出现了发出存在脉冲导致的。1602液晶模块高精度4位小数显示,温度分辨率0.0625℃,液晶模块第一行显示的是DS18B20的64位激光序列号,液晶模块第二行显示的是实际温度。

单片机ts18b20测温程序 请大神注释程序 最好每一句都注释明白(小白一只...
bit ds18b20_ret();\/\/温度传感器18b20复位子函数声明 void ds18b20_wr_com(uchar com);\/\/向温度传感器18b20写入命令子函数声明 void rd_ram_command();\/\/发送命令子函数(读取18b20的RAM)uint ds18b20_rd_data();\/\/读出温度传感器18b20寄存器的相关数据(主要是温度值)子函数声明 void temperature_conver...

用51单片机和18b20做一个温度计,求一个完整程序,要求用12864显示。
这个是用数码显示的 你自己改改显示就ok了 12864 有带字库的那种,只要输入ASCII码就行了 程序有点乱,你注意换行就行 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多...

DS18b20测温度用1602显示为什么出现85度
这是DS18B20的问题,DS18B20的温度初始值就是85度,所以在不进行数据更新时会显示85度。仔细阅读数据手册,你能学到很多东西。希望你能成功。

用1602LCD与DS18B20设计的温度报警器的源程序
uchar Display_Digit[]={0,0,0,0};\/\/待显示的各温度数位 bit DS18B20_IS_OK=1;\/\/传感器正常标志 \/ 程序名称:延时子程序 \/ void Delay(uint t){ for(;t>0;t--);} \/ 程序名称:初始化DS18B20;可参考DS18B20的初始化时序图读懂程序 \/ uchar Init_DS18B20(){ uchar status;DQ=1;_nop_(...

数码管 ds18b20温度显示
ds18b20=1;} date>>=1; \/\/右移一位 } } 应该是if((dat&0x01)==0x01)这里多了一个&号,导致结果错误。3。我增加了用1602显示的模块,删除了用液晶显示的模块。\/ 以下是程序,并附上仿真图一张 \/ include <reg52.h> include <intrins.h> define uchar unsigned char define uint ...

...单片机和DS18B20温度传感器、LCD1602液晶显示的数字温度程序_百度...
\/\/以下三个是定义LCD的引脚 sbit lcden=P2^2;sbit lcdwrite=P2^1;sbit lcdrs=P2^0;char wendu;\/\/延时程序 void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} \/\/lcd的写指令 void write_com(uchar com){ lcdrs=0;lcden=0;P0=com;delay(5);lcden=...

为什么单片机控制18B20测温初始总是显示85度然后显示测量值
*The power-on reset value of the temperature register is +85°C,这个是DS18B20数据手册里的表述,也就是说,DS18B20在上电复位时,其温度寄存器里的初始值是85°C。所以你的问题就出来了。如果你不想显示这个85°C,你可以延迟一段时间,比如0.5S后再提取这个DS18B20转换的温度显示即可。 本回答由网友推荐 举报...

相似回答