数字温度计的设计与制作实验报告

重庆邮电大学通信与信息工程学院

班级 GJ011201 小组成员 徐睿 2012210460 李易晓 2012210057 张地根 2012210114 指导老师 邓炳光

数字温度计的设计与制作实验报告

设计要求

1,数字温度计设计与制作:利用之前绘制的“C51 学习板”掌握的 SCH 和 PCB 图知识, 绘制一个基于 STC89C51 的单片机系统, 增加温度采集 0~120 度, 温度显示要求 3 位整数 +1 位小数,电路原理图和 PCB 图 2,SCH 必须按照规范进行绘制。 3,系统还要求具备电源指示灯,外部使用 MINI-USB 进行 5V 供电,在满足要求的情况下, 使用的元器件越少越好;温度采集可以用模拟或数字器件、显示可以用 LCD 或数码管。 4,PCB 板要求使用底层走线,元器件在顶层。 5,PCB 板上标识自己的学号、姓名。 6,PCB 板大小,满足元器件布局的情况下,尽可能减少面积。 7,PCB 审查正确后,进行单面板腐蚀的相关操作:热转印、腐蚀、钻孔、裁剪等。 元器件自行购买,然后焊接,调试,编写单片机程序,完成设计报告。

设计步骤

一 主要原器件的选择

控制模块:STC89C52 温度采集模块:DS18B20 显示模块:8 位共阴数码管

二 原理图的绘制

1 新建一个工程,在 Altium Designer 软件中的“File”选项中选择“New→Project→PCB project” ,然后保存工程至文件夹中(文件名定义要规范) 。 2 纸张配置,在 Design 选项中单击左键,选择 Document Options 项,然后根据原理图 的要求选择合适的配置。 3 展开工程管理标签、元器件库。 4 填写图纸信息。 (项目名称、图纸名称、版本、序号、作者。 ) 5 元器件绘制。 1)创建元件库; 2).绘制元器件; 3)完善元器件属性;

6.修改元器件名字; 7. 同一个库中增加其他元器件; 8.打开原理图库管理标签。 1)元器件放置。 2)元器件摆放、连线。 (按格点对齐。 ) 3)修改元器件值。 4)完成图纸。 5)生成 Bom 表。

三 PCB 图绘制

1)封装设计。 1. 确定需要做的 PCB 封装。 2.获取 PCB 封装物理尺寸。 3.创建 PCB 封装文件。 4.创建 PCB 封装。 5.绘制 PCB 封装。 2)绘制 PCB 图。 1.创建 PCB 图。 2.绘制板型:选择 Keep-Out Layer,调整格点、重新定位原点、绘制轮廓线。 3.导入元器件。 4.摆放元器件。 5.走线:底层走线:Bottom Layer,处理全部与拉线。 6.规则检查:Tools/Design Rule Check。 7.排除错误。 8.调整丝印,加板名称,调整线宽。

四 制作板子

·单面板腐蚀 ·热转印 1.准备热转印纸:A4 大小 2.打印 PCB 图:至热转印纸的光滑面 3.裁剪单面板:根据图像大小 4.打磨单面板覆铜面:去除表面氧化膜 5.进行热转印 1)将热转印纸的光滑面与单面板覆铜面紧密贴合并用胶带固定; 2)送至热转印机反复加热。 6

.检查:如有断线处用马克笔填补 ·腐蚀

1.勾兑腐蚀剂 2.进行腐蚀 1)将热转印完成的单面板置于装有腐蚀剂的容器中; 2)轻轻摇晃容器 5-10 分钟至腐蚀完全。 ·钻孔 1.钻孔:根据图像进行钻孔,注意钻孔力度适中、位置准确 2.清洗:砂纸打磨去除铜面黑色石墨覆盖层并冲洗。 ·焊接 1.准备元器件:自行购买 2.装载元器件 3.进行焊接:注意焊点准确 四 导入程序并进行调试 程序设计流程图 开始

系统初始化

开中断 Int0=0? Y

N 温度测量

温度上下限设定

温度测量

显示系统

五 实验总结

在画原理图的时候,我们要正确找到引脚,和摆放引脚的位置,各器件也要一一对应,切不 可弄错了,画完后,我们要进行封装,封装的时候我要注意各器件的值,要确保每一步骤都 正确无误,直至画 pcb 的图,进行 pcb 的图绘制的时候,我们要正确布线,确保每一布线 都不会交叉或者合在一块的情况,保证电路的正确运行。 出现的问题及解决:封装时没有正确封装,导致器件不行,最后经过检查进行纠正了 布线时,线会有一些不合理走位的情况,怕会影响电路运作,所以在有个地方的走线,我们 选择了飞线解决了这一问题。 第一次导入程序的时候, 电源指示灯没亮, 但是我们把板子上的电源指示灯拆下, 重新装上, 第二次就可以使用了。

