多语言展示
当前在线:871今日阅读:145今日分享:43

怎样制作电子温度计

DS18B20是由dallas公司生产的可编程数字温度计,单总线通信,测量精确度高,使用便捷。
工具/原料
1

DS18B20温度传感器、51单片机最小系统、PL2303USB转串口模块,杜邦线

2

电脑和软件keil c51、pl2303驱动、stc-isp、串口调试助手

安装软件
编写程序
1

打开keil软件,点,选择project-new uvision project新建工程文件

2

选择atmel下的at89c51单片机

3

点“是”确认添加启动文件

4

双击打开”target1”,右键add new item添加新项目,选c语言

5

/*输入定义代码*/#include#define uint unsigned int#define uchar unsigned charsbit io=P3^7;void delay(unsigned int i){ while(i--);}

6

/*编写初始化温度传感器的代码*/void initcgq(void){ uchar x=0; io=1;    delay(8);   io=0;    delay(80);  io=1;    delay(14); delay(20);}

7

/*编写读写温度传感器的代码*/uchar read(void){ uchar i=0,dat=0; for(i=8;i>0;i--) { io=0; dat>>=1; io=1; if(io)dat|=0x80; delay(4); } return(dat);}void write(uchar dat){ uchar i=0; for(i=8;i>0;i--) { io=0; io=dat&0x01; delay(5); io=1; dat>>=1; }}

8

/*编写转温度的代码*/uint readt(void){uchar x=0,y=0;uint t=0;float tt=0;initcgq();write(0xCC);write(0x44);initcgq();write(0xCC); write(0xBE);x=read();y=read();t=y;t<<=8;t=t|x;tt=t*0.0625;        t= tt*10+0.5;      return(t);}

9

/*编写初始化串口的函数和主函数*/void chuankou4800(){ SCON=0X50; TMOD=0X20; PCON=0X80; TH1=0XF3; TL1=0XF3; EA=1; TR1=1;}void main(){ chuankou4800(); while(1){ SBUF=readt(); while(!TI); TI=0; }}

编译程序
1

点击target options按钮

2

切换到output选项卡,勾选create hex file

3

点击rebuild按钮全部编译

4

编译完成后提示错误为0,警告为0,编译成功

5

在工程文件的相同目录里会生成对应的hex文件

烧录程序
1

准备好单片机,杜邦线和PL2303模块

2

将pl2303的5.0V连接单片机最小系统的VCC;将pl2303的txd连接单片机最小系统的rxd;将pl2303的rxd连接单片机最小系统的txd;将pl2303的gnd连接单片机最小系统的gnd;

3

将pl2303插入电脑,打开stc-isp,找到单片机对应的型号,选择之前生成的hex文件

4

点击下载-编程按钮,之后断开单片机最小系统上的vcc线,一秒之后再将vcc接回原处

5

软件提示操作成功

显示温度
1

拿出DS18B20,面对文字,引脚向下,从左向右分别接入单片机的GND,P3.7,VCC

2

连接完成之后插入电脑

3

打开串口调试助手,选择对应的串口,波特率调制4800,勾选hex显示,即可得到16进制的温度

4

十六进制数转换为十进制,除以10,就得到了十进制的摄氏度(比如我的是fb,转10进是251,温度为25.1摄氏度)

5

如果测得温度过低,可能是数据溢出.只需要在原始数据加上FF(25.5)即可

注意事项

电源不要接反,不然可能会烧坏元件!!

推荐信息