|
- /***********************************************
- 功能 :流水燈循環(huán)一次數(shù)碼管顯示加一
- P0口是流水燈。P2口通過573鎖存器控制數(shù)碼管的
- 位和段。
- 單片機(jī):STC12C5A60S2
- 晶振 :11.0592M
- 作者 :蘇義江
- 時間 :2015-12-11
- **********************************************/
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- //共陽數(shù)碼管段碼
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
- 0xa1,0x86,0x8e,0x89};
- //位碼
- uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar b,i;
- uint c;//數(shù)的變量
- uchar qian,bai,shi,ge;
- sbit wei=P0^6; //位使能573
- sbit duan=P0^7; //段使能573
- void display();
- void delay(uint z);
- void main()
- {
- c=0;
- while(1)
- {
- for(c=0;c<9999;c++)//顯示到1000從新開始
- {
- for(i=0;i<8;i++)
- {
- P0=table1[i];//流水燈
- delay(10);
- for(b=0;b<20;b++)//循環(huán)顯示20次增加數(shù)碼管亮度
- {
- display();//數(shù)碼管顯示
- }
- }
- }
- }
- }
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=420;y>0;y--);
- }
- void display()
- {
- //數(shù)的分解千,百,十,個位
- qian=c/1000;
- bai=c%1000/100;
- shi=c%100/10;
- ge=c%10;
-
- wei=1; //使能位選
- P2=0xfe;
- wei=0; //使能位選
- duan=1; //使能段選
- P2=table[qian]; //顯示
- duan=0; //使能段選
- delay(3);
- P2=0XFF;
- wei=1;
- P2=0xfd;
- wei=0;
- duan=1;
- P2=table[bai];
- duan=0;
- delay(3);
- P2=0XFF;
- wei=1;
- P2=0xfb;
- wei=0;
- duan=1;
- P2=table[shi];
- duan=0;
- delay(3);
- P2=0XFF;
- wei=1;
- P2=0xf7;
- wei=0;
- duan=1;
- P2=table[ge];
- duan=0;
- delay(3);
- P2=0XFF;
- }
復(fù)制代碼
|
|