基于51单片机的数码管时钟(带闹钟调时秒表).doc

上传人:jian****018 文档编号:8910092 上传时间:2020-04-01 格式:DOC 页数:15 大小:32.50KB
返回 下载 相关 举报
基于51单片机的数码管时钟(带闹钟调时秒表).doc_第1页
第1页 / 共15页
基于51单片机的数码管时钟(带闹钟调时秒表).doc_第2页
第2页 / 共15页
基于51单片机的数码管时钟(带闹钟调时秒表).doc_第3页
第3页 / 共15页
点击查看更多>>
资源描述
/* * * * * * * * * * * *基于51单片机的数码管时钟程序 * * * * * * * * * * * * * */#include#define uint unsigned int #define uchar unsigned charsbit dula=P26;/申明u1锁存器的锁存端sbit wela=P27;/申明u2锁存器的锁存端sbit key1=P30; /功能键sbit key2=P31;/增大键sbit key3=P32;/减小键sbit key4=P33;/秒表查看键sbit beep=P23;/蜂鸣端uchar num,num1,num2,numm;uchar numf,num,nums,num;uchar s,s1,f,f1,m,m1;uchar ns,ns1,nf,nf1;uchar numns,numnf;uchar dingshi;void display(uchar m,uchar m1,ucharf,uchar f1,uchar s,uchar s1);void display1(uchar nf,uchar nf1,uchar ns,uchar ns1);void key();void key1();void alram();void di();void delayms(xms);void T0_time() interrupt 1;void miaobiao();uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x77,0x7c,0x39,0x5e,0x79,0x71;/*主函数void main()*/int main() TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;EA=1;ET0=1;TR0=1;nums=12;numf=0;num2=0;num=0;while(1) if(dingshi=0) keyscan(); display(m,m1,f,f1,s,s1); alarm(); else miaobiao(); keyscan1(); display1(nf,nf1,ns,ns1); return 0;/*蜂鸣器函数 di()*/void di() beep=0; delayms(100); beep=1;/*按键调时函数key()*/void keyscan() if(key1=0) delayms(10);if(key1=0) nums+;if(nums=24);nums=0;while(!key1);di();display(m,m1,f,f1,s,s1); if(key2=0) delayms(10);if(key2=0) numf+;if(numf=24);numf=0;while(!key2);di();display(m,m1,f,f1,s,s1); if(key3=0) delayms(10);if(key3=0)dingshi=dingshi; while(!key1);di();display(m,m1,f,f1,s,s1); /*按键设定闹钟函数keyscan1();*/void keyscan1() if(key1=0) delayms(10);if(key1=0) numns+;if(numns=24);numns=0;while(!key1);di();display1(nf,nf1,ns,ns1); if(key2=0) delayms(10);if(key2=0) numnf+;if(numnf=24);numnf=0;while(!key2);di();display1(nf,nf1,ns,ns1); if(key3=0) delayms(10);if(key3=0)dingshi=0; while(!key1);di();display1(nf,nf1,ns,ns1); /*闹钟函数alram()*/void alram() if(nums=numns)&(numnf=numf) beep=0; /*秒表函数miaobiao()*/void miaobiao() if(key4=0) delayms(100);if(key4=0) while(!key4); di(); displaym(uchar m,uchar m1); /*正常显示函数display()*/void display(uchar m,uchar m1,ucharf,uchar f1,uchar s,uchar s1) dula=1;P0=tablem1/秒位第1位dula=0;PO=0xff;/ 送入位选信号前关闭所有显示,防止打开位选锁存时wela=1;P0=0xef;wela=0;delayms(10);dula=1;P0=tablem; /秒第2位dula=0;P0=0xff;wela=1;P0=0xdf;wela=0;delayms(100)dula=1;P0=tablef1; /分第1位 dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delayms(100)dula=1;P0=tablef; /分第2位 dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delayms(10) dula=1;P0=tables1; /时第1位dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delayms(100) dula=1;P0=tables; /时第2位 dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delayms(10)/* 调时闹钟显示函数display1()*/void display1(uchar nf,uchar nf1,uchar ns,uchar ns1) nf1=numnf/10; nf=numnf%10; ns1=nums/10; ns=nums%10; dula=1; P0=tablenf1;/分第1位 dula=0; P0=0xff; wela=1; P0=0xfb;/待改参数 wela=0; delayms(10); dula=1; P0=tablenf;/分第2位 dula=0; P0=0xff; wela=1; P0=0xf7;/待改参数 wela=0; delayms(10); dula=1; P0=tablens1;/时第1位 dula=0; P0=0xff; wela=1; P0=0xfe;/待改参数 wela=0; delayms(10); dula=1; P0=tablens;/时第2位 dula=0; P0=0xfd; wela=1; P0=0xff;/待改参数 wela=0; delayms(10);/* 秒表显示函数displaym()*/void displaym(uchar m,uchar m1) dula=1; P0=tablem1;/秒位第一位 dula=0; P0=0xff; wela=1; P0=0Xbf; wela=0; delayms(10); dula=1; P0=tablem; dula=0; P0=0xff; wela=1; P0=0X7f; wela=0; delayms(10);/* 中断服务函数 void T0_time() interrupt 1*/void T0_time() interrupt 1 TH0=(65536-45872)/256; /46080 TL0=(65536-45872)%256; num2+; if(num2=20) num+; num2=0; m=num%10; m1=num/10; f=numf%10; f1=numf/10; s=nums%10; s1=nums/10; if(num=59) num=0; numf+; if(numf=59) numf=0;nums+; if(nums=24) nums=0; /*延时函数delayms()*/void delayms(xms) uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-);
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!