51单片机电子钟(整点报时,6数码管,独立按键)
#include “reg51.h” #define uchar unsigned char #define uint unsigned int sbit k1=P1^0;//按钮 sbit k2=P1^1; sbit k3=P1^2; sbit beep=P3^7;//蜂鸣器 sbit smg1=P2^0; sbit smg2=P2^1; sbit smg3=P2^2; sbit smg4=P2^3; sbit smg5=P2^4; sbit smg6=P2^5; uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点 uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//显示0~9,有小数点 uchar time=0,mode=3;//系统变量 uchar miao=0,fen=0,shi=12; //延时 void delay(uint i) { while(i–); } //主函数 void main() { uchar k=0; TMOD|=0X01; TH0=0X3C; TL0=0XB0; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 while(1) { //按键检测 if(!k1 &&(k!=1))//时分 { k=1; if(mode<2) mode++; else mode=0; } if(!k2 &&(k!=2))//加 { k=2; if(mode==1) { if(shi<23) shi++; else shi=0; } if(mode==2) { if(fen<59) fen++; else fen=0; } } if(k1 && k2) k=0; if(!k3) { shi=12; fen=0; miao=0; mode=0; } //显示 if(mode==0) { P0=smgduan0[shi/10];smg1=0;delay(100);smg1=1; P0=smgduan1[shi%10];smg2=0;delay(100);smg2=1; P0=smgduan0[fen/10];smg3=0;delay(100);smg3=1; P0=smgduan1[fen%10];smg4=0;delay(100);smg4=1; P0=smgduan0[miao/10];smg5=0;delay(100);smg5=1; P0=smgduan0[miao%10];smg6=0;delay(100);smg6=1; } if(mode==1) { if(time<11) { P0=smgduan0[shi/10];smg1=0;delay(100);smg1=1; P0=smgduan1[shi%10];smg2=0;delay(100);smg2=1; } P0=smgduan0[fen/10];smg3=0;delay(100);smg3=1; P0=smgduan1[fen%10];smg4=0;delay(100);smg4=1; P0=smgduan0[miao/10];smg5=0;delay(100);smg5=1; P0=smgduan0[miao%10];smg6=0;delay(100);smg6=1; } if(mode==2) { P0=smgduan0[shi/10];smg1=0;delay(100);smg1=1; P0=smgduan1[shi%10];smg2=0;delay(100);smg2=1; if(time<11) { P0=smgduan0[fen/10];smg3=0;delay(100);smg3=1; P0=smgduan1[fen%10];smg4=0;delay(100);smg4=1; } P0=smgduan0[miao/10];smg5=0;delay(100);smg5=1; P0=smgduan0[miao%10];smg6=0;delay(100);smg6=1; } //整点 if(mode<3) { if((fen==0)&&(miao<10)) beep=0; else beep=1; } } } //定时器中断 void Timer0() interrupt 1 { if(time<20)//1s time++; else { time=0; if(miao<59) miao++; else { miao=0; if(fen<59) fen++; else { fen=0; if(shi<23) shi++; else shi=0; } } } TH0=0X3C; TL0=0XB0; }
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/55384.html