课程设计内容.docx

上传人:b****9 文档编号:26022153 上传时间:2023-06-17 格式:DOCX 页数:31 大小:319.59KB
下载 相关 举报
课程设计内容.docx_第1页
第1页 / 共31页
课程设计内容.docx_第2页
第2页 / 共31页
课程设计内容.docx_第3页
第3页 / 共31页
课程设计内容.docx_第4页
第4页 / 共31页
课程设计内容.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

课程设计内容.docx

《课程设计内容.docx》由会员分享,可在线阅读,更多相关《课程设计内容.docx(31页珍藏版)》请在冰豆网上搜索。

课程设计内容.docx

课程设计内容

课程设计

 

目录

一、概述…………………………………………………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;保存变换后的温度数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1