基于单片机温度检测LCD显示课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大连民族学院

单片机系统课程设计

题目:温度计的设计

班级:电子105

姓名:赵萌

同组人:张瑛笛

指导教师:李绍民

设计日期:

一设计内容及要求

设计内容:基于单片机的室内温度检测LCD显示

要求:测量温度55℃—125℃

温度上下限TH:32℃TL:16℃

温度报警:超出温度上下限BEEP报警

二设计方案

测温部分:采用18B20作为温度传感器,有一个由高低电平触发的且不因掉电而丢失的报警功能。

控制部分:89S52最小系统

显示部分:1602液晶显示,模块内的字符发生存储器存储了160个不同的点阵图形,先是方便,同时好可以进行时间的显示。

三硬件系统设计

AT89S52是一个低功耗,高性能CMOS 8位

单片机,片内含8k Bytes ISP(In-system

programmable)的可反复擦写1000次的Flash只读

程序存储器,器件采用ATMEL公司的高密度、

非易失性存储技术制造,兼容标准MCS -51指令

系统及80C51引脚结构,芯片内集成了通用8位

中央处理器和ISP Flash存储单元,功能强大的微

型计算机的AT89S52可为许多嵌入式控制应用系

统提供高性价比的解决方案。

? ?A T89S52具有如下特点:40个引脚,8k Bytes

Flash片内程序存储器,256 bytes的随机存取数据

存储器(RAM),32个外部双向输入/输出(I/O)

口,5个中断优先级2层中断嵌套中断,2个16

位可编程定时计数器,2个全双工串行通信口,看

门狗(WDT)电路,片内时钟振荡器。

电源

时钟

晶振原理图

I/O接口

外围电路工作原理及硬件图

四软件系统设计

软件流程框图

系统设计原理:

本次课程设计是基于单片

机的数字温度计设计,在开始

课程设计的时候我们要理解并

掌握对单片机的开发,学会使

用KEIL及Proteus等仿真软件。

根据设计任务要求选择好器

件,编写好程序运行成功之后

进行软件联调,验证系统是否

正确。通过筛选,我们组选用

单片机AT89S52作为主控制系

统;用1602液晶显示模块芯片

作为温度数据显示装置;智能

温度传感器采用DS18B20器件

作为测温电路主要组成部分。

五仿真调试

(1)Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、

连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其

它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编

译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,

也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51

或tScope51使用进行源代码级调试,也可由仿真器使用直接对目

标板进行调试,也可以直接写入程序存贮器如EPROM中。

(2)使用独立的Keil仿真器时,注意事项

●仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插

孔中换插其他频率的晶振。

●仿真器上的复位按钮只复位仿真芯片,不复位目标系统。

●仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内

ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿

真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其

CPU的/EA引脚接至低电平)的目标系统中使用。

●调试结果

(3)结果分析

在运行仿真结果时通过改变温度传感器DS18B20的温度,然后调用各种子函数,可以改变液晶显示1602的第二行显示数据,说明程

序编写正确。

(4)系统设计电路的特点和方案的优缺点

我们组设计的数字温度计系统知识运用简单的AT89S52芯片的I/O口传输功能,通过几个小的读数据、传递数据、延时子函数实现

温度的读取传输功能,是比较简单,容易实现的,所以我们的系统只

是实现了一些简单的功能,系统整体来说比较简易,但好像这个温度

计没有多大的应用价值,所以我们后续分析觉得这个系统可以加一个

温度复位系统提高AT89S52芯片的功能价值,也提高数字温度计的智

能价值,还可以增加一个报警子函数,实现智能数字温度计更高的应

用价值。

六结论

虽然基本功能已经做好了,但还可以有很多的扩展功能,如串口设计和时钟显示,由于时间有限,但对于单片机的设计还在继续…

参考文献

附录一

程序代码:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit DQ = P2^2; //定义DS18B20端口DQ

sbit BEEP=P2^3 ; //蜂鸣器驱动线

bit presence,flag;

bit compare_th,compare_tl,alarm_on_off=0,temp_th,temp_tl;

sbit LCD_RS = P3^5;

sbit LCD_RW = P3^6;

sbit LCD_EN = P3^4;

uchar code cdis1[ ] = {" READ_ROMCORD "};

uchar code cdis2[ ] = {" "};

uchar code cdis3[ ] = {" DS18B20 ERR0R "};

uchar code cdis4[ ] = {" PLEASE CHECK "};

uchar code cdis5[ ] = {" TEMP: "};

uchar code cdis6[ ] = {"TH: TL: "};

unsigned char data temp_data[2] = {0x00,0x00};

unsigned char data temp_alarm[2] = {0x20,0x10};

unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00}; //温度值显示unsigned char data display1[3] = {0x00,0x00,0x00}; //温度报警值显示unsigned char data RomCode[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; unsigned char code mytab1[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00}; #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};

unsigned char Temp,temp_comp,timecount,count;

unsigned char crc;

void Disp_Temp_alarm(uchar addr,uchar num);

void spk(uchar addr);

void set_temp_alarm();

void temp_compare();

void beep();

/*******************************************************************/ void delay1(int ms)

{

unsigned char y;

while(ms--)

{

for(y = 0; y<250; y++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

相关文档
最新文档