基于tinyAVR和Nokia3310 LCD的温度绘图仪

发布者:云自南国来最新更新时间:2012-11-08 来源: 现代电子技术 关键字:单片机  Nokia3310  温度绘图仪  数字温度传感器 手机看文章 扫描二维码
随时随地手机看文章
1 温度绘图仪介绍
   
温度绘图仪采用温度传感器和LCD显示屏,以摄氏度和华氏度为刻度显示环境温度,同时也能显示传感器测量和记录下来的最低温度值和最高温度值。图1为温度绘图仪的方框图。利用一个Nokia3310 LCD模块来显示读数,一个按钮开关用来切换屏幕显示模式。第一种模式
为读数模式,交替显示摄氏温度值和华氏温度读数;第二种模式为绘图模式,显示一张由本系统绘制的,温度随时间变化的函数曲线图。本系统利用一节1.5 V干电池供电。

c.JPG



2 Nokia3310 LCD模块简介
   
Nokia3310的液晶显示模块是一种小巧的图形式LCD模块,在多种嵌入式系统的开发中被广泛应用。它与多种单片机的连接方便,应用非常广泛。这种LCD模块的大小为38 mm×35 mm,有效显示面积为30 mm×22mm,显示分辨率为84×48。该模块是利用一片专用控制器/驱动器芯片PCD8544设计的,能够驱动和显示48行84列的图像,可以通过标准的SPI总线方便地与外界接口。其他重要特性如下:
    ◆只需要一个外围元件,在VOUT和GND之间连接一个1~10μF的电容;
    ◆功耗很低,适用于电池供电系统;
    ◆电源电压范围:2.7~3.3 V;
    ◆工作温度范围:-25~70℃。
2.1 Nokia3310 LCD的接口信号
   
Nokia3310 LCD模块通过SPI总线与单片机连接,许多tinyAVR单片机都有这种接口。不过也有少数型号tinyAVR单片机没有这种接口,或是把这种接口用于与单片机的其他外围器件通信。这并不意味着,这种LCD模块就不能与此类单片机对接使用,可以采取软件方式来模拟实现SPI软接口。以这种方式,可以在任何一种单片机的任何通用I/O引脚上连接该LCD模块。SPI软接口最少需要4条I/O引脚。图2是Nokia3310 LCD模块引脚功能图。下面详述一下各条引脚的功能。

d.JPG


    Nokia3310 LCD模块的引脚有:
    ◆VCC:电源输入端。连接稳压电源(2.7~3.3 V)。
    ◆SCK:串行时钟输入端。速率为0~4 Mbps,连接 单片机I/O引脚。
    ◆SDI:串行数据输入端。连接单片机I/O引脚。
    ◆D/C:数据/命令模式选择端。连接单片机I/O引脚。
    ◆SCE:片选端。可以连接到单片机I/O引脚,或者接地(表示总是选中该LCD),可根据具体情况设置。
    ◆GND:接地引脚。
    ◆VouT:VLCD端,通过10μF的电容接地。
    ◆RST:控制器PCD8544的复位端。连接单片机I/O引脚。
2.2 PCD8544功能描述
   
PCD8544是一个低功耗CMOS的LCD控制器/驱动器,用于驱动48行84列的图形式LCD显示屏。该型号在单一芯片之内就可以实现LCD显示器所需的全部功能,包括片载的LCD供电和偏压发生器,它不仅功耗低而且所需外围元件少。[page]

3 设计原理
   
本项目的目标是设计一个用摄氏和华氏显示环境温度的温度显示系统,并且能够显示最低温度和最高温度值;该系统能够按照时间记录温度的变化;系统应选择电池供电,以方便携带或安装在任意位置。
    温度绘图仪的电路原理图如图3所示。由于系统中采用了Nokia3310 LCD模块,它需要的电源电压为2.7~3.3 V。系统的电源电路中采用了一片DC-DC升压型电压转换器TPS61070(即为开关式直流稳压器)提供一个3.3 V的直流电源,因此可以选用一节1.5 V干电池供电。电池被连接到SL3(2针)插口上。由于没有极性保护电路,电池安装时需要特别注意。Nokia3310 LCD模块通过SPI总线连接到SL1(8针)插口上。

