📄 p0902-ird.c
字号:
for(i=0; i<8;i++)
{
LCD_write_byte(shuzi[c*16+i],1);
}
LCD_set_XY(x*8, y+1);
for(i=8; i<16;i++)
{
LCD_write_byte(shuzi[c*16+i],1);
}
}
//---------------------------------------
//名称: 初始化函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void init()
{
P2M0=0x0c;
P2M1=0x00;
}
//---------------------------------------
//名称: 按键扫描函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
unsigned char scakey()
{
h1=0;
h2=1;
_nop_();
if(l1==0)
{
return 1;
}
else if(l2==0)
{
return 2;
}
h1=1;
h2=0;
_nop_();
if(l1==0)
{
return 3;
}
else if(l2==0)
{
return 4;
}
return 0;
}
//---------------------------------------
//名称: 按键处理函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void keypro()
{
unsigned char buf;
buf=scakey();
if(buf==0)
{
if(keybit==0)
{
if(++keycon>2000)
{
keycon=0;
keybit=1;
LCD_clear(); //清屏幕
}
}
}
else if(buf==1) //K1键处理程序
{
if(keybit==1)
{
keybit=0;
disp16_16(0,0,0); //已
disp16_16(2,0,1); //按
disp16_16(4,0,2); //下
disp8_16(6,0,20); //K
disp8_16(7,0,1); //1
disp16_16(8,0,3); //键
send_all(0x00,0x08);
while(l1==0)
{
repeat();
}
}
}
else if(buf==2) //K2键处理程序
{
if(keybit==1)
{
keybit=0;
disp16_16(0,0,0); //已
disp16_16(2,0,1); //按
disp16_16(4,0,2); //下
disp8_16(6,0,20); //K
disp8_16(7,0,2); //2
disp16_16(8,0,3); //键
send_all(0x00,0x09);
while(l2==0)
{
repeat();
}
}
}
else if(buf==3) //K3键处理程序
{
if(keybit==1)
{
keybit=0;
disp16_16(0,0,0); //已
disp16_16(2,0,1); //按
disp16_16(4,0,2); //下
disp8_16(6,0,20); //K
disp8_16(7,0,3); //3
disp16_16(8,0,3); //键
send_all(0x00,0x11);
while(l1==0)
{
repeat();
}
}
}
else if(buf==4) //K4键处理程序
{
if(keybit==1)
{
keybit=0;
disp16_16(0,0,0); //已
disp16_16(2,0,1); //按
disp16_16(4,0,2); //下
disp8_16(6,0,20); //K
disp8_16(7,0,4); //4
disp16_16(8,0,3); //键
send_all(0x00,0x0d);
while(l2==0)
{
repeat();
}
}
}
}
//---------------------------------------
//名称: 发送头码函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void send_head(void)
{
TR0=1;
intcon=0;
while(intcon<692);
TR0=0;
irdio=1;
intcon=0;
TR1=1;
while(intcon<346);
TR1=0;
irdio=1;
}
//---------------------------------------
//名称: 发送数据0函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void send_0(void)
{
intcon=0;
TR0=1;
while(intcon<43);
TR0=0;
irdio=1;
intcon=0;
TR1=1;
while(intcon<43);
TR1=0;
irdio=1;
}
//---------------------------------------
//名称: 发送数据1函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void send_1(void)
{
intcon=0;
TR0=1;
while(intcon<43);
TR0=0;
irdio=1;
intcon=0;
TR1=1;
while(intcon<130);
TR1=0;
irdio=1;
}
//---------------------------------------
//名称: 发送结束码函数 40ms
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void send_over(void)
{
intcon=0;
TR0=1;
while(intcon<43);
TR0=0;
irdio=1;
intcon=0;
TR1=1;
while(intcon<3076);
TR1=0;
irdio=1;
}
//---------------------------------------
//名称: 发送一个字节(8BIT)函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void send_data(unsigned char dat)
{
unsigned char j;
for(j=0;j<8;j++)
{
if(dat&(0x01<<j))
{
send_1();
}
else
{
send_0();
}
}
}
//---------------------------------------
//名称: 发送完整码函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void send_all(unsigned char address,unsigned char data1)
{
send_head(); //发送头码
send_data(address); //发地址码
send_data(~address); //发地址反码
send_data(data1); //发数据码
send_data(~data1); //发数据反码
send_over(); //发结束码
}
//---------------------------------------
//名称: 发送重复码函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081231
//-----------------------------------------
void repeat(void)//108ms
{
intcon=0;
TR0=1;
while(intcon<692);//9ms
TR0=0;
irdio=1;
intcon=0;
TR1=1;
while(intcon<130);//1.69ms
TR1=0;
irdio=1;
intcon=0;
TR0=1;
while(intcon<43);//0.56ms
TR0=0;
irdio=1;
intcon=0;
TR1=1;
while(intcon<7442);//96.75ms
TR1=0;
irdio=1;
}
//---------------------------------------
//名称: T0定时器256us中断函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void timer0(void)interrupt 1 using 0 //TIMER0方式1,采用中断方式
{
intcon++;
irdio=!irdio;
}
//---------------------------------------
//名称: T1定时器256us中断函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void timer1(void)interrupt 3 using 1 //TIMER0方式1,采用中断方式
{
intcon++;
}
//---------------------------------------
//名称: 主函数
//作者:cby
//网站:宁波单片机开发网
//网址:www.nbdpj.com
//邮箱:nbdpj@nbdpj.com
//日期:20081111
//-----------------------------------------
void main()
{
unsigned char k;
TMOD=0x22;//T0用于延时程序
TH0=0xf4;
TL0=0xf4;
TH1=0xf4;
TL1=0xf4;
init();
init_spi();
res=0;
for(k=0;k<250;k++);
res=1; //LCD复位
LCD_init(); //初始化LCD模块
LCD_clear(); //清屏幕
back_led=0; //开背光
ET0=1;
TR0=0;
ET1=1;
TR1=0;
EA=1;
while(1)
{
keypro();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -