• 大小: 46KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: LCD1602  DS18B20  

资源简介

基于LCD1602与LED同时的proteus仿真温度测量,有图有代码,测试通过。程序可自行再修改达到更为完美的效果

资源截图

代码片段和文件信息

/*******************************************************************************
*  描述:                                                                       *
*         1602字符型LCD显示演示程序                                            *
*         在第一行显示  welcome                                                *
*         在第二行显示  www.PRECHIN.com                                         *
*                                                                              *
********************************************************************************/

#include 
#include 

typedef unsigned char BYTE;
typedef unsigned int WORD;
#define uchar unsigned char
#define uint unsigned int
typedef bit BOOL ; 
uint tempflag1;
int  LedOut[4];
int temper;

sbit DQ=P3^7;
sbit rs = P2^4; //
sbit rw = P2^5;
sbit ep = P2^6;
uchar sn[8]; //4个器件的序列号,先读出单个序列号后填上才可以读取温度
BYTE code dis1[] = {“XQL“};
BYTE code dis2[] = {“CC“};
uchar code table[]={0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x71};


sbit    LS138A=P2^0;       //管脚定义
sbit    LS138B=P2^1;
sbit    LS138C=P2^2; 

/*--------- DS18B20-----------*/
void delay1(unsigned char i) 
{
while(i--); 
}

void initionds18b20()
{

DQ=0;
delay1(128);  //900us

DQ=1;
delay1(1); 


while(DQ);  //检测到应答脉冲
    //i=103;while(i>0) i--;//等待870us
delay1(100);
}

uchar readds18b20()
{  uchar i   = 0;
uchar dat = 0;
for(i=8;i>0;i--)
{
   DQ = 0;                  //将总线拉低,要在1us之后释放总线
                           //单片机要在此下降沿后的15us内读数据才会有效。
   _nop_();                 //至少维持了1us表示读时序开始
   dat >>= 1;               //让从总线上读到的位数据,依次从高位移动到低位。
   DQ = 1;                  //释放总线,此后DS18B20会控制总线把数据传输到总线上
   delay1(1);                 //延时7us此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分
   if(DQ)                   //控制器进行采样
   {
    dat |= 0x80;            //若总线为1即DQ为1那就把dat的最高位置1;若为0则不进行处理保持为0
   }        
   delay1(10);               //此延时不能少,确保读时序的长度60us。
}
return (dat);
}



void writeds18b20(uchar dat)
{
uchar i = 0;
for(i=8;i>0;i--)
{
   DQ = 0;                        //拉低总线
   _nop_();                       //至少维持了1us表示写时序(包括写0时序或写1时序)开始
   DQ = dat&0x01;                 //从字节的最低位开始传输
                                 //指令dat的最低位赋予给总线必须在拉低总线后的15us内
                                 //因为15us后DS18B20会对总线采样。
   delay1(10);                     //必须让写时序持续至少60us
   DQ = 1;                        //写完后必须释放总线
   dat >>= 1;
   delay1(1);
}
}

void tmpchange()
{
// uint i;
initionds18b20();
//dsWait();
//delay(1);
writeds18b20(0xcc);//跳过序列号命令
writeds18b20(0x44);//发转换命令
//DQ=1;i++;i++;

}
 uint tmp()
{

uchar ab;
float tt;
initionds18b20();
writeds18b20(0xcc);
writeds18b20(0xbe);//发送读取命令
a=readds18b20();//读温度低位
b=readds18b20();//读温度高位
temp=b;
temp<<=8;
temp|=a;
tt=temp*0.0625;
temp=tt;
/*flag1=b;
if(flag1)
{
temp=~a+1;
}
else
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      40571  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\防真图\Last Loaded LCD1602-DS18B20.DBK

     文件      40571  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\防真图\LCD1602-DS18B20.DSN

     文件       1054  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\防真图\LCD1602-DS18B20.PWI

     文件      14097  2012-03-08 22:17  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.LST

     文件      84869  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.plg

     文件       6481  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.c

     文件      14546  2012-03-08 22:17  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.OBJ

     文件      13391  2012-03-08 22:17  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602

     文件         46  2012-03-08 22:17  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.lnp

     文件      17892  2012-03-08 22:17  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.M51

     文件       4058  2012-03-08 22:17  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.hex

    .......         0  2012-03-08 14:57  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602_Uv2.Bak

     文件       1996  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.Uv2

     文件       1115  2012-03-08 22:19  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602.Opt

     目录          0  2012-03-08 14:55  基于LCD1602与LED的proteus仿真温度测量\防真图

     目录          0  2012-03-08 14:56  基于LCD1602与LED的proteus仿真温度测量\代码

     目录          0  2012-03-08 14:55  基于LCD1602与LED的proteus仿真温度测量

----------- ---------  ---------- -----  ----

               240687                    17


评论

共有 条评论