电热锅厂家
免费服务热线

Free service

hotline

010-00000000
电热锅厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

电子时钟的配套c程序

发布时间:2020-06-30 23:00:34 阅读: 来源:电热锅厂家

/*------------------------------------------------------------------------------声明: ①使用共阳数码管,选位码12、9、8、6接P3^0 ~ P3^3,如0xaa=1010 1010,左至右为0101 ②中间两小数点,点亮选3、8 ③a、b、c、d、e、f、g、h 分别接P1口个管脚 ④任意8位二进制,如1100 0000,在共阳上显示0 ⑤P2^2口接一个发光二极管 ⑥P0^0和P0^4分别接了两个按键-------------------------------------------------------------------------------*/#includereg52.h>

本文引用地址: KEY1=P0^0;sbit KEY2=P0^4;

sbit LED=P2^2;

code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char StrTab[4];unsigned char minute=30,hour=20,second; //初始化为20:30

void delay(unsigned int cnt){ while(--cnt);}

void Displaypro(void) //显示处理函数{ StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=tab[minute/10]; //显示分钟 StrTab[3]=tab[minute%10];}

main(){ TMOD|=0x01; //定时器0 10ms in 12M crystal 用于计时 TH0=0xd8; //(65536-10000)/256 TL0=0xf0; //(65536-10000)%256 ET0=1; TR0=1; TMOD|=0x10; //定时器1 1.8ms in 12M crytal 用于动态扫描 TH1=0xF8; //(65536-1808)/256 TL1=0xF0; //(65536-1808)%256 ET1=1; TR1=1; EA=1;

Displaypro(); //调用显示处理函数

while(1) { if(!KEY1) { delay(10000); //延时一段时间(去抖动) if(!KEY1) { hour++; if(hour==24) hour=0; Displaypro(); } } if(!KEY2) { delay(10000); if(!KEY2) { minute++; if(minute==60) minute=0; Displaypro(); } } }

}

void time1_isr(void) interrupt 3 using 0 //定时器1用来动态扫描{ static unsigned char num; //TH1=0xf8; //TL1=0xf0; //中断源每1.8ms向主程序发一个脉冲,执行中断程序 TH1=(65536-3600)/256; TL1=(65536-3600)%256; //不是因为这里出错,扫描速度可以 switch(num) { case 0: P3=0x01; P1=StrTab[num];break; case 1: P3=0x02; P1=StrTab[num];break; case 2: P3=0x04; P1=StrTab[num];break; case 3: P3=0x08; P1=StrTab[num];break; default: break; } num++; if(num==4) num=0;

}

void time(void) interrupt 1 using 1{ static unsigned char count; //定义内部静态变量

TH0=0xd8; TL0=0xf0; count++; switch(count) { case 0: case 20: case 40: case 60: case 80: Displaypro(); break; //隔一段时间调用显示处理函数 case 50: P2=~P2;break; //每1s亮一下 case 100: P2=~P2;break; default: break; } if(count==100) { count=0; second++; if(second==60) { second=0; minute++; if(minute==60) { minute=0; hour++; if(hour==24) hour=0; } } }}

青岛劳保工服定制

河北防静电工作服制作

吉林西服