版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 《單片機應用》</b></p><p><b> 課程設計報告</b></p><p> 教學院(部) 電氣與電子信息工程學院 </p><p> 教 研 室 電氣自動化 </p><p>
2、; 指 導 教 師 </p><p> 課程設計時 間 2012.5.7~2012.5.11 </p><p> 課程設計班 級 </p><p> 學 號
3、 </p><p> 姓 名 </p><p> 同 組 人 </p><p><b> 課程設計任務書</b></p>&
4、lt;p> 一、課程設計題目: 單片機應用 </p><p><b> 二、課程設計內容</b></p><p> 1. 根據具體設計課題的技術指標和給定條件,以單片機為核心器件,能獨立而正確地進行方案論證和電路設計,要求概念清楚、方案合理、方法正確、步驟完整;</p><p> 2. 熟悉、掌握各種外圍接口電路芯片的工作
5、原理和控制方法;</p><p> 3. 熟練使用單片機匯編語言進行軟件設計;</p><p> 4. 熟練使用Proteus、Keil軟件進行仿真電路測試;</p><p> 5. 熟練使用Protel軟件設計印刷電路板;</p><p> 6. 學會查閱有關參考資料和手冊,并能正確選擇有關元器件和參數;</p>&l
6、t;p> 7. 編寫設計說明書,參考畢業(yè)設計論文格式撰寫設計報告。</p><p><b> 三、進度安排</b></p><p><b> 1.時間安排</b></p><p><b> 四、基本要求</b></p><p> (1)根據要求確定系統(tǒng)設計方案;
7、</p><p> ?。?)繪制系統(tǒng)框圖、系統(tǒng)原理總圖,印刷電路板圖,列出元器件明細表;</p><p> ?。?)計算電路參數和選擇元器件,畫出軟件框圖,列出程序清單;</p><p> ?。?)仿真,測試與修改調整;</p><p> ?。?)誤差分析與調整;</p><p> ?。?)寫出使用說明書;</p
8、><p> (7)對設計進行全面總結,寫出課程設計報告。</p><p> 五、課程設計考核辦法與成績評定</p><p> 六、課程設計參考資料</p><p> [1]電氣與電子信息工程學院.單片機實驗指導書 </p><p> [2]熊靜琪.計算機控制技術.北京:電子工業(yè)出版社,2003.</p>
9、;<p> [3]黃忠霖.控制系統(tǒng)MATIAB計算及仿真.北京:國防工業(yè)出版社, 2004.</p><p> [4]彭為等.單片機典型系統(tǒng)設計實例精講. 北京:電子工業(yè)出版社,2007</p><p> [5]王慶利等.單片機設計案例實踐教程.北京:北京郵電大學出版社,2008</p><p> [6]韓志軍等.單片機應用系統(tǒng)設計——入門向導
10、與設計實例.北京:機械工業(yè)出版社,2005</p><p> [7]皮大能等. 單片機課程設計指導書. 北京:北京理工大學出版社,2010</p><p> 指導教師: 陶彪 胡薔 </p><p><b> 摘要</b></p><p> 本次課程設計是在單片機授課結束的情況下,通過老師的指導
11、和小組同學的協(xié)助,獨立自主的完成項目設計,我們小組選定的是定時鬧鐘的設計,下面簡單闡述一下該項目的設計思路。</p><p> 利用動態(tài)數碼管作為顯示器,K20-K27作為輸入按鍵,蜂鳴器作為聲音輸出制作一個定時鬧鐘。</p><p><b> 最后結果要求做到:</b></p><p><b> 1、正確顯示時分。</b
12、></p><p> 2、可以利用按鈕調整時間和設定鬧鐘時間。</p><p> 3、當時間到達設定的鬧鐘時間時,蜂鳴器發(fā)出嘀、嘀、嘀的報警聲。</p><p> 4、通過串口在PC上設定時間和鬧鐘。</p><p> 關鍵字:定時鬧鐘 </p><p><b> 目錄</b>
13、</p><p><b> 1 概述5</b></p><p> 2主要硬件介紹及電路原理設計6</p><p> 2.1 STC89C52RC單片機簡要介紹7</p><p> 2.2鍵盤和LED數碼管顯示器簡介8</p><p> 2.3主要電路原理與設計9</p&g
14、t;<p><b> 3 軟件設計11</b></p><p><b> 3.1 概述12</b></p><p> 3.2 主模塊的設計12</p><p> 3.3 基本顯示模塊設計12</p><p> 3.4 時間設定模塊設計13</p>&l
15、t;p> 3.5 鬧鈴功能的實現(xiàn)14</p><p> 4.Proteus軟件仿真15</p><p> 5課程設計體會17</p><p><b> 參考文獻18</b></p><p><b> 附:程序清單19</b></p><p><
16、b> 1.概述</b></p><p> 本設計是定時鬧鐘的設計,由單片機AT89C51芯片和LED數碼管為核心,輔以必要的電路,構成的一個單片機電子定時鬧鐘。</p><p> 定時鬧鐘設計可采用數字電路實現(xiàn),也可以采用單片機來完成。定時鬧鐘是用數字集成電路構成的,用數碼管顯示“時”,“分”,“秒”的現(xiàn)代計時裝置。單片機具有集成度高、功能強、通用性好、特別是它能耗
17、低、價格便宜、可靠性高、抗干擾能力強和使用方便等獨特的優(yōu)點,所以單片機現(xiàn)在廣泛的應用到家用電器、機電產品、兒童玩具、機器人、辦公自動化產品等領域。所以在該設計中采用單片機利用AT89C51,它是低功耗、高性能的CMOS型8位單片機。片內帶有4KB的Flash存儲器,且允許在系統(tǒng)內改寫或用編程器編程。另外, AT89C51的指令系統(tǒng)和引腳與8051完全兼容,片內有128B 的RAM、32條I/O口線、2個16位定時計數器、5個中斷源、一個
18、全雙工串行口等。AT89C51單片機結合七段顯示器設計的簡易定時鬧鈴時鐘,可以設置現(xiàn)在的時間及顯示鬧鈴設置時間,若時間到則發(fā)出一陣聲響,進—步可以擴充控制電器的啟停。</p><p> 設計內容包括了秒信號發(fā)生器、時間顯示電路、按鍵電路、供電電源以及鬧鈴指示電路等幾部分的設計。采用四個開關來控制定時鬧鐘的工作狀態(tài),分別為:K1、設置時間和鬧鐘的小時;K2、設置小時以及設置鬧鐘的開關;K3、設置分鐘和鬧鐘的分鐘;
19、K4、設置完成退出。</p><p> 課設準備中根據具體的要求,查找資料,然后按要求根據已學過的時鐘程序編寫定時鬧鐘的程序,依據程序利用proteus軟件進行了仿真試驗,對出現(xiàn)的問題進行分析和反復修改源程序,最終得到正確并符合要求的結果。</p><p> 設計完成的定時鬧鐘達到課程設計的要求,在到達定時的時間便立即發(fā)出蜂鳴聲音,持續(xù)一分鐘。顯示采用的六位數碼管電路,如果亮度感覺不夠
20、,可以通過提升電阻來調節(jié),控制程序中延遲時間的長短,可以獲得不同的效果。也可以改蜂鳴器為繼電器,通過控制繼電器從而進一步擴展的來控制一些家電開關。</p><p> 2.主要硬件介紹及電路原理設計</p><p> 2.1 STC89C52RC單片機簡要介紹</p><p> 在單片機應用系統(tǒng)中,單片機是整個系統(tǒng)的核心,對整個系統(tǒng)的信息輸入、處理、信息輸出進行
21、控制。與單片機配套的有相應的復位電路、時鐘電路以及擴展的存儲器和I\O接口,使單片機應用系統(tǒng)能夠運行。</p><p> 在一個單片機應用系統(tǒng)中,往往都會輸入信息和顯示信息,這就涉及鍵盤和顯示器。在單片機應用系統(tǒng)中,一般都根據系統(tǒng)的要求配置相應的鍵盤和顯示器。配置鍵盤和顯示器一般都沒有統(tǒng)一的規(guī)定,有的系統(tǒng)功能復雜,需輸入的信息和顯示的信息量大,配置的鍵盤和顯示器功能相對強大,而有些系統(tǒng)輸入/輸出的信息少,這時可
22、能用幾個按鍵和幾個LED指示燈就可以進行處理了。在單片機應用系統(tǒng)在中配置的鍵盤可以是獨立鍵盤,也可能是矩陣鍵盤。顯示器可以是LED指示燈,也可以是LED數碼管,也可以是LCD顯示器,還可以使用CRT顯示器。單片機應用系統(tǒng)中鍵盤一般用的比較多的是矩陣鍵盤,顯示器用的比較多的是LED數碼管還LCD顯示器。</p><p> 2.2 鍵盤和LED數碼管顯示器簡介</p><p> 鍵盤是單片
23、機應用系統(tǒng)中最常用的輸入設備,在單片機應用系統(tǒng)實現(xiàn)簡單的人機通信。鍵盤實際上是一組按鍵開關的集合,平時按鍵開關總是處于斷開狀態(tài),當按下鍵時它才閉合。鍵盤的結構形式一般有兩種:獨立式鍵盤和矩陣式鍵盤。矩陣式鍵盤的工作方式有3種:查詢工作方式、定時掃描工作方式和中斷工作方式。</p><p> LED數碼管顯示器在單片機應用系統(tǒng)中,經常用到LED數碼管作為顯示輸出設備,LED數碼管顯示器雖然顯示信息簡單,但它具有顯
24、示清晰、亮度高、使用電壓低、壽命長、與單片機接口方便等特點,基本上能夠滿足單片機應用系統(tǒng)的需要,所以在單片機應用系統(tǒng)中經常用到。LED數碼管顯示器是由發(fā)光二極管按一定的結構組合起來的顯示器件。在單片機應用系統(tǒng)中通常使用的是8段式LED數碼管顯示器,它有共陰極和共陽極兩種。所謂譯碼方式是指由顯示字符轉換得到對應的字段碼的方式。對于LED數碼管顯示器,通常的譯碼方式</p><p> 有兩種:硬件譯碼方式和軟件譯碼
25、方式。LED數碼管在顯示時,通常有兩種顯示方式:靜態(tài)顯示方式和動態(tài)顯示方式。在使用時可以把它們組合起來。在實際應用時,如果數碼管個數較少,通常用硬件譯碼靜態(tài)顯示,在數碼管個數較多時,則通常用軟件譯碼動態(tài)顯示。</p><p> 2.3主要電路原理設計</p><p> ?。?)系統(tǒng)硬件電路的設計:</p><p> 電路是由控制部分和顯示部分兩大部分組成。利用單
26、片機程序進行控制,單片機以晶體振蕩器的振蕩周期(或外部引入的時鐘周期)為最小的時序單位,片內的各種微操作都以此周期為時序基準。振蕩頻率二分頻后形成狀態(tài)周期或稱s周期,所以,1個狀態(tài)周期包含有2個振蕩周期。振蕩頻率foscl2分頻后形成機器周期MC。所以,1個機器周期包含有6個狀態(tài)周期或12個振蕩周期。1個到4個機器周期確定一條指令的執(zhí)行時間,這個時間就是指令周期。AT89S52單片機指令系統(tǒng)中,各條指令的執(zhí)行時間都在1個到4個機器周期之
27、間。</p><p> ,并通過數碼管進行顯示單片機普遍采用鎖相環(huán)技術,使單片機的時鐘頻率可由程序控制。鎖相環(huán)允許用戶在片外使用頻率較低的晶振,可以很大地減小板級噪聲;而且,由于時鐘頻率可由程序控制,系統(tǒng)時鐘可以在一個很寬的范圍內調整,總線頻率往往能升得很高。但是,使用鎖相環(huán)也會帶來額外的功率消耗。 單就時鐘方案來講,使用外部晶振且不使用鎖相環(huán)是功率消耗最小的一種。AT89S52單片機的時鐘信號通常用兩種電路形
28、式得到:內部振蕩方式和外部振蕩方式。在引腳XTAL1和XTAL2外接晶體振蕩器(簡稱晶振)或陶瓷諧振器,就構成了內部振蕩方式。由于單片機內部有一個高增益反相放大器,當外接晶振后,就構成了自激振蕩器并產生振蕩時鐘脈沖。內部振蕩方式的外部電路如下圖所示。圖中,電容器C01,C02起穩(wěn)定振蕩頻率、快速起振的作用,其電容值一般在5-30pF。晶振頻率的典型值為12MH2,采用6MHz的情況也比較多。內部振蕩方式所得的時鐘情號比較穩(wěn)定,實用電
29、路中使用較多。外部振蕩方式是把外部已有的時鐘信號引入單片機內。這種方式適宜用來使單片機的時鐘與外部信號保持同步。外部振蕩方式的外部電路如下圖所示。</p><p><b> 如圖所示:</b></p><p><b> 各模塊分析:</b></p><p> 顯示模塊——電路先通過電源電路送出+5V電壓,單片機AT
30、89S52通過74LS47和CD4515(4—16譯碼器)驅動數碼管顯示數值, 顯示部分采用普通共陽極數碼管顯示,采用動態(tài)掃描,以減少硬件電路??紤]到一次掃描12位數碼管顯示時會出現(xiàn)閃爍情況,設計時分兩排顯示,一排顯示時間和年月日,一排顯示星期和溫度, 共陽極數碼管中8個發(fā)光二極管的陽極(二極管正端)連在一起。通常,公共陽極接高電平(一般接電源),其它管腳接段驅動電路輸出端。當某段驅動電路的輸入端為低電平時,該端所連接的字段導通并點亮
31、。根據發(fā)光字段的不同組合可顯示出各種數字或字符。此時,要求段驅動電路能吸收額定的段導通電流,還需根據外接電源及額定段導通電流來確定相應的限流電阻。采用動態(tài)顯示方式,比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示簡單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數較多時,CPU要依次掃描,占用CPU較多時間。 為了提供共陽LED數碼管的驅動電壓,用三極管9012作電源驅動輸出。采用12MHz晶振,有利于提高秒計時的精確性。三極管采用901
32、2。數碼管采用紅色的共陽型LED數碼管,亮度高些,因為是掃描的顯示方式,所</p><p> 時鐘模塊——利用芯片內部的振蕩器,然后在引腳XTAL1和引腳 XTAL2兩端接晶體諧振器,就構成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內部的時鐘電路,如圖外接晶振時,C1和C2的值通常選擇30pF; C1、C2對頻率有微</p><p> 調作用,晶體諧振器的頻率12MHz。為了減
33、少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應盡可能安裝得與單片機芯片靠近。設置了12—24兩種顯示狀態(tài),調整計時的按鍵、設置定時的按鍵且定時設置了3次定時、還另加載了星期、年、月、日的調整及閏年的自動調整;</p><p> 溫度模塊——主要由18B20通過單片機AT89S52中的溫度程序不斷的檢測溫度來顯示溫度溫度傳感器DS18B20采集溫度信號送該給單片機處理,存儲器通過單片機對某些時間點的
34、數據進行存儲;</p><p> 音樂模塊——通過LM386N-1給揚聲器信號來發(fā)出音樂,這個模塊主要是為時鐘定時到時發(fā)出音樂鬧鈴,而在軟件部分設置了可以一次設置3次定時,每次定時到時,音樂程序中編了6種音樂,它可以自動選擇6種音樂中的任一音樂響1分鐘,如果中間不想讓鬧鈴響可以按一按鍵,鬧鈴就立刻停止</p><p> 復位模塊——單片機復位電路是使CPU和系統(tǒng)中的其他功能部件都處在一
35、個確定的初始狀態(tài),并從該狀態(tài)開始工作,例如復位后PC=0000H,使單片機從第一個單元取指令。無論是在單片機剛接上電源時,還是斷電后或者發(fā)生故障后都要復位;單片機的復位操作使單片機進入初始化狀態(tài),其中包括使程序計數器PC=0000H,這表明程序從0000H地址單元開始執(zhí)行。單片機冷啟動后,片內RAM為隨機值,運行中的復位操作不改變片內RAM區(qū)中的內容,21個特殊功能寄存器復位后的狀態(tài)為確定值,見下表。值得指出的是,記住一些特殊功能寄存
36、器復位后的主要狀態(tài),對于了解單片機的初態(tài),減少應用程序中的韌始化部分是十分必要的。說明:表中符號*為隨機狀態(tài);A=00H,表明累加器已被清零;</p><p> PSW=00H,表明選寄存器0組為工作寄存器組;SP=07H,表明堆棧指針指向片內RAM 07H字節(jié)單元,根據堆棧操作的先加后壓法則,第一個被壓入的內容寫入到08H單元中;Po-P3=FFH,表明已向各端口線寫入1,此時,各端口既可用于輸入又可
37、用于輸出;IP=×××00000B,表明各個中斷源處于低優(yōu)先級;IE=0××00000B,表明各個中斷均被關斷;</p><p> 系統(tǒng)復位是任何微機系統(tǒng)執(zhí)行的第一步,使整個控制芯片回到默認的硬件狀態(tài)下。51單片機的復位是由RESET引腳來控制的,此引腳與高電平相接超過24個振蕩周期后,51單片機即進入芯片內部復位狀態(tài),而且一直在此狀態(tài)下等待,直到RESET
38、引腳轉為低電平后,才檢查EA引腳是高電平或低電平,若為高電平則執(zhí)行芯片內部的程序代碼,若為低電平便會執(zhí)行外部程序。</p><p> 安全省電模式——電源電路上裝了保險管只要電流大于額定電流保險就斷來保護電路,省電模式:不看時顯示不亮,看時,按下一鍵顯示就亮,盡量達到人性化。</p><p><b> 3. 軟件設計</b></p><p>
39、;<b> 3.1 概述</b></p><p> 軟件設計的重點在于秒脈沖信號的產生、顯示的實現(xiàn)、以及按鍵的處理等方面?;谲浖拿朊}沖信號通常有延時法和定時中斷法。延時法一般采用查詢方</p><p> 式,在延時子程序前后必然需要查詢和處理的程序,導致誤差的產生,因此其秒脈沖的精度不高;中斷法的原理是,利用單片機內部的定時器溢出中斷來實現(xiàn)。例如,設定某定時
40、器每100ms中斷1次,則10次的周期為1s。本系統(tǒng)中所使用的晶振頻率為12MHZ。</p><p> 3.2 主模塊的設計</p><p> 主模塊是系統(tǒng)軟件的主框架。結構化程序設計一般有“自上而下”和“自下而上”兩種方式,“自上而下”法的核心就是主框架的構建。它的合理與否關系到程序最終的功能的多少和性能的好壞。本系統(tǒng)的主模塊的程序框圖如下圖2所示:</p><p
41、><b> 圖 2</b></p><p> 3.3 基本顯示模塊設計</p><p> 基本顯示模塊設計的重點是由顯示代碼取得相應的段碼,顯示段碼數據的并行發(fā)送,高精度的計時工具大多數都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術,因此走時精度高,穩(wěn)定性好,使用方便,不需要</p><p> 經常調校,數字式
42、電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。</p><p> 程序流程如圖3所示。</p><p><b> 圖 3</b></p><p> 3.4 時間設定模塊設計</p>&l
43、t;p> 時間設定模塊的設計要點是按鍵的去抖處理與“一鍵多態(tài)”的處理。即只涉及4個鍵完成了6位時間參數的設定。軟件法去抖動的實質是軟件延時,即檢測到某一鍵狀態(tài)變化后延時一段時間,再檢測該按鍵的狀態(tài)是否還保持著,如是則作為按鍵處理,否則,視為抖動,不予理睬。去抖中的延時時間一般參考資料多描述為10ms左右,實際應用中,應大于20ms,否則,會導致按一次作多次處理,影響程序正常執(zhí)行?!耙绘I多態(tài)”即多功能鍵的實現(xiàn)思想是,根據按鍵時刻的
44、系統(tǒng)狀態(tài),決定按鍵采取何種動作,即何種功能。</p><p> 其流程圖如下圖4所示:</p><p><b> 圖 4</b></p><p> 3.5 鬧鈴功能的實現(xiàn)</p><p> 鬧鈴功能的實現(xiàn)涉及到兩個方面:鬧鈴時間設定和是否鬧鈴判別與相應處理。鬧鈴時間設定模塊的設計可參照時間設定模塊,這里著重闡述鬧
45、鈴判別與處理模塊的設計問題。鬧鈴判別與鬧鈴處理的關鍵在于判別何時要進行鬧鈴。當時十位、時個位、分十位、分個位中任一位發(fā)生改變(進位)時,就必須進行鬧鈴判別。譯碼顯示電路將“時”、“分”、“秒”計數器的輸出送到七段顯示譯碼驅動器譯碼驅動,通過六個七段LED顯示器顯示出來。鬧鈴電路根據計時系統(tǒng)的輸出狀態(tài)產生一脈沖信號,然后加上一個高頻或低頻信號送到放大電路驅動蜂鳴器發(fā)聲實現(xiàn)報時。校時電路是直接加一個脈沖信號到時計數器或者分計數器或者秒計數器
46、來對“時”、“分”、“秒”顯示數字進行校對調整。</p><p><b> 其流程圖如下所示:</b></p><p><b> 圖5.1</b></p><p><b> 圖5.2</b></p><p> 考慮到實用性,在該電子鐘的設計中修改定時或調整時間時采用了閃
47、爍,而且以定時20組鬧鐘。在編程上,首先進行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲計數的秒,分,時以及定時時間的序號等。</p><p> 在顯示程序段中主要進行了閃爍的處理,采用定時器中斷置標志位,再與位選相互結合的方法來控制調時或定時中的閃爍。時,分,秒顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進行進制轉化。初始化之后,用中斷方式對其計數,計
48、數的同時采用了定時器比較的方法,比較當前計數時間與定時時間是否相等,若相等則將鬧鈴標志位置數。由于定義了定時鬧鐘組,在這里采用中斷組次,每中斷一次比較一組鬧鐘,避免了一次比較中斷時間過長,影響下次中斷時間。顯示之后查詢鬧鈴標志位是否與前面所置數相等,若相等則響鈴。</p><p> 為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈沖,驅動喇叭,不會影響顯示。之后用查詢方式對按鍵進行判斷,若有鍵按下,
49、則進行軟件延時消抖,避免了抖動引起的干擾,執(zhí)行相應的定時,選時或調時程序段。對當前時間或定時時間修改后又返回到最初的顯示程序段,如此循環(huán)下去。</p><p> Proteus軟件仿真</p><p> 本次課程設計所采用的程序調試軟件為keil軟件,所采用的仿真軟件為protus 6 professional軟件。</p><p> 本次試驗的效果圖如下所示
50、:</p><p><b> 性能及誤差分析</b></p><p> K1鍵用于系統(tǒng)進入時間調節(jié)狀態(tài),根據所按次數不同,分別進入時分秒調節(jié)狀態(tài),K2、K3分別用于對顯示時間和鬧鐘時間的增加和減小調節(jié),K4鍵用于顯示鬧鐘所定時間,對K4鍵所按次數不同分別進入鬧鐘的時分秒調節(jié)狀態(tài)。該電子鐘的誤差主要由晶振自身的誤差所造成,晶振的誤差約為0. 0001~0. 0000
51、01</p><p> 結構化軟件程序的調試一般可以將重點放在分模塊調試上,統(tǒng)調是最后一環(huán)。軟件調試可以采取離線調試和在線調試兩種方式。前者不需要硬件仿真器,可借助于軟件仿真器即可;后者一般需要仿真系統(tǒng)的支持。本次課設,采用keil調試軟件來調試程序,通過各個模塊程序的單步或跟蹤調試,使程序逐漸趨于正確,最后統(tǒng)調程序。</p><p> 仿真部分采用protus 6 professio
52、nal軟件,此軟件功能強大且操作較為簡單,可以很容易的實現(xiàn)各種系統(tǒng)的仿真。</p><p> 首先打開protus 6 professional軟件,在元件庫中找到要選用的所有元件,然后進行原理圖的繪制;繪制好后再選擇keil已經編譯好的*.hex文件,選擇運行,觀察顯示結果,根據顯示的結果和課設的要求再修改程序,再運行查,直到滿足要求。</p><p><b> 5. 課程
53、設計體會</b></p><p> 單片機是一門應用性很強的學科,課程設計是培養(yǎng)我們綜合運用所學知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們實際工作能力的具體訓練和考察過程。雖然在做課程設計以前已經系統(tǒng)的把單片機課本認真的學習了一下,但是在剛拿到設計任務書時還是有點一頭霧水,不知道該從哪里下手。令人欣慰的是經過一周的學習,雖然過程很艱辛,但是總算實現(xiàn)了定時鬧鐘的功能,所有的
54、努力都很值得。這一周的大部分時間都在研究程序怎么處理,在這個過程中加深了我對匯編語言命令的應用,而且也更加了解到軟硬件配套的重要性。</p><p> 通過這次課程設計,使我對這們功課有了更深刻的認識和了解。首先對于硬</p><p> 件電路的工作原理有了進一步系統(tǒng)的學習,同樣就有了進一步的認識,使我懂得了理論與實際相結合的重要性,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐
55、相結合起來,才能提高自己的實際動手能力和獨立思考的能力。其次軟件在這次設計中也有不足之處,比如音樂的響聲不連續(xù),但又不知道從哪個地方入手解決這個問題,這要求在以后的學習中,拓寬自己的知識面,解決設計的不足之處。</p><p> 總之,通過這次課程設計不僅使我鞏固了本課程所學的基本知識,還使我具有了撰寫科研報告的初步訓練能力,我相信這些能力在我以后的工作或者是再學習中一定會起到不小的作用,一切的辛苦和艱難都是值
56、得的。</p><p><b> 參考文獻</b></p><p> [1]電氣與電子信息工程學院.單片機實驗指導書 </p><p> [2]熊靜琪.計算機控制技術.北京:電子工業(yè)出版社,2003.</p><p> [3]黃忠霖.控制系統(tǒng)MATIAB計算及仿真.北京:國防工業(yè)出版社, 2004.</p&
57、gt;<p> [4]彭為等.單片機典型系統(tǒng)設計實例精講. 北京:電子工業(yè)出版社,2007</p><p> [5]王慶利等.單片機設計案例實踐教程.北京:北京郵電大學出版社,2008</p><p> [6]韓志軍等.單片機應用系統(tǒng)設計——入門向導與設計實例.北京:機械工業(yè)出版社,2005</p><p> [7]皮大能等. 單片機課程設計指
58、導書. 北京:北京理工大學出版社,2010</p><p><b> 程序清單</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p>
59、;<p> sbit dula=P2^6;</p><p> sbit wela=P2^7;</p><p> sbit key1=P1^0;</p><p> sbit key2=P1^1;</p><p> sbit key3=P1^2;</p><p> sbit key4=P1^3;&
60、lt;/p><p> sbit buzzer=P3^7;</p><p> uchar code table[]={</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p>
61、;<p> 0x39,0x5e,0x79,0x71};</p><p> uchar code table1[]={</p><p> 0xbf,0x86,0xdb,0xcf,</p><p> 0xe6,0xed,0xfd,0x87,</p><p> 0xff,0xef,0xf7,0xfc,</p>
62、<p> 0xb9,0xde,0xf9,0xf1};</p><p> uint num,num1,num2,num3,shi1,shi2,fen1,fen2,miao1,miao2,keynum1,keynum4;</p><p> uint nnum1,nnum2,nnum3,nshi1,nshi2,nfen1,nfen2,nmiao1,nmiao2;</p>
63、;<p> void delayms(uint xms)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=xms;i>0;i--)</p><p> for(j=110;j>0;j--);&
64、lt;/p><p><b> }</b></p><p> void display(uchar A,uchar B,uchar C,uchar D,uchar E,uchar F)</p><p><b> {</b></p><p> miao1=num1/10;</p>&l
65、t;p> miao2=num1%10;</p><p> fen1=num2/10;</p><p> fen2=num2%10;</p><p> shi1=num3/10;</p><p> shi2=num3%10; </p><p> nmiao1=nnum1/10;</p>&
66、lt;p> nmiao2=nnum1%10;</p><p> nfen1=nnum2/10;</p><p> nfen2=nnum2%10;</p><p> nshi1=nnum3/10;</p><p> nshi2=nnum3%10; </p><p><b> P0=0xff
67、;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfe;</b></p><p><b> wela=0;</b></p><p><b> dula=1;</b></p>
68、<p> P0=table[A];</p><p><b> dula=0;</b></p><p> delayms(1);</p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><
69、;p><b> P0=0xfd;</b></p><p><b> wela=0;</b></p><p><b> dula=1;</b></p><p> P0=table1[B];</p><p><b> dula=0;</b>&l
70、t;/p><p> delayms(1);</p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfb;</b></p><p><b> wela=0;
71、</b></p><p><b> dula=1;</b></p><p> P0=table[C];</p><p><b> dula=0;</b></p><p> delayms(1);</p><p><b> P0=0xff;<
72、;/b></p><p><b> wela=1;</b></p><p><b> P0=0xf7;</b></p><p><b> wela=0;</b></p><p><b> dula=1;</b></p><
73、p> P0=table1[D];</p><p><b> dula=0;</b></p><p> delayms(1);</p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p&
74、gt;<b> P0=0xef;</b></p><p><b> wela=0;</b></p><p><b> dula=1;</b></p><p> P0=table[E];</p><p><b> dula=0;</b></p
75、><p> delayms(1);</p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xdf;</b></p><p><b> wela=0;<
76、/b></p><p><b> dula=1;</b></p><p> P0=table[F];</p><p><b> dula=0;</b></p><p> delayms(1);</p><p><b> }</b><
77、/p><p> void keyscan()</p><p><b> {</b></p><p> if(key1==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key1==
78、0)</p><p><b> {</b></p><p> keynum1++;</p><p> while(!key1);</p><p><b> }</b></p><p><b> }</b></p><p>
79、; if(keynum1!=0)</p><p><b> {</b></p><p><b> TR0=0;</b></p><p> if(keynum1==1)</p><p><b> { </b></p><p> if(key2=
80、=0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key2==0)</p><p><b> { </b></p><p><b> num1++;</b></p>
81、<p> if(num1==60)</p><p><b> num1=0;</b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }</b></p><p> if(
82、key3==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key3==0)</p><p><b> {</b></p><p> if(num1==0)</p><p>&l
83、t;b> num1=60;</b></p><p><b> num1--;</b></p><p> while(!key3);</p><p><b> }</b></p><p><b> }</b></p><p>&
84、lt;b> }</b></p><p> if(keynum1==2)</p><p><b> { </b></p><p> if(key2==0)</p><p><b> {</b></p><p> delayms(10);</p
85、><p> if(key2==0)</p><p><b> { </b></p><p><b> num2++;</b></p><p> if(num2==60)</p><p><b> num2=0;</b></p><
86、;p> while(!key2);</p><p><b> }</b></p><p><b> }</b></p><p> if(key3==0)</p><p><b> {</b></p><p> delayms(10);&
87、lt;/p><p> if(key3==0)</p><p><b> {</b></p><p> if(num2==0)</p><p><b> num2=60;</b></p><p><b> num2--;</b></p>
88、<p> while(!key3);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(keynum1==3)</p><p><b>
89、; { </b></p><p> if(key2==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key2==0)</p><p><b> { </b></p><
90、;p><b> num3++;</b></p><p> if(num3==24)</p><p><b> num3=0;</b></p><p> while(!key2);</p><p><b> }</b></p><p>&l
91、t;b> }</b></p><p> if(key3==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key3==0)</p><p><b> {</b></p>
92、<p> if(num3==0)</p><p><b> num3=24;</b></p><p><b> num3--;</b></p><p> while(!key3);</p><p><b> }</b></p><p&g
93、t;<b> }</b></p><p><b> }</b></p><p> if(keynum1==4)</p><p><b> {</b></p><p> keynum1=0;</p><p><b> TR0=1;&l
94、t;/b></p><p><b> }</b></p><p><b> }</b></p><p> if(key4==0)</p><p><b> {</b></p><p> delayms(10);</p>&l
95、t;p> if(key4==0)</p><p><b> {</b></p><p> keynum4++;</p><p> while(!key4);</p><p><b> }</b></p><p><b> }</b>&l
96、t;/p><p> if(keynum4!=0)</p><p><b> {</b></p><p><b> TR0=0;</b></p><p> if(keynum4==1)</p><p><b> { </b></p>&
97、lt;p> if(key2==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key2==0)</p><p><b> { </b></p><p><b> nnum1++;<
98、;/b></p><p> if(nnum1==60)</p><p><b> nnum1=0;</b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }</b></
99、p><p> if(key3==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key3==0)</p><p><b> {</b></p><p> if(nnum1==0)&
100、lt;/p><p><b> nnum1=60;</b></p><p><b> nnum1--;</b></p><p> while(!key3);</p><p><b> }</b></p><p><b> }</b&g
101、t;</p><p><b> }</b></p><p> if(keynum4==2)</p><p><b> { </b></p><p> if(key2==0)</p><p><b> {</b></p><p
102、> delayms(10);</p><p> if(key2==0)</p><p><b> { </b></p><p><b> nnum2++;</b></p><p> if(nnum2==60)</p><p><b> nnum2=
103、0;</b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }</b></p><p> if(key3==0)</p><p><b> {</b></p>
104、;<p> delayms(10);</p><p> if(key3==0)</p><p><b> {</b></p><p> if(nnum2==0)</p><p><b> nnum2=60;</b></p><p><b>
105、 nnum2--;</b></p><p> while(!key3);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(keynum4==3
106、)</p><p><b> { </b></p><p> if(key2==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key2==0)</p><p><b>
107、; { </b></p><p><b> nnum3++;</b></p><p> if(nnum3==24)</p><p><b> nnum3=0;</b></p><p> while(!key2);</p><p><b> }
108、</b></p><p><b> }</b></p><p> if(key3==0)</p><p><b> {</b></p><p> delayms(10);</p><p> if(key3==0)</p><p>
109、<b> {</b></p><p> if(nnum3==0)</p><p><b> nnum3=24;</b></p><p><b> nnum3--;</b></p><p> while(!key3);</p><p><b
110、> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(keynum4==4)</p><p><b> {</b></p><p> keynum4=0;<
111、/p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void main()</p>&
112、lt;p><b> {</b></p><p><b> num3=12;</b></p><p><b> nnum3=6;</b></p><p> TMOD=0x01;</p><p> TH0=(65536-50000)/256;</p>
113、<p> TL0=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> while(1)<
114、/b></p><p><b> {</b></p><p> keyscan();</p><p> if(keynum4==0)</p><p><b> {</b></p><p> display(shi1,shi2,fen1,fen2,miao1,m
115、iao2);</p><p><b> }</b></p><p> if(keynum4!=0)</p><p><b> {</b></p><p> display(nshi1,nshi2,nfen1,nfen2,nmiao1,nmiao2); </p><p>
116、;<b> }</b></p><p> if(keynum1==0)</p><p> if(num1==nnum1&num2==nnum2&num3==nnum3)</p><p><b> {</b></p><p><b> buzzer=0;</b
117、></p><p> delayms(5000);</p><p><b> buzzer=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
118、;</p><p> void T0_time() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> num++
119、;</b></p><p> if(num==20)</p><p><b> {</b></p><p><b> num=0;</b></p><p><b> num1++;</b></p><p> if(num1==60)
120、</p><p><b> num1=0;</b></p><p> if(num1==0)</p><p><b> {</b></p><p><b> num2++;</b></p><p> if(num2==60)</p>
121、<p><b> num2=0;</b></p><p> if(num2==0)</p><p><b> {</b></p><p><b> num3++;</b></p><p> if(num3==24)</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機定時鬧鐘課程設計
- 單片機課程設計—定時鬧鐘設計
- 單片機課程設計—定時鬧鐘設計
- 單片機定時鬧鐘課程設計
- 定時鬧鐘—單片機課程設計
- 單片機課程設計---定時鬧鐘設計
- 單片機課程設計--定時鬧鐘設計
- 單片機課程設計---定時鬧鐘的設計
- 單片機課程設計——定時鬧鐘的設計
- 單片機課程設計--定時鬧鐘報告書
- 單片機課程設計--簡單定時鬧鐘系統(tǒng)
- 單片機課程設計---- lcd電子定時鬧鐘設計
- 單片機課程設計--基于51單片機的定時鬧鐘設計
- 基于單片機的定時鬧鐘課程設計
- c51單片機課程設計定時鬧鐘
- 單片機課程設計—帶有l(wèi)cd的定時鬧鐘
- 單片機課程設計--帶有l(wèi)cd顯示的定時鬧鐘
- 單片機課程設計(電子鬧鐘)
- 單片機課程設計--定時插座
- 單片機定時鬧鐘畢業(yè)設計
評論
0/150
提交評論