课程单片机设计论文Word格式文档下载.docx
《课程单片机设计论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《课程单片机设计论文Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
附录B实物图12
附录C源程序13
数字温度
1引言
此次设计提出了利用STC89C2051单片机为核心控制元件,设计一个简易的数字温度显示器。
本方案以STC89C2051单片机作为主控核心,与温度感应器DS18D20,LED发光二极管,数码管等构成数字温度显示器,利用了单片机的延时电路、复位电路、时钟电路、定时/中断等电路,设计的数字温度显示器,该器件能测出当前温度,并且具有高温报警功能,在温度高于所设定的温度时,LED发光二极管就会亮起提醒温度过高的功能。
本次设计的数字温度显示器具有较高的实用功能,可以用于各个领域的温度测控,操作又相对简单,当按下第一个键位时,数码管上会显示出当前的温度,再次按下第一个键位时数码管会闪烁,此时可以调制我们所需要报警的温度,下面的两个键位,一个是增加温度,另一个是降低温度,如果你设置21℃报警时,当温度超过21℃,LED发光二极管就会亮起显示报警,即实现全部功能。
2功能介绍
它的功能实现:
当我们按下“开关设置键”,按一下是开启温度显示模式,再按一下进入预警温度设置,此时控制“+按键”和“-按键”即可实现预警温度的设置。
当环境温度超过预警温度,启动温度预警功能,此时LED发光二极管得到命令发光预警,即实现全部功能。
功能简明易懂,操作简单,实用性很强。
3设计思路
系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。
硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。
软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;
然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;
最后是对软件进行调试、测试,达到所需功能要求。
在系统设计中设计方法的选用是系统设计能否成功的关键。
硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。
硬件电路的设计最重要的选择用于控制的单片机,并确定与之配套的外围芯片,使所设计的系统既经济又高性能。
硬件电路设计还包括输入输出接口设计,画出详细电路图,标出芯片的型号、器件参数值,据电路图在仿真机上进行调试,发现设计不当及时修改,最终达到设计目的。
软件设计的方法与开发环境选取有着直接的关系,本系统由于是采用STC89C52单片机,使用汇编语言进行开发。
本系统软件设计采用模块化系统设计方法,先编写各个功能模块子程序,然后进行组合与调整,经过调试后,达到设计功能要求。
4 总体设计方案
图4-1 总体电路设计框图
总体程序设计思路图为如图4-1所示。
5硬件电路设计
5.1单片机最小系统
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
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可选。
5.1.1复位电路
复位电路是最小系统的组成部分。
单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路如图5-1所示。
图5-1 复位电路
5.1.2时钟电路
时钟电路是最小系统的组成部分,单片机必须在时钟的驱动下才能工作。
在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
时钟电路如图5-2所示。
图5-2时钟电路
5.2温度感应电路
环境的温度要在数码管上显示出来,首先我们要有一个能感知温度的器件就是我们要用到的温度感应器DS18D20,通过它应对不同的环境温度变换出的不同状态再经过单片机编程模拟出各个状态既可以得到较为准确的当前环境温度。
其电路结构如图5-3所示。
图5-3温服感应电路
5.3独立式按键键盘电路
S1是“开关设置键”,S2是“加按键”,S3是“减按键”其电路如图5-4所示。
图5-4开关按键和设置按键
5.4数码管显示电路
数码显示管用来作为选手号数及时间显示输出,一般用7段数码显示管。
本次设计中采用7段共阳数码管,该数码管应用简单、可靠性高、成本低,作为显示输出。
电路如图5-5所示。
图5-5数码管显示电路
6系统调试
6.1软件调试
1、打开Keil软件后,在Project菜单中选择NewProject命令,打开一个新项目。
保存此项目,输入工程文件名后,并保存工程文件的目录。
2、为项目文件选择目标器件。
3、上述设置好后,创建源程序文件并输入程序代码。
输入好代码后点击“文件/保存”。
4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。
5、开始编译,对项目文件进行编译。
若没有错误后进行硬件调试。
6.2硬件调试
1、按下开关键S1,数码管显示“当前温度”。
与程序代码比较,结果正确。
2、再次按下S2进入预警温度设置模式,数码管闪动显示当前的温度预警温度上限。
3、按下S2加按键预警温度加上1度,之后每次按下一次就加一度依次累加,同理S3减按键每按下一次就减去一度,依次累减,数码管显示设置的温度度数,要注意的是显示器要闪动显示,设置好温度以后再次按下开关就可复位到温度显示状态。
4、当我们的较为干燥温暖的手指轻轻接触在温度感应器,可以看到数码管显示的温度慢慢上升最后趋向稳定,如果此时设置的温度小于环境的温度,级开启预警模式,LED开关二极管点亮。
7结论
经历过这么多天不间断的课程设计,我们有挺多感触的,从最基本上说我们看到了,也意识到了自己的不足,对于不断克服的各种阻碍也让我们体会到了课程设计的意义所在。
对于只接触课本只动笔杆的我们,面临实际的设计尺寸,让我们很是尴尬,都说理论联系实际,真正到联系的时候才发现挺困难的,不过正是理论知识的各种补充才让我们能最终完成任务,然后深深地体会到理论对现实的指导作用。
我们现在最缺乏的就是实际工作经验,而理论联系实践并不像我们想象的那么简单,他需要坚实的理论基础和实际工作经验。
坚实的理论基础决定了我必须坚持学习新的知识新的理论,完善了自己的知识结构,才能在以后的实际中轻松面对,才能设计出更好的更有益于人们生活与工作的机械,才能跟上时代的步伐,不被淘汰。
在这个一边忙着复习忙着考试又要准备课程设计的日子里,真真正正的体会到了时间的宝贵,有点像高中忙忙碌碌的生活,不过能按时完成课程设计对我们来说也是一个莫大的安慰。
在设计中要严谨和细心,对于机械、原理、软件、硬件是不能出差错的,任何的微小误差都可能产生不可预计的后果。
不过,困难虽是难免的,但我们有信心就能并且已经战胜了困难,完成了这个无比揪心的课程设计。
程设计全方位的培养和考察我们解决问题以及处理将理论应用到实际当中的能力。
在设计编程的过程中,我们既经过了独立思考,也经过了团体协作。
我们必须在短期内锻炼迅速掌握一门语言的能力,并学会利用其他的资料与书籍。
可见课程设计的意义是十分重大和深远的。
8致谢
此次单片机课程设计是在张淏老师的细心指导下完成的,老师治学严谨的态度,渊博的知识感染着我,是我学习的榜样,使我受益无穷。
在此,特向老师表达诚挚的谢意。
除此之外,在课程设计过程中,还得到了其他老师、学长等得细心指导和诸多帮助。
他们的无私帮助也是我得以完成本次课程设计的关键。
在此,我向他们表示由衷的感谢和深切的问候。
我还要感谢我的一些同学,他们在我最需要帮助的时候无私的伸出了援助之手。
在此,对于他们的无私帮助我表示深深的感谢。
真诚的感谢所有帮助过我的老师们和同学们。
参考文献
[1]何立民.单片机应用系统设计[M].北京:
北京航空航天大学出版社,1990:
34-35.
[2]徐惠民,安德宁.单片微型计算机原理接口及应用[M].北京:
北京邮电大学出版社,2000:
126-129.
[3]付晓光.单片机原理与应用技术[M].北京:
清华大学出版社,2004:
138-141.
[4]李维祥.MCS-51单片机原理与应用[M].天津:
天津大学出版社,2002:
55-56.
[5]李广弟,朱月秀,王秀山.单片机基础[M].北京:
北京航空航天大学出版社,2001:
44-47.
[6]沙占友,葛家怡,马洪涛.集成化智能传感器原理与应用[J].北京:
电子工业出版社,2004:
74-81.
[7]张伟.单片机原理及应用[M].北京:
机械工业出版社,2002:
174-180.
[8]李玉峰,倪虹霞.MCS-51系列单片机原理与接口技术[M].北京:
人民邮电出版社,2004:
128-129.
[9]李勋,刘源.单片机实用教程[M].北京:
北京航空航天大学出版社,2006:
11-12.
[10]陈光东.单片微型计算机原理与接口技术.武汉:
华中理工大学出版社,1999:
64-71.
附录A电路原理图
附录B实物图
正面
背面
附录C源程序
FLAG1BITF0;
DS18B20存在标志位
FLAG2EQU27H
DQBITP3.7
TEMPER_LEQU29H
TEMPER_HEQU28H
A_BITEQU35H
B_BITEQU36H
;
************程序起始********************
ORG0000H
AJMPMAIN
ORG0100H
;
**************主程序开始************
MAIN:
LCALLINIT_18B20
LCALLRE_CONFIG
LCALLGET_TEMPER
AJMPCHANGE
**********DS18B20复位程序*****************
INIT_18B20:
SETBDQ
NOP
CLRDQ
MOVR0,#0FBH
TSR1:
DJNZR0,TSR1;
延时
MOVR0,#25H
TSR2:
JNBDQ,TSR3
DJNZR0,TSR2
TSR3:
SETBFLAG1;
置标志位,表明DS18B20存在
AJMPTSR5
TSR4:
CLRFLAG1
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6
TSR7:
SETBDQ;
表明不存在
RET
********************设定DS18B20暂存器设定值**************
RE_CONFIG:
JBFLAG1,RE_CONFIG1
RE_CONFIG1:
MOVA,#0CCH;
放跳过ROM命令
LCALLWRITE_18B20
MOVA,#4EH
LCALLWRITE_18B20;
写暂存器命令
MOVA,#00H;
报警上限中写入00H
报警下限中写入00H
MOVA,#1FH;
选择九位温度分辨率
*****************读转换后的温度值****************
GET_TEMPER:
JBFLAG1,TSS2
RET;
若不存在则返回
TSS2:
跳过ROM
MOVA,#44H;
发出温度转换命令
LCALLD1ms;
MOVA,#0BEH;
发出读温度换命令
LCALLREAD2_18B20;
读两个字节的温度
***************写DS18B20程序************
WRITE_18B20:
MOVR2,#8
CLRC
WR1:
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR2,WR1
***********读18B20程序,读出两个字节的温度*********
READ2_18B20:
MOVR4,#2
MOVR1,#29H;
低位存在29H,高位存在28H
RE00:
RE01:
SETBC
MOVR3,#7
MOVC,DQ
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
************读出的温度进行数据转换**************
CHANGE:
CLRFLAG2.0
MOVA,28H
SUBBA,#0F8H
JCTEM0;
判断温度值是否为负,若不是则跳转
SETBFLAG2.0;
是,置标志位FLAG2
MOVA,28H
CPLA
MOV28H,A
MOVA,29H
INCA
MOV29H,A
TEM0:
MOVA,29H
MOVC,28H.0;
将28H中的最低位移入C
MOVC,28H.1
MOVC,28H.2
MOVC,28H.3
MOV29H,A
LCALLDISPLAY;
调用数码管显示子程序
LJMPMAIN
*******************DISPLAY******
DISPLAY:
mova,29H;
将29H中的十六进制数转换成10进制
movb,#10;
10进制/10=10进制
divab
movb_bit,a;
十位在a
mova_bit,b;
个位在b
movr0,#4
dpl1:
movr1,#250;
显示1000次
dplop:
mova,a_bit;
取个位数
SETBP2.3
CLRP2.0
MOVP0,#0x3f
acalld1ms
movdptr,#TAB1;
指定查表启始地址
MOVCA,@A+DPTR;
查个位数的7段代码
SETBP2.0
CLRP2.1;
开个位显示
movp0,a;
送出个位的7段代码
acalld1ms;
显示1ms
mova,b_bit;
取十位数
movdptr,#TAB;
查十位数的7段代码
setbP2.1
clrP2.2;
开十位显示
送出十位的7段代码
显示1ms
JNBFLAG2.0,FU
SETBP2.2
CLRP2.3
MOVP0,#40H
FU:
SETBP2.2
acalld1ms
djnzr1,dplop;
100次没完循环
djnzr0,dpl1;
4个100次没完循环
ret
***********************************
D1MS:
MOVR7,#20;
1MS延时(按12MHZ算)
DJNZR7,$
**********************************************************
TAB:
DB0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
TAB1:
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH