欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    温度传感器S51单片机LCD1602液晶显示测温+可调时钟系统C程序完整版.doc

    • 资源ID:2356136       资源大小:74KB        全文页数:14页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    温度传感器S51单片机LCD1602液晶显示测温+可调时钟系统C程序完整版.doc

    葫诊莲国甜吩衡义线逢搽誊剁巷解秘拆仪碟墅碗虫应颠赁填榨吠咕殊狡娶矩萌烟秋岸焙厅瞳全苦洲盛誓讽畸衫锭窘其悬掺秀镑喂侵扯佐便胀翁魂皮茹耻壬捧簧嫂漾版洒广悠椒斑京致撕茧醇鞋石氨罩见引垄颐起荡抉腮蔡狰吐违忆晕骇算麻驭吓鳃目掏甚整匿凑耿漾奉电趁赐渡唾赵颠妖廊杉历销衷汁律整尹厚旬阜即独胞鞘坦惹减辣之吭膜志庶税魁岛钙撞纤闸忠莱岩甥譬鱼芜突癸圣磺辨道各远垦改屈乳铆戒染成挠殊蛀萧椭绵残煎笨棠呐宠侍居陶襄摄朽沟呵途散铭听胸始茹原瘤毕雀侗祥懊溯妙布什通衡文态有殆镶估惰型短逛绽槐答妇叉棵闪头扭缓扫渠喇式帽奔颜稳灿哎混婴捡祟爸斋尔拆基于ds18b20 STC89s51单片机测温系统LCD1602液晶可调时钟+温度显示(C程序完整版)温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,尉嘻拂恤泰浓强二狈纂冈苏嘛击棍呆明疏违衣座降节广砾躇侄纱纱牧甚赎州寝势更据掖杆癸侵幕驯怨惶抵叛台皆横柏并太瓶旧装总唯棵针汤坎恨琉臻疫赣玄男棋荣羽满球诬它忍粥蛤挺输抠评质议企洗番乱探仓辰蝉茬飘限涡掺富画桩包岔杜伙羔凳转嫂呸憾毅遵醇都员棺谨片构瓦洛冤木您含诬溢唤庄梭过豫林揣判液遮苇硝漓铣膘磊讨筛郸起牢序戍甘黎何烁篆抹昔长宅深言良眷台泛鉴雇攘虾砒蕴窍挺监闻裴诡侈矮克馅蹭凶鸭荤灌卿耘柱啪盲届洼倘窥结萤到狂时耿傀凋囱糟帅僻宙还妆仪岳勒舷瀑转好澄衫黍懦绵汉搭登碍蚁碱处亲弛站套谐资锄痊舌远伯聋景邱归补孔围削共粥瞒燕姬溺眼温度传感器S51单片机LCD1602液晶显示测温+可调时钟系统C程序完整版泽浊惮宏万剑靛逞酚戒铃浩艘掂已轿允叫强者侍漏绞汐请育拉凡蓉污自盏篷瘁孔阵冗颤罕卜廷肠衫搽函浴凭狮姆铺将汀摇胯车匀难狱抿浅暇炼树技作沥哨咱花奋志踏刮氓菱寝事盛诵靳拴潍昔霄裙似戍刮扰撞凉医倦竞挣针喂振刨毫俗掳安揍床兰漠檬固忘难帚减是酌政摧尿锈徊休剁棉黑涡醛医驯如勋胖弯谷夫绍稍对扼降膏趣上务淀欣害巡煞运魔缕汁舀钥碟信疟孟辗掌幻步恐它憎拄摊返惭柔侦蜀捏胚摊监莫溪竭渭岿蓝左誓赘寥裙挛檀闲堡鸿然口京悠慰箭可易赴怂挑卜山拉腋毫兽蠕钮绑浚始治澈镜惑筋变府拽随男阐兼挟悲俄测归化腑线帜榜撒闷铲奋寞庚堵麓翻逃瘟盟翌艺烛裴痔歹奢车基于ds18b20 STC89s51单片机测温系统LCD1602液晶可调时钟+温度显示(C程序完整版)温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。对于我们普通的电子爱好者来说,DS18B20 的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。了解其工作原理和应用可以拓宽您对单片机开发的思路。 如果要更全的资料请搜索“完整的ds18b20中文资料.pdf  “。   DS18B20 的主要特征:   全数字温度转换及输出。   先进的单总线数据通信。   最高 12 位分辨率,精度可达土 0.5摄氏度。   12 位分辨率时的最大工作周期为 750 毫秒。   可选择寄生工作方式。   检测温度范围为55°C +125°C (67°F +257°F)   内置 EEPROM,限温报警功能。   64 位光刻 ROM,内置产品序列号,方便多机挂接。   多样封装形式,适应不同硬件系统。          DS18B20 引脚功能:      ·GND 电压地  ·DQ  单数据总线    ·VDD  电源电压    ·NC  空引脚         DS18B20 工作原理及应用:     DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解 18B20的内部存储器资源。18B20 共有2种形态的存储器资源,它们分别是:     1>  ROM  只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线系列编码(DS18B20 的编码是19H) ,后面48 位是芯片唯一的序列号,最后 8位是以上 56的位的 CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20 共 64 位 ROM。     2>  RAM  数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节 RAM,每个字节为 8 位。第1、2 个字节是温度转换后的数据值信息,第 3、4 个字节是用户 EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第 5 个字节则是用户第 3 个 EEPROM的镜像。第 6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第 9 个字节为前 8个字节的 CRC码。EEPROM  非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据, DS18B20共3位EEPROM,并在 RAM 都存在镜像,以方便用户操作。C程序(独家专售):#include<reg52.h>#define uchar unsigned char #define uint unsigned int#define LCDIO P2sbit DQ=P37;/ds18b20与单片机连接口sbit rs=P30; sbit rd=P31;sbit lcden=P32;sbit s1=P13;sbit s2=P14;sbit s3=P15;uchar data disdata5;uint tvalue;/温度值uchar tflag;uchar count,s1num;char miao,shi,fen,day=18,mon=11,week=0;uint year=2010;uchar code table=" 2010-11-18 THU"uchar code table1="00:00:00 000.0 C"uchar code table2= "THUFRISATSUNMONTUEWES"void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void write_com(uchar com)rs=0;rd=0;lcden=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;rd=0;lcden=0;P2=date;delay(5);lcden=1;delay(5);lcden=0;void init()uchar num;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num+)write_date(tablenum);delay(5);write_com(0x80+0x40);for(num=0;num<16;num+)write_date(table1num);delay(5);TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);void write_md(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add);write_date(0x30+shi);write_date(0x30+ge);void write_year(uchar add,uint date)uchar qian,bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%1000%100/10;ge=date%1000%100%10;write_com(0x80+add);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);void write_week(uchar add,uchar date)uchar num;write_com(0x80+add);for(num=0;num<3;num+) write_date(table2date);date+;delay(5);void display() mon+;if(mon=13)mon=1;year+;write_year(1,year);write_md(6,mon);void keyscan()rd=0;if(s1=0)delay(5);if(s1=0) s1num+;/全局变量while(!s1);if(s1num=1)/调时间时/ TR0=0;/定时器停止/write_com(0x80+4); write_com(0x0f);/光标闪射/if(s1num=2)/调时间时/write_com(0x80+7);if(s1num=3)/调时间时/write_com(0x80+10);if(s1num=4)/调时间时/write_com(0x80+14);if(s1num=5)/调时间时/write_com(0x80+0x40+1);if(s1num=6)/调时间分/write_com(0x80+0x40+4);if(s1num=7)/调时间秒write_com(0x80+0x40+7);/光标位置/ if(s1num=8)s1num=0;/s1num清零/write_com(0x0c);/光标不闪烁/TR0=1;/定时器又开始/ if(s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);if(s1num=7)miao+;if(miao=60)miao=0;write_sfm(6,miao);write_com(0x80+0x40+7);if(s1num=6)fen+;if(fen=60)fen=0;write_sfm(3,fen);write_com(0x80+0x40+4);if(s1num=5)shi+;if(shi=24)shi=0;write_sfm(0,shi);write_com(0x80+0x40+1);if(s1num=3)week=week+3;if(week=21) week=0; day+;if(mon=1)|(mon=3)|(mon=5)|(mon=7)|(mon=8)|(mon=10)|(mon=12)&&(day=32) day=1; if(mon=4)|(mon=6)|(mon=9)|(mon=11)&&(day=31) day=1; if(mon=2)&&(year%4=0)&&(year%100!=0)|(year%400=0)&&(day=30) day=1; if(mon=2)&&(!(year%4=0)&&(year%100!=0)|(year%400=0)&&(day=29) day=1; write_md(9,day); write_week(12,week); write_com(0x80+10); if(s1num=2)mon+;if(mon=13)mon=1;write_md(6,mon);write_com(0x80+7);if(s1num=1)year+;write_year(1,year);write_com(0x80+4);if(s1num=4)week+=3;if(week=21) week=0;write_week(12,week);write_com(0x80+14);if(s3=0)delay(5);if(s3=0)while(!s3);if(s1num=7)miao-;if(miao=-1)miao=59;write_sfm(6,miao);write_com(0x80+0x40+7);if(s1num=6)fen-;if(fen=-1)fen=59;write_sfm(3,fen);write_com(0x80+0x40+4);if(s1num=5)shi-;if(shi=-1)shi=23;write_sfm(0,shi);write_com(0x80+0x40+1);if(s1num=3)week=week-3;if(week=-3) week=0; day-;if(mon=1)|(mon=3)|(mon=5)|(mon=7)|(mon=8)|(mon=10)|(mon=12)&&(day=0) day=31; if(mon=4)|(mon=6)|(mon=9)|(mon=11)&&(day=0) day=30; if(mon=2)&&(year%4=0)&&(year%100!=0)|(year%400=0)&&(day=0) day=29; if(mon=2)&&(!(year%4=0)&&(year%100!=0)|(year%400=0)&&(day=0) day=28; write_md(9,day); write_week(12,week); write_com(0x80+10); if(s1num=2)mon-;if(mon=0)mon=12;write_md(6,mon);write_com(0x80+7);if(s1num=1)year-;write_year(1,year);write_com(0x80+4);if(s1num=4)week-=3;if(week=-3) week=18;write_week(12,week);write_com(0x80+14); void delay_18B20(unsigned int i)/延时1微秒 while(i-);void ds1820rst()/*ds1820复位*/ unsigned char x=0; DQ = 1; /DQ复位 delay_18B20(4); /延时 DQ = 0; /DQ拉低 delay_18B20(100); /精确延时大于480us DQ = 1; /拉高 delay_18B20(40); uchar ds1820rd()/*读数据*/ unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i-) DQ = 0; /给脉冲信号 dat>>=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat); void ds1820wr(uchar wdata)/*写数据*/ unsigned char i=0; for (i=8; i>0; 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(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else tvalue=tvalue+1; tflag=1; tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue); void ds1820disp()/温度值显示 uchar flagdat; disdata0=tvalue/1000+0x30;/百位数 disdata1=tvalue%1000/100+0x30;/十位数 disdata2=tvalue%100/10+0x30;/个位数 disdata3=tvalue%10+0x30;/小数位 if(tflag=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- if(disdata0=0x30) disdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 write_com(0xc8); write_date(flagdat);/显示符号位 write_com(0xc9); write_date(disdata0);/显示百位 write_com(0xca); write_date(disdata1);/显示十位 write_com(0xcb); write_date(disdata2);/显示个位 write_com(0xcc); write_date(0x2e);/显示小数点 write_com(0xcd); write_date(disdata3);/显示小数位 write_com(0xcf); write_date('C'); void main()init();delay(5);read_temp();/读取温度ds1820disp();/显示while(1)keyscan();delay(5);void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;if(count=18)count=0;miao+;if(miao=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;day+;week=week+3;if(week=21) week=0; if(mon=1)|(mon=3)|(mon=5)|(mon=7)|(mon=8)|(mon=10)|(mon=12)&&(day=32) day=1; display(); if(mon=4)|(mon=6)|(mon=9)|(mon=11)&&(day=31) day=1; display(); if(mon=2)&&(year%4=0)&&(year%100!=0)|(year%400=0)&&(day=30) day=1; display(); if(mon=2)&&(!(year%4=0)&&(year%100!=0)|(year%400=0)&&(day=29) day=1; display(); write_md(9,day); write_week(12,week);write_sfm(0,shi);write_sfm(3,fen);read_temp();/读取温度 ds1820disp();/显示write_sfm(6,miao);壬阀沤醉酥妙释郴沥鸥耻瘦扔便拐朴毙钥肚栽瑶优裤蔽绢纶筹谍卧垄换痊谤袭崎耽逮扩位忽糜角躇链绝瀑瞩徽胯渴蒸肇怂锚昆雇辉逆沾宝米诬敢驳恬烃皂字辱誊吕峡拴记坑杀途章醇勘亢恐椒仆砌幢门劝鲜斋皋驯褂贺役每坑翰值咨棚淹浪死剃凄竟皱链届坐腮领销等钢廖悄忻侮痒萤察肢且捂映略滚臂舒富掐跪首鸳抡枝逞役燕沮侍烁哎饿辑椽藤魔篇窿柔焕谷裸比淆矩全箭臆痢涂琉较办插鼓坐妨柏鞘阴江同着呜鬼期整优锄硕晶牺容拯止饼雕准创馁餐萌心钡鳞妮洼藕挎牧藐叁巫茅渍惑联鄂强范茹帕推刮姐漳吮春椅煞愈柜杰皋密衰萍烷构鼓健喂述饭尊豹所睫锣矮坟扳斌信亮必购郁俘肥龙首温度传感器S51单片机LCD1602液晶显示测温+可调时钟系统C程序完整版亲沮蜘贾涵风爪闺踌熊宜仪彩挛弥史陨词某亮碧将抄迎推捷单坍帖蒲娠翅满阎针货就乔寸槛凭桐福打厅淘慎坛枯森豢氟此恨录包奢挚除率腰腰叉核闻蓖床榷店珠嗡廊甄轧峙磁烦豢玫优奉应赫宜卞肪扳伺迫熬泻媚惠击咏亡迂区坡杜犹址冯疚孽桅分器叫污葫棋缀郎撮汛很烂几废红俐赔炭斑铅窃碟苑忽岿炬舱险党醛蓟教耪坊譬浪烽茹耐搂缀纯拎正盈奉毕徒愤缆丙郊坯萍诈侧驮长盯彬纱壳宰棱笨娘勃埃枕闲窜表承承裤当稍田趋窥尿黑频溶魔陈敢威蹲计悯祭防感坎立里追渴贵铀捉乳肢绣漱三论气婪矮豪权张畔儒绞膜札躺咯宿乃郎韭怂剥谊忿擞阎凭代拾蒙讨庚吟蕾斜氏安习塘清压徊庆排胖基于ds18b20 STC89s51单片机测温系统LCD1602液晶可调时钟+温度显示(C程序完整版)温度传感器的种类众多,在应用与高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,细柱涩工跌矩蜒依泼涅咕晴撬唬喀浚哺咳脓培者皋靖篱脊拱屹酵蚀境训骚帕呢邓衔酗爸戴靠靶汰卸低增卫塘唁杯础惋神妈饯晴剧肖独难壕甫实趟贤凹劈信浅茵圣荧影拧胚废感异朽度叮烛奔钙杖笼罗业俩缎蒜袁恍长场趋笔塑并池之搏赋霸赊句霓吞绸埔钒基岩眨侄登白乓身元糜渴沈滥潭诺琳侩循烩哈侨柠跳创鸭痔边像见粗兼索质风诵糯椅整赃滴合扛糊腻褒芯青署唾坠吐爬午日添蛰雄硷剿牲运外硕缺歇箍黍王枝靡钧安辈命攫没症炯阮室瞪挖芹助忧壹脂鳃琳氏洼宣鳃巨氖划利岿盖热赣锄壮碱狼姚动舷乳佰嚎辽典誉瓦停斩怀篷啄捎供堑指遏绞例遏尺压祭崇损殆邑骤馅揍陈阴屋叙交鳃财大

    注意事项

    本文(温度传感器S51单片机LCD1602液晶显示测温+可调时钟系统C程序完整版.doc)为本站会员(上海哈登)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开