|
學(xué)習(xí)了學(xué)單片機必會學(xué)到的流水燈設(shè)計,分享給大家:
一個為普通的,一個為個人小創(chuàng)意;
普通的:
2.jpg (140.98 KB, 下載次數(shù): 34)
下載附件
2020-6-21 17:28 上傳
普通版:
- #include <reg51.h>
- void delay1s() //延時函數(shù)(利用空循環(huán)延時1s)
- {
- int i ,j;
- //定義循環(huán)變量
- for(i = 0;i<110; ++i) //循環(huán)1
- {
- for(j = 0;j<1000;++j) //循環(huán)2
- {
- ;
- }
- }
- }
- void main() //主函數(shù)
- {
- unsigned char a = 0x01; //0000 0001的十六進制形式
- while(1) //無限循環(huán)
- {
- if(a == 0x00) //如果高位溢出(邏輯移位結(jié)果為0000 0000)
- {
- a = 0x01; //則恢復(fù)
- }
- P2 = a; //循環(huán)點亮led燈
- a = a<<1; //邏輯移位語句
- delay1s();
- }
- }
- 通過數(shù)組實現(xiàn)版:
- #include<reg51.h>
- char LEDChar[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- void delay_ms(unsigned int time)
- {
- unsigned int j=0;
- for(;time>0;time--)
- for(j=0;j<125;j++);
- }
- void main()
- {
- char i=0;
- while(1)
- {
- for(i=0;i<8;i++)
- {
- P0=LEDChar[ i];
- delay_ms(1000);
- }
- }
- }
復(fù)制代碼
個人創(chuàng)意的(提供兩種實現(xiàn)方式,通過有無“//”來轉(zhuǎn)換):
15.png (77.79 KB, 下載次數(shù): 32)
下載附件
2021-9-28 14:22 上傳
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char //定義無符號字符型變量uchar
- #define uint unsigned int //定義無符號整型變量uint
- void DelayMs(uint x)
- { uchar t ;
- while(x--)
- { for(t=0;t<120;t++);
- }
- }
- void main()
- {
- uchar i;
- P0=0xfe;
- while(1)
- {
- // P0=0xf7;
- // DelayMs(500);
- // P0=0xfd;
- // DelayMs(500);
- // P0=0x7f;
- // DelayMs(500);
- // P0=0xfb;
- // DelayMs(500);
- // P0=0xfe;
- // DelayMs(500);
- // P0=0xbf;
- // DelayMs(500);
- // P0=0xef;
- // DelayMs(500);
- // P0=0xdf;
- // DelayMs(500);
- // P0=0xf7;
-
- for(i=0;i<7;i++)
- {
- P0=_crol_(P0,1); //P0端口向左循環(huán)移動一位
- DelayMs(150);
- }
-
- for(i=0;i<7;i++)
- {
- P0=_cror_(P0,1); //P0端口向右循環(huán)移動一位
- DelayMs(150);
- }
- }
- }
復(fù)制代碼
|
|