版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章緒論1.1 系統(tǒng)背景41.1.1 單片機的介紹單片微型計算機簡稱單片機,是典型的嵌入式微控制器,常用英文字母 的縮寫MCU表示單片機,它最早是被用在工業(yè)控制領(lǐng)域。單片機由芯片內(nèi) 僅有CPU的專用處理器發(fā)展而來。最早的設(shè)計理念是通過將大量外圍設(shè)備 和CPU集成在一個芯片中,使計算機系統(tǒng)更小,更容易集成進復(fù)雜的而對 體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計出的處理器,從此以后,單片機和專用處理器的發(fā)展便分道揚鍍。單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。相當(dāng)于一個微型的計算機,和計算機 相比,單片機只缺少了 I/
2、O設(shè)備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時,學(xué)習(xí)使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功 能,尤其是特殊的獨特的一些功能,這是別的器件需要費很大力氣才能做 到的,有些則是花大力氣也很難做到的。一個不是很復(fù)雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定 的話,電路一定是一塊大 PCB板!但是如果要是用美國 70年代成功投放市 場的系列單片機,結(jié)果就會有天壤之別!只因為單片機的通過你編寫的程 序可以實現(xiàn)高智能,高效率,以及
3、高可靠性!1.1.2 單片機的應(yīng)用目前單片機滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片 機的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊 與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智 能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機 的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領(lǐng)域的機器人、智能儀表、醫(yī)療器械以及各種智能機械了。因此,單片機的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機應(yīng)用與智能化控制的科學(xué)家、工程師。單片機廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域51
4、.2多功能家用定時器1 .2.1多功能家用定時器的概述人類最早使用的定時工具是沙漏或水漏,但在鐘表誕生發(fā)展成熟之后, 人們開始嘗試使用這種全新的計時工具來改進定時器,達(dá)到準(zhǔn)確控制時間 的目的。1876年,英國外科醫(yī)生索加取得一項定時裝置的專利,用來控制煤氣 街燈的開關(guān)。它利用機械鐘帶動開關(guān)來控制煤氣閥門。定時器確實是一項了不起的發(fā)明,使相當(dāng)多需要人控制時間的工作變 得簡單了許多,家用電器都安裝了定時器來控制開關(guān)或工作時間。2 .2.2多功能家用定時器的功能與實現(xiàn)步驟3 .能夠調(diào)整數(shù)字鐘、定時開啟、關(guān)閉時間的顯示當(dāng)時間分別顯示小時、分鐘狀態(tài)時,按 11鍵,實現(xiàn)將當(dāng)前顯示的小時或分 鐘減1;按12
5、鍵時,實現(xiàn)將當(dāng)前顯示的小時或分鐘加 1。4 .能過實現(xiàn)三路定時通過按10鍵來選擇顯示的時間。從而實現(xiàn)三路定時的開啟與關(guān)閉,實現(xiàn)三 路定時功能。5 .既能夠?qū)崿F(xiàn)按鍵輸值,也可用加減鍵來對其調(diào)時當(dāng)在小時狀態(tài)時,不管是在數(shù)字鐘還是定時狀態(tài),都可以通過按鍵來對其調(diào) 時,同時此時如果覺得時間按錯還可以通過加減鍵進行調(diào)整時間。6 .能夠時間倒計時的秒表功能當(dāng)一開始接通是,顯示的是 60秒倒計時功能,這一功能有助于對準(zhǔn)確時間 更好的把握。7 .能夠顯示今天心情當(dāng)在時鐘狀態(tài)時,按加減鍵,可顯示出今天心情。如果按減號鍵時,顯示 sad,并且LED燈全滅;如果按加號鍵時,顯示fine ,并且燈全亮第二章系統(tǒng)電路設(shè)
6、計2.1系統(tǒng)總體設(shè)計框架結(jié)構(gòu)4總體結(jié)構(gòu)圖如下:圖2.1總體結(jié)構(gòu)圖按鍵輸入電路:對定時器輸入定時時間、時鐘時間,并對其調(diào)整。時鐘電路:給單片機一個時鐘信號,讓其工作。復(fù)位電路:使單片機為初始狀態(tài),并從初態(tài)開始工作。LED顯示電路:表明定時器的工作狀態(tài)。數(shù)碼管顯示電路:顯示數(shù)字鐘時間或定時時間或心情。繼電器電路: 是用較小的電流去控制較大電流的一種自動開關(guān)42.2系統(tǒng)硬件單元電路設(shè)計2.2.1 時鐘電路設(shè)計時鐘電路對單片機是不可缺的,單片機的每個功能都要以時鐘電路為基礎(chǔ)工 作。單片機內(nèi)部自帶一個時鐘電路,外部接入定時控制元件即可構(gòu)成一個穩(wěn)定的 自激振蕩器。其中機器周期共有12個振蕩脈沖周期,因此,
7、機器周期是時鐘周期 的12倍。本實驗中時鐘電路中使用的晶體是12MHz則時鐘周期為(1/12)us ,機 器周期為1uso實驗圖如下:時鐘電路圖:圖2.2時鐘電路圖2.2.2 復(fù)位電路設(shè)計復(fù)位操作有上電自動復(fù)位、按鍵電平復(fù)位和外部脈沖復(fù)位三鐘方式,本次實驗用的是按鍵電平復(fù)位,利用電容的充放電公式來選擇所需的電容、電阻,能保 證復(fù)位信號高電平持續(xù)時間大于 2個機器周期。電路圖如下:復(fù)位電路圖:圖2.2按鍵電平復(fù)位2.2.3 按鍵電路設(shè)計本課題要用數(shù)碼管顯示數(shù)字鐘、 定時時間。這就需要鍵盤來設(shè)定,鍵盤可以 分為獨立連接式和矩陣式。本實驗用的是矩陣式。為了減少所以的 I/O 口,利用 三一一八譯碼器
8、來實現(xiàn)12個鍵盤的連接。對于這種矩陣式的鍵盤連接,掃描時依次將行線置為低電平,即在置某根行 線為低電平時,其它都線為高電平。在確定某根行線位置為低電平后,再逐行檢 測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵矩陣式鍵盤如就是閉合的按鍵。注意在按鍵時一定要調(diào)延時子程序來消除抖動。 下所示:按鍵電路圖:SH IFT一+L1 一 Y4O O115L0 一 .廣 丫 3O 056L0 一 ,一 丫 4O O6L1Y2O O-127L1 .一 ,一, Y 5O O78L0 一 一丫 5O O8圖2.3按鍵電路2.2.4 LED 顯示電路設(shè)計本次實驗中要用發(fā)光二極管顯示狀態(tài)。由下
9、圖知發(fā)光二極管陰極以經(jīng)接地,當(dāng)其陽極為高電平時,二極管就發(fā)光顯示所處狀態(tài)。LE DLED顯示電路圖:D 3D 6D 5L6 wLE DP1 .22 kR42kP1 .6R 62kQ 5|"圖2.4 LED顯示電路圖2.2.5 數(shù)碼管顯示電路設(shè)計實驗中所用的數(shù)碼管為共陰極數(shù)碼管,當(dāng)給其引腳加入高電平時,數(shù)碼管中 對應(yīng)的那一段就亮。圖2.6為外部顯示圖,其內(nèi)部結(jié)構(gòu)如下:V2VqVST/訃寸寸秫abw4廣fjidp圖2.5共陰極數(shù)碼管內(nèi)部結(jié)構(gòu)?PY X-EEG DPDPY .EEC? DP圖2.6共陰極數(shù)碼管顯示2.2.6 繼電器電路設(shè)計繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回
10、路)和被控制 系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動控制電路中,它實際上是用較小的電流 去控制較大電流的一種 自動開關(guān)”。故在電路中起著自動調(diào)節(jié)、安全保護、轉(zhuǎn)換 電路等作用。圖2.7繼電器電路4 2.3系統(tǒng)硬件總電路總電路圖由時鐘電路、復(fù)位電路、繼電器電路、鍵盤電路、LED顯示電路、數(shù)碼管顯示電路組成來實現(xiàn)定時功能。其中四個數(shù)碼管為共陰極的數(shù)碼管。74LS138為38譯碼器,74LS07為輸出緩沖器,74LS00為與非門,7805為三端穩(wěn)壓器,電容的作用基本都是濾波來減少噪聲對實驗的影響。電路圖如下:DS2VCCJiVCCJ40.33KST5W-PBy-C1010ufDPYDS110 O7F2O
11、1oiaacomDS4e de ddp bdp bO4F3O5 1comf g bge2cf dpcomDPY_7-SEG_DVCC10 O7c8 loiuf IIICC8II中IC'IIP1.01Ptl2P1.23O24P1.45O4P1.56O5P1.67O6-8ORSI9VCC P0.7P3010T"P3.111ALEP3212/pseNP3.313,P2TP3414P26P3.515P2.5P3.616P2.4P3.717P2.3XIAL218P2.2XIAL119P2.120P2.0J3VCC123456781 2 3 4 5 6 7 8VCCLJeddp9 O6C
12、6 0.1DPY_7-SEG_DPDS3DPYedt u o VIf38DPYP1.0VCCP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3P1.5P0.4P1.6P0.5P1.7P0.6RSTP0.7P3.0/EAP3.1ALEP3.2/PSENP3.3P2.7P3.4P2.6P3.5P2.5P3.6P2.4P3.7P2.3XTAL2P2.2XTAL1P2.1VSSP2.089S51JP220aeeRSTddO110O7corcoc35348comcom233GNDDPY_7-SEG_DPDPY_7-SEG_DP32 P0.731JP57805CON20CON2026 P2.
13、5C112F14 mjp1VCCXIAL19A1VCCJB1A4GNDY4Y1B474LS0710567S4SW-PBR72kSW-PBR102kP122kL1R6R9LEDP1.72kL5L6P1.3L72kA2B2R2 10KY4A3B3Y31291019201112131415161718.1.0A1Y1A2Y2A3Y3Y6A5Y5A4Y2GNDVCCA6:-S10SW-PBS12SW-PBb acdp1 2D1 L LEDO5 1O5 1O2O374LS00CON3 J69 O6O2 6O4 2O4 2O4O5-l8 F3P2.1 1P2.0 2S11SW-PBP1.2 3 '
14、P1T-,;NLEDCON228 P2.7-27 P2.6O6O725 P2.424 P2.3.2RSI 9 "P3.010P3.111 :P3.212 T二 30 ALE=129 /PSENP1.6 7P1.7 811LED>mf g bgVCC14 I13rP3.313P3.414dp e 1 c a 'dpf"736P3.515P3.616-P3.7171kfF-9一8RELAY-SPDT*LEDP1.5VCCR4LEDJP4VCCY0C /G2A/G2BG1Y7GND74LM138L2L3L4R8Y5Y6Y1Y2Y3Y4115 Y09 Y3S8SW-P
15、B2k圖2.8總電路圖第三章系統(tǒng)軟件設(shè)計3.1 系統(tǒng)軟件流程圖&3.1.1 主程序流程圖主程序在執(zhí)行時,通過單片機內(nèi)部中斷對程序不斷的掃描判斷、 刷新顯示, 當(dāng)有鍵按下時,將數(shù)字鐘中的時間與定時時間相比較, 然后根據(jù)比較程序顯示狀 態(tài),并且還要延時消除抖動,之后進行按鍵處理,從而顯示不同的狀態(tài),如此周 期循環(huán)。3.1.2 子程序流程圖1 .延時子程序流程圖YEND此延時子程序在實驗中被主程序調(diào)用,當(dāng)有按鍵按下時,調(diào)用此程序可以 達(dá)到消除振動的作用,避免發(fā)光二極管一直閃爍,此程序延時時間不能太短,要 不然不能很好的起到消振作用,也不能夠太長,避免按鍵很長時間后才反應(yīng)。并 且因為此程序用C
16、語言編程,延時時間沒有匯編語言精準(zhǔn)。2 .比較子程序流程圖開始LED7=1LED7=0END此程序通過將定時時間不斷與數(shù)字鐘時間相比較來表明定時器是否開啟 當(dāng)LED7亮的時候表明定時開啟;當(dāng)LED7滅的時候表明定時關(guān)閉。3 .刷新緩沖子程序流程圖開始1F1F1T1F-1r1!F1r1F=-2F=-1F=0F=1F=2F=3F=4F=5F=61F1 1r1ri!刷新 心情刷新 秒表 時間刷新 時鐘 時間刷新 一路 開啟 時間刷新 一路 關(guān)閉 時間刷新 二路 開啟 時間刷新 二路 關(guān)閉 時間刷新 三路 開啟 時間刷新 三路 關(guān)閉 時間此程序為刷新緩沖區(qū)流程圖,其中 F為狀態(tài)量,當(dāng)F為不同的值時,數(shù)
17、碼管 顯示不同的狀態(tài),同時此程序不斷的刷新來顯示此狀態(tài)下的數(shù)碼管顯示的值。4.按鍵處理子程序流程圖此為按鍵處理子程序流程圖,主程序在不停的掃描中,每當(dāng)有按鍵按下時, 就會根據(jù)狀態(tài)量STATE勺值跳轉(zhuǎn)到此程序進行處理,此程序中還包含顯示時所需 的狀態(tài)量的定義和加減鍵及鍵值的輸入,按不同的鍵實現(xiàn)不同的功能。5 .LED顯不'子程序流程圖此為LED顯示子程序流程圖,顯示當(dāng) STAT。個狀態(tài)量為不同的值時,表 明不同的狀態(tài),而這種狀態(tài)通過不同的的發(fā)光二極管顯示出來。這對于判斷實驗 的正確性提供了不可缺少的幫助。6 .數(shù)碼管顯示子程序流程圖此為數(shù)碼管顯示的流程圖,此程序與刷新緩沖區(qū)流程圖相似,都
18、與狀態(tài)量F相關(guān)。不同的的F值顯示不同的狀態(tài)所對應(yīng)的數(shù)值。7 .1.3中斷程序流程圖1. T0中斷程序流程圖此圖為T0中斷程序流程圖,用于計數(shù)器的計時,一直執(zhí)行中。當(dāng) 60秒到 時,分加1,秒單元清零,當(dāng)60分到時,時家1,分單元清零。24時到時,時 單元清零。2. T1中斷程序流程圖此為T1中斷流程圖,用于鍵值判斷和中斷掃描,它一直保持著掃描按 鍵判斷是否有鍵按下,然后讓按鍵處理子程序能準(zhǔn)確的進行執(zhí)行。4 3.2系統(tǒng)程序設(shè)計3.2.1 系統(tǒng)主程序void main(void)P1=0x00;EA=1; /CPU 允許中斷TMOD |=0x01;/定時器0計時50ms in 12M crysta
19、l定時器T0選擇方式0工作其前七位沒影響,開始是什么還是什么,最后一位變成0=方式0TH0=0x3C;TL0=0xB0; / 初值 0011 1100 1011 0000 65535-15536=49999 50msET0=1; TR0=1; / 開啟 T0TMOD |=0x10;/定時器1用于動態(tài)掃描 T1TH1=0xFa; 初值 65535-64240=12950.13msTL1=0xF0;ET1=1; TR1=1;開啟 T1while(1) RefreshTab();LED_Display();if(!L1|!L0) compare();Delay(200);Key_Process();
20、 只要有鍵按下,就比較時間,延時后進行按鍵處理。3.2.2 定時中斷子程序/*定時器 0 用于數(shù)字鐘的計時*/void Timer0(void) interrupt 1TH0=0x3C; TL0=0xB0; count+;/ 重新賦值50ms 溢出if(count=10) LED1=LED1; /LED1 半秒亮if (count=20) count=0;second+;/秒加1 20*50=1Sif(second=60) second=0;minute+; /分加 1if(minute=60) minute=0;hour+;/時加1if(hour=24) hour=0; / 小時到 24 時
21、,清零/*定時器 1 中斷掃描顯示+鍵值判斷*/void Timer1(void) interrupt 3TH1=0xFa; TL1=0xF0; 定時2ms顯示下一個數(shù)碼管switch(num) case 0: P2=0x0f; if(!L1)Keyno=1; if(!L0)Keyno=10; SEG_Display();break;當(dāng)num為0時,選擇Y0,當(dāng)按下L1時,鍵值時1;當(dāng)按下L0時,鍵值是10,顯示 case 1: P2=0x1f; if(!L1)Keyno=4;if(!L0)Keyno=7; SEG_Display();break;/當(dāng)num 為 0 時,選擇Y1 ,當(dāng)按下L1
22、 時,鍵值時4;當(dāng)按下L0 時,鍵值是7,顯示case 2: P2=0x2f;if(!L1)Keyno=3;if(!L0)Keyno=12;SEG_Display();break;當(dāng)num為0時,選擇Y2,當(dāng)按下L1時,鍵值時3;當(dāng)按下L0時,鍵值是12,顯示 case 3: P2=0x3f;if(!L1)Keyno=5;if(!L0)Keyno=8;SEG_Display();break;當(dāng)num為0時,選擇Y3,當(dāng)按下L1時,鍵值時5;當(dāng)按下L0時,鍵值是8,顯示 case 4: P2=0x4f;if(!L1)Keyno=2;if(!L0)Keyno=11;SEG_Display();br
23、eak;當(dāng)num為0時,選擇Y4,當(dāng)按下L1時,鍵值時2;當(dāng)按下L0時,鍵值是11,顯示 case 5: P2=0x5f;if(!L1)Keyno=6;if(!L0)Keyno=9;SEG_Display();break;當(dāng)num為0時,選擇Y5,當(dāng)按下L1時,鍵值時6;當(dāng)按下L0時,鍵值是9,顯示 default: break;num+;if(num=6)num=0;/ 當(dāng) num 為 6 時清零3.2.3 時間比較子程序void compare(void)if(sg0=sg4&&sg1=sg5&&sg2=sg6&&sg3=sg7&&a
24、mp;flog=1) LED7=1;/當(dāng)數(shù)字鐘時間與一路定時的開啟時間相同時,LED7 亮if(sg0=sg8&&sg1=sg9&&sg2=sg10&&sg3=sg11&&flog=1) LED7=0;/當(dāng)數(shù)字鐘時間與一路定時的關(guān)閉時間相同時,LED7 滅if(sg0=sg12&&sg1=sg13&&sg2=sg14&&sg3=sg15&&flog=1) LED7=1;/當(dāng)數(shù)字鐘時間與二路定時的開啟時間相同時,LED7 亮if(sg0=sg16&&sg
25、1=sg17&&sg2=sg18&&sg3=sg19&&flog=1) LED7=0/當(dāng)數(shù)字鐘時間與二路定時的關(guān)閉時間相同時,LED7 滅if(sg0=sg20&&sg1=sg21&&sg2=sg22&&sg3=sg23&&flog=1) LED7=1;/當(dāng)數(shù)字鐘時間與三路定時的開啟時間相同時,LED7 亮if(sg0=sg24&&sg1=sg25&&sg2=sg26&&sg3=sg27&&flog=1) LED7=0;
26、/當(dāng)數(shù)字鐘時間與三路定時的關(guān)閉時間相同時,LED7 滅3.2.4 延時子程序void Delay( uint x) /自定義延時約0.1ms ,大約為120*xuint t;while(-x)for(t=0;t<120;t+);3.2.5 刷新緩沖區(qū)子程序void RefreshTab(void) if(F=-2) XQ0=Tabkx0; XQ1=Tabkx1; XQ2=Tabkx2; XQ3=Tabkx3;/當(dāng) F=-2 時,數(shù)碼管刷新顯示今天心情if(F=-1) MB0=Tabsecond/10; MB1=Tabsecond%10;/當(dāng) F=-1 時,數(shù)碼管刷新顯示倒計時的秒表if(
27、F=0) TimeTab0=Tabsg0;TimeTab1=Tabsg1;TimeTab2=Tabsg2; TimeTab3=Tabsg3;/當(dāng) F=0 時,數(shù)碼管刷新顯示數(shù)字鐘時間if(F=1) STab0=Tabsg4; STab1=Tabsg5;STab2=Tabsg6;STab3=Tabsg7;/當(dāng) F=1 時,數(shù)碼管刷新顯示一路定時開啟時間if(F=2) FTab0=Tabsg8; FTab1=Tabsg9;FTab2=Tabsg10;FTab3=Tabsg11;/當(dāng) F=2 時,數(shù)碼管刷新顯示一路定時關(guān)閉時間if(F=3)STab10=Tabsg12;STab11=Tabsg13;
28、STab12=Tabsg14;STab13=Tabsg15;/當(dāng) F=3 時,數(shù)碼管刷新顯示二路定時開啟時間if(F=4) FTab10=Tabsg16; FTab11=Tabsg17;FTab12=Tabsg18;FTab13=Tabsg19;/當(dāng) F=4 時,數(shù)碼管刷新顯示二路定時關(guān)閉時間if(F=5) STab20=Tabsg20; STab21=Tabsg21;STab22=Tabsg22;STab23=Tabsg23;/當(dāng) F=5 時,數(shù)碼管刷新顯示三路定時開啟時間if(F=6) FTab20=Tabsg24; FTab21=Tabsg25;FTab22=Tabsg26;FTab23
29、=Tabsg27;/當(dāng) F=6 時,數(shù)碼管刷新顯示三路定時關(guān)閉時間3.2.6 按鍵處理子程序void Key_Process(void)根據(jù)不同狀態(tài)量 STATE的值,在不同的狀態(tài)按不同的鍵實現(xiàn)不同的功能,能夠按鍵輸值 時刻別忘時間顯示的范圍 switch(STATE)case 0:if(Keyno=11)kx0=5;kx1=10;kx2=11;kx3=15;h=0;if(Keyno=12)kx0=12;kx1=1;kx2=13;kx3=14;h=1; 心情狀態(tài) if(Keyno=10)STATE=2;F=0; break;case 2: if(Keyno<10)sgn=Keyno;n+
30、;if(sg0>2|(sg0=2&&sg1>4)sg0=sg1=0;if(sg2>5)sg2=sg3=0;if(n>3)n=4;/用可以改變按鍵計數(shù)器初值if(Keyno=11)sg1=sg1+1;if(sg0=2&&sg1=4)sg0=sg1=0;/ 力口 1 鍵 if(Keyno=12)sg1=sg1-1;if(sg0!=0&&sg1=-1)sg0=sg0-1;sg1=9;if(sg0=0&&sg1=-1)sg0=2;sg1=3;/ 減 1 鍵,時間設(shè)定范圍 if(Keyno=10)STATE=3; b
31、reak; /case3:if(Keyno=11)sg3=sg3+1;if(sg3>9)sg2=sg2+1;sg3=0;if(sg2=6) sg2=sg30;加 1 鍵if(Keyno=12)sg3=sg3-1;if(sg2!=0&&sg3=-1)sg2=sg2-1;sg3=9; if(sg2=0&&sg3=-1)sg2=5;sg3=9; 減 1 鍵if(Keyno=10)STA TE=4;F=1; break;case 4: if(Keyno<10)sgn=Keyno;n+; if(sg4=2&&sg5>4)sg4=sg5=0
32、;if(sg6>5)sg6=sg7=0;if(n>7)n=8;if(Keyno=11)sg5=sg5+1;if(sg5=6)sg4=sg5=0;if(Keyno=12)sg5=sg5-1;if(sg4!=0&&sg5=-1)sg4=sg4-1;sg5=9; if(sg4=0&&sg5=-1)sg4=2;sg5=3; if(Keyno=10)STA TE=5; flog=0; break;case5:if(Keyno=11)sg7=sg7+1;if(sg7>9)sg6=sg6+1;sg7=0;if(sg6=6) sg6=sg7=0; if(Key
33、no=12)sg7=sg7-1;if(sg6!=0&&sg7=-1)sg6=sg6-1;sg7=9; if(sg6=0&&sg7=-1)sg6=5;sg7=9; if(Keyno=10)flog=1;STATE=6;F=2; break; /case 6: if(Keyno=10)STA TE=7;if(Keyno<10)sgn=Keyno;n+; if(sg8=2&&sg8>4)sg8=sg9=0; if(sg10>5)sg10=sg11=0;if(n>11)n=12; if(Keyno=11)sg9=sg9+1;if(
34、sg5=6)sg8=sg9=0; if(Keyno=12)sg9=sg9-1;if(sg8!=0&&sg9=-1)sg8=sg8-1;sg9=9; if(sg8=0&&sg8=-1)sg8=2;sg9=3; flog=0; break; case7:if(Keyno=11)sg11=sg11+1;if(sg11>9)sg10=sg10+1;sg11=0;if(sg10=6) sg10=sg11=0;if(Keyno=12)sg11=sg11-1; if(sg10!=0&&sg11=-1)sg10=sg10-1;sg11=9; if(sg10
35、=0&&sg11=-1)sg10=5;sg11=9;if(Keyno=10)flog=1;STATE=8;F=3; break;case 8: if(Keyno<10)sgn=Keyno;n+;if(sg12>2|(sg12=2&&sg13>4)sg12=sg13=0;if(sg14>5)sg14=sg15=0;if(n>15)n=16;用可以改變按鍵計數(shù)器初if(Keyno=11)sg13=sg13+1;if(sg12=2&&sg13=4)sg12=sg13=0; if(Keyno=12)sg13=sg13-1;i
36、f(sg12!=0&&sg13=-1)sg12=sg12-1;sg13=9;if(sg12=0&&sg12=-1)sg12=2;sg13=3; if(Keyno=10)STATE=9; flog=0; break; case9: if(Keyno=11)sg15=sg15+1;if(sg15>9)sg14=sg14+1;sg15=0;if(sg14=6) sg14=sg15=0;if(Keyno=12)sg15=sg15-1; if(sg14!=0&&sg15=-1)sg14=sg14-1;sg15=9; if(sg14=0&&am
37、p;sg15=-1)sg14=5;sg15=9; if(Keyno=10)flog=1;STATE=10;F=4; break;case 10: if(Keyno<10)sgn=Keyno;n+;if(sg16>2|(sg16=2&&sg17>4)sg16=sg17=0; if(sg18>5)sg18=sg19=0;if(n>19)n=20;/用可以改變按鍵計數(shù)if(Keyno=11)sg17=sg17+1;if(sg16=2&&sg17=4)sg16=sg17=0; .if(Keyno=12) sg17=sg17-1;if(sg1
38、6!=0&&sg17=-1)sg16=sg16-1; sg17=9; if(sg16=0&&sg17=-1)sg16=2;sg17=3; if(Keyno=10)STATE=11; flog=0; break;/case11:if(Keyno=11)sg19=sg19+1;if(sg19>9)sg18=sg18+1;sg19=0;if(sg18=6) sg18=sg19=0;if(Keyno=12)sg19=sg19-1;if(sg18!=0&&sg18=-1)sg18=sg18-1;sg19=9; if(sg18=0&&s
39、g19=-1)sg18=5;sg19=9; if(Keyno=10)flog=1;STATE=12;F=5; break;case 12:if(Keyno<10)sgn=Keyno;n+;if(sg20>2|(sg10=2&&sg21>4)sg20=sg21=0; if(sg22>5)sg22=sg23=0;if(n>23)n=24; if(Keyno=11)sg21=sg21+1;if(sg20=2&&sg21=4)sg20=sg21=0; if(Keyno=12)sg21=sg21-1;if(sg20!=0&&s
40、g21=-1)sg20=sg20-1;sg21=9; if(sg20=0&&sg21=-1)sg20=2;sg21=3; if(Keyno=10)STATE=13; flog=0; break;/case13:if(Keyno=11)sg23=sg23+1;if(sg23>9)sg22=sg22+1;sg23=0;if(sg22=6) sg22=sg23=0;if(Keyno=12)sg23=sg23-1;if(sg22=0&&sg23=-1)sg22=5;sg23=9; if(sg23!=0&&sg24=-1)sg23=sg23-1;sg
41、24=9; if(Keyno=10)flog=1;STATE=14;F=6; break;case 14: if(Keyno<10)sgn=Keyno;n+; if(sg24=2&&sg25>4)sg24=sg25=0;if(sg26>5)sg26=sg27=0;if(n>27)n=0;if(Keyno=11)sg25=sg25+1;if(sg25=6)sg24=sg25=0;if(Keyno=12)sg25=sg25-1;if(sg24!=0&&sg25=-1)sg24=sg24-1;sg25=9; if(sg24=0&&
42、;sg25=-1)sg24=2;sg25=3; if(Keyno=10)STATE=15; flog=0; break;case15:if(Keyno=11)sg27=sg27+1;if(sg27>9)sg27=sg27+1;sg28=0;if(sg26=6) sg26=sg27=0;if(Keyno=12)sg27=sg27-1;if(sg26=0&&sg27=-1)sg26=5;sg27=9; if(sg26!=0&&sg27=-1)sg26=sg26-1;sg27=9; if(Keyno=10)flog=1;STATE=2;F=0; break; /
43、 default: break;3.2.7 數(shù)碼管顯示子程序void SEG_Display(void)根據(jù)不同的F值,數(shù)碼管來顯示不同是時間if(F=-2) P0=XQnum;if(F=-1) P0=MBnum;if(F=0) P0=TimeTabnum;分別顯示的是心情、秒表、數(shù)字鐘if(F=1) P0=STabnum; if(F=2) P0=FTabnum; if(F=3) P0=STab1num;分別顯示的是一路定時開啟、關(guān)閉,二路定時開啟時間if(F=4) P0=FTab1num;if(F=5) P0=STab2num;if(F=6) P0=FTab2num;/分別顯示的是二路關(guān)閉,
44、三路開啟、關(guān)閉時間3.2.8 LED顯示子程序void LED_Display(void) switch(STATE)case 0:if(h=0)LED3=0;LED6=0;LED7=0;心情不好時,燈全滅if(h=1) LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1; break;心情好時燈全部亮case 2:LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;break;/數(shù)字鐘的時鐘狀態(tài)case 3:LED2=0;LED3=1;break; case 4:LED2=1;LED3=0;LED4=1;break;數(shù)字鐘的分鐘
45、狀態(tài)、一路定時開啟的的時鐘狀態(tài)case 5:LED2=0;LED3=1;break; case 6:LED2=1;LED3=0;break;一路定時開啟的的分鐘狀態(tài)、一路定時關(guān)閉的時鐘狀態(tài)case 7:LED2=0;LED3=1;break; case 8:LED2=1;LED3=0;LED4=0;LED5=1;break;二路路定時關(guān)閉的的分鐘狀態(tài)、二路定時開啟的時鐘狀態(tài)case 9:LED2=0;LED3=1;break; case 10:LED2=1;LED3=0;LED4=0;break;二路定時開啟的的分鐘狀態(tài)、二路定時關(guān)閉的時鐘狀態(tài)case 11:LED2=0;LED3=1;bre
46、ak; case 12:LED2=1;LED3=0;LED5=0;LED6=1;break;二路定時關(guān)閉的的分鐘狀態(tài)、三路路定時開啟的時鐘狀態(tài)case 13:LED2=0;LED3=1;break; case 14:LED2=1;LED3=0;LED5=0;break;三路定時開啟的的分鐘狀態(tài)、三路定時關(guān)閉的時鐘狀態(tài)case 15:LED2=0;LED3=1;break; default: break;三路定時關(guān)閉的的分鐘狀態(tài)第四章實驗結(jié)果和分析4.1 實驗使用的儀器設(shè)備與元件&4.1.1 實驗使用的儀器設(shè)備焊烙鐵、能夠給單片機燒入程序的電腦、電源4.1.2 實驗使用的元件如圖所示AB
47、CDr 1Port TypeDesignatorFootprintinstruction20.1 ufCT、C6.04、C8RADO 1電容30.33K1SIPS33。排陰r 40.33kR5AXIAL 0 3電阻SO.ufC3RADO 1電容GIkJ7SIPS化排阻7%R1、R3-R10AX1AL03電阻310KR2AXIALD.3電阻910ufC10RB-.1/.2電容W12MY1KTAL112M晶報1120pfCKC2RADO 1電答1274LM138JP4DIP1G3T譯碼器1374LS00JP1DIP14與非門1489551JP2DIP40單片機1574LSQ7JP5DIPU輸出緩沖
48、器167B05U1TO220H三端穩(wěn)壓器179013Q1Q8TOS2C三極直ieCOM2J5SIP2二腳樓線蹤子19COM3J6SIP3插針20COM2。J4SIP20插針21CON20J3SIP20插針22DIODED9DIDDE0.4小4。01二機管23DPY 7-SEG DP0S1DS41DIP1D一位其明梃二樵管24LEDD1DSSIP2發(fā)光二極管26RELAY-SPDTK1HKE+5U維電器26SW-PBRSTAN 6.6*6 5微動開關(guān)27SW-PBSiS11AN 6 5*6 5微動開關(guān)26上 4.2測試結(jié)果分析這次實驗中,在自己沒編寫程序前,用同學(xué)給的基本程序,輸入 +5V后,檢
49、 查電路板的焊接問題和數(shù)碼管的好壞, 接好后發(fā)現(xiàn)電路板是好的,首云顯示秒表 的發(fā)光二極管能夠一直閃亮;其次就是顯示電路通電標(biāo)志是二極管也能夠正常發(fā) 亮;再就是數(shù)碼管能夠完整的顯示,調(diào)加減鍵時,所有的數(shù)碼管都能夠顯示正確 的數(shù)據(jù),這說明數(shù)碼管是好的,焊接也問題。然后寫完程序后,燒入自己的程序, 再連接電路,所以的效果都與仿真中的效果相同,能夠顯示我所需的狀態(tài)。但是,就是當(dāng)用銀色發(fā)光二極管時,由于亮度太強,自己將其更改為另一種 顏色,雖然這是一件比較簡單的事,但這說明在焊電路板時,應(yīng)該注意元件的選 擇并且明白元件的屬性來減少調(diào)試中出現(xiàn)的問題。結(jié)束語對于本次課題-家用定時器的設(shè)計已經(jīng)完成了,達(dá)到了自己預(yù)想中的效果 了。定時器的選擇上選擇了 4個數(shù)碼管顯示當(dāng)前狀態(tài)時間,LED顯示目前狀態(tài), 通過3X4的陣列式鍵盤來設(shè)定時間,數(shù)字鐘、三路定時初始實現(xiàn)顯示為 0000, 然后通過鍵盤來輸入數(shù)字鐘和定時器的時間, 當(dāng)設(shè)定好時間后,當(dāng)定時器的時間與數(shù)字鐘時間第一次一樣時,表明一路定時開始了,此時LED7變亮,當(dāng)定時器時間再次與數(shù)字鐘時間一樣時,表明一路定時結(jié)束,同時LED7燈滅。LED7 表示是否
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計自動售水裝置
- 閱讀器課程設(shè)計
- 餐飲會員體系課程設(shè)計
- 水務(wù)的課程設(shè)計
- 2025年度煙草店特許經(jīng)營合同
- 2025年度高空作業(yè)現(xiàn)場安全教育培訓(xùn)及考核合同
- 2025年度租賃房屋租賃合同解除協(xié)議
- 二零二五年度酒店客房管理與服務(wù)標(biāo)準(zhǔn)合同書
- 計量課程設(shè)計題目
- 陽光玫瑰種植課程設(shè)計
- 語文-山東省2025年1月濟南市高三期末學(xué)習(xí)質(zhì)量檢測濟南期末試題和答案
- 2025年七年級下冊道德與法治主要知識點
- 亞馬遜項目合伙合同
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 地質(zhì)工作個人述職報告三篇
- 產(chǎn)品可追溯流程圖圖
- 形意拳九歌八法釋意
- 中國主要機場管制席位及頻率
- 電站壓力式除氧器安全技術(shù)規(guī)定
- 鉆孔地質(zhì)編錄
- 《腹瀉》ppt課件
評論
0/150
提交評論