ssy19951022

  • 2018-08-14
  • 发表了主题帖: 舒城县服务(小 妹 )确实有找真一晚上有全套联系方式?

    舒城县找小妹服务【V芯:UJJ5678 婷婷】舒城县小妹包夜服务【V芯:UJJ5678 婷婷】舒城县小妹全套服务【V芯:UJJ5678 婷婷】质.量.我.们.把.关.给.你.保.证,安.全.只.要.我.们.答.应.过.去.的.地.方。</p> 未来三年全球M2M物联网连接数高速增长,中国物联网连接数将保持全球第一,极大促进国内物联网上层应用蓬勃发展。 截止到2015年年底,中国的物联网M2M连接数已经达到了7400万,占到全球物联网M2M连接数的23%,全球第一,远超美国和欧洲国家。 中国人口基数大,对智能制造、智慧物流、智能交通等方面的需求不断增加,未来中国物联网上层应用需求也将持续蓬勃发展,创造巨大的商业价值。 http://bbs.eeworld.com.cn/thread-792359-1-1.html http://bbs.eeworld.com.cn/thread-792358-1-1.html http://bbs.eeworld.com.cn/thread-792358-1-1.html http://bbs.eeworld.com.cn/thread-792357-1-1.html http://bbs.eeworld.com.cn/thread-792355-1-1.html

  • 2018-04-20
  • 发表了主题帖: 为什么DS18B20显示的温度与LCD1602显示的温度不同??

    LCD温度显示为8度 DS18B20温度显示为64度 为什么会不一样呢?会不会是延时出了问题?求大神们帮忙解答一下谢谢!!!程序附上 #include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit RS=P2^2;                                                                        sbit RW=P2^1; sbit EN=P2^0; sbit DQ=P3^2;        uchar code str1[]={0x10,0x30,0xc5,0xc8,0x00,0x00,0x00,0xc3};        //ROM 1 uchar code str2[]={0x28,0x05,0x76,0xba,0x03,0x00,0x00,0x6a};        //ROM2 uchar code table[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};        // 摄氏温度符号 uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 /*************************lcd1602程序**************************/ void delay1ms(uint ms)//延时1毫秒(不够精确的) {  uint i,j;    for(i=0;i<ms;i++)     for(j=0;j<100;j++); } void wr_com(uchar com)//写指令// { delay1ms(1);    RS=0;    RW=0;    EN=0;    P0=com;    delay1ms(1);    EN=1;    delay1ms(1);    EN=0; } void wr_dat(uchar dat)//写数据// { delay1ms(1);    RS=1;    RW=0;    EN=0;    P0=dat;    delay1ms(1);    EN=1;    delay1ms(1);    EN=0; } void wr_new()                  //写新字符 {         uchar i;         wr_com(0x40);         for(i=0;i<8;i++)         {                 wr_dat(table);         } } void lcd_init()//初始化设置// {        delay1ms(15);         wr_com(0x38);delay1ms(5);         wr_com(0x08);delay1ms(5);         wr_com(0x01);delay1ms(5);         wr_com(0x06);delay1ms(5);         wr_com(0x0c);delay1ms(5);         wr_new();         wr_com(0x80);     wr_dat('A');         wr_com(0x81);     wr_dat(':');           wr_com(0x89);     wr_dat(0x00);         wr_com(0x8a);     wr_dat('C');         wr_com(0xc9);     wr_dat(0x00);                                //摄氏温度字符         wr_com(0xca);     wr_dat('C');         wr_com(0xc0);     wr_dat('B');         wr_com(0xc1);     wr_dat(':'); } /******************************ds1820程序***************************************/ void delay_18B20(uint i)//延时1微秒 {    while(i--); } void ds1820rst()/*ds1820复位*/ {   uchar x=0;         DQ = 1;          //DQ复位         delay_18B20(4); //延时         DQ = 0;          //DQ拉低         delay_18B20(100); //精确延时大于480us         DQ = 1;          //拉高         delay_18B20(40); } uchar ds1820rd()/*读数据*/ { uchar i=0;   uchar dat = 0;   for (i=0;i<8;i++)         {   DQ = 0; //给脉冲信号     dat>>=1;     DQ = 1; //给脉冲信号     if(DQ)     dat|=0x80;     delay_18B20(10);         }    return(dat); } void ds1820wr(uchar dat)/*写数据*/ {         uchar i=0;     for (i=0; i<8; i++)                    { DQ = 0;               DQ = dat&0x01;               delay_18B20(10);               DQ = 1;               dat>>=1;                    } } void b20_Matchrom(uchar a)         //匹配ROM {         char j;         ds1820wr(0x55);           //发送匹配ROM命令         if(a==1)         {         for(j=0;j<8;j++)                 ds1820wr(str1[j]);                //发送18B20的序列号,先发送低字节         }         if(a==2)         {         for(j=0;j<8;j++)                 ds1820wr(str2[j]);                //发送18B20的序列号,先发送低字节         } } read_temp(uchar z)/*读取温度值并转换*/ {        uchar a,b;         float tt;         ds1820rst();            ds1820wr(0xcc);                                 //读序列号         ds1820rst();         if(z==1)         {                 b20_Matchrom(1);                 //匹配ROM 1         }         if(z==2)         {                 b20_Matchrom(2);                 //匹配ROM         2         }         ds1820wr(0x44);//*启动温度转换*/         delay1ms(5);         ds1820rst();            ds1820wr(0xcc);                                //读序列号         ds1820rst();         if(z==1)         {                 b20_Matchrom(1);                            //匹配ROM 1         }         if(z==2)         {                 b20_Matchrom(2);                                //匹配ROM         2         }         ds1820wr(0xbe);//*读取温度*/         a=ds1820rd();                         //读温度低字节命令         b=ds1820rd();                         //读温度高字节命令         tvalue=b;         tvalue<<=8;         tvalue=tvalue|a;     if(tvalue<0x0fff)                   //正值     tflag=0;     else                    {        tvalue=~tvalue+1;                 tflag=1;                //正负标志位                 }         tt=tvalue*0.0625;         tvalue=tt*10;         return(tvalue); } /*****************显示函数******************************/ void ds1820disp(uchar z)//温度值显示 {    uchar flagdat;      disdata[0]=tvalue/1000+0x30;//百位数      disdata[1]=tvalue%1000/100+0x30;//十位数      disdata[2]=tvalue%100/10+0x30;//个位数      disdata[3]=tvalue%10+0x30;//小数位      if(tflag==0)      flagdat=0x20;//正温度不显示符号      else        flagdat=0x2d;//负温度显示负号:-      if(disdata[0]==0x30)     {disdata[0]=0x20;//如果百位为0,不显示    if(disdata[1]==0x30)     {disdata[1]=0x20;//如果百位为0,十位为0也不显示     }    }   if(z==1)     {     wr_com(0x82);     wr_dat(flagdat);//显示符号位     wr_com(0x83);     wr_dat(disdata[0]);//显示百位     wr_com(0x84);     wr_dat(disdata[1]);//显示十位     wr_com(0x85);     wr_dat(disdata[2]);//显示个位     wr_com(0x86);     wr_dat(0x2e);//显示小数点     wr_com(0x87);     wr_dat(disdata[3]);//显示小数位    }   if(z==2)     {     wr_com(0xc2);     wr_dat(flagdat);//显示符号位     wr_com(0xc3);     wr_dat(disdata[0]);//显示百位     wr_com(0xc4);     wr_dat(disdata[1]);//显示十位     wr_com(0xc5);     wr_dat(disdata[2]);//显示个位     wr_com(0xc6);     wr_dat(0x2e);//显示小数点     wr_com(0xc7);     wr_dat(disdata[3]);//显示小数位    } } /********************主程序***********************************/ void main() {         lcd_init();//初始化显示     while(1)     {                 read_temp(1);//读取温度                 ds1820disp(1);//显示                 read_temp(2);//读取温度                 ds1820disp(2);//显示         delay1ms(10000);   } }

  • 发表了主题帖: 关于延时函数问题 请大神们指点一下谢谢!

    我有个延时函数 /***********************************************/ /*函数名称:delay()        */ /*函数功能:延时函数,单次 25us 左右延时        */ /*入口参数:t;        */ /*输出参数:无        */ /*调用函数:无        */ /*全局变量:无        */ /*局部变量:t;        */ /***********************************************/ void delay(uint t)         {         for (;t>0;t--);         } DS18B20读数据函数 uchar ds_read(void) {          uchar i;          uchar value=0;          for(i=8;i>0;i--)            {                 DQ=1;_nop_();                 _nop_();                 value>>=1;                 DQ=0;                 _nop_();                 _nop_();                 _nop_();                 _nop_();                 DQ=1;                 _nop_();                 _nop_();                 _nop_();                 _nop_();                 if(DQ)value|=0x80;                 delay(6);             !!!问题是这部 手册上说延时60微秒即可 可是这个程序 是不是延时6*25=150微秒 所以这个不对??        }      DQ=1;      return(value); }

TA暂时无记录哦~

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯币:36
  • 好友:--
  • 主题:2
  • 回复:0
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言