PCB 单片机 温度报警.docx
- 文档编号:5519843
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:14
- 大小:112.65KB
PCB 单片机 温度报警.docx
《PCB 单片机 温度报警.docx》由会员分享,可在线阅读,更多相关《PCB 单片机 温度报警.docx(14页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PCB 单片机 温度报警 温度 报警