




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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摘要 近年來,科學(xué)技術(shù)發(fā)展很快,單片機(jī)的使用也越來越多。我們?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語言已成為當(dāng)前舉世公認(rèn)的高效簡潔又貼近硬件的編程語言之一。c語言現(xiàn)已成為專業(yè)化的單片機(jī)上的實(shí)用高級(jí)語言。而且由于開發(fā)速度、軟件質(zhì)量結(jié)構(gòu)化、可維護(hù)性方面的原因,使c語言漸漸有取代匯編的趨勢(shì)。這次我們做四路定時(shí)控制器作為微機(jī)原理與單片機(jī)的課程設(shè)計(jì)。 四路定時(shí)控制器主要應(yīng)用于定時(shí)控制四個(gè)回路的電源通斷。四路定時(shí)器的設(shè)計(jì)背景是單片機(jī)的電子技術(shù)特征以
3、及應(yīng)用。本系統(tǒng)采用的是stc10f08xe為中心器件來設(shè)計(jì)四路定時(shí)器的。系統(tǒng)使用性強(qiáng),操作簡單,擴(kuò)展性強(qiáng)。設(shè)計(jì)主要包括硬件的設(shè)計(jì)和軟件的設(shè)計(jì)。一個(gè)完整的四路定時(shí)器相當(dāng)于一個(gè)簡單的單片機(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í)間和線路,然后開始計(jì)時(shí),在達(dá)到設(shè)定時(shí)間的時(shí)候指示燈閃爍。 該四路定時(shí)控制器實(shí)現(xiàn)的功能是以當(dāng)前時(shí)間為基準(zhǔn),以24小時(shí)為周期,可以任意設(shè)定哪個(gè)回路于某時(shí)刻開,到某時(shí)刻關(guān)。如可以設(shè)置第一個(gè)回路在8:30-11:30開,14:30-18:00開,其他時(shí)
4、間段為關(guān)。能夠通過按鍵任意設(shè)置某回路某時(shí)間段的開關(guān)狀態(tài),可以利用數(shù)碼管直接顯示。整個(gè)系統(tǒng)通過軟硬件的協(xié)調(diào)工作,具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉、操作安全等諸多優(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/o口和wdt各種控制功能。1.2 四路定時(shí)控制器基本功能 四路定時(shí)控制器是指應(yīng)用定時(shí)器的功能控制四個(gè)回路的通斷狀況,同時(shí)可以用
5、按鍵來設(shè)置每個(gè)通路的通斷以及通斷的時(shí)間和周期,利用定時(shí)器來控制單片機(jī)io口的高低電平來間接控制繼電器的通斷。1.3 系統(tǒng)原理采用stc10f08xe單片機(jī)為控制核心,基于stc10f08xe單片機(jī)所具備的的計(jì)數(shù)功能,達(dá)到實(shí)時(shí)時(shí)鐘的制作,并通過四位共陰極數(shù)碼管將時(shí)間直觀的顯示出來??梢岳冒存I輸入功能對(duì)顯示時(shí)間進(jìn)行調(diào)整。其共設(shè)置了四個(gè)定時(shí)通道,每個(gè)定時(shí)通道都是相互獨(dú)立的。四個(gè)定時(shí)通道可以分別設(shè)置多個(gè)時(shí)間段的開關(guān)狀態(tài),每個(gè)通道都可以通過i/o口輸出信號(hào)對(duì)電磁繼電器進(jìn)行控制,通過控制電磁繼電器的通斷進(jìn)一步控制繼電器所連接的其他電路的開關(guān)狀態(tài)。充分利用了弱電控制強(qiáng)電的效果。1.4 實(shí)際應(yīng)用被廣泛地應(yīng)用
6、在各種領(lǐng)域。例如,用來作家用電器的定時(shí)控制器;在辦公室中用作磁盤驅(qū)動(dòng)、打印機(jī)、復(fù)印機(jī)、電話的控制;它還可以作為電子秤、收款機(jī)、倉儲(chǔ)安全檢測(cè)系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)等冷凍保鮮系統(tǒng)等的專用系統(tǒng)的控制器;在工業(yè)中,像工業(yè)過程控制、過程監(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.0833s,時(shí)鐘周期是1/6s,機(jī)器周期是1s2)按鍵電路設(shè)計(jì)圖3 按鍵電路原理圖采用2x3鍵盤掃描,如圖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ù)定的階躍變化的一種電器。它具有控制系統(tǒng)(又稱輸入回路)和被控制
8、系統(tǒng)(又稱輸出回路)之間的互動(dòng)關(guān)系。通常應(yīng)用于自動(dòng)化的控制電路中,它實(shí)際上是用小電流去控制大電流運(yùn)作的一種“自動(dòng)開關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)等作用。 圖5 繼電器工作原理圖本次試驗(yàn)使用了電磁繼電器,原理圖如圖5所示,電磁繼電器一般由鐵芯、線圈、銜鐵、觸點(diǎn)簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會(huì)流過一定的電流,從而生生電磁效應(yīng),銜鐵就會(huì)在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動(dòng)銜鐵的動(dòng)觸點(diǎn)與靜觸點(diǎn)(常開觸點(diǎn))吸合。當(dāng)線圈斷電后,電磁的吸力也隨之消失,銜鐵就會(huì)在彈簧的反作用力返回原來的位置,使動(dòng)觸點(diǎn)與原來的靜觸點(diǎn)(常閉觸點(diǎn))釋放。這樣吸合、釋放,從而達(dá)到了在
9、電路中的導(dǎo)通、切斷的目的。對(duì)于繼電器的“常開、常閉”觸點(diǎn),可以這樣來區(qū)分:繼電器線圈未通電時(shí)處于斷開狀態(tài)的靜觸點(diǎn),稱為“常開觸點(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é)束,回想這一過程,真是困難重重,但是也學(xué)到很多。首先是實(shí)驗(yàn)程序,剛開始一片茫然,不知道該如何開始。在網(wǎng)上搜到部分資料后,經(jīng)過和宿舍同學(xué)探討學(xué)習(xí)后開始有點(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)過大量的修正最終正常。 雖然這次實(shí)驗(yàn)沒有創(chuàng)新,但是也是自己動(dòng)手查資料,修改程序,達(dá)到了實(shí)驗(yàn)要求。通過本次課程設(shè)計(jì),學(xué)到了很多關(guān)于單片機(jī)的知識(shí),我也懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。有時(shí),只有經(jīng)過自己親手試驗(yàn),才能更深層次的懂得實(shí)驗(yàn)原理和每部分電路的功能。我也很
11、感謝教育過我的老師和周圍同學(xué),在遇到困難的時(shí)熱情的幫助我度過難關(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ī)開發(fā)環(huán)境vision2的開發(fā)指南m. 北京:北京航空航天大學(xué)出版社,2004:173-199.4 張俊謨.單片機(jī)中級(jí)教程-原理與應(yīng)用. 北京:北京航空航天大學(xué),2006.5 霍孟友.
12、單片機(jī)原理與應(yīng)用.北京:機(jī)械工業(yè)出版社,2003.附1:源程序代碼#include#include#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)#define num1(x1) (x1)/10)#define num0(x1) (x1)%10)
13、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_timer*/,num0/*t0_timer*/,num1,key/*matrixkeyscan*/
14、; /定義全局變量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*/0x06,/*顯示1*/0x5b,/*顯示2*/0x4f,/*顯示3*/0x66,/*顯示4*/0x6
15、d,/*顯示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;i0;i-) for(j=250;j0;j-);/*該層循環(huán)延時(shí)約1ms*/*/typedef unsigned char byte;typedef unsigned int word;/*declare sfr associate
16、d 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 control register/*define isp/iap/eeprom command*/#define cmd
17、_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/sysclk30mhz/#define enable_iap0x81/sysclk24mhz/#define enable_iap0x82/sysclk20mhz #define enable_iap0x83/sysclk12mhz
18、/#define enable_iap0x84/sysclk 6mhz/#define enable_iap0x85/sysclk 3mhz/#define enable_iap0x86/sysclk 2mhz/#define enable_iap0x87/sysclk8;/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/e
19、eprom/operation completedat = iap_data;/read isp/iap/eeprom dataiapidle();/close isp/iap/eeprom functionreturn dat;/return flash data/*-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 = ena
20、ble_iap;/open iap function,and set wait timeiap_cmd= cmd_program;/set isp/iap/eeprom program commandiap_addrl = addr;/set isp/iap/eeprom address lowiap_addrh = addr8;/set isp/iap/eeprom address highiap_data = dat;/write isp/iap/eeprom dataiap_trig = 0x5a;/send trigger command1(0x5a)iap_trig = 0xa5;/
21、send trigger command2(0xa5)_nop_();/mcu will hold here until isp/iap/eeprom/operation completeiapidle();/*-erase one sector areainput: 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/eepro
22、m erase commandiap_addrl = addr;/set isp/iap/eeprom address lowiap_addrh = addr8;/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 completeiapidle();/*數(shù)碼管顯示函數(shù)*/void displa
23、ys(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=0x00; 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; /開放all中斷允許enable et0=1; /開放t0中斷允許ena
24、ble*/ tmod=0x11; /定時(shí)器0、1,工作方式1,僅受tcon中tr控制*/ th0=(65536-n)/256; tl0=(65536-n)%256; et1=1; /開放t1中斷允許enable*/ th1=(65536-n)/256; tl1=(65536-n)%256; tr0=1; /定時(shí)器計(jì)時(shí)開始/*/*時(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=02
25、3*/ 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*/ 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(k
26、ey=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:iaperasesector(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
27、;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; case 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(
28、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_fen=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,
29、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(key=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
30、)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_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_fe
31、n);iapprogrambyte(0x0402,c1_shi);iapprogrambyte(0x0403,c1_fen);k2=0;break;break;case 4:switch(k2)case 0:;break;case 1: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_f
32、en=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)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);ia
33、pprogrambyte(0x0600,d0_shi);iapprogrambyte(0x0601,d0_fen);iapprogrambyte(0x0602,d1_shi);iapprogrambyte(0x0603,d1_fen);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=6
34、0)fen=0;/*fen=059*/ if(key=4)if(fen=0)fen=60;fen-;/*fen=590*/;break;/*矩陣鍵盤掃描,同時(shí)可進(jìn)行數(shù)碼管各位的+- */void matrixkeyscan()/如何確定時(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!=0xf
35、f)/判斷是否有鍵摁下 delay_ms(10);/延時(shí) h1=0;h2=1;/掃描第一行/重新讀取 temp=p0; temp=temp|0x1f;/讀取l1、l2、l3的狀態(tài) if(temp!=0xff)/消抖 switch(temp)/判斷哪個(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
36、(temp!=0xff)/按鍵釋放才會(huì)跳出循環(huán) h1=0;h2=1;/掃描第一行/重新讀取 temp=p0; temp=temp|0x1f;/讀取l1、l2、l3的狀態(tài) /*掃描第二行*/ h2=0;h1=1;/掃描第二行 temp=p0; 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è)鍵
37、摁下 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的回路(a/b/c/d),故需要打開定時(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 disp
38、lays_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=duanxuank5+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
39、; 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)先處理k5 k2按下時(shí)的顯示問題,再進(jìn)行正常顯示 if(key=5) while(num140)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(num140)displays_set()/*a0- 2s*/;tr1=0; s
40、witch(k5) case 1:if(k2=2)displays(a0_shi,a0_fen);else displays(a1_shi,a1_fen);break; case 2:if(k2=2)displays(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(a0_shi*100+a0_fen)&(shi*100+fen)(b0_shi*100+b0_fen)&
41、(shi*100+fen)(c0_shi*100+c0_fen)&(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_initialize(); /定時(shí)器t0、t1初始化 a0_shi=iapreadbyte(0x0000);/讀取eeprom中存儲(chǔ)的參數(shù) a0_fen=iapreadbyte(0x0001); a1_shi=iapreadb
42、yte(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=iapreadbyte(0x0401); c1_shi=iapreadbyte(0x0402); c1_fen=iapreadbyte(0x0403); d0_shi=iapreadbyte(0x0600); d0_fen=
43、iapreadbyte(0x0601); d1_shi=iapreadbyte(0x0602); d1_fen=iapreadbyte(0x0603); while(1) /開始行走 matrixkeyscan();/進(jìn)行一次鍵盤檢測(cè),可進(jìn)行數(shù)碼管各位的+-設(shè)置 displays_all(); void t0_timer()interrupt 1 th0=(65536-n)/256;/*/ tl0=(65536-n)%256; num+; /*全局變量,不賦初值時(shí),默認(rèn)初值為0*/ if(num=10)led=led;num=0;num0+;/*0.5s改變一次狀態(tài),閃爍一次1s*/ if(num0=120) num0=0;fen+; if(fen
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能制造的安全性與隱私保護(hù)的策略及實(shí)施路徑
- ?;髽I(yè)安全生產(chǎn)投入與保障方案
- 互動(dòng)式教學(xué)在高中化學(xué)課堂中的應(yīng)用研究
- 中外教育史知到課后答案智慧樹章節(jié)測(cè)試答案2025年春泰山學(xué)院
- 中外園林漫賞知到課后答案智慧樹章節(jié)測(cè)試答案2025年春青島農(nóng)業(yè)大學(xué)
- 電廠閥門修理施工方案
- 三級(jí)人力資源管理師-《三級(jí)企業(yè)人力資源管理師專業(yè)》綜合??季?
- 2025年耐高溫濾料項(xiàng)目建議書
- 25學(xué)年教案語文(必修上冊(cè))162《登泰山記》
- 2025屆新疆維吾爾自治區(qū)二模歷史試題(原卷版+解析版)
- 《如何處理人際關(guān)系》課件
- 社區(qū)消防網(wǎng)格員培訓(xùn)課件
- 依奇珠單抗注射液-藥品解讀
- 太陽能路燈施工方案
- 前列腺炎的護(hù)理課件
- 外墻防水膠驗(yàn)報(bào)告模板
- 頂管頂力計(jì)算
- 本學(xué)期研究性成果及創(chuàng)新成果高中范文(3篇)
- MMPI14個(gè)量表得分題目號(hào)碼
- 板式換熱器、半容積式換熱器換熱器面積計(jì)算表(自動(dòng)計(jì)算)
- 寧夏設(shè)施蔬菜產(chǎn)業(yè)集約化育苗模式分析與探討
評(píng)論
0/150
提交評(píng)論