找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1759|回复: 1
收起左侧

51单片机+8*8点阵做的粗糙“流星雨”程序与Proteus仿真图

[复制链接]
ID:992343 发表于 2021-12-16 19:43 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
流星雨.png
粗糙的流星雨代码,每隔0.3下落一条

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<stdlib.h>
  3. #include<intrins.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define DATA P0

  7. uchar Col_w[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  8. uchar RowLed[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  9. uchar DelayTab[]={25,21,16,12,8,5,2,1};
  10. sbit SH595 =P1^2;
  11. sbit ST595 =P1^1;
  12. sbit DA595 =P1^0;

  13. void delayms(uint x)
  14. {
  15.   uint j;
  16.   for(;x>0;x--)
  17.     for(j=0;j<113;j++);
  18. }

  19. void SIPO(uchar dat){
  20.         uchar i;
  21.         SH595 = 0;
  22.         for(i=0;i<8;i++){
  23.                 if(dat&0x80)        DA595 = 1;
  24.                 else                DA595 = 0;
  25.                 dat = dat<<1;
  26.                 SH595=0;_nop_();_nop_();SH595=1;
  27.         }
  28.         ST595=0;_nop_();_nop_();ST595=1;
  29. }

  30. void Shower(uchar Col_wVal){
  31.         uchar i;
  32.         for(i=0;i<8;i++){
  33.                 SIPO(RowLed);
  34.                 P0 = Col_wVal;
  35.                 delayms(DelayTab);
  36.         }
  37.         SIPO(0xff);
  38.         delayms(300);
  39. }

  40. void main(){
  41.         uchar uRandNum;
  42.         while(1){
  43.                 uRandNum=rand()%8;
  44.                 Shower(Col_w[uRandNum]);
  45.         }
  46. }
复制代码
51hei.png
Keil代码与Proteus仿真下载:
仿真代码.7z (37.21 KB, 下载次数: 36)

评分

参与人数 1黑币 +30 收起 理由
admin + 30 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:3802 发表于 2022-12-17 14:43 | 显示全部楼层
oooooooooooooooooooooooo
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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