仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
流星雨.png (76.15 KB, 下載次數: 54)
下載附件
2021-12-16 19:42 上傳
粗糙的流星雨代碼,每隔0.3下落一條
單片機源程序如下:
- #include<reg52.h>
- #include<stdlib.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define DATA P0
- uchar Col_w[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
- uchar RowLed[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar DelayTab[]={25,21,16,12,8,5,2,1};
- sbit SH595 =P1^2;
- sbit ST595 =P1^1;
- sbit DA595 =P1^0;
- void delayms(uint x)
- {
- uint j;
- for(;x>0;x--)
- for(j=0;j<113;j++);
- }
- void SIPO(uchar dat){
- uchar i;
- SH595 = 0;
- for(i=0;i<8;i++){
- if(dat&0x80) DA595 = 1;
- else DA595 = 0;
- dat = dat<<1;
- SH595=0;_nop_();_nop_();SH595=1;
- }
- ST595=0;_nop_();_nop_();ST595=1;
- }
- void Shower(uchar Col_wVal){
- uchar i;
- for(i=0;i<8;i++){
- SIPO(RowLed);
- P0 = Col_wVal;
- delayms(DelayTab);
- }
- SIPO(0xff);
- delayms(300);
- }
- void main(){
- uchar uRandNum;
- while(1){
- uRandNum=rand()%8;
- Shower(Col_w[uRandNum]);
- }
- }
復制代碼
51hei.png (11.13 KB, 下載次數: 47)
下載附件
2021-12-16 21:24 上傳
Keil代碼與Proteus仿真下載:
仿真代碼.7z
(37.21 KB, 下載次數: 37)
2021-12-16 20:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|