广东工业大学电子综合设计三位半温度计13.docx
- 文档编号:30648452
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:22
- 大小:620.04KB
广东工业大学电子综合设计三位半温度计13.docx
《广东工业大学电子综合设计三位半温度计13.docx》由会员分享,可在线阅读,更多相关《广东工业大学电子综合设计三位半温度计13.docx(22页珍藏版)》请在冰豆网上搜索。
广东工业大学电子综合设计三位半温度计13
课程设计报告
实习名称电子技术综合设计
学院信息工程学院
年级班别
学号
学生姓名
2017年12月04日
《三位半数字显示温度计》
设计报告
设计时间:
2017.11.09~2017.12.04
班级:
姓名:
报告页数:
29页
广东工业大学课程设计报告
设计题目三位半温度数字显示计
学院信息工程专业信息工程班班
学号姓名(合作者)
成绩评定_______
教师签名_______
目录
一、设计任务与要求6
二、设计方案及比较(设计可行性分析)7
三、系统设计总体思路8
四、电路元件清单9
五、各模块工作原理分析10
六、程序代码展示14
七、画出电路原理图及PCB图22
八、产品的制作及调试22
九、实验结果及展示26
十、实验感想28
一、设计任务与要求
•设计任务:
•采用STC89C52单片机、DS18B20传感器、数字显示器设计一个日常温度数字温度计。
•
(一)产品指标及技术要求:
•①温度显示范围:
0℃~50℃;
•②数字显示分辨率:
0.1℃;
•③精度误差≤0.5℃;
•④电路工作电源可在5~9V范围内工作.
二、设计方案及比较(设计可行性分析)
方案一:
基于单片机的数字温度计设计
器件:
单片机,18B20,LED数码管,电阻,晶振,电容。
优点:
温度高低限度可以自由设定、读出温度后实时显示温度能,且可编程提升了装置的扩展性,可为后续功能增加预留空间。
缺点:
单片机需要编程,软硬结合,温度计的调试更为复杂
方案二:
基于LM3芯片与ICL7107数字显示温度计设计
器件:
LM35、ICL7107、电阻、电容、数码管等。
优点:
无需编程,纯硬件设计
缺点:
电路设计复杂,PCB图布线密集,如果制作单层板,需要大量飞线,易造成系统不稳定,以及功能固定。
经过综合比较,方案一虽然需要软硬结合,总体难度大于方案二,但功能强大,而且相对来说在制板难度较小,综合比较我们还是选择方案一。
三、系统设计总体思路
测温电路
单片机以及晶振
数码管显示电路
经分析,将系统分为三个部分,一个是由温度传感器DS18B20组成的检测部分,另一个是由单片机和晶振回路组成的主控分析部分,以及最后用数码管显示器与电阻做的显示模块。
如图所示DS18B20将检测到的数据送到单片机,单片机对接收到的数据进行处理并送到数码管显示,6V电源给各个部分供电。
四、电路元件清单
名称
数量
功能
10K电阻
1
复位电路
4.7K电阻
1
测温模块
1K电阻
4
200R电阻
8
保护数码管
30pf陶瓷电容
2
晶振模块
10uf溶解电容
1
复位电路
PNP三极管8550
4
控制数码管开关
DS18B30温度感应器
1
测温模块
晶振
1
晶振模块
锁紧应
1
STC89C52
1
单片机主控分析
数码管共阻
1
显示模块
五、各模块工作原理分析
本系统由单片机主控电路、DS18B20温度检测模块、LED数码管显示模块3部分组成。
1.STC89C52单片机主控制器件
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核
标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
2.LED数码管显示模块
LED数码管原理图如下所示
下面左图为实验板其中一只数码管,而右图为数码管的内部接法,也就是前面所说的共阳极。
当要其显示“1”时,只需置B与C为低电平,而其它的为高电平;当要显示“2”时,只需置A﹑B﹑G﹑E﹑D为低电平,而其它的为高电平;当要显示“8”时,就除了小数点以外全部为低电平;如此类推。
LED数码管显示方法——“动态扫描”。
什么是动态扫描?
就是所要工作的若干个数码管轮流显示,只要轮流显示的速度足够快,每秒约50次以上,由于人眼的“视觉暂留”特性,看起来就像是连续显示,这样称为动态扫描。
这种显示方式在数码管应用系统中应用得最为广泛
左图为共阳极的动态扫电路,而右图则为电路的工作时序。
下面我们来分析一下动态扫描的工作原理。
在电路中T1﹑T2﹑T3为用作开关作用,当B极dig1﹑dig2﹑dig3为低电平时导通,为高电平时截止,三个电阻为限流电阻。
下面我们从图5-15来理解一下动态扫描的工作原理。
第一:
首先显示个位,在单片机中将dig1置低电平,而dig2与dig3置高电平,所以只有T1导通,而T2与T3则截止,同时在段码a~g中输出相应段码的低电平,那么在数码管中只有个位显示,而相应的十位与百位则没有显示。
第二:
显示十位,在单片机中将dig2置低电平,而dig1与dig3置高电平,所以只有T2导通,而T1与T3则截止,同时在段码a~g中输出相应段码的低电平,那么在数码管中只有十位显示,而相应的个位与百位则没有显示。
第三:
显示百位,在单片机中将dig3置低电平,而dig1与dig2置高电平,所以只有T3导通,而T1与T2则截止,同时在段码a~g中输出相应段码的低电平,那么在数码管中只有百位显示,而相应的个位与十位则没有显示。
3.温度检测模块
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
1.独特的单线接口仅需要一个端口引脚进行通信;
2.多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
3.无须外部器件;
4.可通过数据线供电,电压范围为3.0~5.5V;
5.测温范围从-55度到+125度(从-10度到+85度的精度为±0.5度)
6.零待机功耗;
7.温度以9或12数字;
8.用户可定义报警设置;
9.报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
10.负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20接线图如下所示:
六、程序代码展示
#include
#defineucharunsignedchar
#defineuintunsignedint
uintTT;
/*******************************共阳LED段码表*******************************/
unsignedcharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f,0xbf,0xc6};
ucharcodetab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
/*************************端口定义************************/
sbitDQ=P3^3;//数据传输线接单片机的相应的引脚
/*************************定义全局变量*****************/
unsignedchartempL=0;//临时变量低位
unsignedchartempH=0;//临时变量高位
floattemperature;//温度值
floattemperature2;
/**********************************************************
函数功能:
延时子程序
入口参数:
k
出口参数:
**********************************************************/
voiddelay(unsignedintk)
{
unsignedintn;
n=0;
while(n {n++;} return; } /********************************************************** 函数功能: 数码管扫描延时子程序 入口参数: 出口参数: **********************************************************/ voiddelay1(void) { intk; for(k=0;k<100;k++); } /********************************************************** 函数功能: 数码管显示子程序 入口参数: k 出口参数: **********************************************************/ voiddisplay(intk) { P0=0xff; P2=0xff;//11111111 delay1(); P2=0xfe;//11111110 P0=tab[k/100];//十位在第一位数码管 delay1(); P0=0xff; P2=0xff;//11111110 delay1(); P2=0xfd;//11111101 P0=tab1[k%100/10]; delay1(); P0=0xff; P2=0xff;//11111110 delay1(); //个位在第二位数码管 ////P0=0x7f;//显示小数点 ////delay1(); ////delay1(); // //P2=0xff;//11111110 //delay1(); P2=0xfb;//11111011 P0=tab[k%100%10];//小数位在第三个数码管 delay1(); P0=0xff; P2=0xff;//11111110 delay1(); P2=0xf7; P0=0xc6;//第四位数码管显示C delay1(); P0=0xff; P2=0xff;//11111111 delay1(); } 函数功能: DS18B20初始化子程序 入口参数: 出口参数: **********************************************************/ Init_DS18B20(void) { unsignedcharx=0; DQ=1;//DQ先置高 delay(8);//延时 DQ=0;//发送复位脉冲 delay(85);//延时(>480ms) DQ=1;//拉高数据线 delay(14);//等待(15~60ms) } /********************************************************** 函数功能: 向DS18B20读一字节数据 入口参数: 出口参数: dat **********************************************************/ ReadOneChar(void) { unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=1; delay (1); DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay(4); } return(dat); } /********************************************************** 函数功能: 向DS18B20写一字节数据 入口参数: dat 出口参数: **********************************************************/ WriteOneChar(unsignedchardat) { unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay(5); DQ=1; dat>>=1; } delay(4); } /********************************************************** 函数功能: 向DS18B20读温度值 入口参数: 出口参数: temperature **********************************************************/ ReadTemperature(void) { Init_DS18B20();//初始化 WriteOneChar(0xcc);//跳过读序列号的操作 WriteOneChar(0x44);//启动温度转换 delay(125);//转换需要一点时间,延时 Init_DS18B20();//初始化 WriteOneChar(0xcc);//跳过读序列号的操作 WriteOneChar(0xbe);//读温度寄存器(头两个值分别为温度的低位和高位) tempL=ReadOneChar();//读出温度的低位LSB tempH=ReadOneChar();//读出温度的高位MSB //温度转换,把高低位做相应的运算转化为实际温度 temperature=((tempH*256)+tempL)*0.0625; /*加*/ temperature2=temperature*10+0.5; temperature=temperature2; /*加*/ delay(200); return(temperature); } /********************************************************** 函数功能: 主程序 入口参数: 出口参数: **********************************************************/ voidmain() { floati; while (1) {i=ReadTemperature(); display(i);}} 七、画出电路原理图及PCB图 电路原理图: PCB图: 实物图: 八、产品的制作及调试 产品的制作具体步骤如下: 在网上收集相关芯片的数据以及典型电路,为设计原理图和PCB图做准备。 1、用软件AltiumDesigner完成电路原理图制作,包括元件,封装的,以及寻找元件库,封装库。 2、利用软件AltiumDesigner导入原理图的元器件,并根据原理图进行人工布局布线,布线的线宽以20mil为基准,电源线用30mil. 3、转印。 利用AltiumDesigner导出PCB图的pdf文件,通过打印机在热敏纸上打印出PCB图,用砂纸打磨铜板,去除铜表面的氧化层。 然后将印有电路图的一面热转印纸与铜板压紧并剪去多余的热转印纸,进行五到六次遍不间断的来回加热,通过在高温下将铜版纸上的电路图墨迹粘到铜板上,再检查线路是否清晰,是否联通,用油性马克笔在墨迹不清晰和断路的地方修补并加粗。 4、制版。 首先用水壶把自来水加热,然后用腐蚀药粉与水按一定比例倒入水盆中,调制腐蚀液,水的量以浸没覆铜板为准,腐蚀粉大约四分之一包,然后将敷铜板放入其中,并不断地摇晃盆子加快反应速率。 5、打孔。 利用钻孔机进行打孔。 放置底座的孔要尽量对齐,可以在打孔前画一条直线,若孔口不足放入底座(元器件),则应该换一个大一点的钻头重新钻一遍。 6、将元器件焊接到相应位置,并用万用表检查是否出现断路、短路的情况。 若出现断路,则应该重新焊上;若出现短路,则应该用电烙铁沾上松香使其断路。 7、利用keiluvision软件进行单片机程序编辑,然后将程序下载到单片机中。 8、测试,下载程序至单片机之后,对电路板进行测试工作(对电路板通入5V稳定电压,观察当前室温是否与显示对应。 利用电烙铁靠近温度感应器加热,观察数码管显示变化,记录拍照)。 九、实验结果及展示 常温下 用电烙铁靠近加热,每提高5℃记录数据一次 温度计可以在50℃内正常运行 十、实验感想 从第十周开始上课开题布置设计任务,在十一周和十二周进行设计相关资料的收集,初步完成电路原理图的设计,到十三周将原理图转化为PCB图,将PCB图导出PDF文件,然后转印PCB图,腐蚀覆铜板并打孔,最后将元器件焊入电路板上并烧入程序测试成功。 在这三个星期中也遇到了挺多问题,比如,在设计PCB图自动布线线路太过曲折密集,无法满足实际要求,需要人为布线使之符合要求;在第一次把底座管脚无法顺利插入电路板中,后来才知道底座的孔口需要大一些,换上大一些的钻头重新打钻;再例如数码管只显示8888,无法正常工作,一步一步排查问题,检查电路图是否短路断路,元件是否烧坏,检查代码,最后发现是连接单片机VCC的管脚与电源正极管脚之间断路了。 中间也有些问题反复出现,混淆了问题出处。 万幸最后终于解决了问题。 通过这次课程设计,更加加深了对PCB图的制作过程,也学到了制板的整个过程,也学会了如何运用网上的芯片手册进行原理图的设计。 在完成每一步的过程中也感受到了课程设计带来的快乐,通过设计出的三位半温度计,提升了实验实践能力,培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广东工业大学 电子 综合 设计 三位 温度计 13