在protues仿真中lm016l只是屏幕有亮光,但不显示内容。
具体仿真内容是用一个ds18b20温度传感器与51单片机实现温度上下限可调并测温超过限定值报警。一下是仿真图片和程序,求大神看看问题出在哪里了,谢谢!程序:#includ...
具体仿真内容是用一个ds18b20温度传感器与51单片机实现温度上下限可调并测温超过限定值报警。一下是仿真图片和程序,求大神看看问题出在哪里了,谢谢!
程序:
#include"delay.h"
#include"18b20.h"
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
bit Init_DS18B20(void)
{
bit dat=0;
DQ = 1;
DelayUs2x(5);
DQ = 0;
DelayUs2x(200);
DelayUs2x(200);
DQ = 1;
DelayUs2x(50);
dat=DQ;
DelayUs2x(25);
return dat;
}
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
DelayUs2x(25);
}
return(dat);
}
/*------------------------------------------------
写入一个字节
------------------------------------------------*/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
DelayUs2x(25);
DQ = 1;
dat>>=1;
}
DelayUs2x(25);
}
/*------------------------------------------------
读取温度
------------------------------------------------*/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned int b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
DelayMs(10);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
a=ReadOneChar();
b=ReadOneChar();
b<<=8;
t=a+b;
return(t);
}
以及
#ifndef __DS18B20_H__
#define __DS18B20_H__
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int;
/*------------------------------------------------
端口定义
------------------------------------------------*/
sbit DQ=P2^7;//ds18b20 端口
/*------------------------------------------------
函数声明
------------------------------------------------*/
unsigned int ReadTemperature(void);
bit Init_DS18B20(void);
unsigned char ReadOneChar(void);
void WriteOneChar(unsigned char dat);
#endif
电路
这是lm016l的定义端口函数#include "1602.h"#include "delay.h"#define CHECK_BUSYsbit RS = P2^4; //定义端口 sbit RW = P2^5;sbit EN = P2^6;#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P1 展开
程序:
#include"delay.h"
#include"18b20.h"
/*------------------------------------------------
18b20初始化
------------------------------------------------*/
bit Init_DS18B20(void)
{
bit dat=0;
DQ = 1;
DelayUs2x(5);
DQ = 0;
DelayUs2x(200);
DelayUs2x(200);
DQ = 1;
DelayUs2x(50);
dat=DQ;
DelayUs2x(25);
return dat;
}
/*------------------------------------------------
读取一个字节
------------------------------------------------*/
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
DelayUs2x(25);
}
return(dat);
}
/*------------------------------------------------
写入一个字节
------------------------------------------------*/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
DelayUs2x(25);
DQ = 1;
dat>>=1;
}
DelayUs2x(25);
}
/*------------------------------------------------
读取温度
------------------------------------------------*/
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned int b=0;
unsigned int t=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
DelayMs(10);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
a=ReadOneChar();
b=ReadOneChar();
b<<=8;
t=a+b;
return(t);
}
以及
#ifndef __DS18B20_H__
#define __DS18B20_H__
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int;
/*------------------------------------------------
端口定义
------------------------------------------------*/
sbit DQ=P2^7;//ds18b20 端口
/*------------------------------------------------
函数声明
------------------------------------------------*/
unsigned int ReadTemperature(void);
bit Init_DS18B20(void);
unsigned char ReadOneChar(void);
void WriteOneChar(unsigned char dat);
#endif
电路
这是lm016l的定义端口函数#include "1602.h"#include "delay.h"#define CHECK_BUSYsbit RS = P2^4; //定义端口 sbit RW = P2^5;sbit EN = P2^6;#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P1 展开
展开全部
可以给你i写一份
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已邮件 请查收
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有液晶的程序当然搞不了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询