51单片机数码管电子时钟程序

更新时间:2023-08-25 16:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

这是一个以8位数码管做的电子时钟程序,包括整点报时

#include<reg52.h>

#define uint unsigned int #define uchar unsigned char

uchar miao,fen,shi,m,f,s,num,num2,num1,num4;

uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit beep=P3^7; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

void xiansi( uchar aa,uchar bb,uchar cc) { P2=0xdb; P0=0xbf; delay(1); P0=0xff; // num2++;

if(num1==1&num2==0|num1==1&num2==1) { P2=0xff; P0=table1[aa%10]; delay(1); P0=0xff; P2=0xff; P0=table1[aa/10]; delay(1); P0=0xff; } else { P2=0xfe; P0=table1[aa%10]; delay(1); P0=0xff; P2=0xfd; P0=table1[aa/10]; delay(1); P0=0xff; }

if(num1==2&num2==0|num1==2&num2==1) { P2=0xff;

这是一个以8位数码管做的电子时钟程序,包括整点报时

P0=table1[bb%10]; delay(1); P0=0xff; P2=0xff; P0=table1[bb/10]; delay(1); P0=0xff; } else { P2=0xf7; P0=table1[bb%10]; delay(1); P0=0xff; P2=0xef; P0=table1[bb/10]; delay(1); P0=0xff; }

if(num1==3&num2==0|num1==3&num2==1) { P2=0xff; P0=table1[cc%10]; delay(1); P0=0xff; P2=0xff; P0=table1[cc/10]; delay(1); P0=0xff; } else { P2=0xbf; P0=table1[cc%10]; delay(1); P0=0xff; P2=0x7f; P0=table1[cc/10]; delay(1); P0=0xff; } //if(num2==256)num2=1; }

void jishi( ) //计时函数

这是一个以8位数码管做的电子时钟程序,包括整点报时

{ if(num==20) //重复计数20次为一秒钟 { beep=1; num=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) shi=0; } } if(miao==0&fen==0)beep=~beep; } xiansi(miao,fen,shi); } void init(void) //初始化函数 { TMOD=0x01; TH0=0x3c; TL0=0xb0; TH1=0x3c; TL1=0xb0; EA=1; ET0=1;

TR0=1; // 定时/计数器0计时开始 ET1=1;

TR1=1; // 定时/计数器1计时开始 } void key()//按键函数 { P1=0xfe; //功能键 if(P1==0xee) { delay(10); if(P1==0xee) {

这是一个以8位数码管做的电子时钟程序,包括整点报时

beep=0; while(P1==0xee)xiansi(miao,fen,shi); beep=1; num1++; TR0=0; if(num1==4){num1=0;TR0=1;} xiansi(miao,fen,shi); } }

if(num1!=0) { if(P1==0xde) //时间加 { delay(10); if(P1==0xde) { beep=0; while(P1==0xde)xiansi(miao,fen,shi); beep=1; switch(num1) { case 1 : miao++; if(miao==60)miao=0; break; case 2 : fen++; if(fen==60)fen=0; break; case 3 : shi++; if(shi==24)shi=0; break; } } } if(P1==0xbe);//时间减 { delay(10); if(P1==0xbe) { beep=0; while(P1==0xbe)xiansi(miao,fen,shi);

这是一个以8位数码管做的电子时钟程序,包括整点报时

beep=1; switch(num1) { case 1 : miao--; if(miao==-1)miao=59; break; case 2 : fen--; if(fen==-1)fen=59; break; case 3 : shi--; if(shi==-1)shi=23; break; } } } } }

void main() ////////////////////////主函数 { init(); while(1) { jishi(); key(); } }

void zhongduan() interrupt 1 //中断函数 { TH0=0x3c; //初值重装 TL0=0xb0; num++; }

void zhongduan1() interrupt 3 //中断函数 { TH1=0x3c; //初值重装 TL1=0xb0; num2++; if(num2==3)num2=0;

这是一个以8位数码管做的电子时钟程序,包括整点报时

}

本文来源:https://www.bwwdw.com/article/d0ei.html

Top