1 / 15
文档名称:

电子二班数字温度计的设计说明.docx

格式:docx   大小:511KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

电子二班数字温度计的设计说明.docx

上传人:cby201601 2022/5/18 文件大小:511 KB

下载得到文件列表

电子二班数字温度计的设计说明.docx

相关文档

文档介绍

文档介绍:单片机原理及应用
题目: DS18B20 数字温度计的设计
学号:赛
专业班级:电子 2 班
设计时间: 2013 年 11 月
一、课题介绍
本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器 18B20,单片机A序;否则将无法读取测量结果。本程序采用单片 机汇编或C语言编写用Keil C51编译器编程调试。
软件调试到能显示温度值, 并且在有温度变化时显示温度能改变, 就基本完
成。
性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。由于
DS18B20 的精度很高,℃以。另外,-55~+125℃的
测温围使得该温度计完全适合一般的应用场合, 其低电压供电特性可做成用电池
供电的手持温度计。
四、课程设计体会
本次的课程设计使我们进一步巩固了书本上的知识,做到了学以致用。这是
我们第二次自己动手设计的电路,通过系统仿真软件protues 和编译软件 keil ,
使我们进一步了解了单片机的设计制作过程, 其中最为困难的是软件部分, 即编
程部分, 我们上网找了好多资料, 虽然经过自己的修改, 但还是有很多功能不能
实现,如温度上下限设置。由于protues并不是很熟练,在使用的过程中有很多
原件的名称不知道, 从而花费了大量的时间在网上查找, 今后应该在这方面多多
努力。最后一步的焊接硬件也遇到了不少麻烦,P0端口没有加上拉电阻,P1端
口没有加电阻导致数码管不亮或者亮度不够。 总结经验的时候我们得出这样的结
论,学****应该学以致用,有目的的去学****如果学了不用等于没学。其次,要学
以致用,理论联系实际,这样才会取得事半功倍的效果。
附件:DS18B20a度计C程序
#include<>
#include <>
#define uchar unsigned char
#define uint unsigned int
sbit DATA = P1A1;
ucharcode
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//
共阴极字型码
int temp;
int ss;
int dd;
int j;
uchar data b;
uchar data buf[4];
int alarmH=500;
int alarmL=-10;
sbit k1=P2A5;
sbit k2=P2A6;
sbit k3=P2A7;
sbit k4=P2A4;
sbit bell=P1A0;
sbit HLight=P1A2;
sbit LLight=P1A3;
sbit warn=P1A4;
sbit Red=P1A6;
sbit Green=P1A7;
bit set=0;
bit Flag=0;
int n;
void key_to1();
void key_to2(); void delay(uint); void key();
void Show();
void delay(uint num)
{ while(num--) ;
}
void Init_DS18B20(void) {
uchar x=0;
DATA = 1; delay(10);
DATA = 0; delay(80);
DATA = 1; delay(20); x=DATA; delay(30);
}
ReadOneChar(void)
{
uchar i=0; uchar dat = 0; for (i=8;i>0;i--) {
DATA = 0; dat>>=1;
DATA = 1; if(DATA) dat|=0x80; delay(8);
} return(dat);
}
WriteOneChar(unsigned char dat) {
uchar i=0;
for (i=8; i>0; i--) {
DATA = 0;
DATA = (bit)dat&0x01;
delay(10);
DATA = 1;
dat>>=1;
}
delay(8);
return(dat);}
int ReadTemperature(void) {
uchar a=0;
uchar b=0;
int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
Init_DS18B20();
Write