資源簡介
單片機原理及應用課程設計任務書
數字鐘 要求:24小時制時間顯示,可隨時進行時間校對調整,整點報時及鬧鐘功能。(或根據實際數字鐘增加其它功能)。

代碼片段和文件信息
#include
#include
#include
?sbit?kgnxz=P3^0;?//功能選擇鍵,按一次設定時間,按兩次設定鬧鐘時間,按三次又顯示時間表??
?sbit?ksec=P3^1;//調整秒
?sbit?kmin=P3^2;//調整分
?sbit?khour=P3^3;//調整時
?sbit?bear=P1^0;//蜂鳴器控制口
?unsigned?char?secshi=0secge=0minshi=0minge=0hourshi=0hourge=0flag=0//flag是按鍵的計數
???????????????secshi1=0secge1=0minshi1=0minge1=0hourshi1=0hourge1=0;//定義存儲時間和鬧鐘時分秒的個位和十位
unsigned?int?num=0sec=00min=59hour=00sec1=00min1=1hour1=1?num1=0;//定義時間和鬧鐘的時分秒
?unsigned?char?code?table[10]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};//數碼管段控口
?void?keyscan();//鍵盤掃描函數
?void?display();//時鐘顯示函數
?void?display1();//鬧鐘顯示函數
?void?clock();//鬧鐘函數即蜂鳴器函數
/***延時函數****/
void?delay(unsigned?char?z)
?{unsigned?char?xy;
??for(x=z;x>0;x--)
???for(y=255;y>0;y--);
}
/***中斷函數****/
void?time0()?interrupt?1
?{num++;
?TH0=(65536-50000)/256;?
?TL0=(65536-50000)%256;
if(num==20)
???{num=0;?
????sec++;
????if(sec==60)
?????{sec=0;
??????min++;
??????if(min==60)
????????{min=0;
?????????hour++;
?????????if(hour==24)
???????????{hour=0;
????????????}
?????????}
??????}
?}
?}
/******時鐘顯示函數******/
void?display()
?{
?secge=sec%10;
?secshi=sec/10;
?minge=min%10;
?minshi=min/10;
?hourge=hour%10;
?hourshi=hour/10;
?P2=0xfe;
?P0=table[secge];
?delay(5);
?P2=0xfd;
?P0=table[secshi];
?delay(5);
?P2=0xfb;
?P0=0x40;
?delay(5);
?P2=0xf7;
?P0=table[minge];
?delay(5);
?P2=0xef;
?P0=table[minshi];
?delay(5);
?P2=0xdf;
?P0=0x40;
?delay(5);
?P2=0xbf;
?P0=table[hourge];
?delay(5);
?P2=0x7f;
?P0=table[hourshi];
?delay(5);
}
/*****鬧鐘顯示函數****/
void?display1()
?{
?secge1=sec1%10;
?secshi1=sec1/10;
?minge1=min1%10;
?minshi1=min1/10;
?hourge1=hour1%10;
?hourshi1=hour1/10;
?P2=0xfe;
?P0=table[secge1];
?delay(15);
?P2=0xfd;
?P0=table[secshi1];
?delay(15);
?P2=0xfb;
?P0=0x40;
?delay(15);
?P2=0xf7;
?P0=table[minge1];
?delay(15);
?P2=0xef;
?P0=table[minshi1];
?delay(15);
?P2=0xdf;
?P0=0x40;
?delay(15);
?P2=0xbf;
?P0=table[hourge1];
?delay(15);
?P2=0x7f;
?P0=table[hourshi1];
?delay(15);
}
/*****鍵盤掃描*********/
void?keyscan()
?{if(kgnxz==0)?????//功能選擇鍵是否按下?
????{??delay(10);//延時消抖 ?????
if(kgnxz==0)//再次判斷鍵是否按下 ??????
??{flag++;} //計數,功能選擇鍵按鍵次數加一 ??
??while(!kgnxz);?//釋放鍵?
}?
if(flag==1)//功能選擇鍵
???{if(ksec==0)//秒調整鍵
???{delay(10);//延時消抖
????if(ksec==0)//再次判斷鍵是否按下
??????{sec++;//秒加加
???????if(sec>=60)//如果秒大于60
???????sec=0;//秒清零
???????}
??while(ksec==0)//釋放鍵
??display();}
??if(kmin==0)
????{delay(10);
?????if(kmin==0)
???????{min++;
????????if(min>=60)
????????min=0;
????????}
??while(kmin==0)
??display();
?????}
??if(khour==0)
????{delay(10);
?????if(khour==0)
???????{hour++;
????????if(hour==24)
????????hour=0;
????????}
??while(khour==0)
??display();?
??}
?}
?if(flag==2)//鬧鐘調整
?????{if(ksec==0)
????????{delay(5);
?????????if(ksec==0)
??????????{sec1++;
??????????if(sec1==60)
???????????sec1=0;}
???????????while(!ksec)
?????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????100943??2018-06-18?14:11??Backup?Of?可調帶鬧鐘數字鐘.DBK
?????文件???????97412??2018-06-18?21:49??Last?Loaded?可調帶鬧鐘數字鐘.DBK
?????目錄???????????0??2018-06-20?15:26??project\
?????文件????????4037??2018-06-20?11:39??project\shizhong
?????文件????????3496??2018-06-20?11:39??project\shizhong.hex
?????文件??????????31??2018-06-20?11:39??project\shizhong.lnp
?????文件???????15169??2018-06-20?11:39??project\shizhong.M51
?????文件?????????956??2018-06-20?15:13??project\shizhong.Opt
?????文件???????????0??2018-06-20?14:54??project\shizhong.plg
?????文件????????1651??2018-06-18?00:28??project\shizhong.Uv2
?????文件?????????956??2018-06-20?14:50??project\shizhong_Opt.Bak
?????文件???????????0??2018-06-17?23:38??project\shizhong_Uv2.Bak
?????文件????????6369??2018-06-20?11:39??project\時鐘.obj
?????文件??????241664??2018-12-17?23:05??單片機課程設計().doc
?????文件??????100920??2018-06-19?21:56??可調帶鬧鐘數字鐘.DSN
?????文件?????????742??2018-06-20?14:18??可調帶鬧鐘數字鐘.PWI
?????文件????????4292??2018-06-20?11:39??時鐘.c
?????文件????????8271??2018-06-20?11:39??時鐘.LST
?????文件????????4259??2018-06-18?21:29??時鐘.txt
評論
共有 條評論