- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PIC课程设计
专 业: 电子信息工程
班 级:
姓 名: _______
学 号:
指导教师: 2014年 月 日
2.2工作原理
(1)、总体设计思想
本设计是以PIC18F452单片机作为控制核心,以LM20模拟温度输入。首先通过4*4矩阵键盘设定一个最高温度和最低温度作为报警器报警的条件,然后单片机通过实时监控温度的变化,通过LCD1602字符型液晶显示各节点温度的数值,当温度值超出所设定的值时,报警器开始报警,从而实现对整个温度系统的管理和控制。这种温度测量系统具有成本低廉、传感精度高、系统稳定、易于管理等优点。
(2)、各模块设计
1)、4*4矩阵键盘的设计
根据设计任务书中要求实现的功能,我选择了一个4*4矩阵键盘来设置温度的上、下限值,此键盘设计符合系统设置要求,所以我选择此键盘完成本设计。
①矩阵键盘结构:
键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘结构能够有效的提高单片机系统中I/O口的利用率。它的结构和产生的波形如图2-4所示。
图2-4 键盘结构及产生的波形图
单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。
键开关状态的可靠输入 :为了去抖动我采用软件方法,它是在检测到有键按下时,执行一个20ms的延时程序后,在按键放开时,再执行一个20ms的延时程序。再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响
在这种行列式矩阵键盘非编码键盘的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。
本次课程设计运用扫描法来进行按键设定。
键盘共有16个按键,用于方便设定温度。
表5-1键盘的按键分布
P2.0 7 8 9 设定最高 P2.1 4 5 6 设定最低 P2.2 1 2 3 设定时间 P2.3 DOT 0 OK RST P2.4 P2.5 P2.6 P2.7
2)、LCD1602液晶显示的设计
温度显示工作原理:
LCD1602可以采用两种方式与单片机连接,一种是采用8位数据总线D0—D7,和RS、R/W、EN1602显示。
进行LCD设计主要是LCD的控制/驱动和外界的接口设计。控制主要是通过接口与外界通信、管理内/外显示RAM,控制驱动器,分配显示数据;驱动主要是根据控制器要求,驱动LCD进行显示。控制器还常含有内部ASCII字符库,或可外扩的大容量汉字库。
3)、LM20温度传感器的设计
LM20模拟温度输入,存在一个模拟量从数字量转变的过程,公式可上网查阅资料获得。24C02的应用整个过程都在方式进行,最终没有实现C02读取和存储的功能,有些遗憾、LED灯报警
当前温度超过最高设定或者低于最低设定,会闪烁进行报警这功能实现较为简单
3、程序清单
#includep18f452.h
#include adc.h
#include delays.h
#includemath.h
#include I2C.h
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config LVP=OFF
#define P1 PORTBbits.RB4
#define P2 PORTBbits.RB5
#define P3 PORTBbits.RB6
#define P4 PORTBbits.RB7
#define RSPIN PORTCbits.RC7 //Data or Instrument Select
#define RWPIN PORTCbits.RC6 //Write or Read
#define EPIN PORTCbits.RC5 //6800 mode Enable single
#define RST 11
#define DOT 10
#define HIGH 12
#define LOW 13
#define SET_TIME 14
#define NOP -1
#define OK 15
#define NOW 16
#define FIRST_WRITE 0x17;
#define SLAVE_ADDRESS
文档评论(0)