参加学校的比赛然后复试是做这个,第一次接触这类东西,代码也是按着百度搜到的红外协议直接写的代码,很菜....不过PCB应该没啥问题,装个单片机,液晶显示屏,复位开关,红外发射模块,这些都具备,代码如下:
#include <STC15F2K60S2.H>
#include <intrins.h>
#define LCD_DATA P2 //D0~D7的8位数据口
sbit E =P3^7;sbit RW=P3^6;sbit RS=P3^5;//使能(启用)端,读写控制端
void check_busy() //液晶忙检测函数,用户无须调用
{
LCD_DATA=0xff;
RS=0;RW=1;E=0;E=1;
while(LCD_DATA&0x80){E=0;E=1;} //如果最高位为1说明正忙,尝试再写入
}
void write_command(unsigned char command)//液晶命令控制函数
{
check_busy();
E=1; //使能液晶
RW=RS=0; //命令模式
LCD_DATA=command; //写入数据
E=0;
}
void write_data(unsigned char Data) //液晶显示字符函数
{
check_busy();
RW=0;
RS=E=1;
LCD_DATA=Data;
E=0;
}
void LCD_init() //液晶初始化函数
{
write_command(0x38); //显示5*7点阵数据
write_command(0x0c); //开显示,显示闪烁光标
write_command(0x06); //每写入一个字符光标自动右移一位
write_command(0x01); //清屏
}
void Delay9000us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
i = 97;
j = 207;
do
{
while (--j);
} while (--i);
}
void Delay1660us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 18;
j = 216;
do
{
while (--j);
} while (--i);
}
void Delay550us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 6;
j = 231;
do
{
while (--j);
} while (--i);
}
void Delay4500us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 49;
j = 101;
do
{
while (--j);
} while (--i);
}
void Delay20000us() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 1;
j = 216;
k = 35;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{ int i=1;
LCD_init();
if(P13==0)
{
P34=0;
Delay9000us();
P34=1;
Delay4500us();
for(i=1;i<7;i++)
{
P34=0;
Delay550us();
P34=1;
Delay550us();
}
P34=0;
Delay550us();
P34=1;
Delay1660us();
for(i=1;i<22;i++)
{
P34=0;
Delay550us();
P34=1;
Delay550us();
}
P34=0;
Delay550us();
P34=1;
Delay1660us();
P34=0;
Delay550us();
P34=1;
Delay550us();
P34=0;
Delay550us();
P34=1;
Delay1660us();
P34=0;
Delay550us();
P34=1;
Delay550us();
P34=0;
Delay550us();
P34=1;
Delay550us();
P34=0;
Delay550us();
P34=1;
Delay1660us();
P34=0;
Delay550us();
P34=1;
Delay550us();
P34=0;
Delay550us();
P34=1;
Delay20000us();
for(i=1;i<9;i++)
{
P34=0;
Delay550us();
P34=1;
Delay550us();
}
P34=0;
Delay550us();
P34=1;
Delay1660us();
for(i=1;i<21;i++)
{
P34=0;
Delay550us();
P34=1;
Delay550us();
}
P34=0;
Delay550us();
P34=1;
Delay1660us();
P34=0;
Delay550us();
P34=1;
Delay550us();
P34=0;
Delay550us();
P34=1;
Delay1660us();
}
else
P13=0;
} |