版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)</b></p><p><b> 個(gè)性化電子時(shí)鐘設(shè)計(jì)</b></p><p><b> 目錄</b></p><p><b> 摘 要2</b></p><p><b> 一、電子時(shí)鐘2
2、</b></p><p> 1.1電子時(shí)鐘簡(jiǎn)介2</p><p> 1.2 電子時(shí)鐘的基本特點(diǎn)2</p><p> 1.3 電子時(shí)鐘的原理3</p><p> 二、 單片機(jī)識(shí)的相關(guān)知識(shí)3</p><p> 2.1 單片機(jī)簡(jiǎn)介3</p><p> 2.2 單片
3、機(jī)的發(fā)展史3</p><p> 1 . 4位單片機(jī)3</p><p> 2 . 8位單片機(jī)3</p><p> 3 . 16位單片機(jī)4</p><p> 4 . 32位單片機(jī)4</p><p> 5 . 64位單片機(jī)4</p><p> 2.3 單片機(jī)的特點(diǎn)4</
4、p><p> 2.4 AT89C51單片機(jī)介紹5</p><p> 三、 控制系統(tǒng)的硬件設(shè)計(jì)7</p><p> 3.1 單片機(jī)型號(hào)的選擇7</p><p> 3.2 數(shù)碼管顯示工作原理7</p><p> 3.3 74LS373介紹8</p><p> 3.4 整個(gè)電路
5、原理圖9</p><p> 四、 控制系統(tǒng)的軟件設(shè)計(jì)9</p><p><b> 4.1程序清單9</b></p><p> 4.2仿真結(jié)果15</p><p><b> 五、心得16</b></p><p><b> 六、參考文獻(xiàn)17<
6、;/b></p><p><b> 摘 要</b></p><p> 單片計(jì)算機(jī)即單片微型計(jì)算機(jī)。由RAM ,ROM,CPU構(gòu)成,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強(qiáng),廣泛應(yīng)用于智能產(chǎn)業(yè)和工業(yè)自動(dòng)化上。而51系列單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。這次課程設(shè)計(jì)通過對(duì)它的學(xué)習(xí),應(yīng)用,從而達(dá)到學(xué)習(xí)、設(shè)計(jì)、開發(fā)軟、硬的能力。&
7、lt;/p><p> 本設(shè)計(jì)主要設(shè)計(jì)了一個(gè)基于AT89C51單片機(jī)的電子時(shí)鐘。在數(shù)碼管通過一個(gè)控制鍵轉(zhuǎn)換來顯示相應(yīng)的時(shí)間和日期。并通過多個(gè)控制鍵用來實(shí)現(xiàn)時(shí)間和日期的調(diào)節(jié)。應(yīng)用keil軟件實(shí)現(xiàn)單片機(jī)電子時(shí)鐘系統(tǒng)的程序設(shè)計(jì),用Proteus的ISIS軟件實(shí)現(xiàn)仿真。該方法仿真效果真實(shí)、準(zhǔn)確,節(jié)省了硬件資源。</p><p> 關(guān)鍵字:?jiǎn)纹瑱C(jī) 時(shí)鐘 鍵盤控制</p><p&
8、gt;<b> 一、電子時(shí)鐘 </b></p><p> 1.1電子時(shí)鐘簡(jiǎn)介 </p><p> 1957年,Ventura發(fā)明了世界上第一個(gè)電子表,從而奠定了電子時(shí)鐘的基礎(chǔ),電子時(shí)鐘開始迅速發(fā)展起來?,F(xiàn)代的電子時(shí)鐘是基于單片機(jī)的一種計(jì)時(shí)工具,采用延時(shí)程序產(chǎn)生一定的時(shí)間中斷,用于
9、一秒的定義,通過計(jì)數(shù)方式進(jìn)行滿六十秒分鐘進(jìn)一,滿六十分小時(shí)進(jìn)一,滿二十四小時(shí)小時(shí)清零。從而達(dá)到計(jì)時(shí)的功能,是人民日常生活補(bǔ)課缺少的工具。</p><p> 1.2 電子時(shí)鐘的基本特點(diǎn) </p><p> 現(xiàn)在高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術(shù),因此走時(shí)精
10、度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計(jì)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替指針顯示進(jìn)而顯示時(shí)間和日期,減小了誤差,這種表具有時(shí)、分、秒顯示時(shí)間的功能和年月日顯示日期的功能,還可以進(jìn)行校對(duì),片選的靈活性好。</p><p> 1.3 電子時(shí)鐘的原理 </p><p> 該電子時(shí)鐘由AT89C51,74LS373,BUTTON,數(shù)碼管等構(gòu)成,采
11、用晶振電路作為驅(qū)動(dòng)電路,由延時(shí)程序和循環(huán)程序產(chǎn)生的一秒定時(shí),達(dá)到時(shí)分秒的計(jì)時(shí),六十秒為一分鐘,六十分鐘為一小時(shí),滿二十四小時(shí)為一天,滿三十天(閏年二月滿二十九天,平年二月滿二十八天)為一個(gè)月,滿十二個(gè)月為一年。電路中的鍵控1實(shí)現(xiàn)“年”和“分”的調(diào)節(jié),鍵控2實(shí)現(xiàn)“月”和“時(shí)”的調(diào)節(jié),鍵控3實(shí)現(xiàn)“日”和“分”的調(diào)節(jié)。每按一次就加一。</p><p> 二、 單片機(jī)識(shí)的相關(guān)知識(shí)
12、 </p><p> 2.1 單片機(jī)簡(jiǎn)介 </p><p> 單片機(jī)全稱為單片機(jī)微型計(jì)算機(jī)(Single Chip Microsoftcomputer)。從應(yīng)用領(lǐng)域來看,單片機(jī)主要用來控制,所以又稱為微控制器(Microcontroller Unit)或嵌入式控制器。單片機(jī)是將計(jì)算機(jī)的基本部件微型化并集成在一塊芯片上的微型計(jì)算機(jī)。</p>&
13、lt;p> 2.2 單片機(jī)的發(fā)展史</p><p> 1 . 4位單片機(jī) </p><p> 1975年,美國(guó)德克薩斯儀器公司首次推出4位單片機(jī)TMS-1000;此后,各個(gè)計(jì)算機(jī)公司競(jìng)相推出四位單片機(jī)。日本松下公司的MN1400系列,美國(guó)洛克威爾公司的PPS/1
14、系列等。四位單片機(jī)的主要應(yīng)用領(lǐng)域有:PC機(jī)的輸入裝置,電池充電器,運(yùn)動(dòng)器材,帶液晶顯示的音/視頻產(chǎn)品控制器,一般家用電器的控制及遙控器,電子玩具,鐘表,計(jì)算器,多功能電話等。 </p><p> 2 . 8位單片機(jī)
15、 </p><p> 1972年,美國(guó)Intel公司首先推出8位微處理器8008,并于1976年9月率先推出MCS-48系列單片機(jī)。在這以后,8位單片機(jī)紛紛面市。例如,莫斯特克和仙童公司合作生產(chǎn)的3870系列,摩托羅拉公司生產(chǎn)的6801系列等。隨著集成電路工藝水平的提高,一些高性能的8位單片機(jī)相繼問世。例如,1978年摩托羅拉公司的MC6801系列及齊洛格公司的Z8系列,1979年NEC公司
16、的UPD78XX系列。這類單片機(jī)的尋址能力達(dá)64KB,片內(nèi)ROM容量達(dá)4--8KB,片內(nèi)除帶有并行I\O口外,還有串行I\O口,甚至還有A\D轉(zhuǎn)化器功能。8位單片機(jī)由于功能強(qiáng),被廣泛用于自動(dòng)化裝置、智能儀器儀表、智能接口、過程控制、通信、家用電器等各個(gè)領(lǐng)域。</p><p> 3 . 16位單片機(jī)
17、 </p><p> 1983年以后,集成電路的集成度可達(dá)幾十萬只管/片,各系列16位單片機(jī)紛紛面市。這一階段的代表產(chǎn)品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美國(guó)國(guó)家半導(dǎo)體公司推出的HPC16040,NEC公司推出的783XX系列等。16位單片機(jī)主要用于工業(yè)控制,智能儀器儀表,便攜式設(shè)備等場(chǎng)合。</p><
18、;p> 4 . 32位單片機(jī) </p><p> 隨著高新技術(shù)只智能機(jī)器人,光盤驅(qū)動(dòng)器,激光打印機(jī),圖像與數(shù)據(jù)實(shí)時(shí)處理,復(fù)雜實(shí)時(shí)控制,網(wǎng)絡(luò)服務(wù)器等領(lǐng)域的應(yīng)用與發(fā)展,20世紀(jì)80年代末推出了32位單片機(jī),如Motorlora公司的MC683XX系列,Intel的80960
19、系列,以及近年來流行的ARM系列單片機(jī)。32位單片機(jī)是單片機(jī)的發(fā)展趨勢(shì),隨著技術(shù)的發(fā)展及開發(fā)成本和產(chǎn)品價(jià)格的下降,將會(huì)與8位單片機(jī)并駕齊驅(qū)。</p><p> 5 . 64位單片機(jī) </p><p> 近年來,64位單片機(jī)在引擎控制,智能機(jī)器人,磁盤控制,語音圖
20、像通信,算法密集的實(shí)時(shí)控制場(chǎng)合已有應(yīng)用,如英國(guó)Inmos公司的Transputer T800是高性能的64位單片機(jī)。</p><p> 2.3 單片機(jī)的特點(diǎn) </p><p> 1 . 單片機(jī)的存儲(chǔ)器ROM和RAM時(shí)嚴(yán)格區(qū)分的。ROM稱為程序存儲(chǔ)器,只存放程序,固定常數(shù),及數(shù)據(jù)表格。RAM則為數(shù)據(jù)
21、存儲(chǔ)器,用作工作區(qū)及存放用戶數(shù)據(jù)。 </p><p> 2 . 采用面向控制的指令系統(tǒng)。為滿足控制需要,單片機(jī)有更強(qiáng)的邏輯控制能力,特別是單片機(jī)具有很強(qiáng)的位處理能力。 </p><p> 3 . 單片機(jī)的I/O口通常時(shí)多功能的。由于單片機(jī)芯片上引腳數(shù)目有限,為了解決實(shí)際引腳數(shù)和需要的信號(hào)線的矛盾,采用了引腳
22、功能復(fù)用的方法,引腳處于何種功能,可由指令來設(shè)置或由機(jī)器狀態(tài)來區(qū)分。 </p><p> 4 . 單片機(jī)的外部擴(kuò)展能力很強(qiáng)。在內(nèi)部的各種功能部件不能滿足應(yīng)用的需求時(shí),均可在外部進(jìn)行擴(kuò)展,與許多通用的微機(jī)接口芯片兼容,給應(yīng)用系統(tǒng)設(shè)計(jì)帶來了很大的方便。</p><p> 2.4AT89C51單片機(jī)介紹
23、 </p><p> VCC:電源;GND:接地。</p><p> P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)
24、行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位
25、雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存 儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位
26、地址信號(hào)和控制信號(hào)。</p><p> 圖1 AT89C51單片機(jī)</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> P3口也可作為AT89C51的一些特
27、殊功能口,如下表所示:</p><p> P3.0 RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(記時(shí)器0外部輸入)</p>&
28、lt;p> P3.5 T1(記時(shí)器1外部輸入)</p><p> P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)</p><p> P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)
29、間。</p><p> ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE 端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器 時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行
30、MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p> EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)(0000H-FFF
31、FH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí), /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> 三、 控制系統(tǒng)的硬件設(shè)計(jì)</p><p> 3.1 單片機(jī)型號(hào)的選擇
32、 </p><p> 通過對(duì)多種單片機(jī)性能的分析,最終認(rèn)為89C51是最理想的電子時(shí)鐘開發(fā)芯片。89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的89C51是一種高效微控制器,而且它與MCS
33、-51兼容,且具有4K字節(jié)可編程閃爍存儲(chǔ)器和1000寫/擦循環(huán),數(shù)據(jù)保留時(shí)間為10年等特點(diǎn),是最好的選擇。</p><p> 3.2 數(shù)碼管顯示工作原理</p><p> 數(shù)碼管是一種把多個(gè)LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽型,一種是共陰型。共陽型就是把多個(gè)LED顯示段的陽極接在一起,又稱為公共端。共陰型就是把多個(gè)LED顯示段的陰極接在一起,即為公共商。陽極即為二
34、極管的正極,又稱為正極,陰極即為二極管的負(fù)極,又稱為負(fù)極。通常的數(shù)碼管又分為8段,即8個(gè)LED顯示段,這是為工程應(yīng)用方便如設(shè)計(jì)的,分別為A、B、C、D、E、F、G、DP,其中DP 是小數(shù)點(diǎn)位段。而多位數(shù)碼管,除某一位的公共端會(huì)連接在一起,不同位的數(shù)碼管的相同端也會(huì)連接在一起。即,所有的A段都會(huì)連在一起,其它的段也是如此,這是實(shí)際最常用的用法。數(shù)碼管顯示方法可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。
35、動(dòng)態(tài)顯示的原理是,各個(gè)數(shù)碼管的相同段連接在一起,共同占用8 位段引管線;每位數(shù)碼管的陽極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個(gè)數(shù)碼管公共端加有效信號(hào),在此同時(shí)給出該數(shù)碼管加有效的數(shù)據(jù)信號(hào),當(dāng)全段掃描速度大于視覺暫留速度時(shí),顯示就會(huì)清晰顯示出來。</p><p><b> 圖2 共陰數(shù)碼管</b></p><p> 3.3 74LS373介紹:&l
36、t;/p><p> 373為三態(tài)輸出的八 D 透明鎖存器,373 的輸出端 O0~O7 可直接與總線相連。 </p><p> 當(dāng)三態(tài)允許控制端 OE 為低電平時(shí),O0~O7 為正常邏輯狀態(tài),可用來驅(qū)動(dòng)負(fù)載或總 線。當(dāng) OE 為高電平時(shí),O0~O7 呈高阻態(tài),即不驅(qū)動(dòng)總線,也不為總線的負(fù)載,鎖存器內(nèi)部的邏輯操作不受影響。 當(dāng)鎖存允許端 LE 為高電平時(shí),O 隨數(shù)據(jù) D 而變。當(dāng) LE 為
37、低電平時(shí),O 被鎖存在 已建立的數(shù)據(jù)電平。當(dāng) LE 端施密特觸發(fā)器的輸入滯后作用,使交流和直流噪聲抗擾度被改善 400mV。 </p><p><b> 引出端符號(hào): </b></p><p> D0~D7 數(shù)據(jù)輸入端;OE 三態(tài)允許控制端(低電平有效;LE 鎖存允許端;O0~O7 輸出端</p><p> 圖3 74LS373<
38、/p><p> 3.4 整個(gè)電路原理圖 </p><p> 圖4 系統(tǒng)電路原理圖</p><p> 四、 控制系統(tǒng)的軟件設(shè)計(jì) </p><p><b> 4.1程序清單&
39、lt;/b></p><p> #include<reg52.h> </p><p> #include<stdio.h></p><p> sbit P20=P2^0; /****定義端口****/</p><p> sbit khour=P3^0;
40、</p><p> sbit kmin=P3^1;</p><p> sbit knian=P3^2;</p><p> sbit tiaonian=P3^3 ;</p><p> sbit speaker=P3^7 ;</p><p> int j=-1 ; /*****定義變量,j用以控制
41、掃描********/</p><p> bit flag=0,leap=0; /*****定義flag控制時(shí)分秒和年月日的顯示,leap判斷是否為閏年***/</p><p> char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;</p><p> char dayshi=0,dayge
42、=0,monthshi=0,monthge=0,yearshi=0,yearge=0 ;</p><p> unsigned int num=0,sec=0,min=0,hour=0; /****設(shè)置初始時(shí)間為00時(shí)0分0秒****/</p><p> unsigned int day=1,month=1,year=10; /****設(shè)置初始日期為2010年1月1
43、日****/</p><p> char saomiao[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; </p><p> /****掃描數(shù)組,控制位選******/</p><p> char shijian[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
44、0x90};</p><p> /*******共陰數(shù)碼管的0,1,2,3,4,5,6,7,8,9********/</p><p> void delay(unsigned int z) /*******延時(shí)子程序******/</p><p> { unsigned int x,y;</p>
45、;<p> for(x=z;x>0;x--)</p><p> for(y=10;y>0;y--) ;</p><p><b> } </b></p><p> void timer() interrupt 1 /*********定時(shí)器中斷0********/
46、</p><p><b> {</b></p><p> TH0=(65535-5000)/256; /******重新裝入初值*****/</p><p> TL0=(65535-5000)%256;</p><p> num++;
47、 </p><p><b> j++;</b></p><p> if((year%4==0&&year%100!=0)||(year%400==0)) /*******判斷是否為閏年******/</p><p> leap=1; /*****
48、**閏年,使leap=1******/</p><p> else </p><p> leap=0; /*******平年,使leap=0******/</p><p> if(num==150) /*****實(shí)驗(yàn)微調(diào)
49、得num=150時(shí)大概為1s******/</p><p> {num=0; </p><p> sec++; /****秒自動(dòng)加1*****/ </p><p>
50、<b> }</b></p><p> if(sec==60)</p><p><b> { </b></p><p><b> sec=0;</b></p><p> min++; /****60s時(shí),
51、分自動(dòng)加1,秒歸0*****/ </p><p><b> }</b></p><p> if(min==60)</p><p><b> {</b></p><p><b> min=0;</b></p><p> hour++;
52、 /****60分時(shí),小時(shí)自動(dòng)加1,分歸0*****/ </p><p><b> }</b></p><p> if(hour==24)</p><p><b> {</b></p><p><b> hour=0;</b>&
53、lt;/p><p><b> min=0;</b></p><p><b> sec=0;</b></p><p> day++; /****24時(shí),天自動(dòng)加1,時(shí)分秒歸0*****/</p><p><b> }</b><
54、/p><p> /*************************************************************************************************************************************************************************月份的判斷,平年時(shí)的2月和閏年時(shí)的2月,以及30天和31天的判
55、斷**************************************************************************************************************************************************************if((leap==1&&month==2&&day==30)||(leap==0&
56、;&month==2&&day==29))</p><p><b> {</b></p><p><b> day=1;</b></p><p> month++; /*****2月28天或29天時(shí)月自加1*****/</p><p><
57、;b> }</b></p><p> if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)</p><p><b> {</b></p><p> if(day==32) </p><p>&
58、lt;b> {</b></p><p><b> day=1;</b></p><p> month++; /*****月為31天達(dá)到時(shí)月自動(dòng)加1*****/</p><p><b> }</b></p><p><b> }</b>&l
59、t;/p><p> if( month==4||month==6||month==9||month==11)</p><p><b> {</b></p><p> if(day==31)</p><p><b> {</b></p><p><b> day
60、=1;</b></p><p> month++; /*****月為30天達(dá)到時(shí)月自動(dòng)加1*****/</p><p><b> }</b></p><p><b> }</b></p><p> if(month==13)</p><p&g
61、t;<b> {</b></p><p><b> year++;</b></p><p> month=1; /*********新的一年的開始**********/ </p><p><b> }</b></p><p> secge
62、=sec%10;</p><p> secshi=sec/10;</p><p> minge=min%10;</p><p> minshi=min/10;</p><p> hourge=hour%10;</p><p> hourshi=hour/10;</p><p> da
63、yge=day%10;</p><p> dayshi=day/10;</p><p> monthge=month%10;</p><p> monthshi=month/10;</p><p> yearge=year%10;</p><p> yearshi=year/10;</p>&l
64、t;p> P1=saomiao[j]; /*******數(shù)碼管的位選設(shè)置*********/</p><p> if(flag==1) /*******flag=1,顯示年月日*******/</p><p><b> {</b></
65、p><p> if(P1==0x80) P2=shijian[dayge];</p><p> if(P1==0x40) P2=shijian[dayshi];</p><p> if(P1==0x20) P2=0xbf; /******年與月之間的分隔符“—”的顯示*****/</p><p>
66、 if(P1==0x10) P2=shijian[monthge];</p><p> if(P1==0x08) P2=shijian[monthshi];</p><p> if(P1==0x04) P2=0xbf; /******月與天之間的分隔符“—”的顯示*****/</p><p> if(P1==0x02)
67、 P2=shijian[yearge];</p><p> if(P1==0x01) P2=shijian[yearshi];</p><p><b> }</b></p><p> else /*******flag=0,顯示時(shí)分秒*******/
68、</p><p><b> {</b></p><p> if(P1==0x80) P2=shijian[secge];</p><p> if(P1==0x40) P2=shijian[secshi];</p><p> if(P1==0x20) P2=0xbf;</p><
69、p> if(P1==0x10) P2=shijian[minge];//xian shi </p><p> if(P1==0x08) P2=shijian[minshi];</p><p> if(P1==0x04) P2=0xbf;</p><p> if(P1==0x02&&hour<24) P2=sh
70、ijian[hourge]; /*****顯示小時(shí)0~23*****/</p><p> if(P1==0x01&&hour<24) P2=shijian[hourshi];</p><p><b> }</b></p><p><b> if(j==7)</b></p&g
71、t;<p><b> {</b></p><p><b> j=-1;</b></p><p><b> }</b></p><p><b> }</b></p><p> void timer1() interrupt 0&
72、lt;/p><p> /*************************************************************************************************************************************************************外部中斷0,設(shè)置標(biāo)志flag, 按鍵未按下,flag=0,顯示時(shí)分秒,按鍵按下,
73、flag=1,顯示年月日*************************************************************************************************************************************************************/</p><p><b> {</b></p&
74、gt;<p> flag=!flag; /******按下knian按鈕****flag=1,x顯示年月日*******/</p><p><b> }</b></p><p> void control() /*******時(shí)分的調(diào)整子程序********/<
75、;/p><p><b> {</b></p><p> if(flag==0) /****顯示時(shí)分秒的情況下做時(shí)分的調(diào)整******/</p><p> {if(kmin==0) </p><p><b> {</
76、b></p><p><b> min++;</b></p><p> while(kmin==0);</p><p> if(min==60)</p><p><b> min=0;</b></p><p><b> }</b><
77、/p><p> if(khour==0)</p><p><b> {</b></p><p><b> hour++;</b></p><p> // sec=0xc0;</p><p> while (khour==0);</p><p>
78、 if(hour>23)</p><p><b> hour=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(flag==1) /********顯示年月日的情況下做年月日的調(diào)整*
79、*********/</p><p><b> {</b></p><p> if(kmin==0)</p><p><b> {</b></p><p><b> day++;</b></p><p> while(kmin==0);<
80、;/p><p><b> }</b></p><p> if(khour==0)</p><p><b> {</b></p><p><b> month++;</b></p><p> while (khour==0);</p>
81、<p> if(month>12)</p><p><b> month=1;</b></p><p><b> }</b></p><p> if(tiaonian==0&&speaker==1)</p><p><b> {</b>
82、;</p><p><b> year++;</b></p><p> while (tiaonian==0);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&g
83、t;</p><p> void baoshi() /******整點(diǎn)報(bào)時(shí)子程序********/ </p><p><b> { </b></p><p> if(min==0&&sec<10) /***
84、**整點(diǎn)鬧鐘響,響10秒*****/</p><p><b> {</b></p><p> speaker=0; </p><p> delay(1) ;</p><p> speaker=1 ;</p><p><b&
85、gt; }</b></p><p><b> else</b></p><p> speaker=1;</p><p><b> }</b></p><p> void alarm() / ******鬧鐘子
86、程序*******/</p><p><b> { </b></p><p> bit ring=1;</p><p> char xx=10;</p><p> if(tiaonian==0) </p><p><b> {</b></p>&l
87、t;p> ring=0; </p><p> delay(100);</p><p> while(tiaonian==0); /******關(guān)閉正在叫的鬧鐘*****/</p><p><b> }</b></p&
88、gt;<p> if(hour==6&&min==xx&&ring==1) /*******鬧鐘按時(shí)鳴叫1分鐘******/ </p><p><b> {</b></p><p> speaker=0;</p><p> delay(1) ;</p>&
89、lt;p> speaker=1 ;</p><p><b> }</b></p><p> if(hour==6&&min==xx+1) /*****1分鐘后鬧鐘停止鳴叫*******/</p><p><b> {</b></p><p> s
90、peaker=1;</p><p><b> }</b></p><p><b> } </b></p><p> void main()</p><p><b> {</b></p><p> TMOD=0x01;
91、 /*******設(shè)置工作方式******/</p><p><b> TR0=1;</b></p><p> P2=0; </p><p> TH0=(65535-5000)/256; /******裝入計(jì)時(shí)初值*****/</p
92、><p> TL0=(65535-5000)%256;</p><p><b> IE= 0x82;</b></p><p> IP=0x00; /*******設(shè)置中斷優(yōu)先級(jí)*****/</p><p><b> EA=1;</b></
93、p><p> EX0=1; /****開外部中斷0******/</p><p><b> while(1)</b></p><p><b> {</b></p><p> control() ;</p><p>&
94、lt;b> alarm() ;</b></p><p> baoshi() ;</p><p><b> }</b></p><p><b> }</b></p><p><b> 4.2仿真結(jié)果</b></p><p>
95、圖5.a 時(shí)間仿真圖(此時(shí)時(shí)間為0點(diǎn)10秒)</p><p> 圖5.b 日期仿真圖(此時(shí)日期為2010年1月1日)</p><p><b> 五、心得</b></p><p> 進(jìn)過不懈的努力,我們順利完成了這次單片機(jī)課程設(shè)計(jì)課題中的個(gè)性化電子時(shí)鐘設(shè)計(jì),</p><p> 本次仿真總的來說是實(shí)現(xiàn)了預(yù)期的效果,但
96、是喇叭把的效果不是很好。功能還不夠完善,設(shè)計(jì)還比較簡(jiǎn)單。不過通過此次設(shè)計(jì)我們還是學(xué)會(huì)了不少東西。首先,學(xué)會(huì)了keil和proteus軟件。</p><p> 然后,由于此次程序是用C語言編寫的,以前的C語言知識(shí)的到了鞏固。同時(shí),我們還領(lǐng)悟到了團(tuán)隊(duì)精神的真諦。</p><p> 通過這次的設(shè)計(jì)使我認(rèn)識(shí)到本人對(duì)單片機(jī)方面的知識(shí)知道的太少了,對(duì)于書本上的很多知識(shí)還不能靈活運(yùn)用,尤其是對(duì)程序設(shè)
97、計(jì)語句的理解和運(yùn)用,不能夠充分理解每個(gè)語句的具體含義</p><p> 總的來說,本次的設(shè)計(jì)使我從中學(xué)到了最重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我所學(xué)到的知識(shí)運(yùn)用到我以后的工作中去。在大學(xué)的課堂的學(xué)習(xí)只是在給我們灌輸專業(yè)知識(shí),而我們應(yīng)把所學(xué)的用到我們現(xiàn)實(shí)的生活中去,此次的電子時(shí)鐘設(shè)計(jì)給我奠定了一個(gè)實(shí)踐基礎(chǔ),我會(huì)在以后的學(xué)習(xí)、生活中磨練自己,使自己適應(yīng)于以后的競(jìng)爭(zhēng),同時(shí)在查找資料的過程中我也學(xué)到了許多
98、新的知識(shí),在和同學(xué)協(xié)作過程中增進(jìn)同學(xué)間的友誼,使我對(duì)團(tuán)隊(duì)精神的積極性和重要性有了更加充分的理解。</p><p> 最后,我覺得應(yīng)該感謝xx老師在平時(shí)課堂上的啟發(fā)。使得我們?cè)谡n程設(shè)計(jì)過程中,鞏固和學(xué)習(xí)了單片機(jī)知識(shí)。相信這對(duì)我以后的課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)將會(huì)有很大的幫助!</p><p><b> 六、參考文獻(xiàn)</b></p><p> [1]
溫馨提示
- 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. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)論文---電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 電子時(shí)鐘單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)——電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)——電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)----電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)-電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)模擬電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--- 單片機(jī)電子時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)模擬電子時(shí)鐘設(shè)計(jì)
- 數(shù)字電子時(shí)鐘-單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘.doc
- 單片機(jī)課程設(shè)計(jì)報(bào)告---電子時(shí)鐘
評(píng)論
0/150
提交評(píng)論