版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、/ 給力者單片機(jī)開發(fā)學(xué)習(xí)系統(tǒng),開發(fā)學(xué)習(xí)都給力! / 學(xué)習(xí)51單片機(jī),其實可以很簡單 / 萬年歷程序 / 日期:2015年06月18日 /#include /調(diào)用51單片機(jī)的頭文件/-/1602液晶相關(guān)I/O設(shè)置sbit E=P23; /1602液晶的E腳接在P2.3口上sbit RW=P24; /1602液晶的RW腳接在P2.4口上sbit RS=P25; /1602液晶的RS腳接在P2.5口上/-unsigned char i;/-/1602液晶寄存器設(shè)置unsigned int second=0; /設(shè)置16位的unsigend int型寄存器用來暫存1602要顯示的秒數(shù) unsigned
2、 int minute=0; /設(shè)置16位的unsigend int型寄存器用來暫存1602要顯示的分鐘數(shù)unsigned int hour=0; /設(shè)置16位的unsigend int型寄存器用來暫存1602要顯示的小時數(shù)unsigned int day=1; /設(shè)置16位的unsigend int型寄存器用來暫存1602要顯示的日期unsigned int month=1; /設(shè)置16位的unsigend int型寄存器用來暫存1602要顯示的月份unsigned int year=0; /設(shè)置16位的unsigend int型寄存器用來暫存1602要顯示的年份unsigned int x
3、=0;unsigned int y=0;/-/-/8獨(dú)立按鍵相關(guān)I/O設(shè)置sbit P1key=P10; /按鍵P1接在P2.0口上sbit P2key=P11; /按鍵P2接在P2.1口上sbit P3key=P12; /按鍵P3接在P2.2口上sbit P4key=P13; /按鍵P4接在P2.3口上sbit P5key=P14; /按鍵P5接在P2.4口上sbit P6key=P15; /按鍵P6接在P2.5口上sbit P7key=P16; /按鍵P7接在P2.6口上sbit P8key=P17; /按鍵P8接在P2.7口上/-/-/按鍵部分用寄存器設(shè)置unsigned char KE
4、Ybuf; /設(shè)置8位的寄存器用來暫存按鍵鍵值數(shù)據(jù)unsigned char KEYcon;bit KEYbit;bit enterbit;/-#define RIGHT P10;#define LEFT P11;#define UP P12;#define DOWN P13;#define ENTER P14;#define ESC P15;#define REST P16;/-/名稱:定時器0中斷服務(wù)程序/適用:給力者GL9單片機(jī)開發(fā)學(xué)習(xí)系統(tǒng)/公司:/網(wǎng)址:/日期:2015年06月18日/-void Timer0(void) interrupt 1 /定時25000微秒 TL0=0xFF;
5、 /重新給TL0賦初值 TH0=0x4B; /重新給TH0賦初值 /*此處用戶自行添加定時器T0中斷處理程序*if(+i39) /對中斷計次,記到40次后,剛好1秒鐘i=0; /對計次用寄存器清零,以被下一個計次循環(huán)/*給1602顯示寄存器賦值(0-9999)*if(+second59) second=0; /秒60進(jìn)制 if(+minute59) minute=0; /分鐘60進(jìn)制 if(+hour23) hour=0; /小時24進(jìn)制if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)&(+day31)|(month=4
6、| month=6|month=9|month=11)&(day30)|(year%4!=0)&(month=2)&(day28)|(year%4=0)&(month=2)&(day29) /月份對應(yīng)相應(yīng)天數(shù) day=1; if(+month12) month=1; /月份12進(jìn)制 if(+year9999) year=0; /* /*/-/名稱:1602液晶用延時函數(shù)/適用:給力者GL9單片機(jī)開發(fā)學(xué)習(xí)系統(tǒng)/公司:/網(wǎng)址:/日期:2015年06月18日/-void Delay1602(unsigned int t) unsigned int k; /定義一個16位寄存器用來做延時用 for(k
7、=0;k=10000)year=year-10000; /年滿10000,減10000 if(x=5); if(x=6)month+; if(month12)month=month-12; /月份滿12,減12 if(x=8)day=day+10; if(x=9)day+; if(month=1|month=3|month=5|month=7|month=8|month=10|month=12) / 31天的月份,滿31天后為1日 if(day31)day=1; else if(month=4|month=6|month=9|month=11) / 30天的月份,滿30天后為1日 if(day
8、30)day=1; else if(month=2&year%4=0) / 閏年2月 29天,滿29天后為1日 if(day29)day=1; else if(month=2&year%4!=0) /閏年2月 28天,滿28天后為1日 if(day28)day=1; /*/名稱:日期減法執(zhí)行程序/適用:給力者GL9單片機(jī)開發(fā)學(xué)習(xí)系統(tǒng)/公司:/網(wǎng)址:/日期:2015年06月18日/*void date_subtraction(void) if(y=0) /日期行顯示 if(year1000&x=0|year100&x=1|year1&month=12&x=6)month-; /月份減一 if(m
9、onth=1|month=3|month=5|month=7|month=8|month=10|month=12)&x=8) / 當(dāng)31天的月份,日期十位減一鍵按下 if(day1&day10&day1&day1&day10&day1&day=1&day10&day1&day=1&day10&day1&day=24)hour=0; /滿24小時,時間為0 if(x=3)minute=minute+10; if(x=4)minute+; if(minute=60)minute=minute-60; /滿60分鐘,分鐘數(shù)為0 if(x=6)second=second+10; if(x=7)seco
10、nd+; if(second=60)second=second-60; /滿60秒,秒數(shù)為0 /*/名稱:時間減法執(zhí)行程序/適用:給力者GL9單片機(jī)開發(fā)學(xué)習(xí)系統(tǒng)/公司:/網(wǎng)址:/日期:2015年06月18日/*void time_subtraction(void) if(y=1) /時間行顯示 if(x=0) / 顯示地址為(0,1) if(hour4&hour=10&hour=24)hour=hour-10; /當(dāng)小時數(shù)為為10到24,小時數(shù)十位減1 if(x=1) if(hour=0)hour=24; hour-; /當(dāng)小時數(shù)為0,借位24小時 if(x=3) if(minute=10&m
11、inute60)minute=minute-10; /分鐘數(shù)大于等于10小于60,分鐘數(shù)十位減1 if(x=4) if(minute=0)minute=60; minute-; /當(dāng)分鐘數(shù)為0時,借位60分鐘 if(x=6) if(second=10&second50) /消除抖動參數(shù),越大消抖效果越好,但是按鍵越不靈敏 keycon=0;keybit=1;elsekeycon=0; /* switch(k) case 1: /UP按鍵按下 Delay1602(50000); if(keybit=1)keybit=0; if(enter_bit=0) /確認(rèn)件從未按下 x+; if(x9)x=
12、0; else if(enter_bit=1) /確認(rèn)件曾經(jīng)按下 date_plus(); time_plus(); break;case 2: /DOWN按鍵按下 Delay1602(50000); if(keybit=1)keybit=0; if(enter_bit=0) /確認(rèn)件從未按下 if(x1)x=10; x-; else if(enter_bit=1) /確認(rèn)件曾經(jīng)按下 date_subtraction(); time_subtraction(); break;case 3: /RIGHT按鍵按下 Delay1602(50000); if(keybit=1)keybit=0; if(enter_bit=0)y=0; break;case 4: /LEFT按鍵按下 Delay1602(50000); if(keybit=1)keybit=0; if(enter_bit=0) y
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語外貿(mào)大學(xué)南國商學(xué)院《交際口語(Ⅲ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東體育職業(yè)技術(shù)學(xué)院《勞動經(jīng)濟(jì)學(xué)(雙語)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東司法警官職業(yè)學(xué)院《生化分離與分析技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東食品藥品職業(yè)學(xué)院《管理學(xué)概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東省外語藝術(shù)職業(yè)學(xué)院《環(huán)境流體力學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東輕工職業(yè)技術(shù)學(xué)院《環(huán)境影響評價A》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東農(nóng)工商職業(yè)技術(shù)學(xué)院《創(chuàng)業(yè)文案寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東梅州職業(yè)技術(shù)學(xué)院《新聞傳播調(diào)查方法與寫作》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名健康職業(yè)學(xué)院《全網(wǎng)規(guī)劃與部署》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名農(nóng)林科技職業(yè)學(xué)院《先進(jìn)材料科技進(jìn)展》2023-2024學(xué)年第一學(xué)期期末試卷
- 2023非預(yù)應(yīng)力鋼筒混凝土管
- 2024年3月八省八校T8第二次聯(lián)考語文試題及答案
- 程序設(shè)計基礎(chǔ)-C智慧樹知到期末考試答案章節(jié)答案2024年四川師范大學(xué)
- 駕駛員三年內(nèi)工作總結(jié)
- 廣東省深圳市羅湖區(qū)2023-2024學(xué)年二年級下學(xué)期期末考試數(shù)學(xué)試題
- 2023年第八屆“鵬程杯”六年級語文邀請賽試卷(初賽)
- 2023-2024學(xué)年成都市金牛區(qū)八年級上英語期末考試題(含答案)
- 更年期婦女健康管理專家共識1
- 青年你為什么要入團(tuán)-團(tuán)員教育主題班會-熱點主題班會課件
- MOOC 隧道工程-中南大學(xué) 中國大學(xué)慕課答案
- 司法鑒定工作應(yīng)急預(yù)案
評論
0/150
提交評論