⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是基于C51单片机的无线红外接受和发送程序
💻 C
字号:
/*******************************************************************************
程序名称:红外接收(从红外接收模块输入数据,并在LCD上显示)
硬件接法:红外接收模块的输出通过跳线JP7接到RXD管脚
运行效果:收到数据后立即显示出来,按RST键清除显示
*******************************************************************************/


#include "LCD.h"
#include "stdio.h"


#define MCLK		11059200L
#define BAUD_RATE	1200L


void UartInit()
{
//串行口设置:8位UART,允许接收,TI置位
	SCON = 0x52;
//波特率加倍
	PCON |= 0x80;
//设置定时器T1为8位自动重装模式
	TMOD &= 0x0F;
	TMOD |= 0x20;
//设置定时器T1的初值
	TH1 = 256 - ( MCLK / 12 ) / (16 * BAUD_RATE );
	TL1 = TH1;
//启动定时器T1
	TR1 = 1;
}


/*******************************************************************************
函数:Delay()
功能:延时0.01s~2.56s
参数:t>0时,延时(t*0.01)s
      t=0时,延时2.56s
说明:定时10ms的定时器初值=65536-0.01/(1/(f/12)),其中f为晶振频率
*******************************************************************************/
void Delay(unsigned char t)
{
	do
	{
		TH0 = 0xDC;			//设置定时器初值(定时10ms)
		TL0 = 0x00;
		TR0 = 1;			//启动定时器
		while ( !TF0 );		//等待定时器溢出
		TR0 = 0;			//停止定时器
		TF0 = 0;			//清除溢出标志
	} while ( --t != 0 );	//循环t次
}


//系统初始化
void SysInit()
{
	UartInit();
	TMOD &= 0xF0;	//T0设置在方式1,16位定时器,且不影响T1的设置
	TMOD |= 0x01;
	Delay(30);
	LcdInit();
}


void main()
{
	unsigned char c;
	SysInit();
	for (;;)	//接收数据并显示,按RST键可清除显示
	{
		c = _getkey();	//_getkey()为库函数,能够以查询方式接收1个字符
		if ( c < 128 ) LcdPutchar(c);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -