找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 932|回复: 0
收起左侧

基于51单片机实现的电子沙漏

[复制链接]
ID:1033323 发表于 2022-6-22 18:47 | 显示全部楼层 |阅读模式
#include<reg52.h>
#include<intrins.h>

int a[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int b[9]={0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};
int dz1[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
int dz2[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void delay(int x){
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<121;j++);
}

//显示点阵
void disp(){
  unsigned int n,j;
  for(n=0;n<20;n++){
    for(j=0;j<8;j++){
   P2=a[j];//控制列
   P3=dz1[j];//控制下方点阵的行
      P1=dz2[j];//控制上方点阵的行
   delay(1);
  }
}
}

void main(){
  unsigned int i,j,x,y,n;//x,y表示当前坐标,i,j,n用以循环
  for(i=2;i<10;i++){
    for(j=1;j<i;j++){
      x=j;
      y=i-j;
    dz2[x-1]=b[8-y];
      for(n=0;n<8-i/2;n++){

        dz1[7-n]=dz1[7-n]^a[7-n];
        disp();
        dz1[7-n]=dz1[7-n]^a[7-n];        
      }

     dz1[x-1]=b[y];
      disp();
    }
  }
  for(i=10;i<17;i++){
    for(j=i-8;j<9;j++){
      x=j;
      y=i-j;

    dz2[x-1]=b[8-y];
      for(n=0;n<8-i/2;n++){
        dz1[7-n]=dz1[7-n]^a[7-n];
        disp();
        dz1[7-n]=dz1[7-n]^a[7-n];
      }
      dz1[x-1]=b[y];
      disp();

    }
  }
}

沙漏仿真图

沙漏仿真图

电子沙漏.zip

35.61 KB, 下载次数: 45

沙漏源程序

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表