參加學校的比賽然后復試是做這個,第一次接觸這類東西,代碼也是按著百度搜到的紅外協議直接寫的代碼,很菜....不過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;
} |