




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、河南理工大學(xué)單片機(jī)應(yīng)用與仿真訓(xùn)練設(shè)計(jì)報(bào)告四路定時(shí)控制器姓 名: 范鵬超 學(xué) 號(hào): 311108001309 專業(yè)班級(jí): 電儀12- 2班 指導(dǎo)老師: 荊鵬輝 所在學(xué)院:電氣工程與自動(dòng)化學(xué)院 2015年1月13日 目錄目錄1摘要21 概述31.1 單片機(jī)的電子技術(shù)特征31.2 四路定時(shí)控制器基本功能31.3 系統(tǒng)原理31.4 實(shí)際應(yīng)用32 系統(tǒng)總體方案及硬件設(shè)計(jì)32.1 系統(tǒng)總體設(shè)計(jì)框架結(jié)構(gòu)32.2系統(tǒng)硬件電路42.3 系統(tǒng)硬件總電路63軟件設(shè)計(jì)64 Proteus軟件仿真75課程設(shè)計(jì)體會(huì)7參考文獻(xiàn):8附1:源程序代碼9摘要 近年來(lái),科學(xué)技術(shù)發(fā)展很快,單片機(jī)的使用也越來(lái)越多。我們?cè)诖髮W(xué)也學(xué)到了很
2、多關(guān)于單片機(jī)的知識(shí),也做了很多單片機(jī)實(shí)驗(yàn)。單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。(single-chip microcomputer),是集cpu,ram,rom,定時(shí),計(jì)數(shù)和多種接接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)品和工業(yè)自動(dòng)化上。而c語(yǔ)言已成為當(dāng)前舉世公認(rèn)的高效簡(jiǎn)潔又貼近硬件的編程語(yǔ)言之一。c語(yǔ)言現(xiàn)已成為專業(yè)化的單片機(jī)上的實(shí)用高級(jí)語(yǔ)言。而且由于開(kāi)發(fā)速度、軟件質(zhì)量結(jié)構(gòu)化、可維護(hù)性方面的原因,使c語(yǔ)言漸漸有取代匯編的趨勢(shì)。這次我們做四路定時(shí)控制器作為微機(jī)原理與單片機(jī)的課程設(shè)計(jì)。 四路定時(shí)控制器主要應(yīng)用于定時(shí)控制四個(gè)回路的電源通斷。四路定時(shí)器的設(shè)計(jì)背景是單片機(jī)的電子技術(shù)特征以
3、及應(yīng)用。本系統(tǒng)采用的是STC10F08XE為中心器件來(lái)設(shè)計(jì)四路定時(shí)器的。系統(tǒng)使用性強(qiáng),操作簡(jiǎn)單,擴(kuò)展性強(qiáng)。設(shè)計(jì)主要包括硬件的設(shè)計(jì)和軟件的設(shè)計(jì)。一個(gè)完整的四路定時(shí)器相當(dāng)于一個(gè)簡(jiǎn)單的單片機(jī)系統(tǒng),該系統(tǒng)由四路定時(shí)器設(shè)置電路,單片機(jī),顯示電路等構(gòu)成。單片機(jī)是集成IC芯片,只需要根據(jù)實(shí)際設(shè)計(jì)要求選型。其他部分都需要根據(jù)應(yīng)用要求和性能指標(biāo)自行設(shè)計(jì)。設(shè)計(jì)時(shí),首先設(shè)置時(shí)間和線路,然后開(kāi)始計(jì)時(shí),在達(dá)到設(shè)定時(shí)間的時(shí)候指示燈閃爍。 該四路定時(shí)控制器實(shí)現(xiàn)的功能是以當(dāng)前時(shí)間為基準(zhǔn),以24小時(shí)為周期,可以任意設(shè)定哪個(gè)回路于某時(shí)刻開(kāi),到某時(shí)刻關(guān)。如可以設(shè)置第一個(gè)回路在8:30-11:30開(kāi),14:30-18:00開(kāi),其他時(shí)
4、間段為關(guān)。能夠通過(guò)按鍵任意設(shè)置某回路某時(shí)間段的開(kāi)關(guān)狀態(tài),可以利用數(shù)碼管直接顯示。整個(gè)系統(tǒng)通過(guò)軟硬件的協(xié)調(diào)工作,具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉、操作安全等諸多優(yōu)點(diǎn),具有廣闊的市場(chǎng)前景,尤其在智能化家用電器和辦公自動(dòng)化設(shè)備等領(lǐng)域。1 概述1.1 單片機(jī)的電子技術(shù)特征單片機(jī)是將CPU、RAMROM定時(shí)器/計(jì)數(shù)器以及輸入輸出(I/O)接口等計(jì)算機(jī)的主要部件集成在一塊的集成電路芯片,作為微機(jī)系統(tǒng)它還可以實(shí)現(xiàn)模/數(shù)轉(zhuǎn)換、脈寬調(diào)制、計(jì)數(shù)器捕獲/比較邏輯、高速I(mǎi)/O口和WDT各種控制功能。1.2 四路定時(shí)控制器基本功能 四路定時(shí)控制器是指應(yīng)用定時(shí)器的功能控制四個(gè)回路的通斷狀況,同時(shí)可以用
5、按鍵來(lái)設(shè)置每個(gè)通路的通斷以及通斷的時(shí)間和周期,利用定時(shí)器來(lái)控制單片機(jī)IO口的高低電平來(lái)間接控制繼電器的通斷。1.3 系統(tǒng)原理采用STC10F08XE單片機(jī)為控制核心,基于STC10F08XE單片機(jī)所具備的的計(jì)數(shù)功能,達(dá)到實(shí)時(shí)時(shí)鐘的制作,并通過(guò)四位共陰極數(shù)碼管將時(shí)間直觀的顯示出來(lái)??梢岳冒存I輸入功能對(duì)顯示時(shí)間進(jìn)行調(diào)整。其共設(shè)置了四個(gè)定時(shí)通道,每個(gè)定時(shí)通道都是相互獨(dú)立的。四個(gè)定時(shí)通道可以分別設(shè)置多個(gè)時(shí)間段的開(kāi)關(guān)狀態(tài),每個(gè)通道都可以通過(guò)I/O口輸出信號(hào)對(duì)電磁繼電器進(jìn)行控制,通過(guò)控制電磁繼電器的通斷進(jìn)一步控制繼電器所連接的其他電路的開(kāi)關(guān)狀態(tài)。充分利用了弱電控制強(qiáng)電的效果。1.4 實(shí)際應(yīng)用被廣泛地應(yīng)用
6、在各種領(lǐng)域。例如,用來(lái)作家用電器的定時(shí)控制器;在辦公室中用作磁盤(pán)驅(qū)動(dòng)、打印機(jī)、復(fù)印機(jī)、電話的控制;它還可以作為電子秤、收款機(jī)、倉(cāng)儲(chǔ)安全檢測(cè)系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)等冷凍保鮮系統(tǒng)等的專用系統(tǒng)的控制器;在工業(yè)中,像工業(yè)過(guò)程控制、過(guò)程監(jiān)制以及機(jī)電一體化等控制系統(tǒng);它還可以構(gòu)成一些智能儀表與集成智能傳感器傳統(tǒng)的控制器等。2 系統(tǒng)總體方案及硬件設(shè)計(jì)2.1 系統(tǒng)總體設(shè)計(jì)框架結(jié)構(gòu)數(shù)碼管電路按鍵電路繼電器電路圖1 系統(tǒng)總體設(shè)計(jì)框架四路定時(shí)控制系統(tǒng)總體設(shè)計(jì)框架結(jié)構(gòu)如圖1所示。2.2系統(tǒng)硬件電路1) 時(shí)鐘電路設(shè)計(jì)圖2 時(shí)鐘的電路時(shí)鐘電路由振蕩器及定時(shí)發(fā)生器和地址鎖存允許信號(hào)ALE組成,如圖2所示。所用的時(shí)鐘電路用的是1
7、1.0592Mhz的晶振,它的振蕩周期約為0.0833µs,時(shí)鐘周期是1/6µs,機(jī)器周期是1µs2)按鍵電路設(shè)計(jì)圖3 按鍵電路原理圖采用2x3鍵盤(pán)掃描,如圖3所示,使用每一個(gè)按鍵。3)數(shù)碼管顯示電路 圖4 數(shù)碼管顯示電路 顯示塊是由若干發(fā)光二極管組合而成的,一般的“8”字型顯示塊由a、b、c、d、e、f、g、h8個(gè)發(fā)光二極管組成,GND接1時(shí)均不亮,字位輸出口和字形輸出口采用高電壓驅(qū)動(dòng),如圖4所示。4)繼電器電路1. 繼電器的基本工作原理:繼電器(是一種電控制器件,是當(dāng)輸入量(激勵(lì)量)的變化達(dá)到規(guī)定要求時(shí),在電氣輸出電路中使被控量發(fā)生預(yù)定的階躍變化的一種電器。它
8、具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路)之間的互動(dòng)關(guān)系。通常應(yīng)用于自動(dòng)化的控制電路中,它實(shí)際上是用小電流去控制大電流運(yùn)作的一種“自動(dòng)開(kāi)關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)等作用。 圖5 繼電器工作原理圖本次試驗(yàn)使用了電磁繼電器,原理圖如圖5所示,電磁繼電器一般由鐵芯、線圈、銜鐵、觸點(diǎn)簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會(huì)流過(guò)一定的電流,從而生生電磁效應(yīng),銜鐵就會(huì)在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動(dòng)銜鐵的動(dòng)觸點(diǎn)與靜觸點(diǎn)(常開(kāi)觸點(diǎn))吸合。當(dāng)線圈斷電后,電磁的吸力也隨之消失,銜鐵就會(huì)在彈簧的反作用力返回原來(lái)的位置,使動(dòng)觸點(diǎn)與原來(lái)的靜觸點(diǎn)(常閉觸點(diǎn)
9、)釋放。這樣吸合、釋放,從而達(dá)到了在電路中的導(dǎo)通、切斷的目的。對(duì)于繼電器的“常開(kāi)、常閉”觸點(diǎn),可以這樣來(lái)區(qū)分:繼電器線圈未通電時(shí)處于斷開(kāi)狀態(tài)的靜觸點(diǎn),稱為“常開(kāi)觸點(diǎn)”;處于接通狀態(tài)的靜觸點(diǎn)稱為“常閉觸點(diǎn)”。繼電器一般有兩股電路,為低壓控制電路和高壓工作電路。2.3 系統(tǒng)硬件總電路圖6 系統(tǒng)硬件仿真電路圖3軟件設(shè)計(jì)圖7 系統(tǒng)軟件設(shè)計(jì)的步驟4 Proteus軟件仿真圖8 Proteus軟件仿真5課程設(shè)計(jì)體會(huì) 本次課程設(shè)計(jì)基本結(jié)束,回想這一過(guò)程,真是困難重重,但是也學(xué)到很多。首先是實(shí)驗(yàn)程序,剛開(kāi)始一片茫然,不知道該如何開(kāi)始。在網(wǎng)上搜到部分資料后,經(jīng)過(guò)和宿舍同學(xué)探討學(xué)習(xí)后開(kāi)始有點(diǎn)眉目,最后參考部分材料
10、后得出了最終程序。其次,在焊接電路板時(shí),出現(xiàn)了元器件焊反的情況,但在同學(xué)的幫助下成功了。最后,在Protues仿真實(shí)驗(yàn)中有出現(xiàn)數(shù)碼管顯示數(shù)字成零不斷跳動(dòng),而且LED燈自動(dòng)跳變,相當(dāng)于是中斷不停執(zhí)行、判斷鍵值,特別不穩(wěn)定的情況。但經(jīng)過(guò)大量的修正最終正常。 雖然這次實(shí)驗(yàn)沒(méi)有創(chuàng)新,但是也是自己動(dòng)手查資料,修改程序,達(dá)到了實(shí)驗(yàn)要求。通過(guò)本次課程設(shè)計(jì),學(xué)到了很多關(guān)于單片機(jī)的知識(shí),我也懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。有時(shí),只有經(jīng)過(guò)自己親手試驗(yàn),才能更深層次的懂
11、得實(shí)驗(yàn)原理和每部分電路的功能。我也很感謝教育過(guò)我的老師和周圍同學(xué),在遇到困難的時(shí)熱情的幫助我度過(guò)難關(guān),并讓我學(xué)到了很多。 此次課程設(shè)計(jì),我學(xué)到了很多,對(duì)以后的學(xué)習(xí)生活都有很大幫助。今后我也會(huì)更加注重理論與實(shí)際相結(jié)合,多動(dòng)手,多思考,全面提高自己的能力。參考文獻(xiàn):1余發(fā)山,王福忠,楊凌霄,王莉。微機(jī)原理與單片機(jī)接口技術(shù).北京:煤炭工業(yè)出版社。2013.8.2 左金生.電子與模擬電子技術(shù)M.北京:電子工業(yè)出版社.2004:105-131.3 尹勇.單片機(jī)開(kāi)發(fā)環(huán)境Vision2的開(kāi)發(fā)指南M. 北京:北京航空航天大學(xué)出版社,2004:173-199.4 張俊謨.單片機(jī)中級(jí)教程-原理與應(yīng)用. 北京:北京
12、航空航天大學(xué),2006.5 霍孟友.單片機(jī)原理與應(yīng)用.北京:機(jī)械工業(yè)出版社,2003.附1:源程序代碼#include<reg52.h>#include<intrins.h>#define uint unsigned int/*0216-1*/#define uchar unsigned char /*028-1*/#define N 46080/*N=50000*f0/12,定時(shí)50ms*/#define M 20/* 定時(shí)M*0.05s */uint shi,fen;#define num3(X2) (X2)/10)#define num2(X2) (X2)%10)
13、#define num1(X1) (X1)/10)#define num0(X1) (X1)%10)sbit W1=P03;sbit W2=P02;sbit W3=P01;sbit W4=P00;sbit led=P35;sbit H1=P36;sbit H2=P37;sbit huiluA=P20;sbit huiluB=P21;sbit huiluC=P22;sbit huiluD=P23;sfr P1M1=0x91;/和后面的main函數(shù)中的 sfr P1M0=0x92;/P1M1 P1M0合在一起增加亮度sfr P2M1=0x95;sfr P2M0=0x96;uint num/*T0_
14、timer*/,num0/*T0_timer*/,num1,key/*matrixkeyscan*/; /定義全局變量uchar k2=0,k3=0,k5=1,k6=0;/按鍵計(jì)數(shù)uchar A0_shi=12,A0_fen=30,A1_shi=13,A1_fen=30,B0_shi=12,B0_fen=30,B1_shi=13,B1_fen=30,C0_shi=12,C0_fen=30,C1_shi=13,C1_fen=30,D0_shi=12,D0_fen=30,D1_shi=13,D1_fen=30;/繼電器定時(shí)起點(diǎn)、終點(diǎn)uchar code duanxuan=0x3f,/*顯示0*/0
15、x06,/*顯示1*/0x5b,/*顯示2*/0x4f,/*顯示3*/0x66,/*顯示4*/0x6d,/*顯示5*/0x7d,/*顯示6*/0x07,/*顯示7*/0x7f,/*顯示8*/0x6f,/*顯示9*/0x77,/*顯示A*/0x7c,/*顯示B*/0x39,/*顯示C*/0x5e,/*顯示D*/0x79,/*顯示E*/0x71/*顯示F*/;void delay_ms(uint xms) /*延時(shí)子函數(shù)程序*/ uint i,j;for(i=xms;i>0;i-) for(j=250;j>0;j-);/*該層循環(huán)延時(shí)約1ms*/*/typedef unsigned c
16、har BYTE;typedef unsigned int WORD;/*Declare SFR associated with the IAP*/sfr IAP_DATA= 0xC2;/Flash data registersfr IAP_ADDRH= 0xC3;/Flash address HIGHsfr IAP_ADDRL= 0xC4;/Flash address LOWsfr IAP_CMD= 0xC5;/Flash command registersfr IAP_TRIG= 0xC6;/Flash commandtriggersfr IAP_CONTR= 0xC7;/Flash co
17、ntrol register/*Define ISP/IAP/EEPROM command*/#define CMD_IDLE0/Stand-By#define CMD_READ1/Byte-Read#define CMD_PROGRAM2/Byte-Program#define CMD_ERASE3/Sector-Erase/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/#define ENABLE_IAP0x80/SYSCLK<30MHz/#define ENABLE_IAP0x81/SYSCLK<24MHz/#de
18、fine ENABLE_IAP0x82/SYSCLK<20MHz #define ENABLE_IAP0x83/SYSCLK<12MHz/#define ENABLE_IAP0x84/SYSCLK< 6MHz/#define ENABLE_IAP0x85/SYSCLK< 3MHz/#define ENABLE_IAP0x86/SYSCLK< 2MHz/#define ENABLE_IAP0x87/SYSCLK< 1MHz/*Start address for STC10F08XE series EEPROM */#define IAP_ADDRESS0x00
19、00/*-Disable ISP/IAP/EEPROM functionMake MCU in a safe state-*/void IapIdle()IAP_CMD= 0;/Clear command registerIAP_TRIG= 0;/Clear commandtriggerIAP_CONTR= 0;/Close IAP functionIAP_ADDRH= 0x80;/Data ptr point to non-EEPROM areaIAP_ADDRL= 0;/Clear IAP address to prevent misuse/*-Read one byte from ISP
20、/IAP/EEPROM areaInput:addr (ISP/IAP/EEPROM address)Output: Flash data-*/BYTE IapReadByte(WORD addr)BYTE dat;/Data bufferIAP_CONTR = ENABLE_IAP;/Open IAP function,and set wait timeIAP_CMD= CMD_READ;/Set ISP/IAP/EEPROM READ commandIAP_ADDRL = addr;/Set ISP/IAP/EEPROM address lowIAP_ADDRH = addr>>
21、;8;/Set ISP/IAP/EEPROM address highIAP_TRIG = 0x5a;/Send trigger command1(0x5a)IAP_TRIG = 0xa5;/Send trigger command2(0xa5)_nop_();/MCU will hold here until ISP/IAP/EEPROM/operation completedat = IAP_DATA;/Read ISP/IAP/EEPROM dataIapIdle();/close ISP/IAP/EEPROM functionreturn dat;/Return Flash data/
22、*-Programe one byte to ISP/IAP/EEPROM areaInput: addr(ISP/IAP/EEPROM address)dat(ISP/IAP/EEPROM data)Output:-*/void IapProgramByte(WORD addr, BYTE dat)IAP_CONTR = ENABLE_IAP;/Open IAP function,and set wait timeIAP_CMD= CMD_PROGRAM;/Set ISP/IAP/EEPROM PROGRAM commandIAP_ADDRL = addr;/Set ISP/IAP/EEPR
23、OM address lowIAP_ADDRH = addr>>8;/Set ISP/IAP/EEPROM address highIAP_DATA = dat;/Write ISP/IAP/EEPROM dataIAP_TRIG = 0x5a;/Send trigger command1(0x5a)IAP_TRIG = 0xa5;/Send trigger command2(0xa5)_nop_();/MCU will hold here until ISP/IAP/EEPROM/operation completeIapIdle();/*-Erase one sector ar
24、eaInput: addr (ISP/IAP/EEPROM address)Output:-*/void IapEraseSector(WORD addr)IAP_CONTR = ENABLE_IAP;/Open IAP function,and set wait timeIAP_CMD= CMD_ERASE;/Set ISP/IAP/EEPROM ERASE commandIAP_ADDRL = addr;/Set ISP/IAP/EEPROM address lowIAP_ADDRH = addr>>8;/Set ISP/IAP/EEPROM address highIAP_T
25、RIG = 0x5a;/Send trigger command1(0x5a)IAP_TRIG = 0xa5;/Send trigger command2(0xa5)_nop_();/MCU will hold here until ISP/IAP/EEPROM/operation completeIapIdle();/*數(shù)碼管顯示函數(shù)*/void displays(uchar X2,X1) W1=0;P1=duanxuannum0(X1);delay_ms(5);W1=1;P1=0x00;/消影 W2=0;P1=duanxuannum1(X1);delay_ms(5);W2=1;P1=0x0
26、0; W3=0;P1=duanxuannum2(X2)|0x80;delay_ms(5);W3=1;P1=0x00; W4=0;P1=duanxuannum3(X2);delay_ms(5);W4=1;P1=0x00;/*定時(shí)器初始化*/void T_initialize()/ EA=1; /開(kāi)放ALL中斷允許Enable ET0=1; /開(kāi)放T0中斷允許Enable*/ TMOD=0x11; /定時(shí)器0、1,工作方式1,僅受TCON中TR控制*/ TH0=(65536-N)/256; TL0=(65536-N)%256; ET1=1; /開(kāi)放T1中斷允許Enable*/ TH1=(65536
27、-N)/256; TL1=(65536-N)%256; TR0=1; /定時(shí)器計(jì)時(shí)開(kāi)始/*/*時(shí)鐘實(shí)時(shí)時(shí)間、定時(shí)段設(shè)置(顯示放后邊)*/void clk_weixuan()/switch(k5)case 1:switch(k2)case 0:;break;case 1:if(key=1)A0_shi+;if(A0_shi=24)A0_shi=0;/*shi=023*/ if(key=4)if(A0_shi=0)A0_shi=24;A0_shi-;/*shi=230*/break; case 2:if(key=1)A0_fen+;if(A0_fen=60)A0_fen=0;/*fen=059*/
28、 if(key=4)if(A0_fen=0)A0_fen=60;A0_fen-;/*fen=059*/break;case 3:if(key=1)A1_shi+;if(A1_shi=24)A1_shi=0;/*shi=023*/ if(key=4)if(A1_shi=0)A1_shi=24;A1_shi-;/*shi=230*/break;case 4:if(key=1)A1_fen+;if(A1_fen=60)A1_fen=0;/*fen=059*/ if(key=4)if(A1_fen=0)A1_fen=60;A1_fen-;/*fen=059*/break;case 5:IapErase
29、Sector(0x0000);IapProgramByte(0x0000,A0_shi);IapProgramByte(0x0001,A0_fen);IapProgramByte(0x0002,A1_shi);IapProgramByte(0x0003,A1_fen);k2=0;break;break;case 2:switch(k2)case 0:;break;case 1:if(key=1)B0_shi+;if(B0_shi=24)B0_shi=0;/*shi=023*/ if(key=4)if(B0_shi=0)B0_shi=24;B0_shi-;/*shi=230*/break; ca
30、se 2:if(key=1)B0_fen+;if(B0_fen=60)B0_fen=0;/*fen=059*/ if(key=4)if(B0_fen=0)B0_fen=60;B0_fen-;/*fen=590*/break;case 3:if(key=1)B1_shi+;if(B1_shi=24)B1_shi=0;/*shi=023*/ if(key=4)if(B1_shi=0)B1_shi=24;B1_shi-;/*shi=230*/break;case 4:if(key=1)B1_fen+;if(B1_fen=60)B1_fen=0;/*fen=059*/ if(key=4)if(B1_f
31、en=0)B1_fen=60;B1_fen-;/*fen=059*/break;case 5:IapEraseSector(0x0200);IapProgramByte(0x0200,B0_shi);IapProgramByte(0x0201,B0_fen);IapProgramByte(0x0202,B1_shi);IapProgramByte(0x0203,B1_fen);k2=0;break;break;case 3:switch(k2)case 0:;break;case 1:if(key=1)C0_shi+;if(C0_shi=24)C0_shi=0;/*shi=023*/ if(k
32、ey=4)if(C0_shi=0)C0_shi=24;C0_shi-;/*shi=230*/break; case 2:if(key=1)C0_fen+;if(C0_fen=60)C0_fen=0;/*fen=059*/ if(key=4)if(C0_fen=0)C0_fen=60;C0_fen-;/*fen=590*/break;case 3:if(key=1)C1_shi+;if(C1_shi=24)C1_shi=0;/*shi=023*/ if(key=4)if(C1_shi=0)C1_shi=24;C1_shi-;/*shi=230*/break;case 4:if(key=1)C1_
33、fen+;if(C1_fen=60)C1_fen=0;/*fen=059*/ if(key=4)if(C1_fen=0)C1_fen=60;C1_fen-;/*fen=059*/break;case 5:IapEraseSector(0x0400);IapProgramByte(0x0400,C0_shi);IapProgramByte(0x0401,C0_fen);IapProgramByte(0x0402,C1_shi);IapProgramByte(0x0403,C1_fen);k2=0;break;break;case 4:switch(k2)case 0:;break;case 1:
34、if(key=1)D0_shi+;if(D0_shi=24)D0_shi=0;/*shi=023*/ if(key=4)if(D0_shi=0)D0_shi=24;D0_shi-;/*shi=230*/break; case 2:if(key=1)D0_fen+;if(D0_fen=60)D0_fen=0;/*fen=059*/ if(key=4)if(D0_fen=0)D0_fen=60;D0_fen-;/*fen=590*/break;case 3:if(key=1)D1_shi+;if(D1_shi=24)D1_shi=0;/*shi=023*/ if(key=4)if(D1_shi=0
35、)D1_shi=24;D1_shi-;/*shi=230*/break;case 4:if(key=1)D1_fen+;if(D1_fen=60)D1_fen=0;/*fen=059*/ if(key=4)if(D1_fen=0)D1_fen=60;D1_fen-;/*fen=059*/break;case 5:IapEraseSector(0x0600);IapProgramByte(0x0600,D0_shi);IapProgramByte(0x0601,D0_fen);IapProgramByte(0x0602,D1_shi);IapProgramByte(0x0603,D1_fen);
36、k2=0;break;break;if(k2=0)switch(k3)case 0:TR0=1;break; case 1:if(key=1)shi+;if(shi=24)shi=0;/*shi=023*/ if(key=4)if(shi=0)shi=24;shi-;/*shi=230*/;break; case 2:if(key=1)fen+;if(fen=60)fen=0;/*fen=059*/ if(key=4)if(fen=0)fen=60;fen-;/*fen=590*/;break;/*矩陣鍵盤(pán)掃描,同時(shí)可進(jìn)行數(shù)碼管各位的+- */void matrixkeyscan()/如何確定
37、時(shí)間設(shè)定時(shí)數(shù)碼管顯示的數(shù)字是否會(huì)自動(dòng)+1 /*當(dāng)兩行H1、H2重新賦值時(shí)存在沖突,解決辦法為:H1=1時(shí)H2=0,H2=1時(shí)H1=0或者對(duì)P3口進(jìn)行整體賦值*/ uchar temp; /*掃描第一行*/ H1=0;H2=1;/掃描第一行 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài)/*判斷哪個(gè)鍵摁下*/ if(temp!=0xff)/判斷是否有鍵摁下 delay_ms(10);/延時(shí) H1=0;H2=1;/掃描第一行/重新讀取 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài) if(temp!=0xff)/消抖 switch(tem
38、p)/判斷哪個(gè)鍵摁下 case 0x7f:key=3;k3+;k3=k3%3/*k=02*/; TR0=0/*時(shí)間設(shè)定時(shí)定時(shí)器停止*/;break; case 0xbf:key=2;k3=0;k2+;if(k2=1)num1=0;TR1=1;break; case 0xdf:key=1;break; /鍵1 2 3 分別摁下clk_weixuan();while(temp!=0xff)/按鍵釋放才會(huì)跳出循環(huán) H1=0;H2=1;/掃描第一行/重新讀取 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài) /*掃描第二行*/ H2=0;H1=1;/掃描第二行 temp=P
39、0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài)/*判斷哪個(gè)鍵摁下*/ if(temp!=0xff)/判斷是否有鍵摁下 delay_ms(10);/延時(shí) H2=0;H1=1;/掃描第二行/重新讀取 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài) if(temp!=0xff)/消抖 switch(temp)/判斷哪個(gè)鍵摁下 case 0x7f:key=6;k6+;if(k6=2)k6=0;break; case 0xbf:key=5;k5+;/*1 2 3 4 */if(k5=5)k5=1;num1=0;TR1=1;/*內(nèi)次按下K5 都會(huì)顯示2s的回
40、路(A/B/C/D),故需要打開(kāi)定時(shí)器且計(jì)數(shù)清零*/break; case 0xdf:key=4;break; /鍵 4 5 6 分別摁下clk_weixuan();while(temp!=0xff)/按鍵釋放才會(huì)跳出循環(huán) H2=0;H1=1;/掃描第二行/重新讀取 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài) void displays_hui() W1=0;P1=duanxuank5+9;delay_ms(5);W1=1;P1=0x00;/消影 W2=0;P1=duanxuank5+9;delay_ms(5);W2=1;P1=0x00; W3=0;P1=du
41、anxuank5+9;delay_ms(5);W3=1;P1=0x00; W4=0;P1=duanxuank5+9;delay_ms(5);W4=1;P1=0x00;void displays_set() W1=0;P1=0x40;delay_ms(5);W1=1;P1=0x00;/消影 W2=0;P1=0x40;delay_ms(5);W2=1;P1=0x00; W3=0;P1=duanxuank5+9;delay_ms(5);W3=1;P1=0x00; W4=0;P1=duanxuank5+9;delay_ms(5);W4=1;P1=0x00;void displays_all()/先優(yōu)先
42、處理K5 K2按下時(shí)的顯示問(wèn)題,再進(jìn)行正常顯示 if(key=5) while(num1<40)displays_hui();TR1=0;/*只顯示2s的回路,然后恢復(fù)正常時(shí)鐘顯示*/ if(k2!=0)/正常調(diào)時(shí)k3!=0,此時(shí)按下K2不能調(diào)整定時(shí)的時(shí)間段if(k3=0)while(num1<40)displays_set()/*A0- 2s*/;TR1=0; switch(k5) case 1:if(k2<=2)displays(A0_shi,A0_fen);else displays(A1_shi,A1_fen);break; case 2:if(k2<=2)di
43、splays(B0_shi,B0_fen);else displays(B1_shi,B1_fen);break; case 3:if(k2<=2)displays(C0_shi,C0_fen);else displays(C1_shi,C1_fen);break; case 4:if(k2<=2)displays(D0_shi,D0_fen);else displays(D1_shi,D1_fen);break; /*只顯示2s的定時(shí)起終點(diǎn),然后恢復(fù)正常時(shí)鐘顯示,k2*/*/ if(k2=0)displays(shi,fen); /正常顯示時(shí)鐘switch(k5)case 1:h
44、uiluD=1;if(k6=0)/對(duì)K6按下的處理 if(shi*100+fen)>(A0_shi*100+A0_fen)&(shi*100+fen)<(A1_shi*100+A1_fen) huiluA=1;else huiluA=0;break; case 2:huiluA=1;if(k6=0)if(shi*100+fen)>(B0_shi*100+B0_fen)&(shi*100+fen)<(B1_shi*100+B1_fen)huiluB=0;else huiluB=1;break; case 3:huiluB=1;if(k6=0) if(shi
45、*100+fen)>(C0_shi*100+C0_fen)&(shi*100+fen)<(C1_shi*100+C1_fen) huiluC=0;else huiluC=1;break; case 4:huiluC=1;if(k6=0) if(shi*100+fen)>(D0_shi*100+D0_fen)&(shi*100+fen)<(D1_shi*100+D1_fen) huiluD=0;else huiluD=1;break; void main() P1M1=0X00; P1M0=0XFF; P2M1=0X00; P2M0=0XFF; T_ini
46、tialize(); /定時(shí)器T0、T1初始化 A0_shi=IapReadByte(0x0000);/讀取EEPROM中存儲(chǔ)的參數(shù) A0_fen=IapReadByte(0x0001); A1_shi=IapReadByte(0x0002); A1_fen=IapReadByte(0x0003); B0_shi=IapReadByte(0x0200); B0_fen=IapReadByte(0x0201); B1_shi=IapReadByte(0x0202); B1_fen=IapReadByte(0x0203); C0_shi=IapReadByte(0x0400); C0_fen=Ia
47、pReadByte(0x0401); C1_shi=IapReadByte(0x0402); C1_fen=IapReadByte(0x0403); D0_shi=IapReadByte(0x0600); D0_fen=IapReadByte(0x0601); D1_shi=IapReadByte(0x0602); D1_fen=IapReadByte(0x0603); while(1) /開(kāi)始行走 matrixkeyscan();/進(jìn)行一次鍵盤(pán)檢測(cè),可進(jìn)行數(shù)碼管各位的+-設(shè)置 displays_all(); void T0_timer()interrupt 1 TH0=(65536-N)/256;/*/
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 眼鏡行業(yè)視力問(wèn)題免責(zé)協(xié)議
- 杭州市房屋裝修合同
- 掛靠物業(yè)公司合伙協(xié)議書(shū)
- 工程合同付款方式
- 泥工家裝裝修合同
- 租金遞增式商鋪?zhàn)赓U合同
- 垃圾焚燒發(fā)電項(xiàng)目投資合同
- 場(chǎng)地租賃協(xié)議注意事項(xiàng)
- 質(zhì)押擔(dān)保借款合同
- 優(yōu)化員工績(jī)效管理系統(tǒng)的具體實(shí)施方案
- GB/T 8012-2000鑄造錫鉛焊料
- 第一課 第一章 AutoCAD 2012概述入門(mén)
- GB/T 33880-2017熱等靜壓鋁硅合金板材
- 消防安全風(fēng)險(xiǎn)辨識(shí)清單
- 超市店長(zhǎng)考核方案(實(shí)例)
- 德力西質(zhì)量獎(jiǎng)自評(píng)報(bào)告組織概述
- 任務(wù)八-汽車四輪定位的檢測(cè)分析課件
- 2023年版勞動(dòng)實(shí)踐河北科學(xué)技術(shù)出版社一年級(jí)下冊(cè)全冊(cè)教案
- 方案報(bào)審表(樣表)
- 小學(xué)語(yǔ)文人教五年級(jí)下冊(cè)最閃亮的星課件
- 傷寒論講義陽(yáng)明病篇講解
評(píng)論
0/150
提交評(píng)論