《基于单片机的远程控制系统 程序.docx》由会员分享,可在线阅读,更多相关《基于单片机的远程控制系统 程序.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于单片机的远程控制系统程序1、单片机初始化单片机的存储系统的分配利用在其工作经过中起非常大的作用,所以就必须对其进行必要的初始化。程序代码:1片内RAM初始化子程序IBCLR:MOVA,R0MOVR1,ACLRAIBC1:MOVR1,AINCR1DJNZR7,IBC1RET2片外RAM初始化子程序EBCLR1:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,ACLRCEBC11:MOVXDPTR,AINCDPTRDJNZR7,EBC11RET3片外RAM初始化子程序(双字节单元)EBCLR2:MOVA,ADDPLMOVDPL,AMOVA,ADDPHMOVDPH,AMOV
2、A,R7JZEBC21INCR6EBC21:CLRAMOVXDPTR,AINCDPTRDJNZR7,EBC21DJNZR6,EBC21RET2、振铃计数模块本单元是通过计数器T0的外部中断方式来计数的。程序代码:ORG0090HTT0:SETB7DHRETI3、语音提示模块本功能模块主要是产生信号提示音,方便不同的使用者。根据普通人耳的反响频率为20Hz至20KHz的范围,而CCITT规定的电话话音信号的频率范围是300Hz至3400Hz,所以在本功能单元的发声频率定为500Hz和1000Hz两种。主要分为五种提示音:1、一声低音,表示装置已经摘机,请输入密码,其参数:频率f=500Hz,延时
3、t=0.5秒/声;2、两声低音,表示密码已经通过,请选择电器,其参数:频率f=500Hz,延时t=0.5秒/声;3、三声低音,表示电器已经选定,请控制开/关,其参数:频率f=500Hz,延时t=0.5秒/声;4、三声高音,表示密码输入错误,其参数:频率f=1000Hz,延时t=0.3秒/声;5、一声高音,表示控制已经完成,其参数:频率f=1000Hz,延时t=0.3秒/声;提示音发生是使用有限循环,反复使单片机的RXD口的电平反转,进而构成方波信号。子程序代码:ORG1100HRING10:MOVR6,#20;请输入密码,RING11:MOVR7,#20;500Hz,RING12:LCALLD
4、L10;发出提示音,1CPLP3.0;延时0.5sDJNZR7,RING12DJNZR6,RING11CLRP3.0RETORG1150HRING20:MOVR3,#03RING21:MOVR6,#20;选择电器,RING22:MOVR7,#20;500Hz,RING23:LCALLDL20;发出提示音2,CPLP3.0;延时0.3sDJNZR7,RING23DJNZR6,RING22CLRP3.0MOVR7,#200RING24:LCALLDL10DJNZR7,RING24DJNZR3,RING21CLRP3.0RETORG1200HRING30:MOVR3,#02RING31:MOVR6,
5、#20;电器控制,RING32:MOVR7,#20;500Hz,RING33:LCALLDL10;发出提示音3,CPLP3.0;延时0.3sDJNZR7,RING33DJNZR6,RING32CLRP3.0MOVR7,#200RING34:LCALLDL10DJNZR7,RING34DJNZR3,RING31CLRP3.0RETORG1250HRING40:MOVR3,#03RING41:MOVR6,#20;输入的密码错误,RING42:MOVR7,#20;1000Hz,RING43:LCALLDL10;发出提示音4,CPLP3.0;延时0.3sDJNZR7,RING43DJNZR6,RING
6、42CLRP3.0MOVR7,#100RING44:LCALLDL10DJNZR7,RING44DJNZR3,RING41CLRP3.0RETORG1300HRING50:MOVR6,#40;操作完成,RING51:MOVR7,#20;1000Hz,RING52:LCALLDL20;发出提示音5,CPLP3.0;延时0.3sDJNZR7,RING52DJNZR6,RING51CLRP3.0RETORG1500HDL10:MOVR5,#25;delay1.25ms,f=500HZ,fosc=12MHzDL12:MOVR4,#2DL11:DJNZR4,DL11DJNZR5,DL12RETORG16
7、00HDL20:MOVR5,#12;delay0.625ms,f=1000HZ,fosc=12MHzDL22:MOVR4,#25DL21:DJNZR4,DL21DJNZR5,DL22RETORG1650HDL30:MOVR5,#50;delay20msDL32:MOVR4,#200DL31:DJNZR4,DL31DJNZR5,DL32RET4、密码修改模块本系统是通过在线输入密码而改变特定存储器中的密码值的。程序代码:ORG1700HKEYIN:SETBRS1;当前工作寄存器第二工作区CLRRS0ANLA,#00H;清零A寄存器MOVB,#05HLCALLRING10;发提示音:输入密码*MO
8、VR7,#5HMOVR1,#38HWPIN:JBC7EH,READ;等待INT0中断LJMPWPINREAD:MOVR1,#38HMOVR0,#40HMOVR7,#05HREAD1:MOVA,R1MOVR0,AINCR0INCR1DJNZR7,READ1;判定输入密码能否为5位,否;跳转READ1LCALLRING10;满5位,发提示音:再输入;新密码MOVR7,#5HMOVR1,#38HWRE:JBC7EH,KEYCMP;等待中断INT1LJMPWREKEYCMP:MOVR6,#05HMOVR0,#40HMOVR1,#38HKEYCP:MOVA,R0CLRCSUBBA,R1;A减R1INCR
9、1INCR0JZBBB;A的内容假如为0,则跳转BBBLJMPLLBBB:DJNZR6,KEYCP;R6减1不为0,则跳转KEYCP,;即循环比拟密码的五位MOVR1,#38HMOVR0,#30HMOVR6,#5HKEYREIN:MOVA,R1MOVR0,AINCR1INCR0DJNZ:R6,KEYREIN;R6减1不为0,则跳转,即循;环比拟密码的五位LCALLRING50;发提示音:新密码已经设置LJMPSTOPRET5、控制电器模块本系统首先通过外围双音频解码电路解码的信息选择电器判定所选择的电器,然后跳转到对应的子程序,通过单片机向P1口的八位发送控制命令,这些控制信息表示对不同的电器
10、进行控制的控制字。为了简单表示,在这里只写出了控制一路电器的控制子程序,其它子程序都类似,不再累述。程序代码:ORG1600HLL:LCALLRING30;提示选择需控制的电器MOVR7,#1H;控释电器的序号MOVR1,#38HCLR7EHWAIT0:JBC7EH,DD;等待外部中断INT0LJMPWAIT0DD:MOVR1,#38HMOVA,R1RRARRARRARRAMOVR4,ARLAADDA,R4MOVDPTR,#TABJMPA+DPTRTAB:LJMPZEROLJMPEIGHT;8LJMPFOUR;4LJMPSTOP;LJMPTWO;2LJMPZERO;0LJMPSIX;6LJMP
11、LL;*LJMPONE;1LJMPLL;9,*LJMPFIVE;5LJMPLL;A,*LJMPTHREE;3LJMPLL;*,*LJMPSEVEN;7LJMPLL;C,*ORG0250HZERO:LJMPLLONE:LCALLRING40;发提示音:请操作电器OO1:MOVR7,#01HCLR7EHWAIT1:JBC7EH,WW1;等待外部中断INT0LJMPWAIT1WW1:MOVR1,#38H;检查信号首位MOVA,R1CJNEA,#50H,BB1;38H不等于0AH0,则;跳转BB1LJMPZZ1;38H等于0AH0,则跳;转ZZ1BB1:CJNEA,#80H,QUIT1;38H不等于01H1,则;跳转QUIT1SETBP1.3;打开1CLRP1.2CLRP1.1CLRP1.0LJMPQUIT1ZZ1:CLRP1.3;全部关闭CLRP1.2CLRP1.1CLRP1.0LCALLRING50;结束QUIT1:LJMPLL结果和结论:如下归纳该系统的运作:1用户拨打一个号码。2个人电脑通过I/O接口发出铃流,并连接到电话线上,并发出了一个音频。3该系统等待验证密码。4使用者输入密码。5假如密码被接受,用户被连接到系统以控制家用电器。6假如密码不被接受,PC就会发出一个错误的音频和断开的来电。
限制150内