资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目录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初始化时序及程序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单片机产品兼容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 标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。一个完整的全码=引导码+用户码+用户码+数据码+数据反码。其中,引导码高电平9ms,低电平4.5ms;系统码8 位,数据码8 位,共32 位;其中前 16 位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后 16 位为 8 位的操作码和 8 位的操作反码,用于核对数据是否接收准确。收端根据数据码做出应该执行什么动作的判断。连发代码是在持续按键时发送的码。它告知接收端,某键是在被连续地按着。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;/禁止中断,以免再次进入中断 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)和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=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)可编程的分辨率为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 = 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)dat |= 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_lcd(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=temperature:;/液晶uchar code table1=inf
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号