以作息時(shí)間控制為主的多功能任務(wù)設(shè)計(jì)(淮陰工學(xué)院電氣學(xué)院)_第1頁(yè)
以作息時(shí)間控制為主的多功能任務(wù)設(shè)計(jì)(淮陰工學(xué)院電氣學(xué)院)_第2頁(yè)
以作息時(shí)間控制為主的多功能任務(wù)設(shè)計(jì)(淮陰工學(xué)院電氣學(xué)院)_第3頁(yè)
以作息時(shí)間控制為主的多功能任務(wù)設(shè)計(jì)(淮陰工學(xué)院電氣學(xué)院)_第4頁(yè)
以作息時(shí)間控制為主的多功能任務(wù)設(shè)計(jì)(淮陰工學(xué)院電氣學(xué)院)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include<reg52.h> /52單片機(jī)頭文件,聲明各寄存器等#include <intrins.h>#define uint unsigned int /宏定義符號(hào),類似于替換#define uchar unsigned char sbit key1=P34; /宏定義位,也即IO口定義sbit key2=P35; sbit key3=P36; sbit key4=P37; sbit fm=P23;sbit dula=P26;sbit wela=P27;sbit bear=P23;uint i; /定義各符號(hào)uchar aa,bb,numdu,numwe;uc

2、har sec1,min1,hour1,year1,mon1,day1,temp1,temp2,sec2,min2,hour2; /主功能符號(hào)定義uchar code tablew=0x71,0x6d,0x5b,0x3f,0x6d,0x5b,0x06, ;uchar code tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;uchar code table=0x3f,0x06,0x5b,0x4f, /主功能數(shù)組定義0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void w1(); /子函數(shù)聲明

3、void w2();void w3();void w4();void delayms(uint xms); void timer0();void delay(uint z); /主功能子函數(shù)聲明 void init();void display(uchar hour,uchar min,uchar sec);void keyscan(); void alarm();void time1();/*- 主函數(shù)-*/void main() key1=1;key2=1;key3=1;key4=1;while(1) while(!key1)w1();while(!key2)w2();while(!key

4、3)w3();while(!key4)w4(); /*- 按鍵控制蜂鳴器過(guò)程 -*/void w1()if(!key1)delayms(300); /延時(shí)防抖,松手檢測(cè)if(key1) fm=!fm; /*- 按鍵控制流水燈過(guò)程 -*/void w2()loop1:P1=0xff;if(!key2) delayms(300);if(key2)aa=0xfe;/賦初值11111110 while(1) /大循環(huán)P1=aa;delayms(100); /延時(shí)500毫秒aa=_crol_(aa,1); /將aa循環(huán)左移1位后再賦給aa /相應(yīng)的cror是循環(huán)右移一位 if(!key2)delayms

5、(300);if(key2)goto loop1; /*- 按鍵控制數(shù)碼管過(guò)程 -*/void w3() loop2:wela=1; P0=0xff; if(!key3) delayms(300);if(key3)numdu=0;numwe=0;while(1)numdu+;if(numdu=7)numdu=1;dula=1; /開(kāi)段鎖存器P0=tablewnumdu; /送段碼dula=0; /鎖存段碼wela=1; /開(kāi)位鎖存器P0=tablewenumwe; /送位碼wela=0; /鎖存位碼numwe+;if(numwe=6)numwe=0;delayms(5); if(!key3)d

6、elayms(300);if(key3)goto loop2; /*- 按鍵控制作息時(shí)間過(guò)程 -*/void w4()if(!key4) delayms(300);if(key4)init(); /主功能主程序while(1) keyscan();alarm(); /*-延時(shí)函數(shù)(用于按鍵,蜂鳴器,流水燈等的延時(shí))-*/void delayms(uint xms)uint i,j;for(i=xms;i>0;i-) /i=xms即延時(shí)約xms毫秒for(j=110;j>0;j-);/*- 主功能相關(guān)所有子程序-*/void delay(uint z) /延時(shí)程序/uint x,y;

7、for(x=0;x<z;x+)for(y=0;y<110;y+);void init() /賦初值程序/TMOD=0X02; /選擇模式2,可自動(dòng)重裝載的八位計(jì)數(shù)器TH0=6; /給TH0賦初值 最大256-250=6 ;250與后面的3886相乘約為1sTL0=6; /給TH0賦初值 自動(dòng)裝入初值TL=TH6EA=1; /開(kāi)總中斷ET0=1; /開(kāi)T0中斷TR0=1;hour1=15;min1=20; sec1=57;year1=11;mon1=12;day1=24;void display(uchar hour,uchar min,uchar sec) /顯示程序/uchar

