单片机DS18B20数字温度计设计 - 图文 下载本文

L 设置字库CGRAM地址 显示缓冲区DDRAM地址 读取忙标志和地址 写数据到RAM 读出RAM的值 1 1 数据 1 0 0 1 BF 数据 0 0 1 0 0 0 1 E 作RE=0: 基本指令操作 CGRAM的地址 设定CGRAM 地址 DDRAM的地址 设定DDRAM 地址(显示位址)第一行:80H-87H第二行:90H-97H AC的值 读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值 将数据D7——D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM) 从内部RAM读取数据D7——D0(DDRAM/CGRAM/IRAM/GRAM)

3.3.4LCD1602字符集

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,读的时候,先读左边那列,再读上面那行,如:感叹号!为0x21,字母B为0x42。以下是1602的符号与代码转换图:

图3.3.2 1602字符与代码转换图

14

3.3.5LCD1602电路

LCD1602显示电路原理图如图3.3.3所示

图3.3.3 LCD1602显示电路原理图

此部分为LCD1602显示电路,用单片机的P0口与1602传输数据,通过1K可调电阻可以调节1602背光显示亮度。P0口接一个10K的上拉排阻,提高驱动1602的能力。

3.4声光报警电路

当外界温度超过报警上下限温度时,为更加有效的引起用户的注意,及时关注温度的变化,本系统设计了声光报警电路。该电路由三极管、蜂鸣器和LDE组成,具体电路如图所示。

图3.4.1 报警电路图

当P1.3口输出低电平时,PN结导通,集电极产生电流使蜂鸣器和LED灯工作,通知用户温度异常。

15

3.5独立按键电路

本系统除复位按键外共有4个独立按键,具体电路图如下:

图3.5.1 独立按键

S4~S7是用来设定报警上下限温度的。S4用于增加报警上限温度,S5用于减小报警上限温度,S6用于增加报警下线温度,S7用于减小报警下限温度。

3.6系统总电路图

图3.7.1 系统总电路图

在实验箱上的连线如下:

(1)DS18B20的DQ端连接到单片机的P1.0口。

(2)LCD的D0~D7与单片机的P0口相连接;控制端四个引脚接至P2.0~P2.3。 (3)LED0和LED1与单片机的P2.4和P2.5口连接。 (4)蜂鸣器好LED7与单片机的P1.3连接。 (5)ROW1接地,COL1—COL4接P1.4—P1.7口。

16

图3.7.2 实物连接图

第四章 软件设计

4.1主程序设计

由于本系统共用到了如下几个模块:DS18B20测温模块,LCD1602显示模块,串行口模块。因此在函数开始要首先对这些模块进行初始化。然后再循环测温、显示与检查异常。主程序流程图见图4.1.1。

void main() { init_cxk(); init_1602(); init_18b20(); EA=1; //开总中断 EX0=1; //开外部中断0 EX1=1; //开外部中断1 while(1) { bj=1; //在新的一次测温,蜂鸣器无效 flag=0; //在新的一次测温,flag清零 read_temp(); //读DS18B20温度 convert_temp();//转换温度 display(); //显示温度 test_temp(); //检测温度是否异常 }

17