单片机课程设计实验报告。
班级:学号:
姓名: 一、 题目
题号:36 ★★设计外围电路,完成以下功能:
1. 使用2个ds18b20采集温度值,将其十进制温度值和平均值送到rs232上,保留小数点后1位。
2. 显示格式为“ti=温度值,t2=温度值,a=平均值”,间隔0.5秒显示一次。要求使用定时器精确定时。
3. pc机可以使用串行口助手。
元件:ds18b20两个。
插座两个。导线若干。
max232一个。
16脚插座一个。
电容1uf四个。
九孔232插座一个。
232接口导线一条。
二、 原理。
1. 控制器。
控制器采用at89s52单片机最小控制系统,晶振频率为11.0592mhz,本组使用p2.3,p2.2作为两个温度传感器的数据采集口。
控制程序是在keil软件中使用c51语言编写,生成hex文件后使用**软件**至单片机flash中;电路原理图使用altium designer绘制。
2.温度测量。
ds18b20是dallas公司生产的一线式数字温度传感器,具有3引脚to-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位a/d转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个ds18b20可以并联到3根或2根线上,cpu只需一根端口线就能与诸多ds18b20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。具有可选的位的温度转换存储格式,对应的转换精度分别为0.
5℃,0.25℃,0.125℃,0.
0625℃。
由于题目要求温度采集显示精确到小数点后一位,故采用ds18b20默认的12位数据存储格式,对应的温度采集精度为0.0625℃。
由于at89s52本身没有单总线功能,所以需要使用两个普通io口模拟单总线通信时序与ds18b20进行数据交换,本组采用p2.3, p2.2
3.温度值显示。
通过串口,把收集到的温度值连同要求的格式,以字符串的形式发送到pc端,用串口调试助手显示。用单片机的定时器0(工作方式0)作发送数据的中断,用定时器1(工作方式1)作串口的中断。
三、效果图。
四、原理图。
五、程序流程图。
六、源程序。
#include <>
#include <>
#include<>
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit ds=p2^2温度传感器1信号线。
sbit dss=p2^3温度传感器2信号线。
uchar buff1[5],buff2[5],buff3[5]; 发到pc的3个温度值。
uchar *p;
uint temp,time,flag,c,m;
float f_temp;
uint temps;
float f_temps;
uint atemp;
延时函数。void delay(uint z)//延时函数。
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
第一个传感器。
第一个温度传感器初始化。
void dsreset(void) /18b20复位,初始化函数。
uint i;
ds=0;i=103;
while(i>0)i--;
ds=1;i=4;
while(i>0)i--;
从第一个温度传感器读出一个字节。
bit tempreadbit(void) /读1位函数。
uint i;
bit dat;
ds=0;ii++ 起延时作用。
ds=1;i++;i++;
dat=ds;
i=8;while(i>0)i--;
return (dat);
uchar tempread(void) /读1个字节。
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
return(dat);
给第一个温度传感器写一个字节。
void tempwritebyte(uchar dat) /向18b20写一个字节数据。
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)else
从第一个温度传感器获取温度并转换。
void tempchange(void) /ds18b20 开始获取温度并转换。
dsreset();
delay(1);
tempwritebyte(0xcc); 写跳过读rom指令。
tempwritebyte(0x44); 写温度转换指令。
uint get_temp读取寄存器中存储的温度数据。
uchar a,b;
dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread读低8位。
b=tempread读高8位。
temp=b;
temp<<=8两个字节组合为1个字。
temp=temp|a;
f_temp=temp*0.0625; /温度在寄存器中为12位分辨率位0.0625°
temp=f_temp*10+0.5; /乘以10表示小数点后面只取1位,加0.5是四舍五入。
f_temp=f_temp+0.05;
return temptemp是整型。
第二个传感器(原理同上。
第二个温度传感器初始化。
void dssreset(void) /18b20复位,初始化函数。
uint i;
dss=0;
i=103;
while(i>0)i--;
dss=1;
i=4;while(i>0)i--;
从第二个温度传感器读出一个字节。
bit tempsreadbit(void) /读1位函数。
uint i;
bit dat;
dss=0;ii++ 起延时作用。
dss=1;i++;i++;
dat=dss;
i=8;while(i>0)i--;
return (dat);
uchar tempsread(void) /读1个字节。
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
return(dat);
给第二个温度传感器写一个字节。
void tempswritebyte(uchar dat) /向18b20写一个字节数据。
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)else
dss=0写 0
i=8;while(i>0)i--;
dss=1;
i++;i++;
单片机课程设计报告
单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....
单片机课程设计报告
韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...
单片机课程设计报告
南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...