STC89C52单片机红外接收系统程序设计

需积分: 19 3 下载量 149 浏览量 更新于2024-07-23 收藏 36KB DOCX 举报
"该资源是关于基于STC89C52单片机设计的红外接收系统的程序代码,其中包含了多个库文件,如IR、lcd1602、DS18B20、ADC0832CO以及IROUT555等,用于实现红外信号的接收、显示和处理功能。程序涉及到日期和时间的显示,以及可能的温度测量和报警功能。" 在红外接收系统中,STC89C52单片机作为核心控制器,负责处理来自1383红外一体化接收头的信号。红外接收头能够捕捉到遥控器发出的红外信号,并将其转化为单片机可以解析的电信号。红外接收主板主程序包含了多个库文件,这些库文件用于不同的功能模块: 1. `<IR.h>`:这是红外解码库,用于解析接收到的红外信号,通常包含红外信号的编码和解码函数,如NEC、RC5等红外协议。 2. `<lcd1602.h>`:液晶显示屏驱动库,用于在LCD1602屏幕上显示日期、时间、温度等信息。 3. `<DS18B20.h>`:DS18B20是一颗数字温度传感器,其库文件提供了与传感器通信的函数,用于读取环境温度。 4. `<ADC0832CO.h>`:ADC0832是一款8位模拟数字转换器,用于将模拟信号(如温度传感器的输出)转换为数字值。 5. `<IROUT555.h>`:这可能是用于实现定时器或振荡器功能的库,555定时器常用于产生脉冲或者定时控制。 程序中定义了一系列字符数组,如`ucharcodedisk0`至`ucharcodedisk18`,这些数组可能用于在LCD1602屏幕上显示日期、时间、状态消息和提示信息。 此外,程序还涉及到了一些变量和函数,例如`ucharcounter,shi,ge,keynum,keynum1,funnum`等,它们分别用于计数、存储时间(小时、分钟、秒)、按键编号和功能选择。还有一些全局变量如`year, month, day, hour, min, sec`用于表示日期和时间,`hour1, min1, sec1`则可能是设置的闹钟时间。 `keysan_rili()`函数可能是处理按键输入和设置日期的函数,通过单片机的输入引脚读取按键状态,实现对时间的设定。 在中断服务函数中,可以看到`sbitOUT=P3^6;`这样的定义,这表明P3.6引脚可能用于某些输出功能,如驱动LCD1602的背光或者红外接收头的使能信号。另外,`sbitBUZZ=P3^7;`定义了蜂鸣器的输出,可能用于报警提示。 程序中的`intTP0=0,TP1=0,T=0;`可能是用来计时的变量,而`sbitzheng=P3^6;`和`sbitfan=P3^5;`可能分别用于控制某些外部设备,如电机或继电器的正反转。 这个红外接收系统程序集成了红外解码、时间显示、温度测量、按键交互和报警功能,是一个典型的嵌入式系统应用实例。