PCB 单片机 温度报警.docx

上传人:b****4 文档编号:5519843 上传时间:2023-05-08 格式:DOCX 页数:14 大小:112.65KB
下载 相关 举报
PCB 单片机 温度报警.docx_第1页
第1页 / 共14页
PCB 单片机 温度报警.docx_第2页
第2页 / 共14页
PCB 单片机 温度报警.docx_第3页
第3页 / 共14页
PCB 单片机 温度报警.docx_第4页
第4页 / 共14页
PCB 单片机 温度报警.docx_第5页
第5页 / 共14页
PCB 单片机 温度报警.docx_第6页
第6页 / 共14页
PCB 单片机 温度报警.docx_第7页
第7页 / 共14页
PCB 单片机 温度报警.docx_第8页
第8页 / 共14页
PCB 单片机 温度报警.docx_第9页
第9页 / 共14页
PCB 单片机 温度报警.docx_第10页
第10页 / 共14页
PCB 单片机 温度报警.docx_第11页
第11页 / 共14页
PCB 单片机 温度报警.docx_第12页
第12页 / 共14页
PCB 单片机 温度报警.docx_第13页
第13页 / 共14页
PCB 单片机 温度报警.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PCB 单片机 温度报警.docx

《PCB 单片机 温度报警.docx》由会员分享,可在线阅读,更多相关《PCB 单片机 温度报警.docx(14页珍藏版)》请在冰点文库上搜索。

PCB 单片机 温度报警.docx

PCB单片机温度报警

 

信息科学与技术部

 

生产实习报告

 

专业:

自动化

姓名:

班级:

自动化班

学号:

指导教师:

 

2011-6-22至2011-7-1

 

一实习目的:

一.掌握单片机的硬件知识及设计方法,掌握汇编语言软件程序设计技能。

二.增加对电子工艺的感性认识,熟悉电子产品的设计、装配、生产制造工艺及过程。

三.学习现代电子设计与制造,锡焊接技术和PCB板的设计电子产品设计等基础知识。

二实验内容

根据图纸通过计算机软件设计单片机的原理图并生成PCB封装图,从中了解单片机中所需的原件及构造,然后根据教师供的元器件和电路板进行实际焊接,从中体会单片机的原理和构造,设计温度报警实验的程序,并在焊接完成的电路板上实现。

1)通过DXP2004软件设计的原理图如下

1发光二极管

2数码管

3串行接口

4按键输入

5音响接口

6字符型液晶接口

2通过DXP2004软件设计的PCB封装图如下

(附件1)

3焊接电路板

在焊接前认真对照单片机开发板原理图,仔细查看引述电路板,找到对应元件的功能区后,开始准备原件和工具。

下面详细叙述焊接步骤

第一步了解安全用电常识

1人身和设备安全

2用电安全技术

3电子装接操作安全

4触电急救与电气消防常识

第二步掌握焊接技术基础

1锡焊常用工具及材料

2手工锡焊接工艺知识

3手工锡焊的基本操作方法

4锡焊接质量控制及缺陷分析处理方法

5简介工业生产锡焊技术

第三步识别与检测元器件

1电抗原件

2机电原件

3半导体分立元件

4集成电路原件

5元器件的标注方法

6元件的检测筛选分类定位

第四步调试与检测技术

1调试与检测基础

2调试与检测安全

3调试技术

4故障分析检测方法

第五步单片机试验板系统的基本原理装配要求调试方法

1电子产品的基本电路原理

2电子技术文件的识读

3电子产品的装配工艺及流程

4电子产品的调试检测及故障分析排出步骤与方法

第六步故障排除

调试之后喇叭不响查看电容是否焊接好。

数码管不量查看是否虚接,焊接是否好。

流水灯有一个不亮查看灯是否焊接好,是否坏了。

4通过C语言编程的温度报警实验程序如下

#include

#include"18b20.h"

#defineDataPortP1

#definewxP3

#defineOVERTEMP30

sbitLATCH1=P2^2;

sbitLATCH2=P2^3;

sbitspk=P2^0;

voiddelay(intt)

