|
是用51hei單片機(jī)開發(fā)板 電路圖詳見:http://www.zg4o1577.cn/f/51hei-5.pdf 的數(shù)碼管部分, 用2個(gè)74hc573 鎖存,p0口作為數(shù)據(jù)口 ,p3.6和p3.7分別是段和位的鎖存端口.P2口上面是按鍵
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- sbit D=P3^6;
- sbit V=P3^7;
- sbit KEY_S1=P2^4;
- uchar ACT[5]={0xfe,0xfd,0xfb,0xf7,0xef};
- uint data a[10]={23,58,123,54,63,589,888,19,333,220};
- //===============
- void delay(unsigned int k)
- {
- unsigned int i,j;
- for(i=0;i<k;i++){
- for(j=0;j<121;j++)
- {;}}
- }
- //====================
- void sort(uint array[],uint n)
- {
- uint i,j,k,t;
- for(i=0;i<n-1;i++)
- {
- k=i;
- for(j=i+1;j<n;j++)
- {if(array[j]<array[k])k=j;}
- t=array[k];
- array[k]=array[i];
- array[i]=t;
- }
- }
- //============
- void dis(uint array[],uint n)
- {
- uint m,t;
- for(m=0;m<n;m++)
- {
- for(t=0;t<300;t++)
- {
- D=1;P0=SEG7[array[m]%10];D=0;P0=0xff;V=1;P0=ACT[4];V=0;delay(5);
- D=1;P0=SEG7[(array[m]/10)%10];D=0;P0=0xff;V=1;P0=ACT[3];V=0;delay(5);
- D=1;P0=SEG7[array[m]/100];D=0;P0=0xff;V=1;P0=ACT[2];V=0;delay(5);
- D=1;P0=SEG7[m];D=0;P0=0xff;V=1;P0=ACT[0];V=0;delay(5);
- }
- }
- }
- //==================
- void main(void)
- {
- while(1)
- {
- dis(a,10);
- while(KEY_S1);
- sort(a,10);
- dis(a,10);
- while(1);
- }
- }
復(fù)制代碼
|
|