数字温度计单片机课程设计论文zwlWord格式.docx
- 文档编号:17896520
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:15
- 大小:1.08MB
数字温度计单片机课程设计论文zwlWord格式.docx
《数字温度计单片机课程设计论文zwlWord格式.docx》由会员分享,可在线阅读,更多相关《数字温度计单片机课程设计论文zwlWord格式.docx(15页珍藏版)》请在冰豆网上搜索。
目录
第一部分课程设计任务书3
第二部分课程设计5
一、方案比较与论证5
1.1系统结构框图5
1.2方案比较5
二、硬件设计6
2.1STC89C52单片机6
2.2温度采集电路6
2.3温度显示电路7
2.4报警电路7
2.5键盘控制电路7
三、软件设计7
1.主程序7
2.子程序8
四、调试及仿真8
1.用Keil软件调试程序8
2.用protues进行仿真9
五、结果及总结9
附录10
1.电路原理图10
2.主程序10
3.作品图12
参考文献13
第一部分课程设计任务书
2013~2014学年第2学期
学生姓名:
专业班级:
电子信息工程2011级
(1)班
指导教师:
李玉平、王海华工作部门:
电信学院基础教研室
一、课程设计题目:
单片机课程设计
1.简易心率检测仪
6.遥控开关
2.电子时钟的设计
7.抢答器的设计
3.跑马灯的控制设计
8.交通信号灯的控制设计
4.数字式温度计设计
9.多路数据采集系统
5.数字式电压表设计
10自选
二、课程设计内容
1.根据具体设计课题的技术指标和给定条件,以单片机为核心器件,能独立而正确地进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整;
2.熟悉、掌握各种外围接口电路芯片的工作原理和控制方法;
3.熟练使用单片机汇编语言进行软件设计;
4.熟练使用Proteus、Keil软件进行仿真电路测试;
5.熟练使用Protel软件设计印刷电路板;
6.学会查阅有关参考资料和手册,并能正确选择有关元器件和参数;
7.编写设计说明书,参考毕业设计论文格式撰写设计报告。
注:
详细要求和技术指标见附录。
三、进度安排
1.时间安排
序号
内容
学时安排(天)
1
方案论证和总体设计
2
硬件设计
3
软件设计
4
仿真测试及PCB设计
5
撰写和打印设计报告
合计
10
设计指导答辩地点:
K2——407仿真实验室
2.执行要求
单片机应用系统设计与制作多个选题,每组不超过6人,为避免雷同,在设计中每个同学所采用的方案不能一样。
四、基本要求
(1)根据要求确定系统设计方案;
(2)绘制系统框图、系统原理总图,印刷电路板图,列出元器件明细表;
(3)计算电路参数和选择元器件,画出软件框图,列出程序清单;
(4)仿真,测试与修改调整;
(5)误差分析与调整;
(6)写出使用说明书;
(7)对设计进行全面总结,写出课程设计报告。
五、课程设计考核办法与成绩评定
根据过程、报告、答辩等确定设计成绩,成绩分优、良、中、及格、不及格五等。
评定项目
基本内涵
分值
设计过程
考勤
10分
答辩
回答问题情况
20分
实物测试
正常无故障运行
40分
设计报告
完成设计任务、报告规范性等情况
30分
90~100分:
优;
80~89分:
良;
70~79分:
中;
60~69分,及格;
60分以下:
不及格
第二部分课程设计
一、方案比较与论证
1.1系统结构框图
1.2方案比较
方案一:
本次设计的是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。
其结构框图如下,这种设计需要用到A/D转换电路,感温电路,所以制作过程比较麻烦。
方案二:
使用温度传感器DS18B20。
在单片机电路设计中,大多都是使用传感器,这样可以使设计和制作过程变得相对简单,所以可以采用一只温度传感器DS18B20。
此传感器可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,不涉及到热敏电阻类元件,也不需要用到AD转换电路,程序设计也比较简单,所以采用方案二
二、硬件设计
2.1STC89C52单片机
单片机AT89c52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用。
2.2温度采集电路
温度采集电路采用了温度传感器DS18B20,此温度传感器会将采集到的外界环境温度转化成数字信号,并通过引脚传送到单片机,DS18B20在与单片机连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
与之对应的电路图如下:
DS18B20使用时,读取温度时共读取16位,前5个位为符号位,当前5位为1时,读取的温度为负数;
当前5位为0时,读取的温度为正数。
温度为正时读取方法为:
将16进制数转换成10进制即可。
温度为负时读取方法为:
将16进制取反后加1,再转换成10进制即可。
DS18B20可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,测量温度范围为-55℃~+125℃,本次设计采用的精度为0.25℃。
2.3温度显示电路
此设计采用的是LCD1602作为显示器件,LCD1602液晶显示器可以显示两行,每行可以显示16个字符。
单片机将DS18B20采集到的数据进行处理后,通过LCD1602显示。
其对应的电路图如下:
LCD1602显示的时候,通过RS的RW两个引脚的组合,可以实现数据的读写和地址的读写,本次设计用LCD1602作为显示器,则只用写地址和写数据就可以了,也就是RS和RW为0,0或者为1,0。
D0到D7为8个数据端,可以双向传输数据。
VEE为对比度调整端口,一般接一个10K的滑动变阻器,通过调滑动变阻器来改变VEE的电压(0到5V),从而达到调整对比度的目的。
E为使能端,接高电平时LCD1602才能正常工作。
2.4报警电路
如果当前温度超出了所设定的范围,则会启动报警电路报警,报警电路图如下:
2.5键盘控制电路
温度的显示范围可以通过键盘调整,有四个按键,分别控制温度上限的加减和温度下限的加减。
三、软件设计
程序设计主要包括主程序,温度读取子程序,温度转换子程序以及温度显示子程序等。
1.主程序
主程序流程图如下:
主程序中main()函数如下:
main()
{while
(1)
{if(THInc==0){delay(20000);
if(THInc==0)TH=TH+1;
}
if(THDec==0){delay(20000);
if(THDec==0)TH=TH-1;
}
if(TLInc==0){delay(20000);
if(TLInc==0)TL=TL+1;
if(TLDec==0){delay(20000);
if(TLDec==0)TL=TL-1;
pt=ReadTemperature(TH,TL,0x3f);
//温度上限,下限,分辨率10位
covert1();
//将温度转换为LCD显示的数据
if(TL<
=tempCmp&
&
tempCmp<
=TH)BJ=1;
elseBJ=0;
covert0(TH,TL);
//将温度上下限转换为LCD显示的数据
LCD_Initial();
//第一个参数列号,第二个为行号,为0表示第一行,为1表示第二行
LCD_Print(0,0,TempBuffer0);
//1602第一行显示
LCD_Print(0,1,TempBuffer1);
}//1602第二行显示
2.子程序
子程序包括DS18B20子程序,LCD1602子程序等,通过主程序调用子程序来完成此设计的功能。
四、调试及仿真
1.用Keil软件调试程序
2.用protues进行仿真
五、结果及总结
本次单片机课程设计是关于数字式温度计的设计与制作,无论是从硬件方面还是从程序方面来讲,这次课程设计都很成功。
当老师说这两周要做课程设计的时候,感觉很茫然,特别是把课程设计题目定下来之后,不知道从哪里开始。
接着就是从网上找资料,查找一些关于课程设计的方法及步骤。
先从硬件做起,把实际电路先焊接好,然后写程序,最后进行调试。
在制作过程中,遇到了一些问题,硬件软件问题都有,但在调试的过程中,将这些问题一一排除了,最后得到了完美的结果。
课程设计是一个很考验动手能力的实践,它不仅需要你所学到的理论知道,更需要的是你怎样才能正确地运用它,对于我们理工科的同学来说,不仅要从书本上获取知道,更多的时候要学会怎么去运用它,得多动手,要从感性的理性两方面获取知识。
此课程设计的制作,让我收获很多,一方面是把理论与实际相结合,另一方面,完美的结果给我在学习过程中增加了信心。
附录
1.电路原理图
2.主程序
#include<
reg51.h>
//用AT89C52时就用这个头文件
absacc.h>
ctype.h>
math.h>
stdio.h>
string.h>
DS18B20.h>
#include"
LCD1602.h"
//液晶显示头文件
//sbitDQ=P3^4;
//定义DQ引脚为P3.4
sbitTHInc=P1^4;
sbitTHDec=P1^5;
sbitTLInc=P1^6;
sbitTLDec=P1^7;
sbitBJ=P2^3;
charTH=40,TL=-20;
//通过这两个变量,调节上下限
floattempCmp=0;
unsignedchart[2],*pt;
//用来存放温度值
unsignedcharTempBuffer0[16]={0x54,0x48,0x3a,0x2b,0x31,0x32,0x35,0x20,0x54,0x4c,0x3a,0x2b,0x31,0x32,0x34,'
\0'
};
//显示温度上下限
unsignedcharTempBuffer1[16]={0x2b,0x31,0x32,0x32,0x2e,0x30,0x30,0xdf,0x43,'
'
'
0xfe};
//显示实时温度
unsignedcharcodedotcode[4]={0,25,50,75};
voidcovert1(void)//将温度转换为LCD显示的数据
{unsignedcharx=0x00,y=0x00;
t[0]=*pt;
pt++;
t[1]=*pt;
if(t[1]>
0x07)//判断正负温度
{TempBuffer1[0]=0x2d;
//0x2d为"
-"
的ASCII码
t[1]=~t[1];
/*下面几句把负数的补码*/
t[0]=~t[0];
/*换算成绝对值*********/
x=t[0]+1;
t[0]=x;
/***********************/
if(x>
255)t[1]++;
}/*********************/
elseTempBuffer1[0]=0x2b;
//0xfe为变"
+"
t[1]<
<
=4;
//将高字节左移4位
t[1]=t[1]&
0x70;
//取出高字节的3个有效数字位
x=t[0];
//将t[0]暂存到X,因为取小数部分还要用到它
x>
>
//右移4位
x=x&
0x0f;
//和前面两句就是取出t[0]的高四位
t[1]=t[1]|x;
//将高低字节的有效值的整数部分拼成一个字节
TempBuffer1[1]=t[1]/100+0x30;
//+0x30为变0~9ASCII码
if(TempBuffer1[1]==0x30)TempBuffer1[1]=0xfe;
//百位数消隐
TempBuffer1[2]=(t[1]%100)/10+0x30;
//十位
TempBuffer1[3]=(t[1]%100)%10+0x30;
//个位
t[0]=t[0]&
0x0c;
//取有效的两位小数
t[0]>
=2;
//左移两位,以便查表
y=dotcode[x];
//查表换算成实际的小数
TempBuffer1[5]=y/10+0x30;
//十分位
TempBuffer1[6]=y%10+0x30;
//百分位
}
voiddelay(unsignedinti)
{while(i--);
3.作品图
参考文献
[1]
何立明.
MCS-51单片机应用系统设计(系统配置与接口技术)[M].
北京:
北京航空航天大学出版社,
2003.
[2]
李广弟,
朱月秀,
王秀山.
单片机基础[M].
2001.7.
[3]
康华光.
电子技术基础(模拟部分)(第五版)[M].
武汉:
华中科技大学出版社,
2007.
[4]
王毅.
单片机器件应用手册[M].
人民邮电出版社,
1995.
[5]
孙育才,苏学成.单片微型计算机应用系统设计与实现[M].南京:
东南大学出版社,1990.11
[6]
陈嘉庆等.多国单片机实用技术.<
微计算机信息>
编辑部,1992.
[9]
吴微,文军.单片机原理与制作[M].武汉:
武汉大学出版社,1991.3
[7]
李勋,林广艳.单片微型计算机大学读本[M].北京:
北京航空航天大学出版社,1998.8
[8]
付家才.单片机控制工程实践基础[M].北京:
化学工业出版社,2003.2
[12]
A
Baker'
s
Dozen:
Real
Analog
Solutions
for
Digital
Designers[J].
Bonnie
Baker(美),李喻奎
译.2006.8.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度计 单片机 课程设计 论文 zwl