六 附件图

Bom 表

SCH 图

PCB

程序

#include //包含单片机寄存器的头文件 #include //包含_nop_()函数定义的头文件 #define uchar unsigned char #define uint unsigned int uchar code dispcode1[]={0xfa,0x82,0xb9,0xab,0xc3, 0x6b,0x7b,0xa2,0xfb,0xeb}; //0~9 共阴显示子码 uchar code dispcode2[]={0xfe,0x86,0xbd,0xaf,0xc7, 0x6f,0x7f,0xa6,0xfe,0xee}; //0~9 的小数点共阴显示子码

/******************************************************************** 以下是 DS18B20 的操作程序 ********************************************************************/ sbit DQ=P1^0; unsigned char time; 函数功能:延时 1ms (3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是 1 毫秒 ***************************************************/ void delay1ms() //设置全局变量,专门用于严格延时 /*****************************************************

{ unsigned char i,j; for(i=0;i

高拉低,要求保持 480~960us //以向 DS18B20 发出一持续 480~960us 的低电平复位脉冲 //释放数据线(将数据线拉高) for(time=0;time

for(time=0;time

for(time=0;time

出口参数:dat ***************************************************/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat; //储存读出的一个字节数据 for (i=0;i>=1; _nop_(); DQ = 1; 备 for(time=0;time

/***************************************************** 函数功能:做好读温度的准备 ***************************************************/ void ReadyReadTemp(void) { Init_DS18B20(); //将 DS18B20 初始化 WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 for(time=0;time

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位 } /***************************************************** 函数功能:主函数 ***************************************************/ void main(void) { unsigned char TL; unsigned char TH; unsigned char TN; unsigned char TD; delaynms(5); while(1) { ReadyReadTemp(); TL=ReadOneChar(); TH=ReadOneChar(); TN=TH*16+TL/16; TH*16+TL/16 //这样得出的是温度的整数部分,小数部分被丢弃了 TD=(TL%16)*10/16; 整, //这样得到的是温度小数部分的第一位数字(保留 1 位小数) //计算温度的小数部分,将余数乘以 10 再除以 16 取 //读温度准备 //先读的是温度值低位 //接着读的是温度值高位 // 实 际 温 度 值 =(TH*256+TL)/16, 即 : //储存暂存器的温度低位 //储存暂存器的温度高位 //储存温度的整数部分 //储存温度的小数部分 //延时 5ms 给硬件一点反应时间 //不断检测并显示温度

P2=0xf7; P0=dispcode1[TD]; display_temp1(TN); delaynms(1); } } //显示小数部分 //显示温度的整数部分

重庆邮电大学通信与信息工程学院

班级 GJ011201 小组成员 徐睿 2012210460 李易晓 2012210057 张地根 2012210114 指导老师 邓炳光

数字温度计的设计与制作实验报告

设计要求

1,数字温度计设计与制作:利用之前绘制的“C51 学习板”掌握的 SCH 和 PCB 图知识, 绘制一个基于 STC89C51 的单片机系统, 增加温度采集 0~120 度, 温度显示要求 3 位整数 +1 位小数,电路原理图和 PCB 图 2,SCH 必须按照规范进行绘制。 3,系统还要求具备电源指示灯,外部使用 MINI-USB 进行 5V 供电,在满足要求的情况下, 使用的元器件越少越好;温度采集可以用模拟或数字器件、显示可以用 LCD 或数码管。 4,PCB 板要求使用底层走线,元器件在顶层。 5,PCB 板上标识自己的学号、姓名。 6,PCB 板大小,满足元器件布局的情况下,尽可能减少面积。 7,PCB 审查正确后,进行单面板腐蚀的相关操作:热转印、腐蚀、钻孔、裁剪等。 元器件自行购买,然后焊接,调试,编写单片机程序,完成设计报告。

设计步骤

一 主要原器件的选择

控制模块:STC89C52 温度采集模块:DS18B20 显示模块:8 位共阴数码管

二 原理图的绘制

1 新建一个工程,在 Altium Designer 软件中的“File”选项中选择“New→Project→PCB project” ,然后保存工程至文件夹中(文件名定义要规范) 。 2 纸张配置,在 Design 选项中单击左键,选择 Document Options 项,然后根据原理图 的要求选择合适的配置。 3 展开工程管理标签、元器件库。 4 填写图纸信息。 (项目名称、图纸名称、版本、序号、作者。 ) 5 元器件绘制。 1)创建元件库; 2).绘制元器件; 3)完善元器件属性;

6.修改元器件名字; 7. 同一个库中增加其他元器件; 8.打开原理图库管理标签。 1)元器件放置。 2)元器件摆放、连线。 (按格点对齐。 ) 3)修改元器件值。 4)完成图纸。 5)生成 Bom 表。

