|
非常基础的单片机的流水灯的仿真
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit button=P1^2;
- sbit p2_0=P2^0;
- sbit p2_1=P2^1;
- sbit p2_2=P2^2;
- sbit p2_3=P2^3;
- sbit p2_4=P2^4;
- sbit p2_5=P2^5;
- sbit p2_6=P2^6;
- sbit p2_7=P2^7;
- uchar ID=1;
- void DelayMS(uint x)
- {
- uchar t;
- while(x--)
- {
- for(t=120;t>0;t--);
- }
- }
- void main()
- {
- uchar i=0;
- P2=0xff;
-
- while(1)
- {
-
-
- if(button==0)
- {
- ID++;
- if(ID==6)ID=1;
- while(button==0);
- P2=0x00;
- i=0;
- }
-
- switch(ID)
- {
- case 1:
- if(i < 8)
- P2=0x01<<i;
- else
- P2=0x80>>(i - 8);
- i++;
- if(i == 16) i = 0;
- DelayMS(150);
- break;
- case 2:
- p2_0=~p2_0;
- p2_1=~p2_1;
- DelayMS(150);
- break;
- case 3:
- p2_2=~p2_2;
- p2_3=~p2_3;
- DelayMS(150);
- break;
- case 4:
- p2_4=~p2_4;
- p2_5=~p2_5;
- DelayMS(150);
- break;
- case 5:
- p2_6=~p2_6;
- p2_7=~p2_7;
- DelayMS(150);
- break;
- /*
- for(i=0;i<8;i++)
- {
- P2=0x01<<i;
- DelayMS(150);
- }
- for(i=0;i<8;i++)
- {
- P2=0x80>>i;
- DelayMS(150);
- }
- */
-
-
- }
-
-
- }
- }
-
-
复制代码
Keil代码与Proteus8.8仿真下载:
多功能流水灯.7z
(41.88 KB, 下载次数: 58)
|
评分
-
查看全部评分
|