单片机公交车自动报站红外模块单片机解密
- 单片机解密#include <reg52.h> //调用单片机头文件
- 单片机解密#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
- 单片机解密#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
- sbit rs=P2^5; //寄存器选择信号 H:数据寄存器 L:指令寄存器
- sbit rw=P2^6; //寄存器选择信号 H:数据寄存器 L:指令寄存器
- sbit e =P2^7; //片选信号 下降沿触发
- sbit hw_P32=P3^2; //红外遥控接的IO口
- uchar hw_table[4]; //红外解码的缓冲区
- bit flag_jiema_en = 1; //红外解码成功标志
- uchar geshu=2;
- uchar code gj_ming[]="直达车 ";
- uchar code table1[]="1号站 ";
- uchar code table2[]=" 2号站 ";
- /***********************语音模块控制IO口的定义************************/
- sbit VRST = P3^7;
- sbit VBUSY= P3^6;
- sbit VSDA = P3^5;
- sbit VCS = P3^4;
- sbit VSCL = P3^3;
- /********************************************************************
- * 名称 : delay_1ms()
- * 功能 : 延时1ms函数
- * 输入 : q
- * 输出 : 无
- ***********************************************************************/
- void delay_1ms(uint q)
- {
- uint i,j;
- for(i=0;i<q;i++)
- for(j=0;j<120;j++);
- }
-
-
- /************ 延时函数 *****************/
- void delay_uint(uint z)
- {
- while(z--);
- }
- /***************交换函数 高位变低位 低位变高位*****************/
- uchar change_dat(uchar dat)
- {
- uchar i,value;
- for(i=0;i<8;i++)
- {
- value <<= 1;
- if((dat & 0x01) == 0x01)
- value |= 0x01;
- dat >>= 1;
- }
- return value;
- }
- /************ 写命令函数 *****************/
- void write_com(uchar com)
- {
- P0=change_dat(com);
- rw=0;
- rs=0;
- delay_uint(25);
- e=1;
- delay_uint(50);
- e=0;
- }
- /************ 写数据函数 *****************/
- void write_dat(uchar dat)
- {
- P0=change_dat(dat);
- rw=0;
- rs=1;
- delay_uint(25);
- e=1;
- delay_uint(50);
- e=0;
- }

芯片解密