基于单片机的红外解码温度及液晶显示设计.doc
《基于单片机的红外解码温度及液晶显示设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的红外解码温度及液晶显示设计.doc(26页珍藏版)》请在沃文网上搜索。
1、摘要:随着数字时代的推进,单片机的应用正在在不断走向深处。红外和液晶显示技术也被广泛应用在电子领域,本次设计实现的功能是环境温度和红外码值得液晶显示,可以在此基础之上实现更多的控制,设计的内容简单实用,尤其是环境温度显示。关键词:单片机,红外解码,液晶显示,温度显示,时序目录1.概述11.1功能描述21.2单片机资源22.1管脚图23.1. 使用资源22.原理篇32.1红外发送及接收32.1.1红外接收概述32.1.2硬件及原理图52.1.3红外中断接收部分程序52.2温度原理62.2.1 DS18B20 的主要特性62.2.2原理图与硬件72.2.3 DS18B20时序和程序72.2.3.1
2、初始化时序及程序72.2.3.2写/读时序及写/读一字节程序82.3 QC1602A102.3.1 1602外部结构及管脚说明102.3.2 写命令/数据时序与部分程序123.效果图134软件篇144.1程序框图144.1.1 Main函数144.1.2 中断154.1.3 60ms定时中断154.2 完整程序164.2.1 Project.c文件164.2.2 onewire.c 文件235.参考文献251.概述1.1功能描述Lcd液晶显示实时环境温度和接收显示红外遥控器的键值,在收到红外信号时会用蜂鸣器作为反馈,以提醒红外一体接收头有接到信号。1.2单片机资源2.0资源l 与MCS-51单
3、片机产品兼容l 8K字节在系统可编程Flash存储器l 1000次擦写周期l 全静态操作:0Hz33Hzl 三级加密程序存储器l 32个可编程I/O口线l 三个16位定时器/计数器l 八个中断源l 全双工UART串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 掉电标识符2.1管脚图3.1. 使用资源P1:用于连接LCD1602的数据线P3.5,P3.7:分别连接LCD1602的RS,R/W控制脚P3.2:使用第二功能,用于接收红外信号P2.7:DS18B20数据脚P2.5:用于控制蜂鸣器2.原理篇2.1红外发送及接收2.1.1红外接收概述NEC 标准:遥控
4、载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。一个完整的全码=引导码+用户码+用户码+数据码+数据反码。其中,引导码高电平9ms,低电平4.5ms;系统码8 位,数据码8 位,共32 位;其中前 16 位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后 16 位为 8 位的操作码和 8 位的操作反码,用于核对数据是否接收准确。收端根据数据码做出应该执行什么动作的判断。连发代码是在持续按键时发送的码。它告知接收端,某键是
5、在被连续地按着。NEC 标准下的发射码表示发射数据时0 用“0.56ms 高电平0.565ms 低电平=1.125ms”表示;数据1 用“高电平0.56ms低电平1.69ms=2.25ms”表示。遥控器发射的信号:一体化接收头接收到的信号:需要注意的是;一体化接收头输了的波形是与发射波形是反向的我的遥控器使用的是NEC标准的WD6122芯片,遥控器编码如下:2.1.2硬件及原理图2.1.3红外中断接收部分程序void IR_IN() interrupt 0 using 0 /外部中断0程序 unsigned char j,k,n=0; /先定义变量,记住n=0 EX0=0;/禁止中断,以免再次
6、进入中断 delay(15);/延时0.14ms*15=2.1msif(IRIN=1) /如果在这期间有高电平说明 /信号不是来自遥控的,返回主程序 EX0=1; return; while(!IRIN)delay(1); /死循环,等待9ms前导低电平信号的结束/ for(j=0;j4;j+) /一共有4组数据 for(k=0;k=30) /如果超过0.14ms*30=4.2ms /说明是乱码,放弃不要EX0=1;return;IRCOMj=IRCOMj1; /右移1位,xxxx xxxx变成0xxx xxx/我们先认为这一位数据是0,现在已经送入一位数据了/*你肯定知道_cror_(x,1
7、)和x1的区别吧*/if(n=8)IRCOMj=IRCOMj|0x80;/但是如果不是0呢,/0xxx xxxx和0x80相或后变成了1xxx xxxx/这样这一们数据就被记录为1了/*想一下这里为什么是8呢,0.14ms*8=1.12ms,知道了吧*/*这样反复执行8次,8位数据就存在IRCOMj中了*/*外层再循环4次,4*8=32位数据码全都在IRCOM0,IRCOM1,IRCOM2,IRCOM3中了*/n=0; /n计数后一定要记得清0,否则下一次就不能准确计数了 /if(IRCOM2!=IRCOM3) /这里我们判断数据码和数据反码是不是相反 /因为相反才是正确的,否则就放弃EX0=
8、1;return;beep();EX0=1;/记得开中断,你可以去掉这句话试一试2.2温度原理2.2.1 DS18B20 的主要特性(1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电(2)独特的单线接口方式,DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯(3)DS18B20 支持多点组网功能,多个DS18B20 可以并联在唯一的三线上,实现组网多点测温(4)DS18B20 在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内(5)温范围55125,在-10+85时精度为0.5(6)可编程的
9、分辨率为912 位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温(7)在9 位分辨率时最多在93.75ms 内把温度转换为数字,12 位分辨率时最多在750ms 内把温度值转换为数字,速度更快(8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力(9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作2.2.2原理图与硬件 2.2.3 DS18B20时序和程序2.2.3.1初始化时序及程序/DS18B20初始化bit init_ds18b20(void) bit initflag =
10、0; DQ = 1; Delay_OneWire(12); DQ = 0; Delay_OneWire(80); / 延时大于480us DQ = 1; Delay_OneWire(10); / 14 initflag = DQ; / initflag等于1初始化失败 Delay_OneWire(5); return initflag;2.2.3.2写/读时序及写/读一字节程序/从DS18B20读取一个字节unsigned char Read_DS18B20(void)unsigned char i;unsigned char dat; for(i=0;i= 1;DQ = 1;if(DQ)da
11、t |= 0x80; Delay_OneWire(5);return dat;/通过单总线向DS18B20写一个字节void Write_DS18B20(unsigned char dat)unsigned char i;for(i=0;i= 1;Delay_OneWire(5);2.3 QC1602A 2.3.1 1602外部结构及管脚说明RAM 地址映射图控制器内部带有80*8位的RAM缓冲区2.3.2 写命令/数据时序与部分程序/写命令void write_com(uchar com) /液晶写 命令lcdrs=0;P1=com;delay_lcd(10);lcden=1;delay_l
12、cd(10);lcden=0;/写数据void write_data(uchar date)/液晶写 数据lcdrs=1;P1=date;delay_lcd(10);lcden=1;delay_lcd(10);lcden=0;3.效果图4软件篇4.1程序框图4.1.1 Main函数4.1.2 中断4.1.3 60ms定时中断4.2 完整程序4.2.1 Project.c文件#include#include #include onewire.h /单总线函数库#define uchar unsigned char#define uint unsigned intuchar code table=
13、temperature:;/液晶uchar code table1=infrared value:; /液晶unsigned char IRCOM7; /定义数组,用来存储红外接收到的数据sbit lcden=P37; /液晶sbit lcdrs=P35; /液晶sbit IRIN=P32; /定义红外接收头的外部接口,即外部中断0sbit BEEP=P25; /定义蜂鸣器接口,我的在P15uchar num; /液晶char show_clock;/显示周期控制char now_tem;/存得到的温度char shinow,genow;/当前温度的十个位char wendu_show_shi
14、,wendu_show_ge;/温度送入液晶的ASCALL码char hongwai_jian_zhi ;/红外送入液晶的ASCALL码void delay_lcd(uint z) /液晶延时uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/写命令void write_com(uchar com) /液晶写 命令lcdrs=0;P1=com;delay_lcd(10);lcden=1;delay_lcd(10);lcden=0;/写数据void write_data(uchar date)/液晶写 数据lcdrs=1;P1=date;delay_lcd(10);
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 红外 解码 温度 液晶显示 设计