|
參加學(xué)校的比賽然后復(fù)試是做這個(gè),第一次接觸這類東西,代碼也是按著百度搜到的紅外協(xié)議直接寫的代碼,很菜....不過PCB應(yīng)該沒啥問題,裝個(gè)單片機(jī),液晶顯示屏,復(fù)位開關(guān),紅外發(fā)射模塊,這些都具備,代碼如下:
#include <STC15F2K60S2.H>
#include <intrins.h>
#define LCD_DATA P2 //D0~D7的8位數(shù)據(jù)口
sbit E =P3^7;sbit RW=P3^6;sbit RS=P3^5;//使能(啟用)端,讀寫控制端
void check_busy() //液晶忙檢測(cè)函數(shù),用戶無須調(diào)用
{
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)//液晶命令控制函數(shù)
{
check_busy();
E=1; //使能液晶
RW=RS=0; //命令模式
LCD_DATA=command; //寫入數(shù)據(jù)
E=0;
}
void write_data(unsigned char Data) //液晶顯示字符函數(shù)
{
check_busy();
RW=0;
RS=E=1;
LCD_DATA=Data;
E=0;
}
void LCD_init() //液晶初始化函數(shù)
{
write_command(0x38); //顯示5*7點(diǎn)陣數(shù)據(jù)
write_command(0x0c); //開顯示,顯示閃爍光標(biāo)
write_command(0x06); //每寫入一個(gè)字符光標(biāo)自動(dòng)右移一位
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;
} |
|