這是我上個月做的動態數碼管顯示課程
里面包含51單片機源代碼
請大家多多指導- #include "reg52.h"
- #include "intrins.h"
- typedef unsigned int u16;
- typedef unsigned char u8;
- sbit LSA=P2^2;
- sbit LSB=P2^3;
- sbit LSC=P2^4;
-
- u8 code smgduan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共陰 code 代碼 編碼
- //void delay(u16 i)
- //{
- // while(i--);
- //}
-
- void DigDisplay()
- {
- static u8 j=0;
- switch(j) //位選,選擇點亮的數碼管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0;j++; break;//顯示第0位
- case(1):
- LSA=1;LSB=0;LSC=0;j++; break;//顯示第1位
- case(2):
- LSA=0;LSB=1;LSC=0;j++; break;//顯示第2位
- case(3):
- LSA=1;LSB=1;LSC=0;j++; break;//顯示第3位
- case(4):
- LSA=0;LSB=0;LSC=1;j++; break;//顯示第4位
- case(5):
- LSA=1;LSB=0;LSC=1;j++; break;//顯示第5位
- case(6):
- LSA=0;LSB=1;LSC=1;j++; break;//顯示第6位
- case(7):
- LSA=1;LSB=1;LSC=1;j=0; break;//顯示第7位
-
- }
- }
- void main()
- {
- u8 i;
- u16 m;
- while (1)
- {
-
- for(i=0;i<16;i++)
- {
- P0=smgduan[i];
-
- for(m=0;m<30000;m++) //10000-50000
- {
- DigDisplay(); //數碼管顯示函數
- }
-
- }
- // delay(500);//100-500
- }
-
- }
復制代碼
|