• 基于单片机的单一广告灯左移右移电路设计 > 实训四 广告灯的左移右移
  • 实训四 广告灯的左移右移

    免费下载 下载该文档 文档格式:DOC   更新时间:2011-07-05   下载次数:0   点击次数:4
    实训四 广告灯的左移右移
    实验任务
    做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出"0"时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→→P1.7→P1.6→→P1.0亮,重复循环.
    电路原理图
    图4.4.1
    程序设计内容
    我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作.
    每次送出的数据是不同,具体的数据如下表1所示
    P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明
    L8 L7 L6 L5 L4 L3 L2 L1
    1 1 1 1 1 1 1 0 L1亮11111101L2亮11111011L3亮11110111L4亮11101111L5亮11011111L6亮10111111L7亮01111111L8亮表1
    程序框图
    汇编源程序
    ORG 0
    START: MOV R2,#8
    MOV A,#0FEH
    SETB C
    LOOP: MOV P1,A
    LCALL DELAY
    RLC A
    DJNZ R2,LOOP
    MOV R2,#8
    LOOP1: MOV P1,A
    LCALL DELAY
    RRC A
    DJNZ R2,LOOP1
    LJMP START
    DELAY: MOV R5,#20 ;
    D1: MOV R6,#20
    D2: MOV R7,#248
    DJNZ R7,$
    DJNZ R6,D2
    DJNZ R5,D1
    RET
    END
    C语言源程序
    #include
    unsigned char i;
    unsigned char temp;
    unsigned char a,b;
    void delay(void)
    {
    unsigned char m,n,s;
    for(m=20;m>0;m--)
    for(n=20;n>0;n--)
    for(s=248;s>0;s--);
    }
    void main(void)
    {
    while(1)
    {
    temp=0xfe;
    P1=temp;
    delay();
    for(i=1;i<8;i++)
    {
    a=temp< b=temp>>(8-i);
    P1=a|b;
    delay();
    }
    for(i=1;i<8;i++)
    {
    a=temp>>i;
    b=temp<<(8-i);
    P1=a|b;
    delay();
    }
    }
    }
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • 左移右移删除  左移右移  是左移还是右移  左移右移关闭  左移右移删  左移运算符  屏幕左移  屏幕向左移了  c语言循环左移