第5章C51基础-实例-流水灯
第5章 C 51 基础-实例-流水灯 1
【例5-1】制作流水灯,8个发光二极管LED0~LED7和STC15F2k60S2芯片。设计电路,并编写程序来控制发光二极管由上至下的反复循环流水点亮。Voc41、电路设计LEDOR1U1VCCSTC89C52RC110P10407LED1P1.0VCCP1139PO02R2C3PI.1PO.O(ADO)P12338P01P1.2PO.1(ADI)10UFP13437P02110P1.3PO.2(AD2)P1436P03LED2P1.4P0.3(AD3)S1RSTP15R3635P04P1.5P0.4(AD4)P1634P05P1.6P0.5(AD5)R3P17833P06110P1.7P0.6(AD6)10KRST932P07LED3RSTP0.7(AD7)R41031vccP3.0(RXD)EA(VPP3011P3.1(TXD)ALE(PROG)1229110P3.2(INTOPSEN28P2713LED4P3.3(INT))P2.7(A15)R5P341427P26P3.4(TO)P2.6(A14)C4P351526P25P3.5(T1)P2.5(A13)XTAL1P3625P2416110P3.6(WRP2.4(A12)P3724P23LED51Y1P3.7(RO)P2.3(A11)R630pXTAL21823P22XTAL2P2.2(A10)12M22P21XTAL119XTALIP2.1(A9)C521P2011020GNDP2.0(A8)XTAL2LED6R7130p110LED7R81102
【例5-1】 制作流水灯,8个发光二极管LED0~LED7和 STC15F2k60S2芯片。设计电路,并编写程序来控制发光二极管由上至下 的反复循环流水点亮。 1、电路设计 2
C1H30pFU1X1口19¥39XTAL1PO.O/ADO38P0.1/AD1C37VecPO.2IAD218L36XTAL2PO.3/AD34C35PO.4/AD43430pFLEDOP0.5IAD5R1D33R910kPO.6/AD6329RSTVocP0.7AD7110421LED1P2.0/A8EC22R2VocP2.1/A9服10uFD23DP2.2IA10429P24R10110PSENP2.3/A11300D25福LED2OoALEP2.4/A1230C26R31kEAP2.5/A13C27限中P2.6/A14C28110P2.7IA15LED31010R4P1.0P3.0/RXD2C11P1.1P3.1/TXD30C12110P1.2P3.2/NTO40D13P1.3LED4P3.3.ANT150D14R5P1.4P3.4/TO-60C15P1.5P3.5/T1ZC16P1.6110P3.6AR8C17LED5P1.7P3.7/RDR6AT89C51110LED6R7110LED7R8110图5-2单片机控制的流水灯3
图 5 - 2 单片机控制的流水灯 3
思考:1、>>与_cror_(m,n)实现时现象有何不同?2、请问如何实现由下到上的依次显示?3、请问如何实现步长两个灯的流水显示?4、请问如何实现先从上到下,再从下到上的依次显示?
思考: 1、>> 与_cror_(m,n)实现时现象有何不同? 2、请问如何实现由下到上的依次显示? 3、请问如何实现步长两个灯的流水显示? 4、请问如何实现先从上到下,再从下到上的依次显示? 4
思考:如果想要显示的花色很炫酷并不能用简单的左移右移实现呢?如:先两边到中间再中间到两边这种,怎么实现呢?【例5-2】电路见图5-2,制作由上至下再由下至上反复循环点亮显示的流水灯的第二种方法,数组的字节操作实现建立1个字符型数组,将控制8个LED显示的8位数据作为数组元素,依次送P1口。参考程序:uchar code tab[]=[0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,Oxbf,oxdf,0xef,0xf7,0xfb,0xfd,Oxfe);/*前8个数据为左移点亮数据,后8个为右移点亮数据*思考:为何用code?请掌握数组定义方法,很有用。5
5 思考:如果想要显示的花色很炫酷并不能用简单的左移右移实现呢? 如:先两边到中间再中间到两边这种,怎么实现呢? 【例5-2】电路见图5-2,制作由上至下再由下至上反复循环点亮显示的 流水灯的第二种方法, 数组的字节操作实现 建立1个字符型数组,将控制8个LED显示的8位数据作为数组元素,依 次送P1口。参考程序: uchar code tab[ ]={ 0xfe , 0xfd , 0xfb , 0xf7 , 0xef , 0xdf , 0xbf , 0x7f , 0x7f , 0xbf , 0xdf , 0xef , 0xf7 , 0xfb , 0xfd , 0xfe }; /*前8个数据为左移点亮 数据,后8个为右移点亮数据*/ 思考:为何用code?请掌握数组定义方法,很有用