为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机时钟

2012-11-28 5页 pdf 239KB 32阅读

用户头像

is_428608

暂无简介

举报
单片机时钟 #include #define uchar unsigned char #define uint unsigned int int as[8]={0,0,10,0,0,10,1,0}; //默认时间 int aa[8]={0,0,10,0,0,10,0,0}; //闹钟 int ad[8]={0,0,10,0,0,10,0,0}; //秒表 int af[8]={3,2,2,1,1,1,0,2,}; //日期 int ss[8]={0,0,10,0,0,10,0,0};//设置 int a=0,b=0,c=0,s=0...
单片机时钟
#include #define uchar unsigned char #define uint unsigned int int as[8]={0,0,10,0,0,10,1,0}; //默认时间 int aa[8]={0,0,10,0,0,10,0,0}; //闹钟 int ad[8]={0,0,10,0,0,10,0,0}; //秒表 int af[8]={3,2,2,1,1,1,0,2,}; //日期 int ss[8]={0,0,10,0,0,10,0,0};//设置 int a=0,b=0,c=0,s=0; uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; uchar cho[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; sbit k1=P1^0; //加 sbit k2=P1^1; // 减 sbit k3=P1^2; //设置时间 sbit k4=P1^3; //设置闹钟 sbit k5=P1^4; //左 sbit k6=P1^5; //右 sbit k7=P1^6; //确定/开启 sbit k8=P1^7; //暂停 sbit q1=P3^0; //喇叭 sbit q2=P3^1; //喇叭 sbit q3=P3^2; //退出日期显示 sbit q4=P3^3; //日期显示 sbit q7=P3^6; //秒表 sbit q8=P3^7; //退出秒表 void delay(uint x) { while(x--) ; //延时 2x+4us } void xian()//正常显示时间 { uint i; for(i=0;i<8;i++) { P2=cho[i]; P0=table[as[i]]; delay(100); } } void she()//设置 { int i=7,j,k=0; while(1) { for(j=0;j<8;j++) { P2=cho[j]; if(j==i) P0=table[11]; //控制闪烁(暗) else P0=table[ss[j]]; delay(200); } delay(400); if(k5==0)//左 {i++;if(i==8)i=0;if(i==2)i=3;if(i==5)i=6;while(k5==0);} if(k6==0)//右 {i--;if(i==-1)i=7;if(i==2)i=1;if(i==5)i=4;while(k6==0);} if(k1==0)//加 {k++;if((i==0||i==3||i==6)&&k==10) k=0;if(i==7&&k==3) k=0; if((i==1||i==4)&&k>5) k=0;ss[i]=k;while(k1==0);} if(k2==0)//减 {k--;if((i==0||i==3||i==6)&&k==-1) k=9;if(i==7&&k==-1)k=2; if((i==1||i==4)&&k==-1) k=5;ss[i]=k;while(k2==0);} P2=cho[i]; P0=table[ss[i]]; //控制闪烁(亮) if(ss[7]==2&&ss[6]>4) { ss[6]=ss[6]-4;ss[7]=0;} if(ss[6]==0&&ss[7]==0) {ss[6]=1;ss[7]=0;} if(k7==0)break;//确定 delay(40); } } void riqi() //日期显示 { int i1,i=7,j,k=0; ss[0]=3;ss[1]=2;ss[2]=2;ss[3]=1; ss[4]=1;ss[5]=1;ss[6]=0;ss[7]=2;//默认日期为 2011 12 23 while(1) { if(c==2) { af[0]=10;af[1]=10;af[6]=10;af[7]=10; af[5]=ss[7]; af[4]=ss[6]; af[3]=ss[5]; af[2]=ss[4]; } if(c==1) { af[4]=10;af[5]=ss[2];af[6]=ss[3];af[7]=10; af[0]=10; af[1]=10; af[2]=ss[0]; af[3]=ss[1]; } if(q4==0) {c++;if(c==3) c=1;while(q4==0);}//选择显示 for(i1=0;i1<8;i1++) //显示 { P2=cho[i1]; P0=table[af[i1]]; delay(100); } if(q3==0) {c=0;break;}//退出 if(k4==0) //设置日期 { while(1) { for(j=0;j<8;j++) { P2=cho[j]; if(j==i) P0=table[11]; //控制闪烁(暗) else P0=table[ss[j]]; delay(200); } delay(400); if(k5==0)//左 {i++;if(i==8)i=0;while(k5==0);} if(k6==0)//右 {i--;if(i==-1)i=7;while(k6==0);} if(k1==0)//加 {k++;if(k==10) k=1;ss[i]=k;while(k1==0);} if(k2==0)//减 {k--;if(k==-1) k=9;ss[i]=k;while(k2==0);} P2=cho[i]; P0=table[ss[i]]; //控制闪烁(亮) if(k7==0)break;//确定 delay(40); } } } } void miao()//秒表 { uint i; while(1) { for(i=0;i<8;i++)//显示秒表 { P2=cho[i]; P0=table[ad[i]]; delay(80); } delay(100); if(k8==0)//暂停/开启 {TR1=!TR1;while(k8==0);} if(q8==0)//退出秒表 {TR1=0;ad[0]=0;ad[1]=0;ad[3]=0;ad[4]=0;ad[6]=0;ad[7]=0;break;} } } void main() { TMOD=0x01; TH0=0x3c;TH1=0xd8; TL0=0xb0;TL1=0xef; EA=1; ET0=1;ET1=1; TR0=1;TR1=0; while(1) { xian(); if(k3==0)//设置时间 {TR0=0; she(); as[0]=ss[0];as[1]=ss[1];as[3]=ss[3];as[4]=ss[4];as[6]=ss[6];as[7]=ss[7]; TR0=1;} if(k4==0)//设置闹钟 {TR0=0; she(); aa[0]=ss[0];aa[1]=ss[1];aa[3]=ss[3];aa[4]=ss[4];aa[6]=ss[6];aa[7]=ss[7]; TR0=1;} if(k8==0)//暂停/开启 {TR0=!TR0;while(k8==0);} if(as[0]==aa[0]&&as[1]==aa[1]&&as[3]==aa[3]&&as[4]==aa[4]&&as[6]==aa[6]&&as[7]= =aa[7]) {s=1;aa[0]=aa[0]+5;if(aa[0]>9)aa[0]=aa[0]-10;} //定时闹钟,铃声响 if(s) {q1=!q1;q2=!q2;if(as[0]==aa[0]) s=0;} if(q7==0)//开启秒表 miao(); if(q4==0) c=1;//开启日期显示 if(c) riqi(); } } void time0_int(void) interrupt 1 //正常时间 { TH0=0x3c;TL0=0xb0; a++; if(a==20) {a=0;as[0]++;} //1秒 if(as[0]==10) {as[0]=0;as[1]++;} if(as[1]==6) {as[1]=0;as[3]++;} if(as[3]==10) {as[3]=0;as[4]++;} if(as[4]==6) {as[4]=0;as[6]++;} if(as[6]==10) {as[6]=0;as[7]++;} if(as[7]==2&&as[6]==5) {as[6]=1;as[7]=0;af[0]++;} if(af[0]==10) {af[0]=0;af[1]++;} if(af[1]==3&&af[0]==2) {af[1]=0;af[0]=1;af[2]++;} if(af[2]==10) {af[2]=0;af[3]++;} if(af[3]==1&&af[2]==3) {af[2]=1;af[3]=0;af[4]++;} } void time1_int(void) interrupt 3 //秒表时间 { TH1=0xd8;TL1=0xef; b++; if(b==10) {b=0;ad[0]++;} //1/100秒 if(ad[0]==10) {ad[0]=0;ad[1]++;} if(ad[1]==10) {ad[1]=0;ad[3]++;} if(ad[3]==10) {ad[3]=0;ad[4]++;} if(ad[4]==6) {ad[4]=0;ad[6]++;} if(ad[6]==10) {ad[6]=0;ad[7]++;} if(ad[7]==6) {ad[7]=0;} }
/
本文档为【单片机时钟】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索