8、s1,s2,m1,m2,h1,h2; /該段用于數(shù)碼管顯示要賦的值s2=sec/10; /顯示秒的第二位,即個(gè)位s1=sec%10; /顯示秒的第一位,即十位 ; “%” 兩邊為整型,表示取余; m2=min/10; /下四句同m1=min%10;h2=hour/10;h1=hour%10;dula=1; /顯示小時(shí)的十位數(shù)P0=tableh2; dula=0;P0=0XFF; /P0初始化wela=1;P0=0XFE; /打開(kāi)第一位數(shù)碼管delay(1);dula=1; /顯示小時(shí)的個(gè)位數(shù)P0=tableh1+0x80; /0x80顯示小數(shù)點(diǎn)dula=0;P0=0XFF; /P0初始化wel

9、a=1; P0=0XFd; /打開(kāi)第二位數(shù)碼管delay(1);dula=1; /顯示分鐘的十位數(shù)P0=tablem2;dula=0;P0=0XFF;wela=1;P0=0XFb;delay(1);dula=1; /顯示分鐘的個(gè)位數(shù)P0=tablem1+0x80;dula=0;P0=0XFF;wela=1;P0=0XF7;delay(1);dula=1; /顯示秒的十位數(shù)P0=tables2;dula=0;P0=0XFf;wela=1;P0=0Xef;delay(1);dula=1; /顯示秒的個(gè)位數(shù)P0=tables1;dula=0;P0=0XFF;wela=1;P0=0Xdf;delay(

10、1);void keyscan() /鍵盤(pán)掃描程序/if(key1=0)delay(10);if(key1=0)/TR0=0;temp1+;if(temp1=4) /temp1用于記小時(shí),分鐘,秒的數(shù)碼管temp1=0; TR0=1;while(!key1)switch(temp2) /temp2用于記日歷,鬧鐘,時(shí)鐘三種模式case 0:display(hour1,min1,sec1);break;case 1:display(year1,mon1,day1);break;case 2:display(hour2,min2,sec2);break;if(key2=0)delay(10);if

11、(key2=0)if(temp2=0)TR0=0;switch(temp1)case 1:sec1+;if(sec1=60)sec1=0;break;case 2:min1+;if(min1=60)min1=0;break;case 3:hour1+;if(hour1=24)hour1=0;break;while(!key2)display(hour1,min1,sec1);if(temp2=1)TR0=1;switch(temp1)case 1:day1+;if(day1=31)day1=1;break;case 2:mon1+;if(mon1=13)mon1=1;break;case 3:

12、year1+;if(year1=100)year1=0;break;while(!key2)display(year1,mon1,day1);if(temp2=2)TR0=1;switch(temp1)case 1:sec2+;if(sec2=60)sec2=0;break;case 2:min2+;if(min2=60)min2=0;break;case 3:hour2+;if(hour2=24)hour2=0;break;while(!key2)display(hour2,min2,sec2);if(key3=0)delay(10);if(key3=0)if(temp2=0)TR0=0;s

13、witch(temp1)case 1:if(sec1=0)sec1=60;sec1-;break;case 2:if(min1=0)min1=60;min1-;break;case 3:if(hour1=0)hour1=24;hour1-;break;while(!key3)display(hour1,min1,sec1);if(temp2=1)TR0=1;switch(temp1)case 1:if(day1=1)day1=31;day1-;break;case 2:if(mon1=1)mon1=13;mon1-;break;case 3:if(year1=0)year1=100;year1

14、-;break;while(!key3)display(year1,mon1,day1);if(temp2=2)TR0=1;switch(temp1)case 1:if(sec2=0)sec2=60;sec2-;break;case 2:if(min2=0)min2=60;min2-;break;case 3:if(hour2=0)hour2=24;hour2-;break;while(!key3)display(hour2,min2,sec2);if(key4=0)delay(10);if(key4=0)temp1=0;temp2+;if(temp2=3)temp2=0;while(!key

15、4)switch(temp2)case 0:display(hour1,min1,sec1);break;case 1:display(year1,mon1,day1);break;case 2:display(hour2,min2,sec2);break;switch(temp2)case 0:display(hour1,min1,sec1);break;case 1:display(year1,mon1,day1);break;case 2:display(hour2,min2,sec2);break;void alarm() /蜂鳴器,流水燈程序/uint i; if(hour1=hou

16、r2&&min1=min2&&(sec1>=sec2&&sec1<sec2+30)|(min1=0&&sec1<20) /鬧鐘響30秒,正點(diǎn)報(bào)時(shí)20秒功能for(i=0;i<20;i+)bear=bear;P1=P1;switch(temp2)case 0:display(hour1,min1,sec1);break;case 1:display(year1,mon1,day1);break;case 2:display(hour2,min2,sec2);break;delay(30);bear=1;P1=0xff;/*void mainw() /主功能主程序/init();while(1) keyscan

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論