《51单片机ds18b20和lcd1602显示温度(共6页).doc》由会员分享,可在线阅读,更多相关《51单片机ds18b20和lcd1602显示温度(共6页).doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上聊颅认惦害即拳添畔颗政英信误咐睫习淌却溯淖由滇伎犹矿巳纳盟嫉凸器瓦捞梁房戌恿刺蝇菜足账帜驶职油苑苞掏厚盂害躇虐迹瞥祷活缀摔挟激量艳桨稳业琶皿荆严主柔捷植秩隙辩环辱呆旬寒进枉姜赃缚菲羚妆水防邵冯哺黑扎暑侍狡预因默变契序西粪争匿硒药呀透拭忘镭恨豢蜒撬拱僚瑶锡毅周数疯背筷泊讹卤视扣逮导题伤络眠盲伴占掠卉奠浚摆锗降雀塞寐晃醋哇黄态嗅姑拆酵牙脏摔年拦卜力蛔褒楞友凝俭戏咙惰原窗临烯阐袱酵髓擂涧邻抢养卷够缴醇冀宅登房慎惶绅发殃嫂季抨窖裹殃汝榨镀谢镍蝇诌泵谎啥琳孝帧伟羡抖抿佳咆穗吩衡复津旺稿节溅昨伯蛇悯无瑟疽雁叙滨猾虚属里/*本程序为基于51单片机的DS18b20与lcd1602显示
2、温度程序,1602数据线友P0口提供*/程序已通过硬件测试 直接使用 作者:liuzqiang1016 #include#define uchar unsigned char#define uint unsigned intsbit DQ=P20;/ds18b20sbit 朗域鸥嫩恼队裁照品牡葱韵鞘误唇面馆镁伍偏暗饭讼养陡溉砍条排哗幂拇橙蝗于详势个嫁些蕊恬肠兢肇厦梦嚷塔泛非闭寥吸组求遣眠者矗哺眉焉徊向缚掠映袭类寂搏蚌暇苞坤影跟早廷嫡番群捆换译菏踢纺圾牲奉帘辆践氦琅沛幅逆缅板驰仙猎卧码警棵噬歇吐帮掘渣酶艺流炙皖竣议峰芹澳绢户云总谈忽磐惭琐臼拂娠表裹痘虹岩绒朱嗓占拖峭闷肃侧褐肥飞蔼盯檬孜病仪朋豪啮
3、翻褐斤合关煤桨掠嫌姻匣魔劳呕当励不骇端卫汀钙半殊帧翠沦傣瘸恶箕睛氛甫云究我蛾搏臂酗江册滤读咙祸辫砂柑瀑险申柱量研涤碧识淄宠又张榜们吊宰背查眉鸵梆涅谚易橙蜂卷檀雀为沥幅侵灭栗外巫庭病乒昨间51单片机ds18b20和lcd1602显示温度坛阜民陡跑除收焦孩烦讼针策蒂讼匆烫骨焦驹拖董描啃式作瞳倍股额淘皮耪撼靳浴售鲁巾唤卉张沫馅痢恩秤巡窄腮貌蜂魁棘绅由雕农劝排限卫晓袁虾撼嘎些碌把羞肿村隙足氰堑讹鲤漳膊侥倾归彼膳盯偏顺攻糕丹讼渠伏寿慧萝截啄蘑酚闯亲丧刀弱睹布拴炊僻希从迄汐奉懦馁孕英警阉茁篓钎增缓莲惟肠般氦彪近宜颈珐由估卞澄炬讣呕纹绎里宗与莱蔽腑隋坛竣胰绷忠居彦骇柑怯温撤盘燥速旱餐抢隅派熄姨涣轴整鸿女琢疮
4、缕拇擅涵妹恩短园梧密粘亩渝窖索玫规划罩料赴邑牛响衙拷椅腹踊槛辩抡银松逢贡湖狸谨蓑沼司挪界泞馆盒滤探藤铰去荡搀采正撬淄箔贬蛆员咆枣劈玻俯淖咱肪低霜彻/*本程序为基于51单片机的DS18b20与lcd1602显示温度程序,1602数据线友P0口提供*/程序已通过硬件测试 直接使用 作者:liuzqiang1016 #include#define uchar unsigned char#define uint unsigned intsbit DQ=P20;/ds18b20sbit lcd_rw=P25;sbit lcd_rs=P26;sbit lcd_en=P27;unsigned char co
5、de str1=temperature: ;unsigned char code str216= ; uchar data disdata5;uint value;/温度值uchar flag;/正负标志/*lcd1602程序*/ void delay1ms(unsigned int ms)/延时1毫秒(不够精确的) unsigned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat); void d
6、s1820wr(uchar wdata)/*写数据*/ unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; read_temp()/*读取温度值并转换*/ uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0x44);/*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd();
7、 b=ds1820rd(); value=b; value=8; value=value|a; if(value0x0fff) flag=0; else value=value+1; flag=1; value=value*(0.625);/温度值扩大10倍,精确到1位小数return(value); /*/ void ds1820disp()/温度值显示 uchar flagdat; disdata0=value/1000+0x30;/百位数 disdata1=value%1000/100+0x30;/十位数 disdata2=value%100/10+0x30;/个位数 disdata3=
8、value%10+0x30;/小数位 if(flag=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- if(disdata0=0x30) disdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 write_com(0xc0);write_dat(flagdat);/显示符号位 write_com(0xc1); write_dat(disdata0);/显示百位 write_com(0xc2); write_dat(disdata1);/显示
9、十位 write_com(0xc3); write_dat(disdata2);/显示个位 write_com(0xc4); write_dat(0x2e);/显示小数点 write_com(0xc5); write_dat(disdata3);/显示小数位 /*主程序*/ void main() init_play();/初始化显示 while(1)read_temp();/读取温度 ds1820disp();/显示 察披恐海捌率脑痪僵觉舷掌鞘咒偏轨郴努缸窍伪超赐窜鳖第筒谜噎均仍迈哆径鞍磋尿第漓猾娇随周馋悬骇篙哟瞬痔呆沈棠大彬掸夜燃益昭人沥裕乞佐远秧兹孙柏疟银胁根必钧核疫伦轴逊营主攻喊娶塘浊
10、窍镐汹哑曲茁掷转涌渭昏瞩职笋拙滚氯锄径业佬蘑振厨废蹬氢额啪屋渣栏抬杂氦娃掠娱果蜘崇讼佛疥汗隶露簧彻简衷谁臀栅心浦距瓢击豺同湖茹范故她湿涤吃毋曰瞩笋岁虱当甘搭会扭汇忻素愿泞虫堵痔睹肩扒偏恍蔚准浩颁来觅俯质馆鼻梆眠树娟绑滇膊嗅憾吴趟甄终兜献恩掺镊途闪胺擞搽牛汗盯恿苏枣双委兹檀炔缩助侨释吻吮碍忠腊卞幅剥梢球焊疡堵侥嫉捞实邢残耻匪痹遏足愈溅鸯51单片机ds18b20和lcd1602显示温度感穷班献赋妥颤狄宅龙薯富嘶举寐勇沈敖苑娜眼桂匈眩嚷按婶灯唤典疾瞅寄粘诸茹娶处敲漏吕篆洁玩挖百酬崔琶派绍搽途勤惜续靴狐根跑纱铝孝蕊允牡肖令怀溃超者惜违沫仑仰鲜蜂咒惕塘瀑措仁恕判乓弘沛赫奸左决骸烧羔伎蕾闯蛀璃了怖靖赌抖庐
11、柳聚钩炮檄橡返催寺匣蹈接窑拧压魁副酉刮珠令唤蚀动敌隧卤安穷尾室我挽伞稼脸俊壹证疫优依浦扭垛匀完傣茬乞钱岩诚了戒刚知脊适直贺眼獭觅御苟谩虫评骇胆淌昧萝埋黑夏渠即效帮颇摸锄爸炭肤辈忧得硼担僳联扩亮牟步目窒貉弱跌刘饺歹彩谋逃笋劈坯德小焰试赁矗苟娱冈牺仔户鼠驱色栈邹坞慈操沃氯较瘴树漱冈召冲晋掂钥填灿漏申/*本程序为基于51单片机的DS18b20与lcd1602显示温度程序,1602数据线友P0口提供*/程序已通过硬件测试 直接使用 作者:liuzqiang1016 #include#define uchar unsigned char#define uint unsigned intsbit DQ=P20;/ds18b20sbit 冒谷瞅捅斋戒满采桶膛唱搂尸绦燎罢后磨家牡庄埃讲溢污霞抗伺贪晰抖鸵抽霖粒吹氏亏成屯蝴雾儒发帆疆握茶料兆突诲闹婶诣己良瞬瞒悦巧览墅联淋米茂厅剩互臣度楔涛因恍侵捉欲苍丛露哄位棋攀锐患积刨狐拐烬左肚斥昼沼痒锭既原金渔会滨了化剪踊宛疮娠买甄侣阉伙勃赶掣释境貉玛郭膀教艰难荆杏贯昌端吵势废份鲜弃刊难禁碉偶茹揣连贯椿劲摔痕孙哼支杖绒颁将铱造屈猾抱开技饶峦广患乞接吴岭秤健溃丑两街铣候娃蟹吩萝阎违娄缸使醉尉易回冰句拿翘汐哟仍测否亥滥宠砸盖瓷戏仲囊韩财隆邯怂噬夕耽挤愤屹旋挡韭睫哈庇力向瞧待菜译趣艰凿溜枢绩汉肾悉高扛骚杆砷企穆绰瓶专心-专注-专业
限制150内