汽车温度监控系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

桂林电子科技大学信息科技学院《汽车微控制器应用》实训报告

学号

姓名

指导教师:

实训题目:汽车温度监控系统设计

1 系统设计

1.1 设计要求 1.1.1 设计任务

用温度传感器(18B20)进行温度采集,实现汽车温度监控。

1.1.2 性能指标要求

(1) 用温度传感器(18B20)进行温度测量,并显示温度值。 (2) 设计风扇驱动电路。

(3) 通过按键设置温度报警值,超过设置温度可发出声光报警。 (4) 超过设置温度可自动开启风扇,温度越高,风扇转速越快。 (5)

其他创新功能。

1.2 设计思路及设计框图 1.

2.1设计思路

使用DS18B20进行温度采集,使用L9110H 控制风扇运作,使用两个按键分别控制温度额定值的加减,PWM 调节风扇速度。

1.2.2总体设计框图

2 各个模块电路及程序的设计

测温部分:

按键输入

MC9S12XS 单片机 控制器

PWM 调速

数码管显示

温度传感器

void display_buff(void)

{

int dat ;

Start_DS18B20(); //启动温度转换

wd=Get_Temp(); //读取温度

dat=wd/16;

if(dat<80)shice=dat;

disbuff_tab[2]=shice%10;

disbuff_tab[3]=shice/10;

disbuff_tab[5]=set%10;

disbuff_tab[6]=set/10;

}

风扇部分:

void PWM_Init(void) //PWM初始化

{

PWME=0x00; //禁止模块

PWMPRCLK=0x03; //分频因子8分频

PWMSCLA=50; //SA的分频因子设定植0~255 PWMCLK=0x02; //通道1

PWMPER1=200; //通道1周期系数200

PWMDTY1=0; //占空比

PWMPOL=0x01;

PWMPOL_PPOL1=1;

PWMCAE=0x00; //左对齐

PWMCTL=0x00; //不级联

PWME=0X02; //使能通道1 }

按键部分:

void scan_anjian(void)

{

if(k1==0)

{delay(500);

if(k1==0)

{

set++;

if(set>90)set=90;

}

}

if(k2==0)

{delay(500);

if(k2==0)

{

set--;

if(set<5)set=5;

}

}

}

3 调试过程

首先,检查电路板是否连对,是否有焊错的地方,用万用表测量各VCC与GND之间是否导通,检查无误后接通电路,查看电源指示灯是否亮起。其次,程序每编写完一个模块编译一次,查看是否通过,并验证程序功能是否实现。最后,接通实验箱连接电路板下载程序,查看风扇是否随温度的变化而变化,数码管是否能正常显示额定温度与实测温度。

4 功能测试

4.1 测试仪器与设备

万用表,计算机,飞思卡尔实验箱。

4.2 性能指标测试

(1)用温度传感器(18B20)进行温度测量,能正常显示温度值。

(2)风扇能正常运转。

(3)可通过按键设置温度报警值。

(4)超过设置温度可自动开启风扇,温度越高,风扇转速越快。

4.3 误差分析

采样精确度低,仪器间不精密都是造成误差的原因。

5 实训心得体会

通过这次实训,让我更加深入的了解了飞思卡尔MC9S12XS128单片机,也让我认识了温度传感器DS18B20和电机驱动芯片L9110H。这次实训不仅加强了我们的动手能力,还让我们学到了一些基本的编程能力,其中PWM通道时钟周期与分频因子间的计算关系是让我最混乱的,在反复计算与换算后也终于弄懂了。

6 参考文献

[1] 谢自美.电子线路设计·实验·测试(第二版).武汉:华中科技大学出版社,2000

[2]张阳.单片机原理及嵌入式系统开发.电子工业出版社,2013

[3]潘新民.微型计算机控制技术(第二版).电子工业出版社,2011

附录

附录1:原理图,实物图

附录2:程序清单

#include

#include "derivative.h"

#include "CRG.h"

#include "DS18B20.h"

#define k1 PORTB_PB1

#define k2 PORTB_PB2

#define k1_dir DDRB_DDRB0

#define k2_dir DDRB_DDRB1

#define uchar unsigned char

const uchar smg_tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; const uchar wx_tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

uchar disbuff_tab[8];

static int wd;

unsigned static int shice;

uchar set=25;

void SetBusCLK_32M(void);

void delay(long t)

{

unsigned static int x,y;

for(x=0;x

for(y=1000;y>0;y--);

相关文档
最新文档