|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (175.61 KB, 下載次數(shù): 40)
下載附件
2023-12-28 18:09 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #include"key.c"
- unsigned char i,j,k;
- unsigned char seven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- unsigned char flash;
- sbit LED=P1^0;
- void timer0_isr(void)interrupt 1
- {
- TH0=0xF8;
- TL0=0x2F;
- i++;
- if(i>=250)
- {
- flash=~flash;
- i=0;
- j++;
- }
- if(j>=2)
- {
- sec++;
- j=0;
- }
- if(sec>=60)
- {
- min++;
- sec=0;
- }
- if(min>=60)
- {
- hour++;
- min=0;
- }
- if(hour>=24)
- {
- hour=0;
- }
- P0=0xff;
- if(key1_flag==0)
- {
- switch(k)
- {
- case 0:P0=seven_seg[sec%10];P2=~0x01;break;
- case 1:P0=seven_seg[sec/10];P2=~0x02;break;
- case 2:P0=seven_seg[min%10] &(0x7F | flash);P2=~0x04;break;
- case 3:P0=seven_seg[min/10];P2=~0x08;break;
- case 4:P0=seven_seg[hour%10] & (0x7F | flash);P2=~0x10;break;
- case 5:P0=seven_seg[hour/10];P2=~0x20;break;
- }
- }
- if(key1_flag==1)
- {
- j=0;
- switch(k)
- {
- case 0:P0=seven_seg[sec_t%10];P2=~0x01;break;
- case 1:P0=seven_seg[sec_t/10];P2=~0x02;break;
- case 2:P0=seven_seg[min_t%10];P2=~0x04;break;
- case 3:P0=seven_seg[min_t/10];P2=~0x08;break;
- case 4:P0=seven_seg[hour_t%10] | flash;P2=~0x10;break;
- case 5:P0=seven_seg[hour_t/10] | flash;P2=~0x20;break;
- }
- }
- if(key1_flag==2)
- {
- j=0;
- switch(k)
- {
- case 0:P0=seven_seg[sec_t%10];P2=~0x01;break;
- case 1:P0=seven_seg[sec_t/10];P2=~0x02;break;
- case 2:P0=seven_seg[min_t%10] | flash;P2=~0x04;break;
- case 3:P0=seven_seg[min_t/10] | flash;P2=~0x08;break;
- case 4:P0=seven_seg[hour_t%10];P2=~0x10;break;
- case 5:P0=seven_seg[hour_t/10];P2=~0x20;break;
- }
- }
- if(key1_flag==3)
- {
- j=0;
- switch(k)
- {
- case 0:P0=seven_seg[sec_t%10] | flash;P2=~0x01;break;
- case 1:P0=seven_seg[sec_t/10] | flash;P2=~0x02;break;
- case 2:P0=seven_seg[min_t%10];P2=~0x04;break;
- case 3:P0=seven_seg[min_t/10];P2=~0x08;break;
- case 4:P0=seven_seg[hour_t%10];P2=~0x10;break;
- case 5:P0=seven_seg[hour_t/10];P2=~0x20;break;
- }
- }
- if(key1_flag==4)
- {
- j=0;
- switch(k)
- {
- case 0:P0=seven_seg[min_r%10];P2=~0x01;break;
- case 1:P0=seven_seg[min_r/10];P2=~0x02;break;
- case 2:P0=seven_seg[hour_r%10] | flash;P2=~0x04;break;
- case 3:P0=seven_seg[hour_r/10] | flash;P2=~0x08;break;
- case 4:P0=0xff;P2=~0x10;break;
- case 5:P0=0x0c;P2=~0x20;break;
- }
- }
- if(key1_flag==5)
- {
- j=0;
- switch(k)
- {
- case 0:P0=seven_seg[min_r%10] | flash;P2=~0x01;break;
- case 1:P0=seven_seg[min_r/10] | flash;P2=~0x02;break;
- case 2:P0=seven_seg[hour_r%10];P2=~0x04;break;
- case 3:P0=seven_seg[hour_r/10];P2=~0x08;break;
- case 4:P0=0xff;P2=~0x10;break;
- case 5:P0=0x0c;P2=~0x20;break;
- }
- }
- k++;
- if(k>=6)k=0;
- }
- void timer0_init(void)
- {
- TMOD=0x01;
- TH0=0xF8;
- TL0=0x2F;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void main()
- {
- timer0_init();
- while(1)
- {
- key();
- if(min==min_r && hour==hour_r)
- LED=1;
- else
- LED=0;
- }
-
- }
復(fù)制代碼
所有資料51hei附件下載:
電子表.7z
(33.09 KB, 下載次數(shù): 9)
2023-12-28 18:10 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|