您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 单片机最小系统设计.PPT
单片机最小系统设计熟悉单片机基本工作条件;熟悉单片机外围电路的设计及软件编程方法。第一节51单片机基本工作条件一、电源电路(+5V)第一节51单片机基本工作条件二、时钟电路时钟电路为整个单片机系统产生时间基准。是单片机系统必须的部分。XTAL2XTAL1GND8051VCC+5VOSCCC第一节51单片机基本工作条件三、复位电路复位电路是单片机系统必须的,用来为单片机提供正确的复位信号。四、ISP下载电路第二节单片机系统设计一、LED显示电路1、设计任务:在P0.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。第二节单片机系统设计2、源程序(1)、设计流程图第二节单片机系统设计(2)、汇编源程序ORG00HSTART:CLRP0.0LCALLDELAYSETBP0.0LCALLDELAYLJMPSTARTDELAY:MOVR5,#20;延时子程序,延时0.2秒D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND第二节单片机系统设计(3)、C语言#includeAT89X51.HsbitL1=P0^0;voiddelay02s(void)//延时0.2秒子程序{unsignedchari,j,k;for(i=20;i0;i--)for(j=20;j0;j--)for(k=248;k0;k--);}voidmain(void){while(1){L1=0;delay02s();L1=1;delay02s();}}第二节单片机系统设计二、流水灯1、设计任务:设计P0口让8个LED间隔1S从右至左依次闪烁。2、源程序(1)、汇编语言ORG00HSTART:MOVR2,#8MOVA,#0FEHSETBCLOOP:MOVP1,ALCALLDELAYRLCA第二节单片机系统设计DJNZR2,LOOPMOVR2,#8LOOP1:MOVP1,ALCALLDELAYRRCADJNZR2,LOOP1LJMPSTARTDELAY:MOVR5,#20;D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETEND第二节单片机系统设计(2)、C语言#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintvoidmDelay(unsignedintDelay){unsignedinti;for(;Delay0;Delay--){for(i=0;i124;i++){;}}}voidmain(){unsignedcharOutData=0xfe;for(;;){P0=OutData;OutData=_crol_(OutData,1);//循环左移mDelay(1000);/*延时1000毫秒*/}}第二节单片机系统设计三、模拟开关灯1、设计任务:监视开关K1(接在P3.7端口上),用发光二极管L1(接在单片机P0.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。第二节单片机系统设计2、电路原理第二节单片机系统设计3、汇编源程序ORG00HSTART:JBP3.7,LIGCLRP0.0SJMPSTARTLIG:SETBP0.0SJMPSTARTEND第二节单片机系统设计4、C语言源程序#includeAT89X51.HsbitK1=P3^7;sbitL1=P0^0;voidmain(void){while(1){if(K1==0)L1=0;elseL1=1;}}第二节单片机系统设计四、多路开关状态指示1、设计任务:AT89S51单片机的P0.0-P0.3接四个发光二极管L1-L4,P3.4-P3.7接了四个开关S5-S20,编程将开关的状态反映到发光二极管。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。第二节单片机系统设计2、电路原理第二节单片机系统设计3、汇编源程序ORG00HSTART:JBP3.4,NEXT1CLRP0.0SJMPNEX1NEXT1:SETBP0.0NEX1:JBP3.5,NEXT2CLRP0.1SJMPNEX2NEXT2:SETBP0.1NEX2:JBP3.6,NEXT3CLRP0.2SJMPNEX3NEXT3:SETBP0.2NEX3:JBP3.7,NEXT4CLRP0.3SJMPNEX4NEXT4:SETBP0.3NEX4:SJMPSTARTEND第二节单片机系统设计4、C语言#includeAT89X51.Hvoidmain(void){while(1){if(P3_4==0){P0_0=0;}else{P0_0=1;}if(P3_5==0){P0_1=0;}else{P0_1=1;}if(P3_6==0){P0_2=0;}else{P0_2=1;}if(P3_7==0){P0_3=0;}else{P0_3=1;}}}第二节单片机系统设计五、广告灯的设计1、设计任务:利用取表的方法,使端口P0做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)第二节单片机系统设计2、电路原理第二节单片机系统设计3、汇编源程序ORG0START:MOVDPTR,#TABLELOOP:CLRAMOVCA,@A+DPTRCJNEA,#01H,LOOP1LJMPSTARTLOOP1:MOVP0,AMOVR3,#20LCALLDELAYINCDPTRLJMPLOOPDELAY:MOVR4,#20D1:MOVR5,#248DJNZR5,$DJNZR4,D1DJNZR3,DELAY第二节单片机系统设计RETTABLE:DB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FHDB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,07FHDB07FH,0BFH,0DFH,0EFHDB0F7H,0FBH,0FDH,0FEHDB07FH,0BFH,0DFH,0EFHDB0F7H,0FBH,0FDH,0FEHDB00H,0FFH,00H,0FFHDB01HEND第二节单片机系统设计4、C语言#includeAT89X51.Hunsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xff,0x00,0xff,0x01};unsignedchari;voiddelay(void)第二节单片机系统设计{unsignedcharm,n,s;for(m=20;m0;m--)for(n=20;n0;n--)for(s=248;s0;s--);}voidmain(void){while(1){if(table[i]!=0x01){P1=table[i];i++;delay();}else{i=0;}}}第二节单片机系统设计六、按键识别方法1、设计任务:每按下一次开关S20,计数值加1,通过AT89S51单片机的P0端口的P0.0到P0.7显示出其的二进制计数值。2、电路原理第二节单片机系统设计第二节单片机系统设计3、源程序(1)、汇编语言ORG0START:MOVR1,#00H;初始化R1为0,表示从0开始计数MOVA,R1;CPLA;取反指令MOVP0,A;送出P1端口由发光二极管显示REL:JBP3.7,REL;判断SP1是否按下LCALLDELAY10MS;若按下,则延时10ms左右JBP3.7,REL;再判断SP1是否真得按下INCR1;若真得按下,则进行按键处理,使MOVA,R1;计数内容加1,并送出P1端口由CPLA;发光二极管显示MOVP0,A;JNBP3.7,$;等待SP1释放SJMPREL;继续对K1按键扫描DELAY10MS:MOVR6,#20;延时10ms子程序L1:MOVR7,#248DJNZR7,$DJNZR6,L1RETEND第二节单片机系统设计(2)、C语言#includeAT89X51.Hunsignedcharcount;voiddelay10ms(void){unsignedchari,j;for(i=250;i0;i--)for(j=248;j0;j--);}voidmain(void){while(1){if(P3_7==0){delay10ms();if(P3_7==0){第二节单片机系统设计count++;if(count==256){count=0;}P0=~count;while(P3_7==0);}}}}第二节单片机系统设计七、流水灯定时器1、设计任务:隔1S,通过AT89S51单片机的P0.0端口的LED闪亮。2、电路原理第二节单片机系统设计第二节单片机系统设计C程序设计#includereg51.h#defineucharunsignedchar#defineuintunsignedintsbitd1=P0^0;uchartt;voidmain(){uchartemp=0xfe;tt=0;TMOD=0x10;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET1=1;TR1=1;第二节单片机系统设计while(1){if(tt==20){tt=0;d1=!d1;}}}voidex()interrupt3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;tt++;}第二节单片机系统设计八、LED显示1、设计任务:利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。2.系统工作原理数码管由8个发光二极管构成,可以用来显示数字、字符等,它在家电及工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等,具有显示醒目、直观的有点,如图2.3所示。图2.3数码管实物图【项目实践】数码管实际上是由7个发光管组成“8”字形构成的,加上小数点就是8个。这些段分别由字母a、b、c、d、e、f、g、dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样。例如:显示一个“3”字,那么应当是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、dp不亮。数码管的内部结构如图2.4所示,其中COM引脚为公共端,用来控制数码管显示的打开或关闭,即起到“使能”作用。根据公共端接法的不同,数码管又分为共阴极和共阳极两种结构,分别如图2.4(b)和图2.4(c)所示。共阳极就是将8个LED的阳极连接到一起组成公共端COM,接正极,当相应字段为低电平“0”时,可以点亮该字段;当相应字段为高电平“1”时,该字段不亮。共阴极就是将8个LED的阴极连接到一起组成公共端COM,接负极,当相应字段为高电平“1”时,可以点亮该字段;当相应字段为低电平“0”时,该字段不亮。【项目实践】图2.4数码管内部结构图【项目实践】表2.1数码管显示数字的段码表段名称GFAEBDPCD对应段
本文标题:单片机最小系统设计.PPT
链接地址:https://www.777doc.com/doc-3751521 .html