具有串行接口的数字钟设计

 接收端:

#include<reg51.h>
unsigned int i ,dat,f1=0,counter=0;
char a=0,b=0;
unsigned char table[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
unsigned char wei[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; 
void timer_0() interrupt 1 using 1{
     TH0=0x3C;TL0=0xB0;
     counter++;
     if(counter>=10){
        counter=0;
        f1++;
	}
}
void timeSub(){
	 int j;
	 for(j=0;j<6;j++){
	 	switch(j){
		   case(0):P2=0XFF;P1=wei[0];P2 = table[f1%10];break;
		   case(1):P2=0XFF;P1=wei[1];P2 = table[f1/10%10];break;
		   case(2):P2=0XFF;P1=wei[2];P2 = table[f1/100%10];break;
		   case(3):P2=0XFF;P1=wei[3];P2 = table[f1/1000%10];break;
		   case(4):P2=0XFF;P1=wei[4];P2 = table[f1/10000%10];break;
		   case(5):P2=0XFF;P1=wei[5];P2 = table[f1/100000%10];break;
		}
	 }
}

void received(void) interrupt 4
{    dat=SBUF;   RI=0;
     switch(dat){
         case 1:TR0=!TR0;break;
         case 2:f1=1;break;
		     case 3:f1=60;break;
		     case 4:f1=3600;break;
         case 5:P1=0;P2=0;f1=0;break;
         default:break;
	}
}


void main( ){ 
     TMOD=0x21;     SCON=0x50;     PCON=0x00;     TR1=1;
     TH1=0xf4;     TL1=0xf4;
     EA=1;     ES=1;     PS=1;     ET0=1;
     TR0=1;
     while(1){
	 	timeSub();
	 }

}

发送端:

#include<reg51.h>
#define Data_pause    1;
#define Data_second    2;
#define Data_min    3;
#define Data_hour    4;
#define Data_clear    5;
sbit Pause=P0^0;
sbit Set_second=P0^1;
sbit Set_min=P0^2;
sbit Set_hour=P0^3;
sbit clear=P0^4;
int i,j;
void delay(void)  
{   for(i=0;i<200;i++)
    for(j=0;j<100;j++){};
} 

void button(void)
{ 
if(Pause==0)     {delay();if(Pause==0)      {SBUF=Data_pause; do{}while(!TI);TI=0;}}
if(Set_second==0){delay();if(Set_second==0)  {SBUF=Data_second;do{}while(!TI);TI=0; }}
if(Set_min==0){delay();if(Set_min==0)  {SBUF=Data_min;do{}while(!TI);TI=0; }} 
if(Set_hour==0){delay();if(Set_hour==0)  {SBUF=Data_hour;do{}while(!TI);TI=0; }}  
if(clear==0)     {delay();if(clear==0)      {SBUF=Data_clear; do{}while(!TI);TI=0;}}
}


main(){
    TMOD=0x20;TL1=0xF4; TH1=0xF4;PCON=0x00; 
    SCON=0x50;
    TR1=1;
    while(1)  
    {    button();  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值