电气二单片机个实验_第1页
电气二单片机个实验_第2页
电气二单片机个实验_第3页
电气二单片机个实验_第4页
电气二单片机个实验_第5页
已阅读5页,还剩203页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

闪烁 I/O并行口直接驱动LED显 00-99计数 00-59秒计时器(利用软件延时 可预置可逆4位计数 4×4矩阵式键盘识别技 定时计数器T0作定时应用技术(一 定时计数器T0作定时应用技术(二 99秒马表设 电子 8X8LED点阵显示技 点阵式LED“0-9”数字显示技 点阵式LED简单图形显示技 ADC0809A/D转换器基本应用技 6位数显频率计数 4×4键盘及8位数码管显示构成的电子密码 带有存储器功能的数字温度计-DS1624技术应 DS18B20数字温度计使 1灭,一亮一灭的时间间隔为0.2秒。L1(1)L1(1)0.2秒,相对于微秒来说,相差太大,所以我们在执MOVR6,#20222D1:MOVR7,#2482DJNZR7,$2DJNZ2D1:MOVR7,#2482DJNZR7,$2DJNZR6,D12时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,R5=20,延时子程序如下:DELAY:MOVR5,#20D1:MOVR6,#20D2:MOVR7,#248(2)1P1.0P1.0=1P1.0=0L1SETBP1.0P1.0CLRP1.0P1.05.ORG0START:ORG0START:CLRP1.0LCALLDELAYSETBP1.0LCALLDELAYLJMPSTARTDELAY:MOVR5,#20D1:MOVR6,#20D2:MOVR7,#2487.C语言源程序sbitL1=P1^0;{unsignedchari,j,k;for(j=20;j>0;j--for(k=248;k>0;k--}void{}}2void{}}2关1.如图4.2.1K1(接在P3.0端口上),用发光二极管L1(P1.0块”区域中的L1端口上;的K1端口上;(1).开关状态的检测过单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信单片机可以采用JBBIT,REL者是JNBBIT,REL令来完成对开关状态的(2)出控导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即时,发光二极管L1我们可以使用SETBP1.0令端口输出高平,使P1.0指令端口输出程序框汇编源程ORGSTART:JBP3.0,LIGCLRP1.0SJMPLIG:SETBP1.0SJMPSTART7.C语言源程序LIG:SETBP1.0SJMPSTART7.C语言源程序{{L1=0;}{L1=1;}}}3.多路开关状态指1.4.3.1,AT89S51P1.0-P1.3L1-2.3.3.极管指示模块”区域中的L1-L4端口上;关”区域中的K1-K4端口上;4.(1.JBP1.X,RELJNBP1.X,RELMOVA,P1P14(2.根据开关的状态,由发光二极管(2.根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETBP1.XCLRP1.X令来完成,也可以采用P1,#1111XXXXB方法一次指示5.序框ACC内容右4ACC内容F0H相ACC内容送P1<![endif]--ORG00HSTART:MOVA,P1ANLA,#0F0HMOVP1,ASJMPSTARTunsignedchartemp;void{{temp=temp|0xf0;}}ORG00HSTART:JBP1.4,NEXT1CLRP1.0SJMPNEXT1:SETBP1.0NEX1:JBP1.5,NEXT2CLRP1.1SJMPNEXT2:SETBP1.1NEX2:JBP1.6,NEXT3CLRP1.2SJMPNEXT3:SETBP1.2NEX3:JBP1.7,NEXT4CLRP1.3SJMPNEXT4:SETBP1.3NEX4:SJMPSTART#include<AT89X51H>void{}}}}}}}4.广告灯的左移右1.P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.02.3.示模块”区域中的L1-L8端口上,要求:P1.0L1,P1.1L2,……,P1.7对应着L8。4.MOVP1,AMOVP1,#DATA,只要给累加3.示模块”区域中的L1-L8端口上,要求:P1.0L1,P1.1L2,……,P1.7对应着L8。4.MOVP1,AMOVP1,#DATA,只要给累加1111111111111111111011101110111011101111L5START:MOVR2,#8MOVA,#0FEHSETBCLOOP:MOVP1,ALCALLDELAYRLCADJNZR2,LOOPMOVR2,#8LOOP1:MOVP1,ALCALLDELAYRRCADJNZR2,LOOP1LJMPSTARTDELAY:MOVR5,#20D1:MOVR6,#20D2:MOVR7,#248;START:MOVR2,#8MOVA,#0FEHSETBCLOOP:MOVP1,ALCALLDELAYRLCADJNZR2,LOOPMOVR2,#8LOOP1:MOVP1,ALCALLDELAYRRCADJNZR2,LOOP1LJMPSTARTDELAY:MOVR5,#20D1:MOVR6,#20D2:MOVR7,#248;11011111L610111111L701111111L87.C7.Cvoid{unsignedcharm,n,s;for(n=20;n>0;n--for(s=248;s>0;s--}void{{{}{}}}5.广告灯(利用取表方式1.5.广告灯(利用取表方式1.P1.0-P1.78指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。(1).MOVDPTR,#DATA16(2).MOVCA,@A+DPTRDPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。(2).MOVCA,@A+DPTRDPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。MOVCA,@A+DPTRSTART:MOVDPTR,#TABLELOOP:CLRAMOVCA,@A+DPTRJMPSTARTLOOP1:MOVP1,AMOVR3,#20LCALLDELAYINCDPTRJMPDELAY:MOVR4,#20D1:MOVR5,#248R5,$R4,TABLE:DBR5,$R4,TABLE:DB00H,0FFH,00H,7.C语言源程序unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,unsignedcharvoid{unsignedcharm,n,s;for(n=20;n>0;n--for(s=248;s>0;s--}void{{{}{}{}}}6生1.P1.01KHz500Hz块”区域中的SPKIN端口上;16欧的喇叭;关”区域中的K1端口上;1ms,信号电平每500us1次;5.序框FLAGBIT00HORG00HSTART:JBFLAGBIT00HORG00HSTART:JBCPLP1.0DJNZR2,DVCPLFLAGNEXT:MOVR2,#200DV1:CPLP1.0LCALLDELY500DJNZR2,DV1CPLFLAGDELY500:MOVR7,#250LOOP:NOP7.C语言源程序#includebitunsignedcharvoid{unsignedchari;{}}void{{{for(count=200;count>0;count--{for(count=200;count>0;count--}for(count=200;count>0;count--}}}7I/O并行口直接驱动LED显1.字,时间间隔0.2秒。2.3.静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD03.静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD04.LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发共阴极的字形码见表2图6ORGNEXT:MOVA,R1MOVDPTR,#TABLEMOVCA,@A+DPTRMOVP0,AINCR1CJNER1,#10,NEXTLJMPSTARTD2:MOVR6,#20D1:MOV图6ORGNEXT:MOVA,R1MOVDPTR,#TABLEMOVCA,@A+DPTRMOVP0,AINCR1CJNER1,#10,NEXTLJMPSTARTD2:MOVR6,#20D1:MOVR7,$DJNZR6,D1DJNZR5,D2RETR7,$DJNZR6,D1DJNZR5,D2RET7C#includeunsignedcharvoid{}void{{{}}}8.按键识别方法之1.P1.3显示出其的二进制计数值。2.3.3.的SP1端口上;光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1L2,P1.2L3,P1.3L44.(1.其实,作为一个按键从没有按下到按下以及释放是一个完整的过从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以(1.JBBIT,RELBITBIT=1,REL但对程序设计过程中按键识但对程序设计过程中按键识别过程的框图如右图所示程序框汇编源程ORGMOVA,R1;CPLA;取反指R10,表示从0开始计MOVP1,A;送出P1端口由发光二极管显JNBP3.7,REL;再判断SP1是否真得按下INCR1;若真得按下,则进行按键处理,使CPLA;发光二极管显示MOVP1,ASJMPRELK1L1:MOVR7,#248R7,$DJNZ10ms7.C语言源程序#include<reg52.h>sbitP3_7=P3^7;unsignedcharcount;void{unsignedchari,j,k,l;for(j=20;j>0;j--for(k=20;k>0;k--for(l=248;l>0;l--void{{{{}{}}}}}9.一键多功能按键识别技接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪SP1,L2P1.1的时候,又轮到L1在闪烁了,如此轮流下去。区域中的SP1端口上;区域中的SP1端口上;接到L4上。(1.(2.从上面的要求我们可以看出从上面的要求我们可以看出,L1L4光二极管在每个时刻的闪烁的时间是闪烁时,ID=0;当L2在闪烁时,ID=1;当L3在闪烁时,ID=2;当L45.程序框IDEQU30HSP1BITP3.7ORGMOVID,#00HSTART:JBK1,RELJBK1,RELINCIDMOVID,#00HREL:JNBK1,$MOVA,IDCPLL1SJMPSTARTIS0:CJNEA,#01H,IS1CPLL2SJMPSTARTIS1:CJNEA,#02H,IS2CPLL3SJMPSTARTIS2:CJNEA,#03H,IS3CPLL4SJMPSTARTIS3:LJMPSTARTDELAY10MS:MOVR6,#20LOOP1:MOVR7,#248DJNZR7,$DELAY:MOVR5,#20LOOP2:LCALLDELAY10MSDJNZR5,LOOP27.C语言源程序unsignedcharID;{unsignedchari,j;for(j=248;j>0;j--}voidvoid{unsignedchari;for(i=20;i>0;i--}}void{{{}}}{case0:case1:case2:case3:}}}1000-99计数1.1000-99计数1.“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0a,P0.1/AD1b,……,P0.7/AD7h。“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;区域中的SP1端口上;4.10求区域中的SP1端口上;4.10求CountEQU30HSP1BITP3.7ORG0START:MOVCount,#00HNEXT:MOVA,CountMOVP0,AMOVMOVP2,AWT:JNBSP1,WTWAIT:JBSP1,WAITLCALLDELY10MSJBSP1,WAITINCCountCJNEA,#100,NEXTLJMPSTARTDELY10MS:MOVR6,#20D1:MOVR7,#248R7,$DJNZR6,D1TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH7.C语言源程序unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,unsignedcharvoid{unsignedchari,j;for(j=248;j>0;j--}void{{{{}}}}}11.00{}}}}}11.00-59秒计时器(利用软件延时“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0a,P0.1/AD1b,……,P0.7/AD7h。“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8a,P2.1/A9“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0a,P0.1/AD1b,……,P0.7/AD7h。“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8a,P2.1/A9b,……,P2.7/A15h。4.就让秒计数单元加1,当秒计数达到60时,就自动返回到0,重新秒计计算得到1秒时间为1.002秒。MOVD2:D1:5.ORG0START:ORG0START:MOVNEXT:MOVMOVP0,AMOVMOVP2,ALCALLDELY1SINCSecondLJMPSTARTD2:MOVD1:TABLE:DB7.C语言源程序unsigned7.C语言源程序unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,unsignedcharvoid{unsignedchari,j,k;for(i=20;i>0;i--for(j=248;j>0;j--}void{{{}}}1.P1.4-P1.7K1-2.3.3.对应着L2,P1.2L3,P1.3L4;盘”区域中的SP1SP2上;4.(1程序框汇编源程COUNTEQU30HORG00HSTART:MOVSK2:JBP3.6,SK1LCALLDELY10MSJBP3.6,SK1INCCOUNTMOVA,P3ANLA,#0FHMOVCOUNT,ANEXT:MOVP1,AWAIT:JNBANLA,#0FHMOVCOUNT,ANEXT:MOVP1,AWAIT:JNBP3.6,WAITLJMPSK2SK1:JBP3.7,SK2LCALLDELY10MSJBP3.7,SK2DECCOUNTCJNENEX:MOVWAIT2:JNBP3.7,WAIT2LJMPSK2DELY10MS:MOVR6,#20MOVR7,#248D1:DJNZR7,$DJNZR6,D1RET7.C语言源程序unsignedcharvoid{unsignedchari,j;for(j=248;j>0;j--}void{curcount=P3&0x0f;{{{}{{}{}}{{{}{curcount--}}}}}13.动态数码显示技1.4.13.1所示,P0的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字2.3.态数码显示”区域中的a-h端口上;3.态数码显示”区域中的a-h端口上;态数码显示”区域中的S1-S8端口上;中的SP1端口上;4.(1.(3.对于显示的字形码数据我们采用查表方法来完成程序框START:JBP1.7,DIR1MOVDPTR,#TABLE1SJMPDIRDIR1:MOVDPTR,#TABLE2DIR:MOVR0,#00HMOVR1,#01HNEXT:MOVA,R0MOVCINCR0RLAMOVINCR0RLAMOVMOVD1:MOVR7,#248DJNZR7,$TABLE1:DB06H,5BH,4FH,66H,6DHTABLE2:DB78H,79H,38H,38H,3FH7.Ccodetable1[]={0x06,0x5b,0x4f,0x66,0x6d};codetable2[]={0x78,0x79,0x38,0x38,0x3f};void{{{}{}b=temp>>(7-for(a=4;a>0;a--for(b=248;b>0;b--}}14for(a=4;a>0;a--for(b=248;b>0;b--}}14.4×4矩阵式键盘识别技1.2.3.3.C1-C4R1-R4“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0a,P0.1/AD1b,……,P0.7/AD7h。4.程序框6.程序框6.编源程序KEYBUFEQU30HORG00HSTART:MOVKEYBUF,#2JZNOKEY1JZCJNELJMPNK1:CJNELJMPNK2:CJNELJMPNK3:CJNELJMPDK1NK4:JZCJNELJMPNK1:CJNELJMPNK2:CJNELJMPNK3:CJNELJMPDK1NK4:NOPMOVCDK1A:MOVJZNOKEY2JZNOKEY2MOVA,P3CJNELJMPNK5:CJNELJMPNK6:CJNELJMPNK7:CJNELJMPDK2NK8:NOPLJMPNK5:CJNELJMPNK6:CJNELJMPNK7:CJNELJMPDK2NK8:NOPMOVCDK2A:MOVJZNOKEY3JZNOKEY3MOVA,P3MOVKEYBUF,#8LJMPDK3NK9:CJNEA,#0DH,NK10MOVKEYBUF,#9LJMPNK10:CJNEA,#0BH,NK11MOVKEYBUF,#10LJMPNK11:CJNEA,#07H,NK12MOVKEYBUF,#11LJMPDK3LJMPNK11:CJNEA,#07H,NK12MOVKEYBUF,#11LJMPDK3MOVA,KEYBUFMOVCA,@A+DPTRMOVP0,ADK3A:MOVJZNOKEY4JZNOKEY4MOVA,P3MOVKEYBUF,#12LJMPDK4NK13:CJNEA,#0DH,NK14MOVKEYBUF,#13LJMPNK14:CJNEA,#0BH,NK15MOVKEYBUF,#14LJMPNK15:CJNEA,#07H,NK16MOVKEYBUF,#15LJMPDK4MOVMOVCA,@A+DPTRMOVP0,ADK4A:MOVMOVCA,@A+DPTRMOVP0,ADK4A:MOVLJMPWAITMOVD1:MOVR7,#248DJNZR7,$TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71H7.C语言源程序unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,void{{temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&ifif{temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temptemp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}}}}15.定时计数器T0作定时应用技术(一1.AT89S51T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。硬件电路如下图所2.3.3.“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0a,P0.1/AD1b,……,P0.7/AD7h。“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8a,P2.1/A9b,……,P2.7/A15h。4.软件来设定TCON特殊功能寄存器来完成的。16T065536us,65.536ms,1TH0=(216-50000) TH0=(216-50000) 汇编源程序(查询法SECONDEQUORG00HMOVTL0,#(65536-/MODSETBDISP:MOVTL0,#(65536-/MODSETBDISP:MOVMOVP0,AMOVMOVP2,AWAIT:JNB/MODCJNECJNENEX:LJMPDISPNEXT:LJMPTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH#include<AT89X51.H>unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,unsignedcharsecond;unsignedcharvoidTL0=(65536-{{{}}}}1.汇编源程序(中断法SECONDEQUTCOUNTEQUORG00HLJMPSTARTORG0BHLJMPINT0XSTART:MOVP0,AMOVMOVP2,A/MOD$/CJNECJNE/MOD$/CJNECJNENEX:MOVMOVCMOVCNEXT:TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH#include<AT89X51.H>unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,unsignedcharsecond;unsignedcharvoid{}}10voidt0(void){{{}}TL0=(65536-}16.定时计数器T0作定时应用技术(二1.下去。0.2秒的闪烁速率也由定时/计数器T0来完成。2.3.指示模块”区域中的L1-L4上4.3.指示模块”区域中的L1-L4上4.ORGSTART:..INT_T0:PUSHACCPUSHPSW..POPPSWPOP;中断服务程序返.INT_T0:PUSHACCPUSHPSW..POPPSWPOP;中断服务程序返21650ms,共定40次才可达2秒,50ms产生一中断,定时40次数在中断服务程序中完成,同由于每次2秒定时到时,L1-L4要交替闪烁。采用ID=0L1在闪烁;时在闪5.序框主程序框6.编源程6.编源程6.汇编源程序TCOUNT2SEQU30HTCNT02SEQU31HIDEQU32HORG00HORG0BHLJMPSTART:MOVTH0,#(65536-50000)/TL0,#(65536-50000)MOD256LJMPSTART:MOVTH0,#(65536-50000)/TL0,#(65536-50000)MOD256$INT_T0:MOVTH0,#(65536-/CJNEA,#40,NEXTINCIDMOVCJNEA,#04H,NEXTMOVID,#00HNEXT:INCTCNT02SMOVA,TCNT02SCJNEA,#4,DONEMOVTCNT02S,#00HMOVA,IDCPLP1.0SJMPCPLP1.1SJMPDONECPLP1.2SJMPDONECPLP1.37.C语言源程序unsignedcharunsignedchartcount02s;unsignedcharID;voidunsignedchartcount02s;unsignedcharID;void}voidt0(void){{}}{{case0:case1:case2:case3:P13=~P110}}}1799秒马表设1.}}}1799秒马表设1.第2次按SP1后,计时停止。3.“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0a,P0.1/AD1b,……,P0.7/AD7h。“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8a,P2.1/A9b,……,P2.7/A15应h。中的SP1端口上;用导线连接到”独立式键盘“区程序框主程序框TCNTAEQU30HTCNTBEQU31HSECEQU32HKEYCNTTCNTAEQU30HTCNTBEQU31HSECEQU32HKEYCNTEQU33HSP1BITP3.5ORG00HLJMPSTARTORG0BHSTART:MOVMOVCMOVP2,ASETBET0SETBEAWT:JBSP1,WTJBSP1,WTMOVP2,ASETBET0SETBEAWT:JBSP1,WTJBSP1,WTSETBTR0LJMPKN1:CJNELJMPKN2:CJNEMOVCMOVCDKN:JNBSP1,$LJMPWTMOVD1:MOVR7,#248DJNZR7,$INCTCNTAMOVCJNECJNECJNEDONE:CJNECJNECJNEDONE:MOVA,SECMOVB,#10DIVMOVDPTR,#TABLEMOVCA,@A+DPTRMOVP2,ANEXT:RETITABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH6.C语言源程序unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,charsecond;charkeycnt;inttcnt;void{unsignedchar{for(i=20;i>0;i--{{case1:case2:case3:}}}}}voidt0(void){{{}1using}}18.“嘀、嘀、}}18.“嘀、嘀、……”报警1.AT89S51P1.0域中的SPKIN端口上,0.20.2秒钟,如此循环下去,假设嘀声的频率为1KHz,则报警声时序图如下图所示:上述波形信号如何用单片机来产生呢电平占用0.5ms,低电平占用0.5ms,因此也采用定时器T0来完成要定0.2秒则0.5ms0.5ms5.序框主程序框中断服务程序框中断服务程序框T02SAEQU30HT02SBEQU31HFLAGBIT00HORG00HLJMPSTARTORG0BHSTART:MOVTL0,#(65536-/MOD$MOVTL0,#(65536-/MODINCT02SAINCT02SBMOVA,T02SBINCT02SAINCT02SBMOVA,T02SBCJNEA,#04H,NEXTNEXT:JBFLAG,DONECPLP1.07.C语言源程序#include<AT89X51.H>intt02s;bitvoid}voidt0(void){}1using}}19.1.}}19.1.域中的SPKIN端口上;区域中的SP1端口上;时/计数器T0,我们取定时250us,因此,700HZ的频率要经3250us定时500HZ频率要经4250us定时。“叮”和“咚”声音各占0.5秒,因此定时/计T0要完0.5的定为基准定次才可以5.序框主程序框T5HZEQU30HT7HZEQU31HT05SAEQU32HT05SBEQU33HFLAGBIT00HSTOPBIT01HSP1BITP3.7ORG00HLJMPSTARTORG0BHSTART:MOVTMOD,#02HMOVTH0,#06HMOVJBJBSP1,NSPSETBTR0JBSP1,NSPSETBTR0LJMPDELY10MS:MOVR6,#20D1:MOVR7,#248R7,$DJNZR6,D1INT_T0:INCT05SAMOVA,T05SACJNEMOVT05SB,#00HJBFLAG,STPCPLFLAGLJMPNEXTSTP:SETBSTOPCLRTR0LJMPNEXT:JBFLAG,S5HZINCT7HZMOVMOVT7HZ,#00HCPLP1.0LJMPDONES5HZ:INCT5HZMOVA,T5HZMOVT5HZ,#00HCPLP1.0LJMPDONEDONE:7.Cchar7.Cchart5hz;chart7hz;inttcnt;bitstop;bitvoid{unsignedchar{for(i=10;i>0;i--{}}}}1usingvoidt0(void){{{}{}}{{{{}{}}{{}}{{}}}201.电路原理系统板上硬件电路原理系统板上硬件连把“单片机系统”区域中P1.0-P1.78线连接到“动态码显示”区域中的S1-S8端口上;导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;5.5.SECONDEQU30HMINITEEQU31HHOUREQU32HHOURKSECONDEQU30HMINITEEQU31HHOUREQU32HHOURKBITP0.0TEMPEQUORG00HLJMPSTARTORG0BHSTART:MOVLCALL/MODSETBET0SETBEAWT:JBSECONDK,NK1LCALLDELY10MSINCSECONDMOVA,SECONDCJNEA,#60,NS60MOVSECOND,#00HNS60:LCALLDISPJNBSECONDK,$NK1:JBMINITEK,NK2LCALLDELY10MSINCMINITEMOVA,MINITECJNEA,#60,NM60MOVMINITE,#00HNM60:LCALLDISPJNBMINITEK,$NK2:JBMOVA,MINITECJNEA,#60,NM60MOVMINITE,#00HNM60:LCALLDISPJNBMINITEK,$NK2:JBHOURK,NK3LCALLDELY10MSJBHOURK,NK3INCHOURMOVA,HOURCJNEA,#24,NH24MOVHOUR,#00HNH24:LCALLDISPJNBHOURK,$NK3:LJMPWTMOVD1:MOVR7,#248DJNZR7,$DECR1/MOVCMOVCDECR1/MOVCMOVCCJNEKNA:INCCJNECJNECJNEMOVA,MINITECJNEA,#24,NEXTMOVHOUR,#00HNEXT:LCALLDISPDONE:RETITABLE:DBMOVA,MINITECJNEA,#24,NEXTMOVHOUR,#00HNEXT:LCALLDISPDONE:RETITABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40HTAB:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH7.C语言源程序unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,unsignedchardispbitcode[]={0xfe,0xfd,0xfb,0xf7,inttcnt;charvoid{{for(i=5;i>0;i--{{}}{for(i=5;i>0;i--{{}}{for(i=5;i>0;i--{{}}}}}voidt0(void)interrupt1using{{{}}{{{{}}}}}21.拉幕式数码}}21.拉幕式数码显示技1.AT89S51P0.0/AD0-P0.7/AD7a-h,8位数码管S1-S874LS138码器Y0-Y7控制选通每个数码管的位选端。AT89S51P1.0-P1.274LS138A,B,C8位数码管上态数码显态数码显示”区域中的a-h端口上;示”区域中的S1-S8端口上;码模块”区域中的A、B、C“端口上;流显示才可以,同时每个数码管显示的时间大约1ms4ms1ms对数码管刷新一次,T0采用方式2。8个显示缓冲区,每5.序框主程序框中断服务程序框6.编源程6.编源程T1CNTAEQU3AHT1CNTBEQU3BHCNTEQU3CHORG00HLJMPSTARTORG0BHSTART:MOVMOV@R1,ADJNZ/MOD$START:MOVMOV@R1,ADJNZ/MOD$/MOVCCJNENEXT:INCT1CNTAMOVA,T1CNTACJNEA,#50,LL1CJNEA,#8,LL1INCCNTMOVCNT,#00HMOVA,CNTLLX:CJNEA,#01H,NEX1MOV30H,#8LL1:LJMPNEX1:CJNEMOV31H,#8MOV30H,#8LJMPDONENEX2:INCCNTMOVCNT,#00HMOVA,CNTLLX:CJNEA,#01H,NEX1MOV30H,#8LL1:LJMPNEX1:CJNEMOV31H,#8MOV30H,#8LJMPDONENEX2:LJMPDONENEX3:LJMPDONENEX4:CJNEMOVLJMPDONENEX5:CJNEMOVMOVLJMPDONENEX6:CJNEMOVMOV31H,#8MOV30H,#8LJMPDONENEX7:MOV31H,#8MOV30H,#8LJMPDONENEX7:LJMPDONENEX8:DONE:TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H7.C语言源程序unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,unsignedchardispbitcode[]={0xf8,0xf9,0xfa,0xfb,charintt02scnt;void}voidt0(void)interrupt1using{{{}}{{}{}{}}}221.221.(2域中的SPKIN端口上;C1-C4R1-R44.(2.域中的SPKIN端口上;C1-C4R1-R44.(2.#4低中5#5低 634中#71#4低5#1#5高26#2低M#71#4#1高5中2#5#26高M#高7TABLE:DW02、音乐的音拍,一个节拍为单位(C调TABLE:DW02、音乐的音拍,一个节拍为单位(C调4/4调3/4调2/4曲调对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成T1用来产生音拍。用来产生音符5.序框6.KEYBUFEQUEQUORG00HLJMPSTARTORG0BHSTART:MOVTMOD,#01HSETBET0JZNOKEY16.KEYBUFEQUEQUORG00HLJMPSTARTORG0BHSTART:MOVTMOD,#01HSETBET0JZNOKEY1JZCJNELJMPNK1:CJNELJMPNK2:CJNELJMPNK3:CJNELJMPDK1NK4:NOPMOVCMOVCMOVCSETBDK1A:MOVJZNOKEY2MOVCMOVCSETBDK1A:MOVJZNOKEY2JZCJNELJMPNK5:CJNELJMPNK6:CJNELJMPNK7:CJNELJMPDK2NK8:NOPMOVCMOVCLJMPDK2NK8:NOPMOVCMOVCMOVCSETBDK2A:MOVJZNOKEY3JZNOKEY3MOVA,P3CJNELJMPDK3NK9:CJNEA,#0DH,NK10MOVKEYBUF,#9LJMPNK10:CJNEA,#0BH,NK11MOVKEYBUF,#10LJMPNK11:LJMPDK3NK9:CJNEA,#0DH,NK10MOVKEYBUF,#9LJMPNK10:CJNEA,#0BH,NK11MOVKEYBUF,#10LJMPNK11:CJNEA,#07H,NK12MOVKEYBUF,#11LJMPDK3MOVCMOVCMOVCSETBDK3A:MOVJZLCALLJZNOKEY4MOVA,P3MOVKEYBUF,#12LJMPDK4NK13:CJNEA,#0DH,NK14MOVKEYBUF,#13LJMPLCALLJZNOKEY4MOVA,P3MOVKEYBUF,#12LJMPDK4NK13:CJNEA,#0DH,NK14MOVKEYBUF,#13LJMPNK14:CJNEA,#0BH,NK15MOVKEYBUF,#14LJMPNK15:CJNEA,#07H,NK16MOVKEYBUF,#15LJMPDK4MOVCMOVCMOVCSETBDK4A:MOVCLRTR0LJMPWAITMOVD1:MOVR7,#248DJNZR7,$CLRTR0LJMPWAITMOVD1:MOVR7,#248DJNZR7,$TABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,6FH,77H,7CH,39H,5EH,79H,71HTABLE1:DW7.C语言源程序unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,intcodevoid1;ET0=1;{temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&0x0f;}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}temp=temp&0x0f;{temp=temp&}}}temp=temp&}}}}voidt0(void)interrupt1using{TH0=STH}23.模拟计算器数字输入及显1.(1.开机时,显示(2.“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,82.3.域中的SPKIN端口上;3.域中的SPKIN端口上;C1-C4R1-R4码显示”区域中的A-H端口上;码显示”区域中的S1-S8端口上;4.(1(2.(3(略C语言源程序unsignedcharcodeunsignedcharcode(3(略C语言源程序unsignedcharcodeunsignedcharcodecharbitvoidchange(unsigned{{}}void/%{temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--{for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}&&if{{}{}}temp=temp&0x0f;{temp=temp&}}temp=temp&}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}if{{&&}{{}}temp=temp&0x0f;{temp=temp&0x0f;}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}}if((key>=0)&&{{}{}}temp=temp&0x0f;{temp=temp&0x0f;}}}temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--temp=temp&0x0f;if(temp!=0x0f){temp=temp&0x0f;{}if{{&&}{}}temp=temp&0x0f;{temp=temp&0x0f;}}}}}voidt0(void){1usingTH0=(65536-4000)/TL0=(65536-4000)%TH0=(65536-4000)/TL0=(65536-4000)%if{}if}}248X8LED点阵显示技1.8X8LED2.3.3.4.(1).8X88X84.24.2中可以看出,8X8点阵共需64个发光二极管组成,且每二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行049所示,对应一根竖柱:对应的列置1,而行则采用扫描的方法来实现一根横柱:对应的行置0,而列则采用扫描的方法来实现ORG00HSTART:NOPMOVR3,#3LOP2:MOVMOVLOP1:MOVLOP1:MOVP1,#0FFHMOVDPTR,#TABAMOVA,R2MOVP3,AINCR2LCALLDELAYDJNZR4,LOP1DJNZMOVR3,#3LOP4:MOVR4,#8MOVR2,#7LOP3:MOVP1,#0FFHMOVDPTR,#TABAMOVA,R2MOVP3,ADECR2LCALLDELAYDJNZR4,LOP3DJNZMOVR3,#3LOP6:MOVR4,#8MOVR2,#0LOP5:MOVP3,#00HMOVDPTR,#TABBMOVA,R2MOVP1,AINCR2LCALLDELAYDJNZR4,LOP5DJNZMOVR3,#3LOP8:MOVR4,#8MOVR2,#7LOP7:MOVP3,#00HMOVDPTR,#TABBMOVA,R2MOVCMOVP1,ADECR2DELAY:MOVR5,#10D2:MOVR6,#20D1:MOVR7,#248MOVP1,ADECR2DELAY:MOVR5,#10D2:MOVR6,#20D1:MOVR7,#248TABA:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHTABB:DB01H,02H,04H,08H,10H,20H,40H,80H6.Ccharcodetaba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};charcodetabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};void{unsignedcharfor(i=10;i>0;i--for(j=248;j>0;j--}void{unsignedcharfor(k=10;k>0;k--for(i=20;i>0;i--for(j=248;j>0;j--}void{unsignedchar{{{}}lefttovoid{unsignedchar{{{}}leftto3rightto3{{}}topto3{P1=tabb[7-}}bottomto3{}}}}25.点阵式LED“0-9”数字}}}25.点阵式LED“0-9”数字显示技1.8X804.如下图所示,假设显示数字1 800003E414141“1”,2ms12 其显示代码为●●●●●●●●●●●●●●●●●●●●●●●●●●4.如下图所示,假设显示数字1 800003E414141“1”,2ms12 其显示代码为●●●●●●●●●●●●●●●●●●●●●●●●●●1 1 1 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●1 1 1 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●1 1 1 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●1 1 1 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●1 1 TIMEQU30HCNTAEQU31HCNTBEQU32HORG00HORG0BHLJMPT0XORG30HSTART:MOV●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●1 1 TIMEQU30HCNTAEQU31HCNTBEQU32HORG00HORG0BHLJMPT0XORG30HSTART:MOV●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●MOVTH0,#(65536-4000)/256MOVTL0,#(65536-4000)MOD$TH0,#(65536-MOVCMOVTH0,#(65536-4000)/256MOVTL0,#(65536-4000)MOD$TH0,#(65536-MOVCMOVCCJNENEXT:INCTIMMOVA,TIMCJNEMOVCNTB,#00HNEX:RETITAB:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHDIGIT:DB00H,00H,3EH,41H,41H,41H,3EH,00HDBDB00H,00H,36H,49H,49H,49H,36H,00HDB00H,00H,32H,49H,49H,49H,3EH,00H6.C语言源程序charcodeDB00H,00H,36H,49H,49H,49H,36H,00HDB00H,00H,32H,49H,49H,49H,3EH,00H6.C语言源程序charcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};charcodecharcnta;charcntb;void}}voidt0(void){TL0=(65536-1using{}{}{{}}}26.LED简单图形显示技1.2.盘”区域中的SP1端子上;1 3 671 3 671 3 67●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●1 3 671 3 671 3 67●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●CNTAEQU30HCOUNTEQU31HORG00HORG0BHLJMPT0XORG30HSTART:MOV/CNTAEQU30HCOUNTEQU31HORG00HORG0BHLJMPT0XORG30HSTART:MOV/SETBET0SETBEADJNZR7,$DJNZR6,D1JBP2.0,WTINCCOUNTMOVCOUNT,#00HNEXT:JNBP2.0,$SJMPWTT0X:/MODMOVCMOVC MOVA,CNTACJNEA,#8,NEXMOVCNTA,#00HNEX:RETITAB:DB MOVA,CNTACJNEA,#8,NEXMOVCNTA,#00HNEX:RETITAB:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHGRAPH:DB12H,14H,3CH,48H,3CH,14H,12H,00HDB00H,00H,38H,44H,44H,44H,38H,00HDB30H,48H,44H,22H,44H,48H,30H,00H6.Ccharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};charcodeunsignedcharcount;unsignedcharcnta;void{unsignedchar{for(i=5;i>0;i--{{}}}{}}}}}voidt0(void){TL0=(65536-{}}1using27.ADC0809A/D转换器基本应用技1.CMOSA/D完的OE端为高电平时,才可以从三态输出锁存器取走转换完的数(2)脚结IN0-IN7:8条模拟量输入地址输入和控制线:4ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,BCIN0-IN7上的一路模数字量输出及控制线:11STST得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。由外界提供,通常使用频率为500KHZ,2.ADC0809ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,BCIN0-IN7上的一路模数字量输出及控制线:11STST得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。由外界提供,通常使用频率为500KHZ,2.ADC08093.CBA000001010011100101110111ADC0809IN30-5V接+5V电压。ADC0809IN30-5V接+5V电压。把“单片机系统板”区域中的P1P1.0-P1.78芯排线EFGHABCD把“单片机系统板”区域中的P2P2.0-P2.78S1S2S3S4S5S6S7S8把“单片机系统板”区域中的P0端口的P0.0-P0.78D0D1D2D3D4D5D6D7端口上,A/D转换完毕的数据输入到单片机的P0端口块”区域中的VCC端子上;(5).A2A1A0P3.4P3.6统”区域中的P3.0端子上;统”区域中的P3.1端子上;统”区域中的P3.2端子上;(9).CLK(10).(5).A2A1A0P3.4P3.6统”区域中的P3.0端子上;统”区域中的P3.1端子上;统”区域中的P3.2端子上;(9).CLK(10).CKIN(11).IN36.CHEQU30HSTOEBITEOCORG00HORG0BHORG30HSTART:MOVLOP:MOVDJNZORG30HSTART:MOVLOP:MOVDJNZTH0,#(65536-CLRSETBWAIT:JNBEOC,WAITSETBOESJMPWTT0X:NOPTL0,#(65536-4000)MODMOVCMOVCCJNEMOVCMOVCCJNENEXT:DPCD:DB3FH,06H,5BH,4FH,66HDB6DH,7DH,07H,7FH,6FH,00HDPBT:DB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FH8.C语言源程序unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,unsignedchardispbuf[8]={10,10,10,10,10,0,0,0};unsignedchardispcount;unsignedcharchannel=0xbc;//IN3unsignedchargetdata;void{ST={ST=}}1usingvoidt0(void){TL0=(65536-{}}28压1.2.3.ABCDEFGH端口用8芯排线连接。S1S2S3S4S5S6S7S88芯排线连接。3.ABCDEFGH端口用8芯排线连接。S1S2S3S4S5S6S7S88芯排线连接。区域中的GND端子上。块”区域中的VR1端子上。区域中的GND端子上。块”区域中的VR1端子上。模块”区域中的D0D1D2D3D4D5D6D7端子上。4.i.ADC0809A/DCLK(略C语言源程序unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,charchari;{{{}}}}voidt0(void)interrupt1using}voidt1(void)interrupt3using}voidt0(void)interrupt1using}voidt1(void)interrupt3using{TL1=(65536-{P1=P1|}{}}1.量的温度范围在0-99℃。2.ABCDEFGH端口用8芯排线连接。8芯排线连接。P3.0与“模数转换模块”区域中ST区域中的GND端子上。块”区域中的VR1端子上。区域中的GND端子上。块”区域中的VR1端子上。模块”区域中的D0D1D2D3D4D5D6D7端子上。二极管指示模块”区域中的L1、L2上。中的SPKIN端口上。4.(略5.C语言源程序unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,charchari;bithighflag;unsignedintcnta;unsignedintcntb;bitalarmflag;void{ST={if((lowflag==1){LED1=}elseif((highflag==1)&&{LED1=}{LED1=}}}voidt0(void)}10}voidt0(void)}10voidt1(void){30TL1=(65536-{}{}else{}}{}{}if((lowflag==1)&&{{}}}elseif((lowflag==0)&&{{}}}{}}30.四位数数字温度AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测1℃,其电流增加1uA。2.AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入}{}}30.四位数数字温度AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测1℃,其电流增加1uA。2.AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入3.273.2283.22.832293.22.932303.23.032313.23.132323.23.232333.23.332373.23.7324.中的ABCDEFGH端口用8芯排线连接。中的S1S2S3S4S5S6S7S8端口用8芯排线连接。4.中的ABCDEFGH端口用8芯排线连接。中的S1S2S3S4S5S6S7S8端口用8芯排线连接。EOC端子用导线相连接。CLK端子用导线相连接。块”区域中的GND端子上。CLK端子用导线相连接。块”区域中的GND端子上。转换模块”区域中的D0D1D2D3D4D5D6D7端子上。5.(2).AD590-55℃-+150℃10KΩ此可计算出经过A/D转换之后的摄氏温度显示的数据为:如果(D*2350/128)<2732,则显示的温度值为如果(D*2350/128)≥2732,则显示的温度值为6.(略7.C语言源程序#include<AT89X52.H>unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,unsignedcharcodebitsbit{;}}1usingvoid}3usingvoid{TL1=(65536-{{}{{}{}{}}{}}316位{}}316位数显频率计数3.ABCDEFGH端口用8芯排线连接。S1S2S3S4S5S6S7S8端口用8芯排线连接。器”区域中的WAVE端子上。3.ABCDEFGH端口用8芯排线连接。S1S2S3S4S5S6S7S8端口用8芯排线连接。器”区域中的WAVE端子上。4.(1).T0T1,T0T11T0T050ms,201秒的定时功能。5.C语言源程序unsignedcharcodeunsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,bitflag;unsignedvoid{unsignedchar{{{{{{}{}}}}10void{}void30{TL1=(65536-{TL1=(65536-}{}}区域中的SPKIN端子上;区域中的SPKIN端子上;“四路静态数码显示”区域中的任一个ABCDEFGH端子上;块”区域中的L1端子上;键盘”区域中的SP1SP2端子上;的密码为“12345”共5位密码。(2)35.C语言源程序#include<AT89X52.H>charcode35.C语言源程序#include<AT89X52.H>charcodecharcodebitalarmflag;bitexchangeflag;unsignedintcc;unsignedintdd;bitokflag;unsignedcharoka;unsignedcharvoid{unsignedchari,j;TH0=(65536-{{if(P3_6==0){for(i=10;i>0;i--{{{}}{}}}if(P3_7==0){for(i=10;i>0;i--{{{}{}else{psbuf[funcount-}}{}}}}{{{gotoa;}}a:cmpflag=0;}}voidt0(void)interrupt1using{TL0=(65536-}voidt0(void)interrupt1using{TL0=(65536-if((errorflag==1)&&{{}}{}{}}&&{{}else{}{}{{}}{{}}}}33.4×4键盘及8位数码管33.4×4键盘及8位数码管显示构成的电子密码用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出338芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。8芯排线连接到“4×4行列式键盘”区域中的R1R2R3R4C1C2C3C4端子上。8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。8芯排线连接到“4×4行列式键盘”区域中的R1R2R3R4C1C2C3C4端子上。块”区域中的L2端子上。中的SPKIN端子上。SPKOUT4.8664×4行列式键盘的按键功能分布图如图4.33.2#includeunsignedcharunsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,unsig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论