基于51单片机用LCD1602显示的DS18B20课程设计键控上下限报警功能_第1页
基于51单片机用LCD1602显示的DS18B20课程设计键控上下限报警功能_第2页
基于51单片机用LCD1602显示的DS18B20课程设计键控上下限报警功能_第3页
基于51单片机用LCD1602显示的DS18B20课程设计键控上下限报警功能_第4页
基于51单片机用LCD1602显示的DS18B20课程设计键控上下限报警功能_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计 ds18b20数字温度计设计 专业 电子信息科学与技术 班级 11级2班 学号 姓名 目录1 课题的设计目的。 -2 对于课题的总体构想。 -3 ds18b20温度传感器简介。 -4 stc89c51单片机简介。 -5 系统总仿真电路。 -6 总程序。 -7 心得体会。 -8 参考文献。 -一课题的设计目的1. 巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。2. 培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。3. 通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬

2、件设计的方法、内容及步骤。2 对课题的总体构想 采用数字温度芯片ds18b20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。ds18b20 的最大特点之一采用了单总线的数据传输,由数字温度计ds18b20和微控制器stc89c52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。 采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多ds18b20控制工作,还可以与pc 机通信上传数据,另外stc89c52 在工业控制上也有着广泛的应用,编程技术及外围功能电

3、路的配合使用都很成熟。3 ds18b20温度传感器简介ds18b20功能特点:1. 采用单总线技术,与单片机通信只需要一根i/o线,在一根线上可以挂接多个ds18b20。2. 每只ds18b20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。3. 低压供电,电源范围从35v,可以本地供电,也可以直接从数据线上窃取电源(寄生电源方式)。4. 测温范围为-55+125,在-1085范围内误差为0.5。5. 可编辑数据为912位,转换12位温度时间为750ms(最大)。6. ds18b20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。ds18b20引

4、脚如图所示。四ds18b20时序图1初始化时序2写时序3读时序五stc89c51单片机简介。89c52单片机主要特性1. 一个8 位的微处理器(cpu)。2. 片内数据存储器ram(128b),用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据等,sst89 系列单片机最多提供1k 的ram。3. 片内程序存储器rom(4kb),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带rom/eprom,如8031,8032,80c31 等。目前单片机的发展趋势是将ram 和rom 都集成在单片机里面,这样既方便了用户进行设计又提高了系统的抗干扰性。sst 公司推出的89 系

5、列单片机分别集成了16k、32k、64k flash 存储器,可供用户根据需要选用。4. 四个8 位并行io 接口p0p3,每个口既可以用作输入,也可以用作输出。5. 两个定时器计数器,每个定时器计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。为方便设计串行通信,目前的52 系列单片机都会提供3 个16 位定时器/计数器。6. 五个中断源的中断控制系统。现在新推出的单片机都不只5 个中断源,例如sst89e58rd 就有9 个中断源。7. 一个全双工uart(通用异步接收发送器)的串行io 口,用于实现单片机之间或单机与微机之

6、间的串行通信。8. 片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率为12mhz。sst89v58rd 最高允许振荡频率达40mhz,因而大大的提高了指令的执行速度。5 系统总仿真电路。6 总程序 (分模块写)1.main.c#include#includelcd.h#includetemp.hvoid lcddisplay(int);sbit k1=p20;sbit k2=p21;sbit k3=p22;sbit k4=p23;extern int th=20;extern int tl=-10;sbit beep=p10;void main() lcdinit();

