红外遥控小车程序.docx
- 文档编号:17699744
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:24
- 大小:18.29KB
红外遥控小车程序.docx
《红外遥控小车程序.docx》由会员分享,可在线阅读,更多相关《红外遥控小车程序.docx(24页珍藏版)》请在冰点文库上搜索。
红外遥控小车程序
附录一程序代码
红外遥控编码程序
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineuintlongunsignedlong
sbitp3_0=P3^0;
sbitp2_1=P2^1;
sbitp1_0=P1^0;
sbitp1_1=P1^1;
sbitp1_2=P1^2;
sbitp1_3=P1^3;
bitout;
uintkeyvalue=0x00,flag_key=0,value1,value2,keycount=0,i,j,flag_set=0,
flag_press=0;
ucharcodekeycode[4]={0x7f,0xbf,0xdf,0xef};
ucharcode
portvalue[12]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x00,
0x0b};
ucharcodewy[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//**********红外发送部分**********//
ucharuser1=0x00,user2=0x00;
uintcount=0,endcount=0;
uintirdata=0;
voiddeltime(void);
voidkey_scan(void);
voidsendirdata(void);
main(void)
{
EA=1;
TMOD=0x11;
ET0=1;
p3_0=1;
P1=0xff;
TH0=0xFF;
TL0=0xE4;
TR0=0;
while
(1)
{
key_scan();
if(flag_press==1)
{
flag_press=0;
TR0=1;
sendirdata();
}
}
}
//**********按键扫描***********//
voidkey_scan(void)
{
for(i=0;i<=3;i++)
{
P1=keycode[i];
if(p1_3==0)
{keycount=i*3+0;flag_key=1;break;}
if(p1_2==0)
{keycount=i*3+1;flag_key=1;break;}
if(p1_1==0)
{keycount=i*3+2;flag_key=1;break;}
}
if(flag_key==1)
{
flag_key=0;
value1=P1;
deltime();
value2=P1;
if(value1==value2)
{keyvalue=portvalue[keycount];flag_set=1;flag_press=1;}
while(flag_set)
{value2=P1;
if(value1!
=value2)
flag_set=0;
}
}
}
//**********延时**********//
voiddeltime(void)
{
uintk;
for(k=0;k<=20;k++)
{}
}
//**********定时中断**********//
voidtime0int(void)interrupt1
{
TH0=0xFF;
TL0=0xE4;
count++;
}
//**********发送数据**********//
voidsendirdata()
{
uchars=0,datapd=0;
endcount=320;
p3_0=0;
count=0;
do{}while(count endcount=180; count=0; p3_0=1; do{}while(count for(s=0;s<=11;s++) { endcount=20; count=0; p3_0=0; do{}while(count endcount=20; count=0; p3_0=1; do{}while(count } irdata=keyvalue; for(s=0;s<=7;s++) { datapd=irdata&wy[s]; if(datapd==0) {endcount=20;count=0;} else {endcount=60;count=0;} p3_0=0; do{}while(count endcount=20;count=0; p3_0=1; do{}while(count } irdata=keyvalue; for(s=0;s<=7;s++) { datapd=irdata&wy[s]; if(datapd==0) {endcount=60;count=0;} else {endcount=20;count=0;} p3_0=0; do{}while(count endcount=20;count=0; p3_0=1; do{}while(count } TR0=0; } 红外遥控解码及驱动程序 COUNTEQU30H FLAG_USER1EQU45H FLAG_USER2EQU46H SAVEDATAEQU47H CS1EQUP3.0 CS2EQUP3.1 RSEQUP3.3 RWEQUP3.4 EEQUP3.5 PAGESEQU56H COLUMNEQU57H NUMEQU58H ORG0000H LJMPMAIN ORG0003H LJMPEXTER0INT ORG000BH LJMPTIMER0INT ORG1000H MAIN: MOVP1,#0C5H SETBP3.6 SETBP3.7 MOVTMOD,#01H;中断初始化 MOVTH0,#0FFH MOVTL0,#9CH SETBEA SETBIT0 SETBET0 SETBEX0 MOVR0,52H;数据接收初始化 MOV52H,#00H MOV53H,#00H MOV54H,#00H MOV55H,#00H MOV51H,#00H MOVCOUNT,#00H MOVR1,#08H MOVR2,#02H CLRPSW.5;数据接收标志 CLRPSW.1;数据处理标志 MOVFLAG_USER1,#00H LCALLCLEAR MOVDPTR,#TAB0;显示初始化 MOVPAGES,#1 MOVCOLUMN,#0 LCALLLCD_DISP MOVDPTR,#TAB2 MOVPAGES,#1 MOVCOLUMN,#16 LCALLLCD_DISP MOVDPTR,#TAB1 MOVPAGES,#1 MOVCOLUMN,#32 LCALLLCD_DISP MOVDPTR,#TAB3 MOVPAGES,#1 MOVCOLUMN,#48 LCALLLCD_DISP MOVDPTR,#TAB4 MOVPAGES,#1 MOVCOLUMN,#64 LCALLLCD_DISP MOVDPTR,#TAB5 MOVPAGES,#1 MOVCOLUMN,#80;显示红外遥控模式 LCALLLCD_DISP MOVDPTR,#TAB6 MOVPAGES,#3 MOVCOLUMN,#0 LCALLLCD_DISP MOVDPTR,#TAB7 MOVPAGES,#3 MOVCOLUMN,#16 LCALLLCD_DISP MOVDPTR,#TAB8 MOVPAGES,#3 MOVCOLUMN,#32 LCALLLCD_DISP MOVDPTR,#TAB10 MOVPAGES,#3 MOVCOLUMN,#64 LCALLLCD_DISP MOVDPTR,#TAB9 MOVPAGES,#3 MOVCOLUMN,#48 LCALLLCD_DISP;显示状态: 初始 LOOP: ;是否进行数据处理 JNBPSW.1,$ LCALLDATACHULI CLRPSW.1 MOVA,SAVEDATA LCALLDATASHOW ENDLOOP: LJMPLOOP EXTER0INT: ;外部中断 SETBTR0 MOV30H,#00H RETI TIMER0INT: ;定时中断,数据的验证和接收. MOVTH0,#0FFH MOVTL0,#9CH INC30H SETBP3.2 MOVC,P3.2 JBPSW.5,DATARECEIVEPD JNCENDTIMER0INT MOVA,30H CLRC SUBBA,#90 JCENDTIMER0INT SETBPSW.5 CLRTR0 MOVR1,#08H MOV51H,#00H MOVR0,#52H MOVR2,#04H;共接受两组数据 LJMPENDTIMER0INT DATARECEIVEPD: ;数据接收判断 JNCENDTIMER0INT CLRTR0 MOVA,30H CLRTR0 SUBBA,#10 JCORECEIVE SETBC MOVA,51H RRCA MOV51H,A LJMPWENDPD ORECEIVE: CLRC MOVA,51H RRCA MOV51H,A WENDPD: DJNZR1,ENDTIMER0INT;重复两次接收,确保存储. MOVR1,#08H MOV@R0,51H MOV@R0,51H INCR0 MOV51H,#00H DJNZR2,ENDTIMER0INT CLRPSW.5 SETBPSW.1 SETBP0.0 ENDTIMER0INT: ;定时中断结束 RETI DATACHULI: ;数据处理 MOVA,52H CLRC SUBBA,FLAG_USER1 JNZENDDATACHULI MOVA,54H ANLA,55H JNZENDDATACHULI MOVA,54H MOVSAVEDATA,A MOV52H,#00H MOV53H,#00H MOV54H,#00H MOV55H,#00H ENDDATACHULI: ;处理完成,返回主程序 RET DATASHOW: ;判断接收信号,进行相应处理 CJNEA,#00H,CON1 LJMPAOTO;状态判断 CON1: CJNEA,#02H,CON2 MOVP1,#0FAH MOVDPTR,#TAB11 MOVPAGES,#3 LJMPENDDATASHOW;后转并显示 CON2: CJNEA,#04H,CON3 MOVP1,#0E5H MOVDPTR,#TAB12 MOVPAGES,#3 LJMPENDDATASHOW;左转并显示 CON3: CJNEA,#05H,CON4 MOVP1,#0C5H MOVDPTR,#TAB13 MOVPAGES,#3 LJMPENDDATASHOW;停转并显示 CON4: CJNEA,#06H,CON5 MOVP1,#0D5H MOVDPTR,#TAB14 MOVPAGES,#3 LJMPENDDATASHOW;右转并显示 CON5: CJNEA,#08H,CON6 MOVP1,#0F5H MOVDPTR,#TAB15 MOVPAGES,#3 LJMPENDDATASHOW;前转并显示 CON6: JMPENDDATASHOW1 ENDDATASHOW: MOVCOLUMN,#48 LCALLLCD_DISP MOVDPTR,#TAB16 MOVPAGES,#3 MOVCOLUMN,#64 LCALLLcD_DISP ENDDATASHOW1: RET AOTO: MOVP1,#0C0H;寻迹壁障程序 MOVDPTR,#TAB17 MOVPAGES,#1 MOVCOLUMN,#0 LCALLLCD_DISP MOVDPTR,#TAB18 MOVPAGES,#1 MOVCOLUMN,#16 LCALLLCD_DISP MOVDPTR,#TAB19 MOVPAGES,#1 MOVCOLUMN,#32 LCALLLCD_DISP MOVDPTR,#TAB20 MOVPAGES,#1 MOVCOLUMN,#48 LCALLLCD_DISP;显示寻迹避障 MOVDPTR,#TAB10 MOVPAGES,#3 MOVCOLUMN,#64 LCALLLCD_DISP MOVDPTR,#TAB9 MOVPAGES,#3 MOVCOLUMN,#48 LCALLLCD_DISP;显示初始 LCALLDLY;模式工作前等待3秒 AOTO1: ;自动寻迹避障程序 MOVDPTR,#TAB15 MOVPAGES,#3 MOVCOLUMN,#48 LCALLLCD_DISP MOVDPTR,#TAB16 MOVPAGES,#3 MOVCOLUMN,#64 LCALLLCD_DISP;显示前转 MOVP1,#0F5H JNBPSW.5,AOTO2;检测红外信号 LCALLCLEAR MOVP1,#0C5H LCALLDLY1 LJMPMAIN AOTO2: JNBP1.6,ZZ;状态判断 JNBP1.7,YZ JNBP3.6,HT JNBP3.7,HT SJMPAOTO1 ZZ: MOVP1,#0E5H;右寻迹灯亮 MOVDPTR,#TAB12 MOVPAGES,#3 MOVCOLUMN,#48 LCALLLCD_DISP LCALLDLY SJMPDD YZ: MOVP1,#0D5H;左寻迹灯亮 MOVDPTR,#TAB14 MOVPAGES,#3 MOVCOLUMN,#48 LCALLLCD_DISP LCALLDLY LJMPDD HT: MOVP1,#0FAH;发现障碍物 MOVDPTR,#TAB11 MOVPAGES,#3 MOVCOLUMN,#48 LCALLLCD_DISP LCALLDLY SJMPZZ DD: LJMPAOTO1 DLY: MOVR7,#0BDH;3秒延时 DL1: MOVR6,#0E6H DL0: MOVR5,#21H DJNZR5,$ DJNZR6,DL0 DJNZR7,DL1 RET DLY1: MOVR7,#0A7H;1秒延时 DL3: MOVR6,#0ABH DL2: MOVR5,#10H DJNZR5,$ DJNZR6,DL2 DJNZR7,DL3 NOP RET CLEAR: MOVR4,#00H;清屏程序 CLEAR1: MOVA,R4 ORLA,#0B8H MOVB,A LCALLWCL0 LCALLWCR0 MOVB,#40H LCALLWCL0 LCALLWCR0 MOVR3,#40H CLEAR2: MOVB,#00H LCALLWCL1 LCALLWCR1 DJNZR3,CLEAR2 INCR4 CJNER4,#08H,CLEAR1 RET LCD_DISP: ;汉字显示程序 MOVR1,#02H MOVR0,#00H MOVNUM,#10H DISP: MOVR4,NUM DISPWORD: MOVA,COLUMN CLRC SUBBA,#63 JNCYXP MOVA,COLUMN ORLA,#40H MOVB,A LCALLWCL0 MOVA,PAGES ORLA,#0B8H MOVB,A LCALLWCL0 DISPDATA1: INCCOLUMN MOVA,R0 MOVCA,@A+DPTR MOVB,A LCALLWCL1 LJMPNEXTDISP YXP: MOVA,COLUMN CLRC SUBBA,#64 ORLA,#40H MOVB,A LCALLWCR0 MOVA,PAGES ORLA,#0B8H MOVB,A LCALLWCR0 DISPDATA2: INCCOLUMN MOVA,R0 MOVCA,@A+DPTR MOVB,A LCALLWCR1 NEXTDISP: INCR0 DJNZR4,DISPWORD MOVA,COLUMN CLRC SUBBA,#10H MOVCOLUMN,A INCPAGES DJNZR1,DISP RET WCL0: CLRCS1 SETBCS2 CLRRS SETBRW WCL00: MOVP2,#0FFH SETBE MOVA,P2 CLRE JBACC.7,WCL00 CLRRW MOVP2,B SETBE NOP CLRE RET WCL1: CLRCS1 SETBCS2 CLRRS SETBRW WCL11: MOVP2,#0FFH SETBE MOVA,P2 CLRE JBACC.7,WCL11 CLRRW SETBRS MOVP2,B SETBE CLRE RET WCR0: SETBCS1 CLRCS2 CLRRS SETBRW WCR00: MOVP2,#0FFH SETBE MOVA,P2 CLRE JBACC.7,WCR00 CLRRW MOVP2,B SETBE CLRE RET WCR1: SETBCS1 CLRCS2 CLRRS SETBRW WCR11: MOVP2,#0FFH SETBE MOVA,P2 CLRE JBACC.7,WCR11 CLRRW SETBRS MOVP2,B SETBE CLRE RET TAB0: DB20H,30H,0ACH,63H,20H,10H,04H,04H,04H,04H,0FCH,04H,06H,04H,00H,00H,22H,67H,22H,12H,12H,52H,40H,40H,40H,40H,7FH,40H,40H,60H,40H,00H;红 TAB1: DB40H,42H,44H,0CCH,00H,42H,36H,2AH,22H,0FEH,21H,29H,25H,80H,00H,00H,00H,40H,20H,1FH,21H,41H,5DH,49H,49H,4FH,49H,49H,5DH,61H,21H,00H;外 TAB2: DB00H,80H,0E0H,18H,17H,10H,90H,70H,00H,0FFH,20H,40H,80H,00H,00H,00H,01H,40H,20H,11H,0AH,04H,03H,00H,00H,0FFH,00H,00H,00H,01H,03H,00H;遥 TAB3: DB10H,10H,10H,0FFH,90H,50H,0CH,44H,24H,15H,06H,14H,24H,54H,0CH,00H,02H,42H,81H,7FH,00H,40H,42H,42H,42H,42H,7EH,42H,43H,62H,40H,00H;控 TAB4: DB10H,10H,0D0H,0FFH,94H,14H,0E4H,0BFH,0A4H,0A4H,0A4H,0BFH,0F4H,26H,04H,00H,04H,03H,00H,0FFH,08H,89H,8BH,4AH,2AH,1EH,2AH,2AH,4BH,0C8H,48H,00H;模 TAB5: DB10H,10H,90H,90H,90H,90H,90H,10H,0FFH,10H,12H,14H,10H,18H,10H,00H,00H,20H,60H,20H,1FH,10H,10H,08H,01H,06H,18H,20H,40H,80H,70H,00H;式 TAB6: DB00H,08H,30H,00H,0FFH,20H,20H,20H,20H,0FFH,20H,22H,24H,30H,20H,00H,08H,0CH,02H,01H,0FFH,40H,20H,1CH,03H,00H,03H,0CH,30H,60H,20H,00H;状 TAB7: DB04H,04H,84H,84H,44H,24H,54H,8FH,14H,24H,44H,44H,84H,86H,84H,00H,01H,21H,1CH,00H,3CH,40H,42H,4CH,40H,40H,70H,04H,08H,31H,00H,00H;态 TAB8: DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,036H,036H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 红外 遥控 小车 程序