e.JPG


    系统中最重要的元器件是温度传感器,对于该器件有以下几种选择:热敏电阻、热电偶或带隙半导体传感器。其中半导体传感器是最容易实施的。
    半导体传感器种类很多,有的直接输出与温度成比例的模拟电压,有的直接输出摄氏或华氏温度的数值。这里选用了一种单总线温度传感器DS18B20,它把温度转换为9位二进制数字来表示摄氏温度或者华氏温度。温度读数的分辨率为0.5℃或0.9°F,测量范围为-55~125 ℃,或者-67~257°F。该传感器每次需要20 ms的转换时间。详细资料可以参考DS18B20的技术手册。
    转换后的温度值可以从单线接口读出,在图3中,SL2安装在DS18B20传感器上的插口。电路设有4个按钮开关S1~S4,不过在这个项目中只用到1个开关。这个电路采用了贴片封装的tiny44单片机ATtiny 24/44/84-SSU,它具有14条引脚和4 KB程序存储器。
    每当接通电源或者复位时,单片机将初始化显示器,并查询DS18B20传感器,显示华氏和摄氏温度。同时保存检测到的温度最低值和最高值。用户可以随时按下开关,系统会切换到另一种显示模式,显示一张温度随时间变化的曲线。系统连续地读取温度值,但是每隔10 min才保存一次温度读数,并绘制在显示屏上。系统可以保存最多40个读数,因此可以显示最近400 min内的温度变化情况。保存在缓冲存储区中的读数不停地被替换,以便保留新值和冲掉旧值。

4 硬件电路的搭建
   
线路主要布在元件面(顶面),在焊接面(底面)只有很少的跳线。温度绘图仪电路板的元件面和焊接面分别如图4和图5所示。焊接TPS610 70芯片非常关键,需要特别小心。从焊接稳压器芯片及其外围元件开始,以便在安装其他元件之前,测试TPS61070的输出电压。温度绘图仪显示屏的不同显示模式如图6和图7所示。[page]

a.JPG

b.JPG



5 C语言程序设计
   
这里提供给大家经过编译的利用C语言编写的源代码程序(软件集成开发环境为WinAVR,C语言编译器为AVR-GCC)。程序需要运行在1 MHz的时钟频率下。
    采用编程器STK500在ISP编程模式给单片机烧写程序。单总线温度传感器DS18B20是通过单总线接口完成读/写功能的,这种总线接口在单片机上是利用软件模拟来实现的。可以参考温度传感器的使用手册以获取它的各种命令。这里仅仅对源程序代码中较重要的部分作如下注释:
    f.JPG
    在ds1820_read函数中读取DS18B20,经过必要的处理后,返回一个10倍于实际摄氏温度值的数值。无限循环构成程序的主体,其操作模式主要有两种:第一种模式是以摄氏度和华氏度交替显示当前温度值,同时显示最大值和最小值;另一种模式是用图形方式显示温度的变化。曲线图的绘制采用了graph1函数,它是通过提取数组data的数值绘制像素点的。Setlcd函数用于在LCD屏幕上绘制坐标轴。S4开关(连接单片机PA1引脚)用于切换上述两种模式。从绘图模式到温度模式的相互切换并不会删除状态信息。程序代码的其他部分用于处理LCD的初始化和绘图算法。

6 独立运行
   
温度绘图仪采用一节或两节5号或7号规格的干电池,可以是碱性电池,或者可充电的镍氢或镍镉电池。一旦接通电源后,显示器开始显示温度值。可使用开关在读数模式和绘图模式之间切换。

关键字:单片机  Nokia3310  温度绘图仪  数字温度传感器 引用地址:基于tinyAVR和Nokia3310 LCD的温度绘图仪

上一篇:单片机程序的完善
下一篇:基于STC12C5410AD设计10位高精度ADC

推荐阅读最新更新时间:2024-03-16 13:12

