您的位置:首页技术文栏毕业课程设计
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

单片机课程设--广告灯的左移右移

[日期:2008-07-15 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)

1.    实验任务
做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。
2.    电路原理图


3.    系统板上硬件连线
把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。
4.    程序设计内容
我们可以运用输出端口指令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亮
1    1    1    1    1    1    0    1    L2亮
1    1    1    1    1    0    1    1    L3亮
1    1    1    1    0    1    1    1    L4亮
1    1    1    0    1    1    1    1    L5亮
1    1    0    1    1    1    1    1    L6亮
1    0    1    1    1    1    1    1    L7亮
0    1    1    1    1    1    1    1    L8亮
表1
5.    程序框图

6.    汇编源程序
                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
7.    C语言源程序
#include <AT89X51.H>
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<<i;
          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();
        }
    }
}


 

阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告