標(biāo)題:
51單片機(jī)實(shí)現(xiàn)電子表程序與Proteus仿真原理圖
[打印本頁]
作者:
guoyuge
時間:
2023-12-27 16:09
標(biāo)題:
51單片機(jī)實(shí)現(xiàn)電子表程序與Proteus仿真原理圖
仿真原理圖如下(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 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1