51单片机学前预备知识
一.单片机的概念: 在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 二.单片机的用途: 工业自动化:数据采集,测控技术; 智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等; 消费类电子产品:洗衣机、电冰箱、空调机、手机等; 凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等。 三.怎么学单片机: 实践第一;补充必要的理论知识,即缺什么补什么;做工程项目积累经验。(可在网络上搜索些题目,也可自己有什么想法大胆的去试验。)。 四.为什么选择51
[单片机]
单片机项目经验到底是什么?项目开发培训真的靠谱吗?
每次看到钢铁侠这部电影,我都肾上腺素飙升,想去撸它几千行代码发泄一下。 很多人学习和从事单片机开发都是出于兴趣,虽然现实很难达到托尼斯塔克的水平,不过能通过自己写代码去做出自己想要的东西,已经很有成就感了。 10年前,我也是一样,从点亮第一个LED开始就迷上了单片机开发,原来写程序控制硬件是这样玩的。 为此,我那段时间把游戏都戒了,我的脑子也比较天马星空,把开发板的LED点亮以后,我就想着怎么把家里的灯用程序来控制。 后面发现控制也很简单,中间加个继电器就行了。 当时我是自学转行的,只学了51这个单片机就出去找工作了,刚开始找工作的第一个月四处碰壁,凡是面试过的公司都叫我回去等通知。 等多了,我也就看开了。 最终分析了企业的需求,
[单片机]
单片机的位定义
51单片机中对一个变量进行位定义时,我们采用这种方式: typedef unsigned char uchar; uchar bdata flag; sbit F1 = flag^0; sbit F2 = flag^1; ... sbit F8 = flag^7; 之后就可以对F1 F8这些变量进行bool操作了。 在飞思卡尔单片机中,我们却用结构体实现相关定义: struct{ byte F0 :1; byte F1 :1; byte F2 :1; byte F3 :1; byte F4 :1; byte F5 :1; byte F6 :1; byte F7 :1;
[单片机]
PIC单片机与16位串行D/A转换原理
  下面介绍了基于PIC单片机与16位串行D/A转换的原理:   1.基本原理   D/A转换器相当于一种译码电路,它将数字输入传换为模拟输出:   其中,D是数字输入,VR是模拟参考输入,Vo是模拟输出。这里模拟输出可以是电压,也可以是电流,式中 数字D是一个小于1的值。   式中an为1或0,由数字对应位的逻辑电平来决定,N是数字输入D的位数。由此(3.2)由此(3.1)   当参考电压输入TIp.固定时,转换器的模拟输出D成正比关系。对于单位数字量的变化,模拟输出是按等 幅度的阶跃量变化的。   2.原理图   (1)串行D/A转换器。   串行D/A转换器一般由数字输入、基准电压源、模拟开关、电
[单片机]
PIC<font color='red'>单片机</font>与16位串行D/A转换原理
51单片机用PID算法温度控制器毕业设计
毕业设计任务 设计并制作一个水温自动控制系统,控制对象为纯净水(容量大于等于1升),容器为瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。 基本功能及要求 1.温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。 2.环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。 3.在硬件中显示水的实际温度。 4.采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量。 5.温度控制的静态误差≤0.2℃。 6.在设定温度发生突变(由40℃提高到60℃)时,用上位机显示温度变化曲线。 实物图 电路原理图 功能框图 PI
[单片机]
51<font color='red'>单片机</font>用PID算法<font color='red'>温度</font>控制器毕业设计
51单片机基础学习(1)点亮一个LED灯
最近开始接触单片机之后,能明显感觉到单片机的资料和OI的资料不是一个风格,原因大概在于单片机面向的人群 不管从社会阶层还是年龄来说跨度都非常大,学习的目的性也很强,这导致大家在记录自己资料时心情一般都比较浮躁。嗯,看惯了程序员们清淡口味的笔记之后,表示很不开心,于是我就回到了博客园。 首先,在使用单片机以及单片机开发板的时候,要明白这是一堆非常不可靠的电路 然后就可以入坑了。 我用的开发板型号是HC6800-EM3 V2.0,感觉非常坑,有时间有兴趣的还是买元件自己焊板子吧。 IDE是keil4,普通的C语言环境。 【点亮LED小灯】 #include reg52.h sbit led=P0^0; void ma
[单片机]
STM8单片机STVD环境工程设置
1.项目的通用属性如下图如示。要注意编译器的路径。
[单片机]
STM8<font color='red'>单片机</font>STVD环境工程设置
基于USB接口的信号模拟器设计
  引 言   USB总线是一种高效、快速、价格低、体积小、支持热插拔的串行通信接口,目前USB这一接口形式在电子产品的设计中得到了广泛应用。本文所设计的RS485信号模拟器就是采用USB接口总线,可以很方便与PC机进行连接,并且USB接口可以为外界提供电源。 RS485是一种平衡方式传输的串行接口标准,它的电气特性标准中有严格规定,但它的通信协议可以由用户自行定义。本文将详细讨论USB总线信号与 RS485总线信号的相互转换,及PC机终端应用软件对USB接口芯片的各种操作。在此基础上用户可以根据不同需求,在终端应用软件中自行设计通信协议。   1 总体设计   信号模拟器主要包括USB接口芯片、单片机子系统、RS485与T
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved