首页 单片机电子钟程序

单片机电子钟程序

举报
开通vip

单片机电子钟程序单片机电子钟程序 /*按键中 s17对应P10,用于分钟加一,记得要判断按键是否释放即while(!key1) s18对应P11,用于小时加一,记得要判断按键是否释放即while(!key2) s19对应P12,校准分钟,减 s20对应P13,校准小时,减*/ #include #define uchar unsigned char #define uint unsigned int void delayms(uint); void display(uchar,uchar); void keysca...

单片机电子钟程序
单片机电子钟程序 /*按键中 s17对应P10,用于分钟加一,记得要判断按键是否释放即while(!key1) s18对应P11,用于小时加一,记得要判断按键是否释放即while(!key2) s19对应P12,校准分钟,减 s20对应P13,校准小时,减*/ #include #define uchar unsigned char #define uint unsigned int void delayms(uint); void display(uchar,uchar); void keyscan(); uchar code table[]={ 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/*9横杠*/ }; uchar num,num1,num2,num3,shi,ge,hour1,min1,hour2,min2; sbit led1=P0^0; sbit wei6=P3^3; sbit wei5=P2^4; sbit wei4=P2^3; sbit wei3=P2^2; sbit wei2=P2^1; sbit wei1=P2^0; sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; sbit key4=P1^3; void main() { TMOD=0x11;//设置定时器0和1工作方式1(0001 0001) TH0=(65536-46000)/256;//装初值 TL0=(65536-46000)%256;//装初值 EA=1;//开总中断 ET0=1;//开启定时器0中断 TR0=1;//启动定时器0 // P2=0; // P3=0; while(1) { keyscan(); display(shi,ge); } } void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void keyscan() { if(key4==0) { delayms(10); if(key4==0) { if(num3==0) { num3=24;//在C中给寄存器赋值这样也是可以的。直接给出十进制也能识 别 } num3--;//校准小时,减 while(!key4); } } if(key3==0) { delayms(10); if(key3==0) { if(num2==0) { num2=60; } num2--;//校准分钟,减 while(!key3); } } if(key2==0) { delayms(10);//消斗 if(key2==0) { num3++;//校准小时,加 while(!key2);//等待按键释放 if(num3==24) { num3=0; } } } if(key1==0) { delayms(10);//消斗 if(key1==0) { num2++;//校准分钟,加 while(!key1);//等待按键释放 if(num2==60) { num2=0; } } } } void display(uchar shi,uchar ge) { min2=num2/10;//求分钟的十位,并送入min2,分离个位和十位的程序 min1=num2%10;//求分钟的个位,并送入min1 hour2=num3/10;//求小时的十位,并送入hour2 hour1=num3%10;//求小时的个位,并送入hour1 P0=table[shi];//显示秒十位 wei2=1; //送位选 delayms(4); //延时 wei2=0; //在送位选数据前先关闭前一位显示,一方干扰下一位的显示 P0=table[ge]; //显示秒个位 wei1=1; delayms(4); wei1=0; P0=table[min1]&0x7F; //显示分个位 wei3=1; delayms(4); wei3=0; P0=table[min2]; //显示分十位 wei4=1; delayms(4); wei4=0; P0=table[hour1]&0x7F; //显示小时个位 wei5=1; delayms(4); wei5=0; P0=table[hour2]; //显示小时十位 wei6=1; delayms(4); wei6=0; } void T0_time()interrupt 1 { TH0=(65536-46000)/256;//重装初值 TL0=(65536-46000)%256;//重装初值 num++; if(num==20) { num=0; num1++; shi=num1/10; ge=num1%10; if(num1==60)//是否到60秒 { num1=0;//到60秒后清零 num2++;//分钟加一 /*min2=num2/10;//求分钟的十位,并送入min2 min1=num2%10;//求分钟的个位,并送入min1*/ if(num2==60)//是否到60分 { num2=0;//到60分后清零 num3++;//小时加一 /*hour2=num3/10;//求小时的十位,并送入hour2 hour1=num3%10;//求小时的个位,并送入hour1*/ if(num3==24) { num3=0; } } } } }
本文档为【单片机电子钟程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_737352
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:互联网
上传时间:2017-10-14
浏览量:17