标题: 单片机流水灯的电路图和演示程序 [打印本页]

作者: xiaos    时间: 2015-4-10 19:11
标题: 单片机流水灯的电路图和演示程序
[color=#ff0000,strength=3)"]单片机编程是硬件编程:
1.  编写底层驱动
2.  根据电路原理图来实现

&附电路原理图:










[color=#ff0000,strength=3)"]

&硬件实物图:



[color=#ff0000,strength=3)"]实现的功能演示:
1.  8个LED小灯的正向与反向流水演示
C代码源程序:
# include <reg51.h>
typedef unsigned char uint8;         //宏定义
typedef unsigned int uint16;
sbit ENLED = P1^4;                                //位声明
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;


main()
{       
        uint8 j = 0;
        uint16 i;
        ENLED = 0;
    ADDR0 = 0; ADDR1 = 1; ADDR2 = 1; ADDR3 = 1;
        while (1)
        {
                P0 = ~(1 << j++);//00000001 按位取反后为11111110
                //非精确延时
                for(i = 0; i < 20000; i++); //分号不能少
                while (8 == j)
                {
                        j = 0;
                }
        }
       
}

汇编代码源程序:
ORG 00H
MOV DPTR,#TABLE
MAIN:
        MOV P1,#11101110B  ;38译码器对三极管的开关控制,使LED灯能正常工作
        MOV R2,#0
START:
        MOV A,R2
        MOVC A,@A+DPTR ;MOVC A,@A+DPTR 写成        MOVC A,@DPTR+A 是错误的
        MOV P0,A
        LCALL DELAY100MS
        INC R2
        CJNE R2,#13,START
        SJMP MAIN


TABLE:DB 0FEH, 0FDH, 0FBH, 0F7H, 0EFH, 0DFH, 0BFH, 7FH, 0BFH, 0DFH, 0EFH, 0F7H, 0FBH, 0FDH


DELAY100MS:                        ;@11.0592MHz
        PUSH 30H
        PUSH 31H
        MOV 30H,#180
        MOV 31H,#68
NEXT:
        DJNZ 31H,NEXT
        DJNZ 30H,NEXT
        POP 31H
        POP 30H
        RET

END         

      








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1