版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机轻松入门之十 DS18B20温度传感器+1602液晶显示 本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原理图和KEIL环境下的注释,希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或QQ联系(QQ:1260514656)。DS18B20数字温度传感器是由美国DALLAS公司生产的,体积小,使用方便,测温范围 55125,测温分辨率0.5,工作电压DC3-5V,不需要任何外围元件,采用SPI单线接口方式,在与微处理器
2、连接时仅需要一条口线即可实现双向通讯,广泛适用于各种温度控制领域。原理图如下:程序如下: #include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit RS=P30;sbit EN=P32;sbit RW=P31;sbit wela=P33;sbit DQ=P34;uchar i;uint num;
3、; uint shi,ge,xiaoshu;uchar code t0="The temperature "uchar code t1=" is "uchar code wendu="0123456789" void delay(uint x)uint m,n;for(m=x;m>0;m-) for(n=10;n>0;n
4、-); void delay1(uint x)uint a,b;for(a=x;a>0;a-) for(b=110;b>0;b-); /*液晶写指令*/void write_com(uchar com)wela=1;P2=com;wela=0;RS=0;EN=0;RW=0;delay(10);EN=1;delay(10); EN=0;/*液晶写数据指令*/void write_date(uchar date)wela=1;P2=date;wela=0;RS=1;EN=0;RW=0;delay(10);EN=1;delay(
5、10);EN=0;/*液晶初始化指令*/void init()write_com(0x38);delay(20);write_com(0x0f);delay(20);write_com(0x06);delay(20);write_com(0x80); for(i=0;i<16;i+) write_date(t0i); delay(0); write_com(0x80+0x40);for(i=0;i<16;i+) &
6、#160; write_date(t1i); delay(0); /*DS18B20温度读取模块*/void tmpDelay(int u) /延时函数while(u-) ;void Init_DS18B20() /初始化ds1820unsigned char x=0;DQ = 1; /DQ复位tmpDelay(8); /稍做延时DQ = 0; /单片机将DQ拉低tmpDelay(80); /精确延时 大于 480usDQ = 1;
7、0; /拉高总线tmpDelay(14);x=DQ; /稍做延时后,如果x=0则初始化成功 x=1则初始化失败tmpDelay(20);unsigned char ReadOneChar() /读一个字节unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; / 给脉冲信号 dat>>=1; DQ = 1; / 给脉冲信号 if(DQ)&
8、#160; dat|=0x80; tmpDelay(4);return(dat);void WriteOneChar(unsigned char dat) /写一个字节unsigned char i=0;for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; tmpDelay(5); DQ = 1; dat>>=1;unsigned int Readtemp() /读取温度unsigne
9、d char a=0;unsigned char b=0;unsigned int t=0;float tt=0; Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器a=ReadOneChar(); /连续读两个字节数据 b=ReadOneChar();t=b;t<<=
10、8;t=t|a; /两字节合成一个整型变量tt=t*0.0625; /得到真实十进制温度值,因为DS18B20可以精确到0.0625度,所以读回数据的最低位代表的是0.0625度t= tt*10+0.5; /放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作。return(t);void main()init(); num=Readtemp();shi=num/100;ge=num/10%10;xiaoshu=num%10;write_com(0xc0+5);write_date(wendushi);write_com(0xc0+6);write_date(wenduge);write_com(0xc0+7);write_date(0x2e);write_com(0xc0+8);write_date(wenduxiaoshu); while(1);实验仿真结果:在实际实验板上可以真实显示当前环境温度值,但用软件仿真时就显示85.为了您的安全,请只打开来源可靠的网址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江绍兴杭绍临空示范区开发集团有限公司人员招聘23人考试参考试题及答案解析
- 2026浙江省人民医院富阳院区招聘82人笔试参考题库及答案解析
- 2026海南三亚市吉阳区机关事业单位编外聘用人员、村(社区)工作人员储备库(考核)招聘200人(第1号)考试备考试题及答案解析
- 2026年湖州市教育局公开招聘骨干教师10人考试备考题库及答案解析
- 2026上半年黑龙江省神经精神病医院公开招聘合同制工作人员58人考试备考试题及答案解析
- 2026广东广州番禺中学附属学校招聘笔试模拟试题及答案解析
- 2026广东珠海高新区招聘区投资促进中心事业编制人员1人笔试参考题库及答案解析
- 2026四川成都市龙泉驿区西河幼儿园集团招聘5人考试参考题库及答案解析
- 2026河南驻马店市泌阳一学校招聘教师1人笔试备考题库及答案解析
- 2026年农业机械报废更新项目评估报告
- 2026年度余干县水投工程建设有限公司服务外包人员招聘39人笔试备考题库及答案解析
- 2026年新年开工全员安全生产培训:筑牢复工复产安全防线
- 2025年四川省高考化学真题卷含答案解析
- 《东北三省》教案-2025-2026学年商务星球版(新教材)初中地理八年级下册
- 2026年湖南生物机电职业技术学院单招职业倾向性考试题库新版
- 康复治疗技术面试问题与解答指南
- 安防监控工程施工方案
- 矿床学:内生矿床篇
- 企业质量管理体系实施作业指导书
- 【四川长虹电子公司基于杜邦分析法的企业财务分析(14000字论文)】
- 初中英语阅读理解专项练习26篇(含答案)
评论
0/150
提交评论