三 PCB 图绘制

1)封装设计。 1. 确定需要做的 PCB 封装。 2.获取 PCB 封装物理尺寸。 3.创建 PCB 封装文件。 4.创建 PCB 封装。 5.绘制 PCB 封装。 2)绘制 PCB 图。 1.创建 PCB 图。 2.绘制板型:选择 Keep-Out Layer,调整格点、重新定位原点、绘制轮廓线。 3.导入元器件。 4.摆放元器件。 5.走线:底层走线:Bottom Layer,处理全部与拉线。 6.规则检查:Tools/Design Rule Check。 7.排除错误。 8.调整丝印,加板名称,调整线宽。

四 制作板子

·单面板腐蚀 ·热转印 1.准备热转印纸:A4 大小 2.打印 PCB 图:至热转印纸的光滑面 3.裁剪单面板:根据图像大小 4.打磨单面板覆铜面:去除表面氧化膜 5.进行热转印 1)将热转印纸的光滑面与单面板覆铜面紧密贴合并用胶带固定; 2)送至热转印机反复加热。 6

.检查:如有断线处用马克笔填补 ·腐蚀

1.勾兑腐蚀剂 2.进行腐蚀 1)将热转印完成的单面板置于装有腐蚀剂的容器中; 2)轻轻摇晃容器 5-10 分钟至腐蚀完全。 ·钻孔 1.钻孔:根据图像进行钻孔,注意钻孔力度适中、位置准确 2.清洗:砂纸打磨去除铜面黑色石墨覆盖层并冲洗。 ·焊接 1.准备元器件:自行购买 2.装载元器件 3.进行焊接:注意焊点准确 四 导入程序并进行调试 程序设计流程图 开始

系统初始化

开中断 Int0=0? Y

N 温度测量

温度上下限设定

温度测量

显示系统

五 实验总结

在画原理图的时候,我们要正确找到引脚,和摆放引脚的位置,各器件也要一一对应,切不 可弄错了,画完后,我们要进行封装,封装的时候我要注意各器件的值,要确保每一步骤都 正确无误,直至画 pcb 的图,进行 pcb 的图绘制的时候,我们要正确布线,确保每一布线 都不会交叉或者合在一块的情况,保证电路的正确运行。 出现的问题及解决:封装时没有正确封装,导致器件不行,最后经过检查进行纠正了 布线时,线会有一些不合理走位的情况,怕会影响电路运作,所以在有个地方的走线,我们 选择了飞线解决了这一问题。 第一次导入程序的时候, 电源指示灯没亮, 但是我们把板子上的电源指示灯拆下, 重新装上, 第二次就可以使用了。

六 附件图

Bom 表

SCH 图

PCB

程序

#include //包含单片机寄存器的头文件 #include //包含_nop_()函数定义的头文件 #define uchar unsigned char #define uint unsigned int uchar code dispcode1[]={0xfa,0x82,0xb9,0xab,0xc3, 0x6b,0x7b,0xa2,0xfb,0xeb}; //0~9 共阴显示子码 uchar code dispcode2[]={0xfe,0x86,0xbd,0xaf,0xc7, 0x6f,0x7f,0xa6,0xfe,0xee}; //0~9 的小数点共阴显示子码

