基于51单片机红外遥控解码与波形显示(程序+原理图+元件清单+设计说明)

红外遥控解码与波形显示介绍:

       本硬件电路设计采用一片STC89C52作解码主控芯片,红外接收采用一体红外接收,LCD12864用作显示,5个独立按键为参数设置键,并用24c02作参数存储器。

实现功能:

1.显示遥控解码的编码。通过参数设置菜单设置,可最多显示6字节(48位)遥控编码数据。

2.可对大部分红外遥控发射芯片进行解码,解码方式及解码所用到的参数由菜单设置。程序内置15种编码型号的参数,只需选择型号。另外预留5种自定义供用户设置。(15种波形解码的参数,已在表1列出,其的型号的可参照表1进行设置)。

3.接收的红外波,可按比例缩放(可按键设置1~9 * 50us/象素点或10us/象素点,不足一象素点按一象素点显示)显示波形并可显示当前显示波段第一个周期波的时间,显示的起始波段可按键设置。

4.利用24c02作存储器,对改变过的参数进行存储,确保参数掉电不丢失。

软件设计框图:

 

程序部分展示,有中文注释,新手容易看懂

void init_lcd(void) //液晶初始化
{
	wr_i_lcd(0x06);  //光标的移动方向
	wr_i_lcd(0x0c);  //开显示,关游标
	wr_i_lcd(0x30);
	wr_i_lcd(0x01);
}


//对液晶写数据
//content为要写入的数据
void wr_d_lcd(unsigned char content)
{
	busy_lcd();
	rs=1;
    rw=0;
	lcddata=content;
	e=1;
	;
	e=0;
}

//对液晶写指令
//content为要写入的指令代码
void wr_i_lcd(unsigned char content)
{
	busy_lcd();
	rs=0;
    rw=0;
	lcddata=content;
	e=1;
	;
	e=0;
}

//液晶检测忙状态
//在写入之前必须执行
void busy_lcd(void)
{
  lcddata=0xff;
  rs=0;
  rw=1;
  e =1;
  while(busy==1);
  e =0;
}

//指定要显示字符的坐标
void gotoxy(unsigned char y, unsigned char x)
{
	if(y==0)
	 	wr_i_lcd(0x80|x);
	if(y==1)
        wr_i_lcd(0x90|x);
	if(y==2)
		wr_i_lcd(0x88|x);
	if(y==3)
        wr_i_lcd(0x98|x);
}


//显示字符串程序
void print(unsigned char *str)
{
	while(*str!='\0')
	{
		wr_d_lcd(*str++);
	}
}


//显示十进制数字程序
void show_dec(unsigned int dat,unsigned char stu)
{
unsigned char n;
  if(dat < 10)
      n = 5;
  else if(dat < 100)
      n = 4;
  else if(dat < 1000)
      n = 3;
  else if(dat < 10000)
      n = 2;
  else
      n=1;
  if(stu > (6 - n))
     stu -= 6 - n;
  else
     stu = 0;
  switch(n)
  {
   case 1:wr_d_lcd(dat / 10000 + 0x30);dat %= 10000;
   case 2:wr_d_lcd(dat / 1000 + 0x30);dat %= 1000;
   case 3:wr_d_lcd(dat / 100 + 0x30);dat %= 100;
   case 4:wr_d_lcd(dat / 10 + 0x30);dat %= 10;
   case 5:wr_d_lcd(dat + 0x30);break;

百度云盘资料下载链接 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值