{intx,y;

for(x=0;x

for(y=0;y<255;y++)

;

}

 

bitReadTempFlag;

unsignedcharcodedofly_DuanMa[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//显示段码值0~9

unsignedcharcodedofly_WeiMa[]={0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码

unsignedcharTempData[8];//存储显示值的全局变量

 

voidDisplay(unsignedcharFirstBit,unsignedcharNum);//数码管显示函数

voidInit_Timer0(void);//定时器初始化

voidmain(void)

{

unsignedintTempH,TempL,temp;

Init_Timer0();

while

(1)//主循环

{

 

if(ReadTempFlag==1)

{

ReadTempFlag=0;

temp=ReadTemperature();

 

TempH=temp>>4;

TempL=temp&0x0F;

TempL=TempL*6/10;//小数近似处理

if(TempH>OVERTEMP)//如果超温则提示

{

ET1=1;

ET0=0;

DataPort=0xff;

 

wx=0xff;

 

delay(100);

ET0=1;

}

else

{

ET1=0;ET0=1;

}

if(TempH/100==0)

TempData[0]=0;

else

TempData[0]=dofly_DuanMa[TempH/100];//十位温度

if((TempH/100==0)&&((TempH%100)/10==0))//消隐

TempData[0]=0;

else

TempData[0]=dofly_DuanMa[(TempH%100)/10];//十位温度

TempData[1]=dofly_DuanMa[(TempH%100)%10]&0x7f;//个位温度,带小数点

TempData[2]=dofly_DuanMa[TempL];

TempData[3]=0xc6;//显示C符号

}

}

}

 

voidDisplay(unsignedcharFirstBit,unsignedcharNum)

{

staticunsignedchari=0;

DataPort=0;

wx=dofly_WeiMa[i+FirstBit];//取位码

;

DataPort=TempData[i];//取显示数据,段码

i++;

if(i==Num)

i=0;

 

}

voidInit_Timer0(void)

{

TMOD=0x11;

EA=1;//总中断打开

ET0=1;//定时器中断打开

TR0=1;

IT0=1;

ET1=0;//定时器中断打开

TR1=1;//定时器开关打开

}

 

voidTimer0_isr(void)interrupt1

{

staticunsignedintnum;

TH0=(65536-2000)/256;//重新赋值2ms

TL0=(65536-2000)%256;

Display(0,4);//调用数码管扫描

num++;

if(num==300)

{

num=0;

ReadTempFlag=1;//读标志位置1

}

}

voidTimer1_isr(void)interrupt3

{

TH1=(65536-800)/256;//重新赋值2ms

TL1=(65536-800)%256;;

spk=!

spk;

}

 

#include"delay.h"

/*------------------------------------------------

uS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下T=tx2+5uS

------------------------------------------------*/

voidDelayUs2x(unsignedchart)

{

while(--t);

}

/*------------------------------------------------

mS延时函数,含有输入参数unsignedchart,无返回值

unsignedchar是定义无符号字符变量,其值的范围是

0~255这里使用晶振12M,精确延时请使用汇编

------------------------------------------------*/

voidDelayMs(unsignedchart)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

 

#include"delay.h"

#include"18b20.h"

/*------------------------------------------------

18b20初始化

------------------------------------------------*/

bitInit_DS18B20(void)

{

bitdat=0;

DQ=1;//DQ复位

DelayUs2x(5);//稍做延时

DQ=0;//单片机将DQ拉低

DelayUs2x(200);//精确延时大于480us小于960us

DelayUs2x(200);

DQ=1;//拉高总线

DelayUs2x(50);//15~60us后接收60-240us的存在脉冲

dat=DQ;//如果x=0则初始化成功,x=1则初始化失败

DelayUs2x(25);//稍作延时返回

returndat;

}

/*------------------------------------------------

读取一个字节

------------------------------------------------*/

unsignedcharReadOneChar(void)

{

unsignedchari=0;

unsignedchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)

dat|=0x80;

DelayUs2x(25);

}

return(dat);

}

/*------------------------------------------------

写入一个字节

------------------------------------------------*/

voidWriteOneChar(unsignedchardat)

{

unsignedchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

DelayUs2x(25);

DQ=1;

dat>>=1;

}

DelayUs2x(25);

}

/*------------------------------------------------

读取温度

------------------------------------------------*/

unsignedintReadTemperature(void)

{

unsignedchara=0;

unsignedintb=0;

unsignedintt=0;

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

DelayMs(10);

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度

a=ReadOneChar();//低位

b=ReadOneChar();//高位

b<<=8;

t=a+b;

return(t);

}

实习收获

在这次生产实习中,我感受颇深,收获颇多,使我见到了很多从课本上没有的元件,增长了实际操作经验,也是第一次把学到东西与现实联系起来。

不仅锻炼了动手能力,也对自己的专业有了更深层的了解,在焊接试验板时由于元件的细小,需要调整好几次才能放对位置,这使我锻炼了自己的耐心,我很珍惜学校为我们安排实习这一理论与现实连接的重要环节。

在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力,还培养了自己对科学和工作一丝不苟的态度,对以后的学习、工作和生活都大有裨益。

实习使我的理论落实到了实际中,弥补了学习上的不足,今后的学习生活中要更加努力,填补知识上的空白。

 

学生:

日期:

2011-6-22至2011-7-1

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2