课程设计内容.docx
- 文档编号:13390079
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:31
- 大小:319.59KB
课程设计内容.docx
《课程设计内容.docx》由会员分享,可在线阅读,更多相关《课程设计内容.docx(31页珍藏版)》请在冰点文库上搜索。
课程设计内容
课程设计
目录
一、概述…………………………………………………3
二、设计思路…………………………………………………3
三、软件及元件的选取介绍…………………………………4
(一)Proteus简介…………………………………………4
(二)、主控器AT89C51单片机简单介绍…………………4
(3)DS18B20简单介绍…………………………………5
(四)显示器LCD1602简单介绍…………………………5
四、电路设计……………………………………………7
五、系统程序设计………………………………………9
六、总结及心得…………………………………………12
参考文献………………………………………………12
附录(程序清单)……………………………………11
Proteus仿真图
工作流程图
一、概述
由于科技的不断进步,现代信息技术的飞速发展传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。
这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。
在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流,本可课程设计选用AT89C51型单片机作为主控制器件,DS18B20作为测温传感器,通过LCD1602实现温度显示。
通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。
该器件可直接向单片机传输数字信号,便于单片机处理及控制。
另外,DS1820具有测温系统简单、测温精度高、连接方便、占用口线少等优点。
而LCD1602是工业字符型液晶,能够同时显示16x02即32个字符,具有微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
2、设计思路
采用数字温度芯片DS18B20测量温度,输出信号全数字化。
采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,它直接输出温度的数字信号,也可直接与计算机连接。
采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限温度。
该系统扩展性非常强。
该测温系统电路简单、精确度较高、实现方便、软件设计也比较简单。
系统框图如图1所示。
图一温度检测及显示系统框图
三、软件及元件的选取介绍
(一)Proteus简介
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision3等软件。
(4)具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
(二)、主控器AT89C51单片机简单介绍
1、AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
2、主要特性:
与MCS-51兼容;4K字节可编程FLASH存储器;寿命:
1000写/擦循环;数据保留时间:
10年;全静态工作:
0Hz-24MHz;三级程序存储器锁定;28×8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。
(三)DS18B20简单介绍:
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
其实物图如图所示,其引脚的功能描述可见下表所示。
DS18B20的引脚功能描述
引脚
功能说明
GND
地
DQ
数字输入输出引脚
VDD
可选的VDD引脚
DS18B20的特点:
(1)只要求一个端口即可实现通信。
(2)在DS18B20中的每个器件上都有独一无二的序列号。
(3)实际应用中不需要外部任何元器件即可实现测温。
(4)测量温度范围在-55°C到+125°C之间。
(5)数字温度计的分辨率用户可以从9位到12位选择。
(6)内部有温度上、下限告警设置。
AT89C51与温度芯片DS18B20的连接
在仿真软件中,可以用DS18B20仿真器上的上、下键来调节温度的高低,以此来检测读、写温度程序是否成功。
具体的DS18B20与AT89C51连接如图2-14所示.
(四)显示器LCD1602简单介绍
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602LCD的特性:
●+3.3V电压,对比度可调;
●内含复位电路;
●提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能;
●有80字节显示数据存储器DDRAM;
●内建有192个5X7点阵的字型的字符发生器:
●8个可由用户自定义的5X7的字符发生器CGRAM:
图2-7LCD1602外观
LCD1602采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
D0~D7为8位双向数据线。
四、电路设计
1、电源电路
2、振荡电路:
3、复位电路:
4、DS18B20与单片机的接口电路:
5、PROTEUS仿真电路图
五、系统程序设计
1、主程序模块设计
本系统程序设计采用汇编语言进行编写。
主程序设计思路为:
先对系统进行初始化,如:
LCD1602初始化等,然后才能进入主显示模块,即可在LCD1602上看到相应的信息。
对于LCD1602的初始化,主要是对开启显示屏,清屏,设置显示初始行等操作。
具体的主程序流程如图:
主程序源代码:
MAIN:
LCALLINIT_LCD1602;调用显示器LCD1602的初始化
LCALLINIT_DS18B20;调用DS18B02的初始化
START:
LCALLDISPLAY_TEMP;调用温度显示程序
JMPSTART
2、液晶显示器LCD1602模块
本系统采用的是LCD1602液晶显示器,由于其是本身带有驱动模块的液晶屏,所以对于LCD1602操作程序可分为开显示、设置显示初始行、写数据和清屏等部分。
LCD1602的写命令程序和写数据程序分别以子程序的形式写在程序里,以便主程序中的调用。
对LCD1602的具体操作过程如图所示。
1602LCD的总体操作流程图见下图所示:
软件流程图
LCD初始化程序:
INIT_LCD1602:
MOVLCD,#01H;清屏
CALLENABLE_ORDER
MOVLCD,#38H;8位点阵,两行显示
CALLENABLE_ORDER
MOVLCD,#0CH;显示开关为开,光标开关为关,闪烁开关为关
CALLENABLE_ORDER
MOVLCD,#80H;显示的起始位置为第一行的第一位
CALLENABLE_ORDER
RET
3、温度芯片DS18B20操作模块
具体的DS18B20的操作过程如下图所示:
DS18B20的操作过程
读DS18B20的流程图见下图所示。
其源程序可查阅附录中的源代码部分。
读DS18B20的流程图
六、总结及心得
通过本次课程设计,我学到了很多东西,理论知识得到强化,实践能力得到了提高。
在这课程设计中,让我对单片机AT89C51有了更深入的理解,在运用上能力得到很大提高,让我更多的知道它的优点:
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点。
因此,它应用广泛前景美好,它的实用性大大地提高了我对课程设计的兴趣。
在课程设计开始前,自己感到很茫然,因为对软件的和单片机不是很熟悉,可是但我逐渐的了解后,发现其实并不是想象的那么难,而且很好用。
这次课程设计项目虽然不是很大,但用的技术和知识一点也不逊色于大点的项目,比如说其中用到了DS18B20中的串行通信技术,AT89C51基本操作知识,汇编语言方面的知识等。
这次课程设计也是一次非常难得的理论和实际相结合的机会,通过这次系统设计,使我摆脱了以往单纯的理论知识学习状态,并且在和实际设计的结合锻炼了我的综合运用所学的专业基础知识,使我的实践能力的得到很大的提高。
在设计过程中遇到了的以下问题,然而在老师或同学的帮助下一个一个解决了,培养了我一丝不苟的和不厌其烦的态度。
这次设计虽然顺利做完了,但还是许多美中不足之处,让我认识到自己对单片机应用方面的知识贫乏,也让我知道了proteus和keil使用的方便,对于书本上的很多理论知识还不能灵活运用,有很多我们掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。
同时还从中学到了一件很重要的东西,那就是如何从理论到实践的转化,怎么样将我所学到的知识运用到我以后的工作中去。
此次的课程设计给我奠定了一个实践基础,为以后毕业设计打下良好的基础,也为我在毕业后的生活中磨练自己,使自己适应于以后工作中的竞争。
参考文献
[1]李晓林.牛昱光.单片机原理与接口技术(第二版)北京:
电子工业出版社,2011,11,325-338
[2]许兴存.曾琪琳,微型计算机接口技术[M].北京:
电子工业出版社,2005,7:
308-329
[3]丁元杰.单片微机原理及应用[M].北京:
机械工业出版社,2006,3:
1-10,166-180
[5]宋彩利,孙友仓.单片机原理与C51编程[M].西安:
西安交通大学出版社,2008,7:
165-191
6]赵文博,刘文涛.单片机语言C51程序设计[M].北京:
人民邮电出版社,2005,10:
176-198
[7]边春元.C51单片机典型模块设计与应用[M].北京:
机械工业出版社,2008,4:
1-24
[8]邱关源.电路,北京:
高等教育出版社[M].2005,12:
1-24
[9]朱定华.单片机原理及接口技术实验[M].北京:
北方交通大学出版社,2002,11:
24-55
附录:
源程序
ORG0000H
;——————————DS1602引脚定义——————————
RSEQUP3.0;RS为寄存器选择
RWEQUP3.1;RW为读写信号线
EEQUP3.2;E为使能端,E由高变低进执行命令
LCDEQUP2;数据总线
;——————————DS18B20引脚定义—————————-
DQBITP3.7;单总线口
;—————————DS18B20数据存储单元定义——————-
TEMPER_LEQU50H;暂存温度个位
TEMPER_HEQU51H;暂存温度十位
TEMPER_NUMEQU52H;温度值存储
FLAG1BIT00H;DS18B20是否存在标志
;———————————————————————————
;********************主程序****************************
MAIN:
LCALLINIT_LCD1602;调用显示器LCD1602的初始化
LCALLINIT_DS18B20;调用DS18B02的初始化
START:
LCALLDISPLAY_TEMP;调用温度显示程序
JMPSTART
;******************************************************
;—————————LCD1602的初始化——————————-
INIT_LCD1602:
MOVLCD,#01H;清屏
CALLENABLE_ORDER
MOVLCD,#38H;8位点阵,两行显示
CALLENABLE_ORDER
MOVLCD,#0CH;显示开关为开,光标开关为关,闪烁开关为关
CALLENABLE_ORDER
MOVLCD,#80H;显示的起始位置为第一行的第一位
CALLENABLE_ORDER
RET
;——————————DS18B20初始化程序—————-———
INIT_DS18B20:
SETBDQ
NOP
CLRDQ
MOVR0,#250
TSR1:
DJNZR0,TSR1;延时微秒
SETBDQ
MOVR0,#35;延时微秒
TSR2:
DJNZR0,TSR2
JNBDQ,TSR3;如D0为低则复位成功,DS18B20存在
LJMPTSR4;延时
TSR3:
SETBFLAG1;置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLRFLAG1;清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#100;延时微秒
TSR6:
DJNZR0,TSR6;
TSR7:
SETBDQ;拉高总线
RET
;——————————欢迎界面—————————————
WELCOME:
MOVLCD,#01H;清屏
CALLENABLE_ORDER
LINE1:
;欢迎界面的第一行
MOVDPTR,#TABLE1
MOVR1,#00H
W1:
LCALLDELAY1
MOVA,R1
MOVCA,@A+DPTR
CJNEA,#00H,W2;判断第一行是否显示完毕
JMPLINE2
W2:
MOVLCD,A
LCALLENABLE_DISPLAY;写数据到芯片中
LCALLDELAY;调用延时程序
INCR1;位置后移一位
MOVA,#80H
ORLA,R1;调整显示位置
MOVLCD,A
CALLENABLE_ORDER;写命令到芯片中
JMPW1
LINE2:
;欢迎界面的第二行
MOVLCD,#0C0H
CALLENABLE_ORDER;写命令到芯片中
MOVDPTR,#TABLE2
MOVR1,#00H
W3:
LCALLDELAY1;调用延时程序
MOVA,R1
MOVCA,@A+DPTR
CJNEA,#00H,W4
LCALLDELAY1
LCALLDELAY1
RET
W4:
MOVLCD,A
LCALLENABLE_DISPLAY;写数据到芯片中
LCALLDELAY
INCR1;位置后移一位
MOVA,#0C0H
ORLA,R1;调整显示位置
MOVLCD,A
CALLENABLE_ORDER;写命令到芯片中
JMPW3
RET
;——————————清屏程序—————————————
DISPLAY_BLANK:
LCALLDELAY1;长延时(使其显示有闪烁效果)
MOVLCD,#01H;清屏命令
LCALLENABLE_ORDER
LCALLDELAY1
RET
;————————"TEMPERATURE"信息提示程序———————-——
TEMPERATURE_LOGO:
MOVLCD,#01H;清屏
CALLENABLE_ORDER
MOVLCD,#86H;设置显示"T"的位置
CALLENABLE_ORDER
MOVLCD,#54H;显示"T"
LCALLENABLE_DISPLAY
MOVLCD,#87H;设置显示"E"的位置
CALLENABLE_ORDER
MOVLCD,#69H;显示"E"
LCALLENABLE_DISPLAY
MOVLCD,#88H;设置显示"M"的位置
CALLENABLE_ORDER
MOVLCD,#6DH;显示"M"
LCALLENABLE_DISPLAY
MOVLCD,#89H;设置显示"P"的位置
CALLENABLE_ORDER
MOVLCD,#65H;显示"P"
LCALLENABLE_DISPLAY
MOVLCD,#8AH;设置显示"E"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"E"
MOVLCD,#8AH;设置显示"R"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"R"
MOVLCD,#8AH;设置显示"A"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"A"
MOVLCD,#8AH;设置显示"T"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"T"
MOVLCD,#8AH;设置显示"U"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"U"
MOVLCD,#8AH;设置显示"R"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"R"
MOVLCD,#8AH;设置显示"E"的位置
CALLENABLE_ORDER
MOVLCD,#72H;显示"E"
LCALLENABLE_DISPLAY
RET
;——————————显示温度的程序——————————
DISPLAY_TEMP:
MOVLCD,#01H;清屏
LCALLENABLE_ORDER
LCALLGET_TEMP;读取温度数据
MOVA,TEMPER_NUM
MOVB,#10
DIVAB;分离温度数据
MOVTEMPER_H,A
MOVTEMPER_L,B
MOVLCD,#0CDH;设置显示位置
LCALLENABLE_ORDER
MOVA,TEMPER_H
ADDA,#30H;进行显示调整
MOVLCD,A;显示温度的十位
LCALLENABLE_DISPLAY
MOVLCD,#0CEH;设置显示位置
LCALLENABLE_ORDER
MOVA,TEMPER_L
ADDA,#30H;进行显示调整
MOVLCD,A;显示温度的个位
LCALLENABLE_DISPLAY
MOVLCD,#0CFH;设置显示位置
CALLENABLE_ORDER
MOVLCD,#0DFH;显示温度符号
LCALLENABLE_DISPLAY
RET
;———————写数据到液晶显示器LCD1602———————-
ENABLE_DISPLAY:
SETBRS;设置RS为高,选择数据寄存器
CLRRW;设置RW为低,进行写操作
CLRE;设置E为低,执行命令
SETBE
RET
;———————写命令到液晶显示器LCD1602———————-
ENABLE_ORDER:
CLRRS;设置RS为低,选择指令寄存器
CLRRW;设置RW为低,进行写操作
CLRE;设置E为低,执行命令
LCALLDELAY;延时
SETBE
RET
;——————————读出转换后的温度值————————
GET_TEMP:
SETBDQ
GT1:
LCALLINIT_DS18B20;初始化DS18B20
JBFLAG1,GT2;判断DS18B20是否存在
LJMPGT1
GT2:
MOVA,#0CCH;跳过ROM匹配命令
LCALLWRITE_1820
MOVA,#44H;发出温度转换命令
LCALLWRITE_1820
NOP
GT3:
LCALLINIT_DS18B20;初始化DS18B20
JBFLAG1,GT4;判断DS18B20是否存在
LJMPGT3
GT4:
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#0BEH;发出读温度命令
LCALLWRITE_1820
LCALLREAD_1820;调用读DS18B20程序,读取温度低字节
MOVTEMPER_L,A;将读出的温度低位放入TEMPER_L中
LCALLREAD_1820;调用读DS18B20程序,读取温度高字节
MOVTEMPER_H,A;将读出的温度低位放入TEMPER_H中
MOVA,#0F0H
ANLA,TEMPER_L;舍去温度低位中小数点后的四位温度数值
SWAPA
MOVTEMPER_NUM,A;得到温度的个位数
MOVA,TEMPER_L
JNBACC.3,TEMPER_COV1;四舍五入去温度值
INCTEMPER_NUM
TEMPER_COV1:
MOVA,TEMPER_H
ANLA,#07H
SWAPA
ORLA,TEMPER_NUM;得到高四位,再与低四位相或得到温度值
MOVTEMPER_NUM,A;保存变换后的温度数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 内容