|
該程序適用于剛剛熟悉51單片機編程的初學者,對于編程思路具有一定的鍛煉效果,個人建議先嘗試自己編寫,完成之后在查看。
該程序對于剛剛掌握51單片機編程的學者而言,難度主要在于多個功能的嵌套
能實現流水燈的同時,蜂鳴器間歇鳴叫,數碼管同時流水顯示
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- #include <intrins.h>
- sbit DUAN=P2^6;
- sbit WEI=P2^7;
- sbit FM=P2^3;
- uchar code sz[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
- 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
- void delay(uint xms) //延時函數 xms為延時的毫秒
- {
- uchar i,j;
- for(i=xms;i>0;i--)
- for(j=112;j>0;j--);
- }
- void main()
- {
- P1=0xfe; //定義led 1111 1110
- while(1)
- {
- uchar i,j;
- P3=0xfe; //1111 1110 //借用P3引腳,給P0賦值
- FM=0;
- for(i=8;i>0;i--) //八個數碼管同時顯示,運行八次 作用:增加延遲時間
- {
- for(j=1;j<=8;j++) //八個數碼管同時顯示
- {
- P0=sz[j];
- DUAN=1;
- DUAN=0;
- P0=P3; //位選
- WEI=1;
- WEI=0;
- P3=_crol_(P3,1); //P3左移一位
- delay(10);
- }
- }
- FM=1; //蜂鳴器關閉
- P1=_crol_(P1,1); //P1左移一位
- for(i=8;i>0;i--) //八個數碼管同時顯示,運行八次 作用:增加延遲時間
- {
- for(j=1;j<=8;j++) //八個數碼管同時顯示
- {
- P0=sz[j];
- DUAN=1;
- DUAN=0;
- P0=P3;
- WEI=1;
- WEI=0;
- P3=_crol_(P3,1);
- delay(10);
- }
- }
- FM=0; //蜂鳴器關閉
- }
- }
復制代碼
|
-
-
蜂鳴流水燈數碼管.zip
2018-7-18 17:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
3.13 KB, 下載次數: 19, 下載積分: 黑幣 -5
-
-
main.zip
2018-7-18 17:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
727 Bytes, 下載次數: 11, 下載積分: 黑幣 -5
評分
-
查看全部評分
|