![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/34e06fe1-7ce4-48c3-b643-be0f76da56ae/34e06fe1-7ce4-48c3-b643-be0f76da56aepic.jpg)
![數(shù)字時鐘的課程設(shè)計--基于單片機的數(shù)字時鐘_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/34e06fe1-7ce4-48c3-b643-be0f76da56ae/34e06fe1-7ce4-48c3-b643-be0f76da56ae1.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 編號: </p><p><b> 課程設(shè)計說明書</b></p><p> 題 目: 基于單片機的數(shù)字時鐘 </p><p> 院 (系): 信息與通信學(xué)院 </p><p> 專 業(yè): 電子信息工程
2、 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號: </p><p> 指導(dǎo)教師: </p><p> 2013年 12月 03 日</p><p><b>
3、摘 要</b></p><p> 電子時鐘是一種非常廣泛日常計時工具,對現(xiàn)代社會越來越流行。它可以實現(xiàn)對年、月、日、星期、時、分、秒進(jìn)行計時等多種功能。數(shù)字時鐘采用直觀數(shù)字顯示,還具有時間校準(zhǔn)等功能。該電路采用AT89S52單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用3-5V電壓供電。</p><p> 本系統(tǒng)硬件部分由AT89S52單片機、1062液晶顯示器、
4、鍵盤、蜂鳴器系統(tǒng)等部分構(gòu)成。軟件部分在keil環(huán)境下用C51語言編寫,包括時間顯示、時間校對。</p><p> 基于單片機技術(shù)原理,以單片機芯片AT89C52作為核心控制器,通過硬件電路的制作以及軟件程序的編制,設(shè)計制作出一個簡易數(shù)字時鐘系統(tǒng)。單片機擴展的LCD顯示器用來顯示秒、分、時、星期、日、月、年計數(shù)單元中的值。整個設(shè)計包括兩大部分:硬件部分和軟件部分,以單片機為核心,配以一定的外圍電路和軟件。硬件是整
5、個系統(tǒng)的基礎(chǔ),軟件部分則要合理、充分地支持和使用系統(tǒng)的硬件,從而完成系統(tǒng)所要完成的任務(wù)。</p><p> 關(guān)鍵詞:單片機AT89S52;液晶顯示1602;按鍵</p><p><b> Abstract</b></p><p> Electronic clock is a very extensive daily timing tool
6、 , more and more popular in modern society . It can be achieved on the year, month , date, day , hour, minute , seconds chronograph and other functions . Intuitive digital display digital clock , also has a time calibrat
7、ion functions. This circuit uses AT89S52 microcontroller as the core , low power consumption , can work in low-voltage 3V voltage can choose 3 ~ 5V voltage supply.</p><p> The hardware of the system by the
8、AT89S52 microcontroller , some 1062 LCD monitor, keyboard , buzzer systems and other accessories. Software part in keil environment with C51 language, including the time display, time proofreading.</p><p>
9、Based on the principle of single-chip technology , chip AT89C52 microcontroller as the core controller , and a software program produced by the preparation of the hardware circuit , designed to create a simple digital cl
10、ock system. Single-chip LCD display is used to display the extended seconds, minutes , hours, day, date, month, year counting unit value. The whole design consists of two parts: hardware and software components , microco
11、ntroller as the core , with some peripheral circuits and sof</p><p> Keywords: Microcontroller AT89S52; LCD 1602; buttons</p><p><b> 目 錄</b></p><p><b> 引言5&
12、lt;/b></p><p><b> 1 設(shè)計方案5</b></p><p> 1.1 數(shù)字時鐘的設(shè)計分析5</p><p> 1.2 設(shè)計要求6</p><p> 2 總體系統(tǒng)方案的設(shè)計與選擇論證6</p><p> 2.1 計時方案6</p>&l
13、t;p> 2.2 控制芯片的選擇6</p><p> 2.3 芯片控制語言的選擇7</p><p> 3 系統(tǒng)電路的設(shè)計及原理說明8</p><p> 3.1.1AT89S52單片機性能與特點 8</p><p> 3.1.2AT89S52單片機的引腳及內(nèi)部結(jié)構(gòu)8</p><p> 3.2
14、 單片機最小系統(tǒng)電路介紹8</p><p> 3.3 LCD1602顯示電路9</p><p> 4 軟件設(shè)計部分 9</p><p> 4.1 軟件編程思路9</p><p> 4.2 電路的仿真10</p><p> 4.2.1Proteus仿真原理圖10</p><p&
15、gt; 4.2.2Proteus仿真結(jié)果..........................................................................................................................10</p><p> 4.3 電路調(diào)試............................................
16、.................................................................................................10</p><p> 4.3.1硬件調(diào)試.........................................................................................
17、.................................................10</p><p> 4.3.2軟件調(diào)試.........................................................................................................................................
18、.10 </p><p><b> 5 結(jié)論10</b></p><p><b> 謝 辭11</b></p><p><b> 參考文獻(xiàn)12</b></p><p> 附 錄.........................................
19、...............................................................................................................13</p><p> 附錄一:原理圖.............................................................................
20、......................................................13</p><p> 附錄二:PCB圖....................................................................................................................................1
21、4</p><p> 附錄三:程序代碼.............................................................................................................................15</p><p><b> 引言</b></p><p
22、> 21世紀(jì),電子技術(shù)獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會的各個領(lǐng)域,有力地推動了社會生產(chǎn)力的發(fā)展和社會信息化程度的提高,同時也使現(xiàn)代化電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。</p><p> 時鐘,自它被發(fā)明的那天起,就成為人類的朋友。隨著時間的推移,隨著科學(xué)技術(shù)的不斷發(fā)展,隨著生活水平的提高,人們越來越追求人性化的事物,對時間計量的精度要求越來越高,應(yīng)用也越來越廣
23、泛,這些都導(dǎo)致傳統(tǒng)的時鐘已不能滿足人們的需求?,F(xiàn)代生活的人們越來越重視了時間觀念,可以說是時間和金錢劃上了等號。對于那些對時間把握非常嚴(yán)格和準(zhǔn)確的人或事來說,時間的不準(zhǔn)確會帶來非常大的麻煩,所以以LCD1602為顯示器的時鐘比指針式的時鐘表現(xiàn)了更大的優(yōu)勢。</p><p> 目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展
24、。單片機應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計思想和設(shè)計方法。從前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。</p><p> 單片機模塊中最常見的是數(shù)字時鐘。利用單片機實現(xiàn)的電子時鐘具有編程靈活、精確度高等特點,并且便于電子時鐘的擴充,即可用該電子鐘發(fā)出各種控制信號,同時可以用該電子時
25、鐘發(fā)出各種控制信號。</p><p> 本時鐘還具有環(huán)保、走時無噪音、低功耗等非實時時鐘不具有的功能。該實時時鐘不但可以作為家用,而且更可以在公共場合使用,如車站、碼頭、商場等場所。</p><p> 本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設(shè)計由單片機AT89S52芯片和LCD1602為核心,輔以必要的電路,構(gòu)成了一個單片機數(shù)字時鐘。</p>&l
26、t;p><b> 1 設(shè)計方案</b></p><p> 1.1 數(shù)字時鐘的設(shè)計分析</p><p> 方案一:采用AT89S52作為主控單片機,顯示模塊選用LCD1602,設(shè)置部分選用按鍵電路;</p><p> 方案二:采用AT89S52作為主控單片機,顯示模塊選用數(shù)碼管,設(shè)置部分選用按鍵電路;</p><
27、;p> 方案三:可用數(shù)字電路芯片74192,74153,7447,NE555,與非門和數(shù)碼管實現(xiàn)數(shù)字時鐘功能。</p><p> 三種方案相比較,方案三使用芯片過多,線路繁瑣,方案二顯示電路需要多個三極管輔助驅(qū)動,電路復(fù)雜,相比之下,方案一LCD1602顯示電路、驅(qū)動程序都相對簡單,所以本設(shè)計選擇了方案一。</p><p><b> 1.2 設(shè)計要求</b>
28、;</p><p> 設(shè)計制作一個能實現(xiàn)顯示年、月、日、星期、時、分、秒功能時鐘,要求方案簡單,易行并有一定的實用意義。</p><p> 2 總體系統(tǒng)方案的設(shè)計與選擇論證</p><p><b> 2.1 計時方案</b></p><p> 采用AT89S52作為主控單片機,顯示模塊選用LCD1602,設(shè)置部
29、分選用按鍵電路配合軟件延時實現(xiàn)時、分、秒的計時。該方案節(jié)省硬件成本,并且能使讀者在定時/計數(shù)器的使用、中斷及程序設(shè)計方面得到鍛煉和提高,對單片機的指令系統(tǒng)能有更深入的了解。</p><p> AT89S52外接LCD1602顯示電路、按鍵電路、晶振電路、復(fù)位電路、電源以及按鍵電路構(gòu)成設(shè)計框圖。設(shè)計框圖如圖2-1所示:</p><p> 圖2-1 系統(tǒng)設(shè)計框圖</p>&l
30、t;p> 圖2-2 系統(tǒng)整體設(shè)計圖</p><p> 數(shù)字時鐘總電路包括單片機最小系統(tǒng),即單片機、振蕩電路、復(fù)位電路、電源供電模塊,另外供電,模塊附有LED指示燈,指示電源電源供電是否成功,LCD1602顯示模塊,獨立按鍵模塊,下載接口模塊,蜂鳴器模塊。</p><p> 2.2 控制芯片的選擇</p><p> AT89S52 是一種低功耗、高性能C
31、MOS8位微控制器,具有8K 在系統(tǒng)可編程Flash存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。</p><p> 2.3 芯片控制語言的選擇</p>
32、<p> C語言是一種計算機程序設(shè)計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維
33、、二維圖形和動畫,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。</p><p> 3 系統(tǒng)電路的設(shè)計及原理說明</p><p> 3.1 AT89S52單片機的工作原理</p><p> AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。它是利用單片機內(nèi)部定時器/計數(shù)器工作與定時方式,對機器周期計數(shù)形成基準(zhǔn)時間(如
34、10ms),然后再用另外一個計數(shù)器或軟件計數(shù)的形式對基準(zhǔn)時間進(jìn)行計數(shù),形成秒(如10ms計數(shù)100次),“秒”計數(shù)60次形成“分”,“分”計數(shù)60次形成“時”,“時”計數(shù)24次形成“天”,并清零,然后通過譯碼、顯示器把它們的內(nèi)容在顯示屏上顯示出來。在具體的設(shè)計時,定時器采用中斷方式工作,對時鐘的形成在中端程序中實現(xiàn),主程序是對定時器/計數(shù)器的定義初始化,調(diào)用顯示程序和控制程序的初始化,另外為了使用方便,也設(shè)計了按鍵,他可以對時分秒等進(jìn)行
35、調(diào)整,這樣,程序就加了按鍵程序。</p><p> 3.1.1AT89S52單片機性能與特點</p><p> ?。?)AT89S52為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。</p><p> ?。?)在單片機的應(yīng)用系統(tǒng)中,單片機作為一種較為簡單的計算機是嵌入到系統(tǒng)內(nèi)部,作為系統(tǒng)電路的一部分,作為系統(tǒng)實
36、現(xiàn)數(shù)字化和智能化的關(guān)鍵部件。AT89S52主要功能列舉如下:</p><p> ①擁有靈巧的8位CPU和在系統(tǒng)可編程Flash</p><p> ?、诰瑑?nèi)部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz)</p><p> ③內(nèi)部程序存儲器(ROM)為 8KB</p><p> ?、軆?nèi)部數(shù)據(jù)存儲器(RAM)為 256字節(jié)</p&g
37、t;<p> ?、?2 個可編程I/O 口線</p><p><b> ⑥8 個中斷向量源</b></p><p> ?、呷齻€ 16 位定時器/計數(shù)器</p><p> ⑧三級加密程序存儲器</p><p> ?、崛p工UART串行通道</p><p> 3.1.2AT89S5
38、2單片機的引腳及內(nèi)部結(jié)構(gòu)</p><p> P89C5X系列單片機有40個引腳。其引腳圖如圖2-1所示:</p><p> ?。?)VCC:AT89S52電源正端輸入,接+5V。</p><p> ?。?)VSS:電源地端。</p><p> (3)XTAL1:單芯片系統(tǒng)時鐘的反相放大器輸入端。</p><p>
39、?。?)XTAL2:系統(tǒng)時鐘的反相放大器輸出端,一般在設(shè)計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機。</p><p> (5)RESET:AT89S52的重置引腳,高電平動作,當(dāng)要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,AT89S51便能完成系統(tǒng)重置的各項
40、動作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。 </p><p> (6)EA/Vpp:"EA"為英文"External Access"的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會取用外部的程序代碼(存于外部EPROM
41、中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因為其內(nèi)部無程序存儲器空間。如果是使用 8751 內(nèi)部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部EPROM時,可以利用此引腳來輸入21V的燒錄高壓(Vpp)。</p><p> ?。?)ALE/PROG:ALE是英文"Address Latch Enable"的縮寫,表示地址鎖存器啟用信號。AT89S5
42、2可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總線(A0~A7)鎖進(jìn)鎖存器中,因為AT89S52是以多工的方式送出地址及數(shù)據(jù)。平時在程序執(zhí)行時ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅(qū)動其他周邊晶片的時基輸入。此外在燒錄 圖3-1 AT89S52引腳圖</p><p> 8751程序代碼時,此引腳會被當(dāng)成程序規(guī)劃的特殊功能來使用。</p>
43、<p> ?。?)PSEN:此為"Program Store Enable"的縮寫,其意為程序儲存啟用,當(dāng)8051被設(shè)成為讀取外部程序代碼工作模式時(EA=0),會送出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。AT89S52可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。</p><p&
44、gt; ?。?)PORT0(P0.0~P0.7):端口0是一個8位寬的開路汲極(Open Drain)雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,P0在當(dāng)做I/O用時可以推動8個LS的TTL負(fù)載。如果當(dāng)EA引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),P0就以多工方式提供地址總線(A0~A7)及數(shù)據(jù)總線(D0~D7)。設(shè)計者
45、必須外加一鎖存器將端口0送出的地址栓鎖住成為A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址總線,而定址到64K的外部存儲器空間。</p><p> ?。?0)PORT2(P2.0~P2.7):端口2是具有內(nèi)部提升電路的雙向I/O端口,每一個引腳可以推動4個LS的TTL負(fù)載,若將端口2的輸出設(shè)為高電平時,此端口便能當(dāng)成輸入端口來使用。P2除了當(dāng)做一般I/O端口使用外,若是在AT89S52擴充外接
46、程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié)A8~A15,這個時候P2便不能當(dāng)做I/O來使用了。</p><p> ?。?1)PORT1(P1.0~P1.7):端口1也是具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個LS TTL負(fù)載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0又當(dāng)做定時器2的外部脈沖輸入腳,而P1.1可以有T2EX功能,可
47、以做外部中斷輸入的觸發(fā)腳位。</p><p> (12)PORT3(P3.0~P3.7):端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負(fù)載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或?qū)懭肟刂频裙δ?。其引腳分配如下:</p><p> ?、貾3.0:RXD,串行通信輸入。</p><
48、p> ?、赑3.1:TXD,串行通信輸出。</p><p> ?、跴3.2:INT0,外部中斷0輸入。</p><p> ?、躊3.3:INT1,外部中斷1輸入。</p><p> ?、軵3.4:T0,計時計數(shù)器0輸入。</p><p> ?、轕3.5:T1,計時計數(shù)器1輸入。</p><p> ?、逷3.6:W
49、R:外部數(shù)據(jù)存儲器的寫入信號。</p><p> ?、郟3.7:RD,外部數(shù)據(jù)存儲器的讀取信號。</p><p> AT89S52單片機的內(nèi)部功能模塊如下圖3-2,為實現(xiàn)其基本功能,內(nèi)部必需要有配置輸入輸出(I/O口)、儲存器(RAM或ROM)、運算和控制單元(CPU)等相應(yīng)的功能電路。</p><p> 圖3-2 AT89S52內(nèi)部結(jié)構(gòu)</p>
50、<p> 3.2 單片機最小系統(tǒng)電路介紹 </p><p> 單片機最小系統(tǒng)主要由復(fù)位電路,晶振電路,電源等幾部分組成。復(fù)位電路是為了把電路初始化到一個確定的狀態(tài),把一個例如狀態(tài)機初始化到空狀態(tài);震蕩電路是為系統(tǒng)提供基本的時鐘信號;電源則是為系統(tǒng)供電。</p><p> 復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,由圖2-1并結(jié)合“電容電壓不能突變”的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST
51、腳將會出現(xiàn)高電平,并且這個高電平持續(xù)的時間由電路的RC值決定,所以適合組合RC的取值就可以保證可靠的復(fù)位。一般C取10uF,R取10K。單片機最小系統(tǒng)復(fù)位電路的極性電容的大小直接影響單片機的復(fù)位時間,相應(yīng)的值越大,復(fù)位時間越短。</p><p> 晶振電路:典型的晶振取11.0592MHz或者12MHz,單片機最小系統(tǒng)晶振的振蕩頻率直接影響單片機的處理速度,頻率越大處理速度越快。</p><
52、p> 圖3-3 單片機最小系統(tǒng)</p><p> 3.3 LCD1602顯示電路</p><p> 圖3-4 1602顯示電路</p><p> 液晶顯示器簡稱是利用液晶經(jīng)過處理后能夠改變光線傳輸方向的特性,達(dá)到顯示字符或者圖形的目的。其特點是體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點,在單片機應(yīng)用系統(tǒng)中有著日益廣泛的應(yīng)用。</p>&
53、lt;p> 1602芯片:主要用于顯示時間和定時時間。1602芯片由點陣字符液晶顯示器件和專用的行、列驅(qū)動器、控制及必要的鏈接件、結(jié)構(gòu)件組裝而成,可以顯示數(shù)字和西文字符,但不能顯示圖形,已經(jīng)可以滿足本次設(shè)計的需要。1602型LCD可以顯示2行16個字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調(diào)節(jié)和背光功能。</p><p><b> 4
54、軟件設(shè)計部分</b></p><p> 軟程序主要分為兩個部分,即液晶顯示部分和控制按鍵部分。由于本設(shè)計采用的是用按鍵分別控制,可以在主函數(shù)中調(diào)用一個鍵盤掃描的函數(shù),當(dāng)相應(yīng)的不同按鍵按下后通過控制單片機P2的輸出,從而控制液晶的顯示。源程序見附錄三所示:</p><p> 4.1 軟件編程思路</p><p> 在確定了時鐘要實現(xiàn)的功能后按照上述各
55、按鍵所實現(xiàn)的效果編寫程序。本程</p><p> 序包含液晶寫指令函數(shù)(write-com())、寫數(shù)據(jù)函數(shù)(write-data())、初始化函數(shù)(init())、寫入時分秒函數(shù)(write-sfm())和鍵盤掃描函數(shù)這些程序圍繞主函數(shù)相互調(diào)用。</p><p><b> 4.2 電路的仿真</b></p><p> 4.2.1Prot
56、eus仿真原理圖</p><p> 圖4-1 仿真原理圖</p><p> 4.2.2Proteus仿真結(jié)果</p><p> 圖4-2 仿真結(jié)果圖</p><p><b> 4.3 電路調(diào)試</b></p><p><b> 4.3.1硬件調(diào)試</b></p
57、><p> 將安裝好的電路板按要求接入5V電源,指示燈亮,說明電源連接成功;撥動開關(guān)后,兩個指示燈都亮,電路板已進(jìn)入正常供電模塊,液晶也已點亮,調(diào)節(jié)控制LCD1602的電位器,使液晶顯示屏第一行出現(xiàn)16個小黑方塊,則電位器調(diào)已合適,硬件調(diào)試結(jié)束。</p><p><b> 4.3.2軟件調(diào)試</b></p><p> 先定義管腳,寫void
58、w_com(uchar com);(寫指令)和void w_data(uchar date);(寫數(shù)據(jù))函數(shù),初始化函數(shù),中斷函數(shù),主函數(shù)等,液晶顯示年月日、星期、時分秒,然后寫按鍵掃描函數(shù),實現(xiàn)時間校對功能。</p><p><b> 5 結(jié)論</b></p><p> 本次設(shè)計主要采用了AT89S52單片機和LCD1602顯示頻等元器件,實現(xiàn)本次設(shè)計的方法不
59、唯一,但相較而言,本方案所用的元器件較少,提高了設(shè)計電路的易操作性,并且實驗的調(diào)節(jié)方法也很簡單,做到了節(jié)約、簡便、迅速、易行的基本要求。通過C語言將程序?qū)懭胄酒瑑?nèi)部后,是芯片按照設(shè)定進(jìn)行運行。</p><p> 課程設(shè)計主要目的還是培養(yǎng)我們綜合運用所學(xué)的知識,將理論與實踐相結(jié)合,初步認(rèn)識單片機芯片與電路,研究它的線路組成和工作方式、工作原理。電路設(shè)計是一個很靈活的東西,它反映你解決問題的邏輯思維和創(chuàng)新能力。本次
60、課程設(shè)計,我能運用已學(xué)知識解決設(shè)計過程中碰到的問題,使自己的動手能力和思考問題的能力得到很大的提高本次實驗提高了我的課程設(shè)計基本技能,使我學(xué)會了如何設(shè)計電路,熟練了電路焊接方法以及掌握硬件調(diào)試方法與軟件調(diào)試方法,同時還提高了我的動手能力和測試技術(shù)能力。從開始進(jìn)行設(shè)計到完成實現(xiàn)數(shù)字時鐘功能,我找了很多資料,并應(yīng)用了Altium designer,Proteus軟件進(jìn)行畫圖、仿真,并通過調(diào)試以完成設(shè)計要求的功能。</p>&l
61、t;p><b> 謝 辭</b></p><p> 感謝學(xué)校、學(xué)院給我們提供這樣的實踐動手機會,并通過課程設(shè)計使我們能夠有機會將書本上學(xué)到的知識運用到的實際中去。在電路設(shè)計和硬件調(diào)試的過程中,本人通過復(fù)習(xí)課本和上網(wǎng)查閱多種資料,尤其是著重對單片機的學(xué)習(xí),了解其原理、性能及各引腳的作用,此外本次設(shè)計中的復(fù)位電路,晶振電路及LCD1602顯示部分也有了更深刻的認(rèn)識,也對模擬電路和數(shù)字
62、電路的基礎(chǔ)知識又有了許多新的了解,從而對設(shè)計方法與性能參數(shù)的測試有所了解與掌握。在這次課程設(shè)過程中**老師給了我很多的指導(dǎo)和幫助,并監(jiān)督我及時完成了本次課程設(shè)計,在此對**老師和所有給予我?guī)椭耐瑢W(xué)表示感謝。謝謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 王衛(wèi)東 李旭瓊. 模擬電子技術(shù)基礎(chǔ)(第2版). 北京:電子工業(yè)出版社,2010
63、</p><p> [2] 周茜.電路分析基礎(chǔ)[M].北京:電子工業(yè)出版社,2010.</p><p> [3] 譚浩強.C語言程序設(shè)計[M].北京:清華大學(xué)出版社,2008.</p><p> [4] 華成英. 模擬電子技術(shù)基礎(chǔ)(第4版). 北京:高等教育出版社,2006</p><p> [5] 康華光. 電子技術(shù)基礎(chǔ)--
64、--模擬部分(第4版).北京:高等教育出版社,2006</p><p><b> 附 錄</b></p><p><b> 附錄一:原理圖</b></p><p><b> 附錄二:PCB圖</b></p><p><b> 附錄三:程序代碼</b&g
65、t;</p><p> #include<reg52.h> </p><p> #define uchar unsigned char </p><p> #define uint unsigned int </p><p> sbit rs=P2^0;</p><p> sbit rw=P2^
66、1; </p><p> sbit lcden=P2^2; </p><p> sbit s1=P1^4; </p><p> sbit s2=P1^6; </p><p> sbit s3=P1^7;</p><p> sbit beep=P3^6; </p><p> uint
67、 count,s1num; </p><p> uchar shi,fen,miao,zhou,ri,yue,nian; </p><p> uchar code table[]=" 2013-11-26 2 "; </p><p> uchar code table1[]=" 23:59:55 "; &l
68、t;/p><p> void delay(uint z); //延時1ms</p><p> void di();//</p><p> void w_com(uchar com); //寫指令</p><p> void w_data(uchar date); //寫數(shù)據(jù)</p><p>
69、 void init(); //1602初始化</p><p> void w_sfm(uchar add,uchar date);//時分秒顯示函數(shù)</p><p> void w_zhou(uchar add,uchar date);//周顯示函數(shù)</p><p> void w_ryn(uchar add,uchar date);
70、 //日月年顯示函數(shù)</p><p> void keyscan();//按鍵掃描程序</p><p> //-------------------主程序--------------------</p><p> //-------------------主程序--------------------</p><p> void ma
71、in() </p><p><b> { </b></p><p><b> init(); </b></p><p> TMOD=0x01; //使用定時器T0的模式1</p><p> TH0=(65536-46083)/256; //定時器T0的高8
72、位設(shè)置初值</p><p> TL0=(65536-46083)%256; //定時器T0的低8位設(shè)置初值</p><p> EA=1; //開總中斷</p><p> ET0=1; //定時器T0中斷允許</p><p> TR0=1;
73、 //啟動定時器T0</p><p><b> while(1) </b></p><p><b> { </b></p><p> keyscan(); </p><p> if(count==20) </p><p><b>
74、{ </b></p><p><b> count=0; </b></p><p><b> miao++; </b></p><p> if(miao==60) </p><p><b> { </b></p><p><b&
75、gt; miao=0; </b></p><p><b> fen++; </b></p><p> if(fen==60) </p><p><b> { </b></p><p> fen=0; di();</p><p><b> sh
76、i++; </b></p><p> if(shi==24) </p><p><b> { </b></p><p><b> shi=0; </b></p><p><b> zhou++; </b></p><p><b&
77、gt; ri++; </b></p><p> if(zhou==8) </p><p><b> { </b></p><p><b> zhou=1; </b></p><p><b> } </b></p><p> w_z
78、hou(14,zhou); </p><p> if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) </p><p><b> {</b></p><p> if(ri==32) </p><p><b> { </b>&
79、lt;/p><p><b> ri=1; </b></p><p><b> yue++; </b></p><p> if(yue==13) </p><p><b> { </b></p><p><b> yue=1; </b
80、></p><p><b> nian++; </b></p><p> if(nian==100) </p><p><b> nian=1; </b></p><p> w_ryn(4,nian);</p><p><b> } </b&g
81、t;</p><p> w_ryn(7,yue); </p><p><b> } </b></p><p> w_ryn(10,ri); </p><p><b> } </b></p><p> if(yue==4||yue==6||yue==9||yue==1
82、1) </p><p><b> { </b></p><p> if(ri==31) </p><p><b> { </b></p><p><b> ri=1; </b></p><p><b> yue++; </b&g
83、t;</p><p> if(yue==13) </p><p><b> { </b></p><p><b> yue=1; </b></p><p><b> nian++; </b></p><p> if(nian==100) <
84、;/p><p><b> nian=1; </b></p><p> w_ryn(4,nian); </p><p><b> } </b></p><p> w_ryn(7,yue); </p><p><b> } </b></p>
85、<p> w_ryn(10,ri); </p><p><b> } </b></p><p><b> } </b></p><p> w_sfm(4,shi); </p><p><b> } </b></p><p> w
86、_sfm(7,fen); </p><p><b> } </b></p><p> w_sfm(10,miao); </p><p><b> } </b></p><p><b> } </b></p><p><b> } &
87、lt;/b></p><p> //-------------------子程序--------------------</p><p> //-------------------子程序--------------------</p><p> void delay(uint z) </p><p><b> { &
88、lt;/b></p><p> uint x,y; </p><p> for(x=0;x<z;x++) </p><p> for(y=0;y<110;y++); </p><p><b> } </b></p><p> void di() </p>
89、<p><b> { </b></p><p><b> beep=0; </b></p><p> delay(50); </p><p><b> beep=1;</b></p><p> delay(50); </p><
90、p><b> } </b></p><p> void w_com(uchar com) </p><p><b> { </b></p><p><b> rs=0; </b></p><p><b> rw=0;</b></p&
91、gt;<p><b> lcden=0; </b></p><p><b> P0=com; </b></p><p> delay(5); </p><p> lcden=1;//給高脈沖</p><p> delay(5); </p><p>&l
92、t;b> lcden=0; </b></p><p><b> } </b></p><p> void w_data(uchar date) </p><p><b> { </b></p><p><b> rs=1; </b></p&g
93、t;<p><b> rw=0;</b></p><p><b> lcden=0; </b></p><p><b> P0=date; </b></p><p> delay(5); </p><p><b> lcden=1; </
94、b></p><p> delay(5); </p><p><b> lcden=0; </b></p><p><b> } </b></p><p> void init() </p><p><b> { </b></p&
95、gt;<p> uchar num; </p><p> lcden=0;//初始化使能為0 </p><p><b> fen=59; </b></p><p><b> miao=55; </b></p><p><b> shi=23; </b>&
96、lt;/p><p><b> zhou=2; </b></p><p><b> ri=26; </b></p><p><b> yue=11; </b></p><p> nian=1013; </p><p> w_com(0x38);//寫
97、入顯示模式指令碼</p><p> w_com(0x0c);//寫入顯示開/關(guān)及光標(biāo)指令碼</p><p> w_com(0x06);//當(dāng)寫一個字符后,地址指針加一,光標(biāo)加一,不動光標(biāo)不閃爍</p><p> w_com(0x01); //清零</p><p> w_com(0x80);//代表第一行第一位</p>&
98、lt;p> for(num=0;num<15;num++) </p><p><b> { </b></p><p> w_data(table[num]); </p><p> delay(5); </p><p><b> } </b></p><p&g
99、t; w_com(0x80+0x40);//代表第二行第一位</p><p> for(num=0;num<12;num++) </p><p><b> { </b></p><p> w_data(table1[num]); </p><p> delay(5); </p><p&
100、gt;<b> } </b></p><p> TMOD=0x01; </p><p> TH0=0x3c; </p><p> TL0=0xb0; </p><p><b> EA=1; </b></p><p><b> ET0=1; </b&
101、gt;</p><p><b> TR0=1; </b></p><p><b> } </b></p><p> /********************************* </p><p><b> 初始化函數(shù)</b></p><p&
102、gt; *********************************/ </p><p> void w_sfm(uchar add,uchar date)//時分秒</p><p><b> { </b></p><p> uchar shi,ge; </p><p> shi=date/10; <
103、;/p><p> ge=date%10; </p><p> w_com(0x80+0x40+add);//寫第二行add個地址 </p><p> w_data(0x30+shi); </p><p> w_data(0x30+ge); </p><p><b> } </b></
104、p><p> void w_zhou(uchar add,uchar date)//周</p><p><b> { </b></p><p><b> uchar z; </b></p><p><b> z=date; </b></p><p>
105、 w_com(0x80+add); //寫第一行add個地址 </p><p> w_data(0x30+z); </p><p><b> } </b></p><p> void w_ryn(uchar add,uchar date)//日</p><p><b> { </b>&l
106、t;/p><p> uchar shi,ge; </p><p> shi=date/10; </p><p> ge=date%10; </p><p> w_com(0x80+add); </p><p> w_data(0x30+shi); </p><p> w_data(0x3
107、0+ge); </p><p><b> } </b></p><p> void keyscan() </p><p><b> { </b></p><p> if(s1==0)//閃爍位置</p><p><b> { </b><
108、/p><p> delay(15); </p><p> if(s1==0) </p><p><b> { </b></p><p> while(!s1);</p><p><b> s1num++; </b></p><p> if(s1
109、num==1)//s1鍵按一下依次從秒分周日月時向左移</p><p><b> { </b></p><p><b> TR0=0; </b></p><p> w_com(0x80+0x40+0x0b); </p><p> w_com(0x0f);//左移光標(biāo)開始閃爍</p>
110、;<p><b> } </b></p><p> if(s1num==2) </p><p><b> { </b></p><p><b> TR0=0;</b></p><p> w_com(0x80+0x40+0x08); </p>
111、<p><b> } </b></p><p> if(s1num==3) </p><p><b> { </b></p><p><b> TR0=0; </b></p><p> w_com(0x80+0x40+0x05); </p
112、><p><b> } </b></p><p> if(s1num==4) </p><p><b> {</b></p><p><b> TR0=0; </b></p><p> w_com(0x80+0x0e); </p>&
113、lt;p><b> } </b></p><p> if(s1num==5) </p><p><b> { </b></p><p><b> TR0=0; </b></p><p> w_com(0x80+0x0b); </p><p&g
114、t;<b> } </b></p><p> if(s1num==6) </p><p><b> { </b></p><p><b> TR0=0; </b></p><p> w_com(0x80+0x08); </p><p><
115、b> } </b></p><p> if(s1num==7) </p><p><b> { </b></p><p><b> TR0=0; </b></p><p> w_com(0x80+0x05); </p><p><b>
116、 } </b></p><p> if(s1num==8) </p><p><b> { </b></p><p><b> s1num=0; </b></p><p> w_com(0x80+0x40+12); </p><p> w_com(0x0
117、c);//光標(biāo)恢復(fù)原樣,不閃爍</p><p><b> TR0=1; </b></p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p>
118、 //--------s1num==1------miao---------------</p><p> if(s1num==1)</p><p><b> { </b></p><p> if(s2==0) </p><p><b> { </b></p><p&g
119、t; delay(10); </p><p> if(s2==0) </p><p><b> { </b></p><p><b> miao++; </b></p><p> while(!s2); </p><p> if(miao==60) miao=
120、0; </p><p> w_sfm(10,miao); </p><p> w_com(0x80+0x40+11); </p><p><b> } </b></p><p><b> }</b></p><p> if(s3==0) </p>&l
121、t;p><b> { </b></p><p> delay(10);</p><p> if(s3==0) </p><p><b> { </b></p><p> while(!s3);</p><p><b> miao--;</b&
122、gt;</p><p> if(miao==-1) </p><p> miao=59; </p><p> w_sfm(10,miao); </p><p> w_com(0x80+0x40+11); </p><p><b> } </b></p><p>
123、;<b> } </b></p><p><b> }</b></p><p> //--------s1num==2------fen---------------</p><p> if(s1num==2)</p><p><b> { </b></p
124、><p> if(s2==0) </p><p><b> { </b></p><p> delay(10); </p><p> if(s2==0) </p><p><b> { </b></p><p><b> fen+
125、+; </b></p><p> while(!s2);</p><p> if(fen==60) fen=0; </p><p> w_sfm(7,fen); </p><p> w_com(0x80+0x40+8); </p><p><b> } </b></p
126、><p><b> }</b></p><p> if(s3==0) </p><p><b> { </b></p><p> delay(10);</p><p> if(s3==0) </p><p><b> { </b
127、></p><p> while(!s3); </p><p><b> fen--;</b></p><p> if(fen==-1)</p><p><b> fen=59; </b></p><p> w_sfm(7,fen); </p>
128、<p> w_com(0x80+0x40+8); </p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p> //--------s1num==3------shi-----
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計--數(shù)字時鐘
- 單片機課程設(shè)計--基于單片機的數(shù)字時鐘設(shè)計
- 課程設(shè)計-單片機基于單片機的數(shù)字時鐘設(shè)計
- 單片機數(shù)字時鐘課程設(shè)計
- 單片機課程設(shè)計--數(shù)字時鐘
- 單片機課程設(shè)計(數(shù)字時鐘)
- 單片機課程設(shè)計---單片機數(shù)字時鐘
- 單片機課程設(shè)計---數(shù)字時鐘的設(shè)計
- 單片機課程設(shè)計報告---基于單片機的數(shù)字時鐘設(shè)計
- 單片機課程設(shè)計數(shù)字時鐘
- 單片機數(shù)字時鐘控制課程設(shè)計
- 單片機課程設(shè)計報告---單片機數(shù)字時鐘
- 課程設(shè)計---基于51單片機的數(shù)字時鐘
- 單片機課程設(shè)計---單片機數(shù)字時鐘.doc
- 單片機數(shù)字時鐘課程設(shè)計報告
- 單片機課程設(shè)計數(shù)字時鐘
- 數(shù)字電子時鐘-單片機課程設(shè)計
- 多功能數(shù)字時鐘 單片機課程設(shè)計
- 單片機數(shù)字時鐘
- 基于51單片機的數(shù)字時鐘設(shè)計
評論
0/150
提交評論