7、 lcdwritecom(0xc7);lcdwritedata(c); while(1)if(k1=0)delay1ms(500);if(k1=0);th+;if(k2=0)delay1ms(500);if(k2=0);th-;if(k3=0)delay1ms(500);if(k3=0);tl+;if(k4=0)delay1ms(500);if(k4=0);tl-;lcddisplay(ds18b20readtemp();void lcddisplay(int temp) int i,tt,rr,mm; unsigned char datas = 0, 0, 0, 0,datas1 = 0,

8、0, 0,datas2 = 0, 0, 0;float tp; if(temp 0) lcdwritecom(0xc0); lcdwritedata(-); i=1;temp=temp-1;temp=temp;tp=temp;temp=tp*0.0625*10+0.5;mm=-temp; else lcdwritecom(0xc0); lcdwritedata(+); tp=temp;temp=tp*0.0625*10+0.5;mm=temp;datas0 = temp / 1000;datas1 = temp % 1000 / 100;datas2 = temp % 100 / 10;dat

9、as3 = temp% 10;if(th 0) lcdwritecom(0x89); lcdwritedata(-); tt=-th; else lcdwritecom(0x89); lcdwritedata(+); tt=th;datas10 = tt / 100;datas11 = tt% 100 / 10;datas12 = tt % 10;lcdwritecom(0x87); lcdwritedata(h);lcdwritecom(0x88); lcdwritedata(:);lcdwritecom(0x8a); lcdwritedata(0+datas10);lcdwritecom(

10、0x8b); lcdwritedata(0+datas11);lcdwritecom(0x8c); lcdwritedata(0+datas12);if(tl =(th*10)|mm=(tl*10)|th=tl)beep=0;elsebeep=1; lcdwritecom(0x80); lcdwritedata(t); lcdwritecom(0x81); lcdwritedata(a); lcdwritecom(0x82); lcdwritedata(i); lcdwritedata( ); lcdwritecom(0x84); lcdwritedata(a); lcdwritecom(0x

11、85);lcdwritedata(n); lcdwritecom(0xc1); lcdwritedata(0+datas0); lcdwritecom(0xc2); lcdwritedata(0+datas1); lcdwritecom(0xc3);lcdwritedata(0+datas2); lcdwritecom(0xc4);lcdwritedata(.); lcdwritecom(0xc5);lcdwritedata(0+datas3); lcdwritecom(0xc6);lcdwritedata(); 2.lcd.h#ifndef _lcd_h_#define _lcd_h_/*当

12、使用的是4位数据传输的时候定义,使用8位取消这个定义*/#define lcd1602_4pins/*包含头文件*/#include/-重定义关键词-/#ifndef uchar#define uchar unsigned char#endif#ifndef uint #define uint unsigned int#endif/*pin口定义*/#define lcd1602_datapins p0sbit lcd1602_e=p27;sbit lcd1602_rw=p25;sbit lcd1602_rs=p26;/*函数声明*/*在51单片机12mhz时钟下的延时函数*/void lcd

13、1602_delay1ms(uint c); /误差 0us/*lcd1602写入8位命令子函数*/void lcdwritecom(uchar com);/*lcd1602写入8位数据子函数*/void lcdwritedata(uchar dat);/*lcd1602初始化子程序*/void lcdinit(); #endif3.temp.h#ifndef _temp_h_#define _temp_h_#includesbit dsport=p37;void delay1ms(unsigned int );unsigned char ds18b20init();void ds18b20w

14、ritebyte(unsigned char com);unsigned char ds18b20readbyte();void ds18b20changtemp();void ds18b20readtempcom();int ds18b20readtemp();#endif4.lcd.c#includelcd.hvoid lcd1602_delay1ms(uint c) /延时 uchar a,b;for (; c0; c-) for (b=19;b0;b-) for(a=1;a0;a-); #ifndef lcd1602_4pins /当没有定义这个lcd1602_4pins时void l

15、cdwritecom(uchar com) /写入一个字节命令lcd1602_e = 0; lcd1602_rs = 0; lcd1602_rw = 0; lcd1602_datapins = com; lcd1602_delay1ms(1);lcd1602_e = 1; lcd1602_delay1ms(5); lcd1602_e = 0;#else void lcdwritecom(uchar com) lcd1602_e = 0; lcd1602_rs = 0; lcd1602_rw = 0; lcd1602_datapins = com;/由于4位的接线是接到p0口的高四位,所以传送高

16、四位不用改lcd1602_delay1ms(1);lcd1602_e = 1; lcd1602_delay1ms(5);lcd1602_e = 0;lcd1602_datapins = com 4; /发送低四位lcd1602_delay1ms(1);lcd1602_e = 1; lcd1602_delay1ms(5);lcd1602_e = 0;#endif #ifndef lcd1602_4pins void lcdwritedata(uchar dat)/写入一个字节数据lcd1602_e = 0;lcd1602_rs = 1;lcd1602_rw = 0;lcd1602_datapin

17、s = dat; lcd1602_delay1ms(1); lcd1602_e = 1;lcd1602_delay1ms(5); lcd1602_e = 0;#elsevoid lcdwritedata(uchar dat)lcd1602_e = 0; lcd1602_rs = 1; lcd1602_rw = 0; lcd1602_datapins = dat;/由于4位的接线是接到p0口的高四位,所以传送高四位不用改lcd1602_delay1ms(1);lcd1602_e = 1; /写入时序lcd1602_delay1ms(5);lcd1602_e = 0;lcd1602_datapin

18、s = dat 0;y-)for(x=110;x0;x-);unsigned char ds18b20init()/初始化unsigned int i;dsport=0;i=70;while(i-);dsport=1;i=0;while(dsport)i+;if(i5000)return 0;/失败return 1;/成功void ds18b20writebyte(unsigned char dat) /写字节unsigned int i,j;for(j=0;j=1;unsigned char ds18b20readbyte()unsigned char byte,bi;unsigned int i,j;for(j=8;j0;j-)dsport=0;i+;dsport=1;i+;i+;bi=dsport; byte=(byte1)|(bi7); i=4;while(i-);return byte;void ds18b20changtemp() /温度转换ds18b20init();delay1ms(1);ds18b20writebyte(0xcc); ds18b20writebyte(0x44);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论