/******************************************************************** 以下是 DS18B20 的操作程序 ********************************************************************/ sbit DQ=P1^0; unsigned char time; 函数功能:延时 1ms (3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是 1 毫秒 ***************************************************/ void delay1ms() //设置全局变量,专门用于严格延时 /*****************************************************

{ unsigned char i,j; for(i=0;i

高拉低,要求保持 480~960us //以向 DS18B20 发出一持续 480~960us 的低电平复位脉冲 //释放数据线(将数据线拉高) for(time=0;time

for(time=0;time

for(time=0;time

出口参数:dat ***************************************************/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat; //储存读出的一个字节数据 for (i=0;i>=1; _nop_(); DQ = 1; 备 for(time=0;time

/***************************************************** 函数功能:做好读温度的准备 ***************************************************/ void ReadyReadTemp(void) { Init_DS18B20(); //将 DS18B20 初始化 WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 for(time=0;time

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位 } /***************************************************** 函数功能:主函数 ***************************************************/ void main(void) { unsigned char TL; unsigned char TH; unsigned char TN; unsigned char TD; delaynms(5); while(1) { ReadyReadTemp(); TL=ReadOneChar(); TH=ReadOneChar(); TN=TH*16+TL/16; TH*16+TL/16 //这样得出的是温度的整数部分,小数部分被丢弃了 TD=(TL%16)*10/16; 整, //这样得到的是温度小数部分的第一位数字(保留 1 位小数) //计算温度的小数部分,将余数乘以 10 再除以 16 取 //读温度准备 //先读的是温度值低位 //接着读的是温度值高位 // 实 际 温 度 值 =(TH*256+TL)/16, 即 : //储存暂存器的温度低位 //储存暂存器的温度高位 //储存温度的整数部分 //储存温度的小数部分 //延时 5ms 给硬件一点反应时间 //不断检测并显示温度

P2=0xf7; P0=dispcode1[TD]; display_temp1(TN); delaynms(1); } } //显示小数部分 //显示温度的整数部分


相关文章

  • 基于单片机的数字温度计课程设计报告
  • <基于单片机的数字温度计课程设计> 设计报告 设计时间:班 级: 姓 名:报告页数: 广东工业大学课程设计报告 设计题目_基于单片机的数字温度计设计_ 学院_信息工程_专业__应用电子技术_11(3)_班 学号_31110026 ...查看


  • 数字温度计实验报告
  • 工程设计课程报告 数字温度计的设计和制作 姓名: 学号: 2012年6月28日 数字温度计的设计和制作 设计意义 通过对DS18B20数字温度计的设计,使学生通过"简易数字电压表的设计"的设计过程,综合所学课程,掌握目前 ...查看


  • 慧鱼机器人实验报告内容
  • 华北电力大学 综合性实验报告 项目名称:慧鱼创意模型开放实验 课程名称:科技创新实践 实验人员:沙理想 实验时间: 3 测控1201班 [1**********]8 刘 赛 测控1201班 [1**********]5 2015年11月28 ...查看


  • 电子信息类毕业设计课题
  • 电子信息类毕业设计课题 [电子通讯] 出租车计价系统 [过程控制] 基于单片机实现单回路智能调节.. [电子通讯] 脉冲数字频率计 [机床仪表] 仪表机床数控系统的设计(论文.. 磁流体发电论文 [电子通讯] 基于VC++6.0的PC 机与 ...查看


  • 生态学实验报告-最终
  • 生态学实验报告 学 院: 生命科学学院 专业年级: 11级生命科学基地班 实验小组成员: 指导教师: 吴 杏 春 教授 实验时间: 2013-2014学年第二学期 目 录 实 验 一. 校园植物物候观察 ( 2 ) 实 验 二. 柑橘土壤含 ...查看


  • 科研论文格式规范与编写技术
  • 科研论文格式规范与编写技术 <高等学校人文社会科学研究学术规范>(试行) ----对于初入学门者, 规范是参照与矫正标准. ----对于有志于从事学问之道者, 规范是敲门砖, 入场券. ----对于学养缺欠, 学风轻浮者, 规范 ...查看


  • 电子信息工程毕业设计题目大全
  • 1 压力容器液位测量 2 多功能遥控小车 3基于RS232的仓库多点温度.湿度.气 4压检测系统 5自动控制升降旗系统 6基于RS485的温度报警系统 7基于模糊算法的水温控制系统的设计 8多分机电话交换机 9简易火灾自动报警系统 10基于 ...查看


  • 多位数码管动态显示
  • [006]多位数码管动态显示 [51] 点击数:2102 发布日期:2006-4-16 16:04:00 [收藏] [评论] [打印] [编程爱好者论坛] [关闭] 实验目的:数码管动态显示多位数字. 实验参考:笨笨工作室 实验五.多位数码 ...查看


  • Aahjzy10届电子信息技术专业毕业论文指导书
  • 生命是永恒不断的创造,因为在它内部蕴含着过剩的精力,它不断流溢,越出时间和空间的界限,它不停地追求,以形形色色的自我表现的形式表现出来. --泰戈尔 本文由605735929贡献 doc文档可能在WAP端浏览体验不佳.建议您优先选择TXT, ...查看


热门内容