![基于51單片機的四路定時控制器_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/ab0134a3-4df7-481e-b8e3-611a437e5cd1/ab0134a3-4df7-481e-b8e3-611a437e5cd11.gif)
![基于51單片機的四路定時控制器_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/ab0134a3-4df7-481e-b8e3-611a437e5cd1/ab0134a3-4df7-481e-b8e3-611a437e5cd12.gif)
![基于51單片機的四路定時控制器_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/ab0134a3-4df7-481e-b8e3-611a437e5cd1/ab0134a3-4df7-481e-b8e3-611a437e5cd13.gif)
![基于51單片機的四路定時控制器_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/ab0134a3-4df7-481e-b8e3-611a437e5cd1/ab0134a3-4df7-481e-b8e3-611a437e5cd14.gif)
![基于51單片機的四路定時控制器_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/ab0134a3-4df7-481e-b8e3-611a437e5cd1/ab0134a3-4df7-481e-b8e3-611a437e5cd15.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、河南理工大學單片機應用與仿真訓練設計報告四路定時控制器姓 名: 范鵬超 學 號: 311108001309 專業(yè)班級: 電儀12- 2班 指導老師: 荊鵬輝 所在學院:電氣工程與自動化學院 2015年1月13日 目錄目錄1摘要21 概述31.1 單片機的電子技術特征31.2 四路定時控制器基本功能31.3 系統(tǒng)原理31.4 實際應用32 系統(tǒng)總體方案及硬件設計32.1 系統(tǒng)總體設計框架結構32.2系統(tǒng)硬件電路42.3 系統(tǒng)硬件總電路63軟件設計64 Proteus軟件仿真75課程設計體會7參考文獻:8附1:源程序代碼9摘要 近年來,科學技術發(fā)展很快,單片機的使用也越來越多。我們在大學也學到了很
2、多關于單片機的知識,也做了很多單片機實驗。單片計算機即單片微型計算機。(single-chip microcomputer),是集cpu,ram,rom,定時,計數(shù)和多種接接口于一體的微控制器。它體積小,成本低,功能強,廣泛應用于智能產品和工業(yè)自動化上。而c語言已成為當前舉世公認的高效簡潔又貼近硬件的編程語言之一。c語言現(xiàn)已成為專業(yè)化的單片機上的實用高級語言。而且由于開發(fā)速度、軟件質量結構化、可維護性方面的原因,使c語言漸漸有取代匯編的趨勢。這次我們做四路定時控制器作為微機原理與單片機的課程設計。 四路定時控制器主要應用于定時控制四個回路的電源通斷。四路定時器的設計背景是單片機的電子技術特征以
3、及應用。本系統(tǒng)采用的是STC10F08XE為中心器件來設計四路定時器的。系統(tǒng)使用性強,操作簡單,擴展性強。設計主要包括硬件的設計和軟件的設計。一個完整的四路定時器相當于一個簡單的單片機系統(tǒng),該系統(tǒng)由四路定時器設置電路,單片機,顯示電路等構成。單片機是集成IC芯片,只需要根據實際設計要求選型。其他部分都需要根據應用要求和性能指標自行設計。設計時,首先設置時間和線路,然后開始計時,在達到設定時間的時候指示燈閃爍。 該四路定時控制器實現(xiàn)的功能是以當前時間為基準,以24小時為周期,可以任意設定哪個回路于某時刻開,到某時刻關。如可以設置第一個回路在8:30-11:30開,14:30-18:00開,其他時
4、間段為關。能夠通過按鍵任意設置某回路某時間段的開關狀態(tài),可以利用數(shù)碼管直接顯示。整個系統(tǒng)通過軟硬件的協(xié)調工作,具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉、操作安全等諸多優(yōu)點,具有廣闊的市場前景,尤其在智能化家用電器和辦公自動化設備等領域。1 概述1.1 單片機的電子技術特征單片機是將CPU、RAMROM定時器/計數(shù)器以及輸入輸出(I/O)接口等計算機的主要部件集成在一塊的集成電路芯片,作為微機系統(tǒng)它還可以實現(xiàn)模/數(shù)轉換、脈寬調制、計數(shù)器捕獲/比較邏輯、高速I/O口和WDT各種控制功能。1.2 四路定時控制器基本功能 四路定時控制器是指應用定時器的功能控制四個回路的通斷狀況,同時可以用
5、按鍵來設置每個通路的通斷以及通斷的時間和周期,利用定時器來控制單片機IO口的高低電平來間接控制繼電器的通斷。1.3 系統(tǒng)原理采用STC10F08XE單片機為控制核心,基于STC10F08XE單片機所具備的的計數(shù)功能,達到實時時鐘的制作,并通過四位共陰極數(shù)碼管將時間直觀的顯示出來??梢岳冒存I輸入功能對顯示時間進行調整。其共設置了四個定時通道,每個定時通道都是相互獨立的。四個定時通道可以分別設置多個時間段的開關狀態(tài),每個通道都可以通過I/O口輸出信號對電磁繼電器進行控制,通過控制電磁繼電器的通斷進一步控制繼電器所連接的其他電路的開關狀態(tài)。充分利用了弱電控制強電的效果。1.4 實際應用被廣泛地應用
6、在各種領域。例如,用來作家用電器的定時控制器;在辦公室中用作磁盤驅動、打印機、復印機、電話的控制;它還可以作為電子秤、收款機、倉儲安全檢測系統(tǒng)、空氣調節(jié)系統(tǒng)等冷凍保鮮系統(tǒng)等的專用系統(tǒng)的控制器;在工業(yè)中,像工業(yè)過程控制、過程監(jiān)制以及機電一體化等控制系統(tǒng);它還可以構成一些智能儀表與集成智能傳感器傳統(tǒng)的控制器等。2 系統(tǒng)總體方案及硬件設計2.1 系統(tǒng)總體設計框架結構數(shù)碼管電路按鍵電路繼電器電路圖1 系統(tǒng)總體設計框架四路定時控制系統(tǒng)總體設計框架結構如圖1所示。2.2系統(tǒng)硬件電路1) 時鐘電路設計圖2 時鐘的電路時鐘電路由振蕩器及定時發(fā)生器和地址鎖存允許信號ALE組成,如圖2所示。所用的時鐘電路用的是1
7、1.0592Mhz的晶振,它的振蕩周期約為0.0833µs,時鐘周期是1/6µs,機器周期是1µs2)按鍵電路設計圖3 按鍵電路原理圖采用2x3鍵盤掃描,如圖3所示,使用每一個按鍵。3)數(shù)碼管顯示電路 圖4 數(shù)碼管顯示電路 顯示塊是由若干發(fā)光二極管組合而成的,一般的“8”字型顯示塊由a、b、c、d、e、f、g、h8個發(fā)光二極管組成,GND接1時均不亮,字位輸出口和字形輸出口采用高電壓驅動,如圖4所示。4)繼電器電路1. 繼電器的基本工作原理:繼電器(是一種電控制器件,是當輸入量(激勵量)的變化達到規(guī)定要求時,在電氣輸出電路中使被控量發(fā)生預定的階躍變化的一種電器。它
8、具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路)之間的互動關系。通常應用于自動化的控制電路中,它實際上是用小電流去控制大電流運作的一種“自動開關”。故在電路中起著自動調節(jié)、安全保護等作用。 圖5 繼電器工作原理圖本次試驗使用了電磁繼電器,原理圖如圖5所示,電磁繼電器一般由鐵芯、線圈、銜鐵、觸點簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會流過一定的電流,從而生生電磁效應,銜鐵就會在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動銜鐵的動觸點與靜觸點(常開觸點)吸合。當線圈斷電后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力返回原來的位置,使動觸點與原來的靜觸點(常閉觸點
9、)釋放。這樣吸合、釋放,從而達到了在電路中的導通、切斷的目的。對于繼電器的“常開、常閉”觸點,可以這樣來區(qū)分:繼電器線圈未通電時處于斷開狀態(tài)的靜觸點,稱為“常開觸點”;處于接通狀態(tài)的靜觸點稱為“常閉觸點”。繼電器一般有兩股電路,為低壓控制電路和高壓工作電路。2.3 系統(tǒng)硬件總電路圖6 系統(tǒng)硬件仿真電路圖3軟件設計圖7 系統(tǒng)軟件設計的步驟4 Proteus軟件仿真圖8 Proteus軟件仿真5課程設計體會 本次課程設計基本結束,回想這一過程,真是困難重重,但是也學到很多。首先是實驗程序,剛開始一片茫然,不知道該如何開始。在網上搜到部分資料后,經過和宿舍同學探討學習后開始有點眉目,最后參考部分材料
10、后得出了最終程序。其次,在焊接電路板時,出現(xiàn)了元器件焊反的情況,但在同學的幫助下成功了。最后,在Protues仿真實驗中有出現(xiàn)數(shù)碼管顯示數(shù)字成零不斷跳動,而且LED燈自動跳變,相當于是中斷不停執(zhí)行、判斷鍵值,特別不穩(wěn)定的情況。但經過大量的修正最終正常。 雖然這次實驗沒有創(chuàng)新,但是也是自己動手查資料,修改程序,達到了實驗要求。通過本次課程設計,學到了很多關于單片機的知識,我也懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。有時,只有經過自己親手試驗,才能更深層次的懂
11、得實驗原理和每部分電路的功能。我也很感謝教育過我的老師和周圍同學,在遇到困難的時熱情的幫助我度過難關,并讓我學到了很多。 此次課程設計,我學到了很多,對以后的學習生活都有很大幫助。今后我也會更加注重理論與實際相結合,多動手,多思考,全面提高自己的能力。參考文獻:1余發(fā)山,王福忠,楊凌霄,王莉。微機原理與單片機接口技術.北京:煤炭工業(yè)出版社。2013.8.2 左金生.電子與模擬電子技術M.北京:電子工業(yè)出版社.2004:105-131.3 尹勇.單片機開發(fā)環(huán)境Vision2的開發(fā)指南M. 北京:北京航空航天大學出版社,2004:173-199.4 張俊謨.單片機中級教程-原理與應用. 北京:北京
12、航空航天大學,2006.5 霍孟友.單片機原理與應用.北京:機械工業(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,定時50ms*/#define M 20/* 定時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;/按鍵計數(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;/繼電器定時起點、終點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ù)程序*/ uint i,j;for(i=xms;i>0;i-) for(j=250;j>0;j-);/*該層循環(huán)延時約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;/*定時器初始化*/void T_initialize()/ EA=1; /開放ALL中斷允許Enable ET0=1; /開放T0中斷允許Enable*/ TMOD=0x11; /定時器0、1,工作方式1,僅受TCON中TR控制*/ TH0=(65536-N)/256; TL0=(65536-N)%256; ET1=1; /開放T1中斷允許Enable*/ TH1=(65536
27、-N)/256; TL1=(65536-N)%256; TR0=1; /定時器計時開始/*/*時鐘實時時間、定時段設置(顯示放后邊)*/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;/*矩陣鍵盤掃描,同時可進行數(shù)碼管各位的+- */void matrixkeyscan()/如何確定
37、時間設定時數(shù)碼管顯示的數(shù)字是否會自動+1 /*當兩行H1、H2重新賦值時存在沖突,解決辦法為:H1=1時H2=0,H2=1時H1=0或者對P3口進行整體賦值*/ uchar temp; /*掃描第一行*/ H1=0;H2=1;/掃描第一行 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài)/*判斷哪個鍵摁下*/ if(temp!=0xff)/判斷是否有鍵摁下 delay_ms(10);/延時 H1=0;H2=1;/掃描第一行/重新讀取 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài) if(temp!=0xff)/消抖 switch(tem
38、p)/判斷哪個鍵摁下 case 0x7f:key=3;k3+;k3=k3%3/*k=02*/; TR0=0/*時間設定時定時器停止*/;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á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)/*判斷哪個鍵摁下*/ if(temp!=0xff)/判斷是否有鍵摁下 delay_ms(10);/延時 H2=0;H1=1;/掃描第二行/重新讀取 temp=P0; temp=temp|0x1f;/讀取L1、L2、L3的狀態(tài) if(temp!=0xff)/消抖 switch(temp)/判斷哪個鍵摁下 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;/*內次按下K5 都會顯示2s的回
40、路(A/B/C/D),故需要打開定時器且計數(shù)清零*/break; case 0xdf:key=4;break; /鍵 4 5 6 分別摁下clk_weixuan();while(temp!=0xff)/按鍵釋放才會跳出循環(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按下時的顯示問題,再進行正常顯示 if(key=5) while(num1<40)displays_hui();TR1=0;/*只顯示2s的回路,然后恢復正常時鐘顯示*/ if(k2!=0)/正常調時k3!=0,此時按下K2不能調整定時的時間段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的定時起終點,然后恢復正常時鐘顯示,k2*/*/ if(k2=0)displays(shi,fen); /正常顯示時鐘switch(k5)case 1:h
44、uiluD=1;if(k6=0)/對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(); /定時器T0、T1初始化 A0_shi=IapReadByte(0x0000);/讀取EEPROM中存儲的參數(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) /開始行走 matrixkeyscan();/進行一次鍵盤檢測,可進行數(shù)碼管各位的+-設置 displays_all(); void T0_timer()interrupt 1 TH0=(65536-N)/256;/*/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人房產買賣合同書
- 上海市房產置換合同
- 五大人氣合同范本
- 個人住房二次抵押貸款合同范例
- 個人雇傭合同模板大全
- 中外合作度假村開發(fā)合同范本
- 專利權轉讓標準合同范本
- 食品定點采購合同
- 種豬買賣合同示范文本
- 二手農機購置合同
- 長江委水文局2025年校園招聘17人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年湖南韶山干部學院公開招聘15人歷年高頻重點提升(共500題)附帶答案詳解
- 廣東省廣州市番禺區(qū)2023-2024學年七年級上學期期末數(shù)學試題
- 智研咨詢發(fā)布:2024年中國MVR蒸汽機械行業(yè)市場全景調查及投資前景預測報告
- IF鋼物理冶金原理與關鍵工藝技術1
- JGJ46-2024 建筑與市政工程施工現(xiàn)場臨時用電安全技術標準
- 煙花爆竹重大危險源辨識AQ 4131-2023知識培訓
- 銷售提成對賭協(xié)議書范本 3篇
- 企業(yè)動火作業(yè)安全管理制度范文
- EPC項目階段劃分及工作結構分解方案
- 《跨學科實踐活動4 基于特定需求設計和制作簡易供氧器》教學設計
評論
0/150
提交評論