




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、/時(shí)間顯示緩沖區(qū)/日期顯示緩沖區(qū)#include unsigned char DispBuf6; unsigned char Disdate6;unsigned char DisSec6;/秒表緩沖區(qū)structunsigned char Hour;unsigned char Min;unsigned char Sec;Time;structunsigned char Year; unsigned char Month; unsigned char Days;Date;structunsigned char Minite;unsigned char Second; unsigned char
2、MilliSec;Millisecond;unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; unsigned char Flash_flag=0; unsigned char Flash_flag1=0;unsigned char DisPlay_Back=0; 不一致/設(shè)定時(shí)間結(jié)構(gòu)體/設(shè)定日期結(jié)構(gòu)體/設(shè)定毫秒結(jié)構(gòu)體/中斷次數(shù)計(jì)數(shù)變量/閃爍標(biāo)志,每
3、半秒閃爍/閃爍標(biāo)志,每半秒閃爍/顯示緩沖區(qū)更新備份, 如果顯示緩沖區(qū)更新則跟閃爍標(biāo)志unsigned char DisPlay_Back1=0;/顯示緩沖區(qū)更新備份,如果顯示緩沖區(qū)更新則跟閃爍標(biāo)志不一致unsigned char i,j; unsigned char SetMillisecond;/啟動(dòng)秒表code unsigned char LEDCode=0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80; /數(shù)碼管顯示代碼 code unsigned char ErrorLEDCode=0x01,0xe7,0x12,0x82,0xc4,0x
4、88,0x08,0xc1,0x00,0x80;/ 繪制錯(cuò)誤圖紙的數(shù)碼管顯示代碼void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1();void changedate();/ 調(diào)日期void displaydate();/ 顯示日期void makedays();/確定每個(gè)月的日期void runSec();void delay(unsigned int i);/函數(shù)聲名sbit P1_0=P1A0;sbit P1_ 仁P1A1;sbit P1_2=P1A2;/*/ Init 初始化代碼/ 設(shè)定 50ms 中斷一次
5、,注:在 Fosc=6M 情況下*void Init(void)Date.Year=10;Date.Month=12;Date.Days=25;Time.Hour=12;Time.Min=0;Time.Sec=0;TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256;TR0=1;ET0=1;EA=1;*時(shí)子* void delay(unsigned int i)char j;for(i; i 0; i-)for(j = 200; j 0; j-);/*/ 主程序*main()Init(); /初始化for(;)if(DisPlay_Back!=
6、Flash_flag) / 是否顯示?DisPlay_Back=Flash_flag;/顯示過后要半秒后再顯示ChangeToDispCode();/轉(zhuǎn)化時(shí)間為可顯示代碼if(Flash_flag)/更新雙點(diǎn)閃爍DispBuf2=DispBuf2|0x10;DispBuf4=DispBuf4|0x20; elseDispBuf2=DispBuf2&0xef;DispBuf4=DispBuf4&0xdf; ;if(Flash_flag & point=1)DispBuf0=DispBuf0|0xff;DispBuf1=DispBuf1|0xff;elseDispBuf0=DispBuf0&0xf
7、f;DispBuf1=DispBuf1&0xff;if(Flash_flag & point=2)DispBuf2=DispBuf2|0xff;DispBuf3=DispBuf3|0xff;elseDispBuf2=DispBuf2&0xff;DispBuf3=DispBuf3&0xff;if(Flash_flag & point=3)DispBuf4=DispBuf4|0xff;DispBuf5=DispBuf5|0xff;elseDispBuf4=DispBuf4&0xff;DispBuf5=DispBuf5&0xff;/雙點(diǎn)熄滅/點(diǎn)亮雙點(diǎn)/更新小時(shí)/小時(shí)熄滅/小時(shí)點(diǎn)亮/更新分鐘/分鐘熄滅
8、/分鐘點(diǎn)亮/更新秒鐘/秒鐘熄滅/秒鐘點(diǎn)亮if(P1&0x07)!=0x7)/按鍵處理模塊模塊DisPlayBuf();/ 顯示delay(250);if(P1&0x07)!=0x7)if(P1_2=0)point=(point+1)%5;else if (P1_1=0)switch(point) case 0:Millisecond.Minite=0;Millisecond.Second=0;Millisecond.MilliSec=0;SetMillisecond+; runSec(); break;case 1:Time.Hour=( Time.Hour+1)%24; break;case
9、 2:Time.Min=( Time.Min+1)%60; break;case 3:;Time.Sec=( Time.Sec+1)%60; break;else if (P1_0=0)switch(point)case 0:ChangeToDispCode1();Disdate2=Disdate2&0xef;/點(diǎn)亮雙點(diǎn)Disdate4=Disdate4&0xdf;displaydate();delay(2000);break;case 1:Time.Hour=( Time.Hour+24-1)%24; break;case 2:Time.Min=( Time.Min+60-1)%60; br
10、eak;case 3:Time.Sec=( Time.Sec+60-1)%60; break;case 4:changedate();break;makedays();/*/ 把時(shí)間顯示緩沖區(qū)的內(nèi)容發(fā)到 74HC164/* void DisPlayBuf(void) unsigned char i; for(i=0;i6;i+) /等待發(fā)送完畢/把發(fā)送完標(biāo)志清掉以備下次再用SBUF=DispBufi; while(TI=0); TI=0;/* / 把日期顯示緩沖區(qū)的內(nèi)容發(fā)到 74HC164/* void displaydate(void) unsigned char i; for(i=0;i6
11、;i+) SBUF=Disdatei;while(TI=0); / 等待發(fā)送完畢TI=0;/把發(fā)送完標(biāo)志清掉以備下次再用;/*/ 把秒表技術(shù)顯示緩沖區(qū)的內(nèi)容發(fā)到 74HC164*void displaySec(void)unsigned char i; for(i=0;i=100)Millisecond.MilliSec=0;Millisecond.Second+;if(Millisecond.Second=60) Millisecond.Second=0;Millisecond.Minite+;if(Millisecond.Minite=60)Millisecond.Minite=0;T0_
12、Int_Times+; if(T0_Int_Times=50) Flash_flag =1;Flash_flag1 =1;else/中斷次數(shù)加/每半秒更新閃爍標(biāo)志Flash_flag =0;Flash_flag1 =0;/如果中斷 10次為 1 秒的時(shí)間開始更新時(shí)、分、秒;if(T0_Int_Times=100)T0_Int_Times=0;Time.Sec+;if(Time.Sec=60)Time.Sec=0;Time.Min+; if(Time.Min=60) Time.Min=0;Time.Hour=(Time.Hour+1)%24; if(Time.Hour=24)Time.Hour=
13、0;Date.Days+;if( Date.Days Daymount)Date.Days=1;Date.Month+;if(Date.Month12)Date.Month=1;Date.Year+;/*/*調(diào)節(jié)日期 */* void changedate(void)while(1)if(DisPlay_Back1!=Flash_flag1) / 是否顯示?DisPlay_Back1=Flash_flag1; / 顯示過后要半秒后再顯示 ChangeToDispCode1(); / 轉(zhuǎn)化時(shí)間為可顯示代碼 if(Flash_flag1) / 更新雙點(diǎn)閃爍 Disdate2=Disdate2|0x
14、10; /雙點(diǎn)熄滅Disdate4=Disdate4|0x20;elseDisdate2=Disdate2&0xef;/ 點(diǎn)亮雙點(diǎn)Disdate4=Disdate4&0xdf;if(Flash_flag1& point1=1)Disdate0=Disdate0|0xff;Disdate1=Disdate1|0xff;elseDisdate0=Disdate0&0xff;Disdate1=Disdate1&0xff; ;if(Flash_flag1 & point1=2)Disdate2=Disdate2|0xff;Disdate3=Disdate3|0xff;elseDisdate2=Disd
15、ate2&0xff;Disdate3=Disdate3&0xff; ;if(Flash_flag1 & point1=3)Disdate4=Disdate4|0xff;Disdate5=Disdate5|0xff;elseDisdate4=Disdate4&0xff;Disdate5=Disdate5&0xff; ;displaydate();if(P1&0x07)!=0x7)delay(250);if(P1&0x07)!=0x7)if(P1_2=0)point1=(point1+1)%5;else if (P1_1=0)/更新年/年熄滅/年點(diǎn)亮/更新月/月熄滅/月點(diǎn)亮/更新天/天熄滅/天點(diǎn)亮
16、/*按鍵處理模塊 *switch(point1)case 1:Date.Year+; break;case 2:Date.Month+;if( Date.Month=13)Date.Month=1;break;case 3:makedays();Date.Days+; if(Date.DaysDaymount) Date.Days=1;break;else if (P1_0=0)switch(point1)case 1:Date.Year-; break;case 2:Date.Month-;if( Date.Month=0)Date.Month=12;break;case 3:makeday
17、s();Date.Days-; if(Date.Days=0) Date.Days=Daymount;break;if(point1=4)point1=0;break;*/*調(diào)日期加時(shí)時(shí)確定天數(shù) */* void makedays()switch (Date.Month)case 4:case 6:case 9:case 11:Daymount=30; break;case 2:if(Date.Year%4=0)Daymount=29;elseDaymount=28;break;default: Daymount=31;break;void runSec()while(1)if(DisPlay_Back!=Flash_flag) / 是否顯示?DisPlay_Back=Flash_flag; /顯示過后要半秒后再顯示ChangeToDispCode2(); / 轉(zhuǎn)化時(shí)間為可顯示代碼 if(Flash_flag)/更新雙點(diǎn)閃爍DisSec2=DisSec2|0x10; / 雙點(diǎn)熄滅 DisSec4=DisSec4|0x20;elseDisSec2=DisSec2&0xef; /點(diǎn)亮雙點(diǎn) DisSec4=DisSec4&0xdf; displaySec();if(P1&0x07)!=0x7)/ 按鍵處理模塊模塊delay(250); if(P1&0x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 場(chǎng)平土石方施工方案
- TSIA 044-2024 軟件企業(yè)高質(zhì)量發(fā)展評(píng)估標(biāo)準(zhǔn)
- 經(jīng)濟(jì)責(zé)任審計(jì)報(bào)告
- 2025年度高校畢業(yè)生就業(yè)實(shí)習(xí)保障協(xié)議書
- 2025年度馬術(shù)俱樂部項(xiàng)目合作協(xié)議書-馬術(shù)俱樂部青少年馬術(shù)俱樂部合作約定
- 二零二五年度政府辦公樓無償租用合同書
- 大連市2025年度租賃房屋押金管理合同
- 二零二五年度智慧城市建設(shè)項(xiàng)目多人合伙股東協(xié)議書
- 二零二五年度木材銷售代理服務(wù)合同樣本
- 2025年度湖南省勞動(dòng)合同電子檔案管理規(guī)范
- 勞務(wù)派遣投標(biāo)方案(交通協(xié)管員外包項(xiàng)目)(技術(shù)方案)
- 金庸人物課件
- 2024年普通高等學(xué)校招生全國(guó)統(tǒng)一考試·新課標(biāo)卷(化學(xué))附試卷分析
- 人教版五年級(jí)下冊(cè)數(shù)學(xué)第2單元測(cè)試題帶答案
- 再生資源門店加盟協(xié)議書
- DB62-T 3268-2024 人民防空工程平戰(zhàn)功能轉(zhuǎn)換技術(shù)標(biāo)準(zhǔn)
- 天車工技能競(jìng)賽理論考試題庫(kù)500題(含答案)
- 療愈珠寶的科學(xué)與藝術(shù)
- 新能源汽車車位租賃合同
- 《人工智能導(dǎo)論》(第2版)高職全套教學(xué)課件
- 39 《出師表》對(duì)比閱讀-2024-2025中考語文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
評(píng)論
0/150
提交評(píng)論