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

资源简介

基于LCD1602读取DS18B20序列号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]; 
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;

return (temp);

}

void rom() //读取序列号

uchar i;
int j;
initionds18b20(); 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    .......      1012  2012-03-09 17:19  基于LCD1602与LED的proteus仿真温度测量\代码\lcd1602_Opt.Bak

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

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

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

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

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

               149858                    18


评论

共有 条评论