单片机课程设计报告

发布 2022-10-06 08:03:28 阅读 7498

单片机课程设计实验报告。

班级:学号:

姓名: 一、 题目

题号: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 二 课程设计...