资源描述:
《定时闹钟C语言程序文件.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、....#include//头文件#include#defineucharunsignedchar//宏定义#defineuintunsignedintsbitkey1=P3^5;//位声明sbitkey2=P3^6;sbitkey3=P3^7;sbitfmq=P2^0;ucharcodetable[]={0x3f,0x06,0x5b,//数码管显示的数值0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0xbf,0x86,0xdb,//带小数点的数值0xcf,0xe6,0xed,0xfd,0x87
2、,0xff,0xef};voidjia();//函数声明voidjian();uchartable_1[6];//定义数组,数组含有6个数值uchartable_2[6];ucharshi=23,fen=59,miao=50;//显示初始值ucharshi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;//定义全局变量ucharflag,flag1,cnt,count;//定义全局变量voiddelay(uchari)//延时函数,用于动态扫描数码管{ucharx,y;for(x=i;x>0;x--)for(y=110;y>0
3、;y--);}voidinit()//初始化函数{TMOD=0X01;//工作方式1TH0=(65536-50000)/256;//定时时间为:50msTL0=(65536-50000)%256;ET0=1;//打开定时器EA=1;//开总中断TR0=1;//启动定时器}voiddisplay()//显示子函数,用于显示时间数值{uchari,j;table_1[0]=miao%10;//分离秒的各位与十位table_1[1]=miao/10;table_1[2]=fen%10+11;//分离分的各位与十位table_1[3]=fen/10;table_1[4]=sh
4、i%10+11;//分离时的各位与十位table_1[5]=shi/10;j=0x7f;//从秒到时的扫描.下载可编辑.....for(i=0;i<6;i++){P2=j;P0=table[table_1[i]];//显示数值delay(10);j=_cror_(j,1);//循环右移}}voiddisplay_1()//显示子函数,用于显示定时时间{uchari,j;table_2[0]=miao2%10;//以下含义同上table_2[1]=miao2/10;table_2[2]=fen2%10+11;table_2[3]=fen2/10;table_2[4]=s
5、hi2%10+11;table_2[5]=shi2/10;j=0x7f;for(i=0;i<6;i++){P2=j;P0=table[table_2[i]];delay(10);j=_cror_(j,1);}}voidshijian()//时间子函数{if(flag>=20)//判断是否到一秒{flag=0;//到了,则标志位清零miao++;//秒加1if(miao>=60)//判断秒是否到60s{miao=0;//到了,则清零fen++;//分加1if(fen>=59)//以下含义同上{fen=0;shi++;if(shi>23)shi=0;}}.下载可编辑...
6、..}}voidkey_scan()//键盘扫描子函数{uchari;//定义局部变量if(key1==0){while(!key1)//防止掉显{if(cnt==0
7、
8、cnt==1
9、
10、cnt==2
11、
12、cnt==3
13、
14、cnt==4
15、
16、cnt==8){display();}if(cnt==5
17、
18、cnt==6
19、
20、cnt==7){display_1();}}cnt++;//记下按键key1按下的次数if(cnt==1)//第一次按下,停止计数TR0=0;if(cnt==2)//第二次按下{miao1=miao;//保存秒的数值miao=99;//显示99,表示可以调节秒的数
21、值了for(i=0;i<100;i++)display();//显示99miao=miao1;//恢复前一刻秒的数值}if(cnt==3)//以下含义同上{fen1=fen;fen=99;for(i=0;i<100;i++)display();fen=fen1;}if(cnt==4){shi1=shi;shi=99;for(i=0;i<100;i++)display();shi=shi1;.下载可编辑.....}if(cnt==5){miao1=miao2;miao2=88;for(i=0;i<100;i++)display_1();miao2=mi