版權(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í)鐘設(shè)計(jì)</b></p><p><b> 小組成員:</b></p><p><b> 班級(jí): </b></p><p><b> 課程老師: </b></p><p><b> 目錄</b&
2、gt;</p><p> 一、硬件結(jié)構(gòu)………………………………………………3</p><p> 1硬件原理…………………………………………………3</p><p> 1 89C52…………………………………………………… 3</p><p> 1.1硬件原理…………………………………………………3</p><p&
3、gt; 1.2 主要功能特性…………………………………………3</p><p> 1.3 管腳說明………………………………………………4</p><p> 1.4振蕩器特性……………………………………………5</p><p> 1.5結(jié)構(gòu)特點(diǎn)……………………………………………… 5</p><p> 2、數(shù)碼管……………………………
4、…………………… 6</p><p> 2.1數(shù)碼管分類………………………………………………6</p><p> 2.2數(shù)碼管結(jié)構(gòu)…………………………………………… 7</p><p> 2.3驅(qū)動(dòng)方式…………………………………………………8</p><p> 3、排阻………………………………………………………9</p>
5、<p> 3.1排阻的作用………………………………………………9</p><p> 3.2排阻引腳說明……………………………………………9</p><p> 4、晶振……………………………………………………10</p><p> 4.1晶振構(gòu)成…………………………………………………10</p><p> 4.2工作原理…
6、…………………………………………… 11</p><p> 4.3功能作用…………………………………………………11</p><p> 軟件結(jié)構(gòu)概述…………………………………………12</p><p> 1、顯示子程序………………………………………………12</p><p> 2、鍵盤掃描子程序…………………………………………13&l
7、t;/p><p> 3、中斷程序…………………………………………………16</p><p> 4、流程圖………………………………………………… 18</p><p> 三、調(diào)試過程…………………………………………………20</p><p> 四、心得體會(huì)………………………………………………………22</p><p&g
8、t; 五、參考文獻(xiàn)………………………………………………………23</p><p> 六、硬件電路圖……………………………………………………23</p><p> 七、程序清單………………………………………………………25</p><p><b> 硬件結(jié)構(gòu)概述</b></p><p><b> 89C
9、52</b></p><p><b> 1.1硬件原理 </b></p><p> 89C52是INTEL公司MCS-51系列單片機(jī)中基本的產(chǎn)品,它采用ATMEL公司可靠的CMOS工藝技術(shù)制造的高性能8位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51的HCMOS產(chǎn)品。它結(jié)合了CMOS的高速和高密度技術(shù)及CMOS的低功耗特征,它基于標(biāo)準(zhǔn)的MCS-51單片機(jī)體系結(jié)構(gòu)和指令
10、系統(tǒng),屬于89C51增強(qiáng)型單片機(jī)版本,集成了時(shí)鐘輸出和向上或向下計(jì)數(shù)器等更多的功能,適合于類似馬達(dá)控制等應(yīng)用場(chǎng)合。89C52內(nèi)置8位中央處理單元、256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM、8k片內(nèi)程序存儲(chǔ)器(ROM)32個(gè)雙向輸入/輸出(I/O)口、3個(gè)16位定時(shí)/計(jì)數(shù)器和5個(gè)兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路。此外,89C52還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時(shí)器、串行口和
11、中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時(shí)鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。89C52有PDIP(40pin)和PLCC(44pin)兩種封裝形式。</p><p> 1.2 主要功能特性</p><p> · 標(biāo)準(zhǔn)MCS-51內(nèi)核和指令系統(tǒng)</p><p> · 32個(gè)雙向I/O口</p><p> &
12、#183; 3個(gè)16位可編程定時(shí)/計(jì)數(shù)器</p><p> · 向上或向下定時(shí)計(jì)數(shù)器</p><p><b> · 6個(gè)中斷源</b></p><p> · 全雙工串行通信口</p><p> · 空閑和掉電節(jié)省模式</p><p> ·
13、 片內(nèi)8kROM(可擴(kuò)充64kB外部存儲(chǔ)器)</p><p> · 256x8bit內(nèi)部RAM(可擴(kuò)充64kB外部存儲(chǔ)器)</p><p> · 時(shí)鐘頻率3.5-12/24/33MHz</p><p> · 改進(jìn)型快速編程脈沖算法</p><p> · 5.0V工作電壓</p>&
14、lt;p><b> · 布爾處理器</b></p><p> · 4層優(yōu)先級(jí)中斷結(jié)構(gòu)</p><p> · 兼容TTL和CMOS邏輯電平</p><p> · PDIP(40)和PLCC(44)封裝形式</p><p><b> ·—幀錯(cuò)誤偵測(cè)&
15、lt;/b></p><p><b> ·—自動(dòng)地址識(shí)別</b></p><p><b> 1.3 管腳說明</b></p><p> VCC:供電電壓。 GND:接地。 </p><p> P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8個(gè)TTL門電流。當(dāng)P0口的
16、管腳第一次寫“1”時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 </p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4個(gè)TTL門電流。P1口管腳寫入“1”后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸
17、出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 </p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向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口輸出地
18、址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 </p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上
19、拉的緣故。P3口作為AT89C51的一些特殊功能口,管腳 備選功能 </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.
20、4 T0(計(jì)時(shí)器0外部輸入) </p><p> P3.5 T1(計(jì)時(shí)器1外部輸入) </p><p> P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) </p><p> P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) </p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 </p>&
21、lt;p> ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。 </p><p> 在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), A
22、LE只有在執(zhí)行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)。/EA / VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程
23、序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 </p><p> XTAL2:來自反向振蕩器的輸出。</p><p><b> 1.4振蕩器特性<
24、;/b></p><p> 外接石英晶體或者陶瓷諧振器以及電容C1、C2接在放大器的反饋回路(AT89C52內(nèi)部有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大電路,XTAL1、XTAL2分別是該放大器的輸入和輸出端)中構(gòu)成并聯(lián)振蕩電路。 </p><p> 為了使裝置能夠被外部時(shí)鐘信號(hào)激活,XATL1應(yīng)該有效,而XTAL2應(yīng)該被懸空。由于輸入到內(nèi)部的時(shí)鐘信號(hào)電路通過了一個(gè)二分頻的信號(hào),
25、外部信號(hào)的工作周期比沒有別的要求,但是最大值和最小值的大小可以在數(shù)據(jù)表上觀察出來。 </p><p> 當(dāng)正常工作時(shí),外部振蕩器可以計(jì)算出XTAL1上的電容,最大可達(dá)到100pF。這是由于振蕩器電容和反饋電容之間的相互作用。當(dāng)外部信號(hào)是標(biāo)準(zhǔn)高電平或者低電平時(shí),電容不會(huì)超過20pF.</p><p><b> 1.5結(jié)構(gòu)特點(diǎn)</b></p><p
26、> n 互補(bǔ)高性能金屬氧化物半導(dǎo)體結(jié)構(gòu)可擦可 編程只讀存儲(chǔ)器/只讀存儲(chǔ)器/中央處理器 </p><p> n 12/24/33MHz操作 </p><p> n 三個(gè)16位的定時(shí)器/計(jì)數(shù)器 </p><p> n 可編程的時(shí)鐘輸出 </p><p> n Up/Down定時(shí)器/計(jì)數(shù)器 </p><p>
27、 n 三級(jí)程序鎖定系統(tǒng) </p><p> n 8K/16K/32K片內(nèi)程序存儲(chǔ)器 </p><p> n 256字節(jié)片內(nèi)RAM </p><p> n 改進(jìn)的快速脈沖編程算法 </p><p><b> n 布爾處理器 </b></p><p> n 32根可編程的輸入/輸出線 &l
28、t;/p><p><b> n 六個(gè)中斷源 </b></p><p> n 可編程的串行通道帶有:——幀錯(cuò)誤檢測(cè) ——自動(dòng)地址識(shí)別 </p><p> n TTL和CMOS兼容邏輯電平 </p><p> n 64K片外程序存儲(chǔ)空間 </p><p> n 64K片外數(shù)據(jù)存儲(chǔ)空間 </
29、p><p> n MCS51單片機(jī)可兼容指令集 </p><p> n 閑置節(jié)能和掉電模式 </p><p> n ONCE(On-Circuit仿真)模式 </p><p> n 四級(jí)中斷優(yōu)先級(jí) </p><p> n 擴(kuò)展溫度范圍(﹣40℃到﹢85℃)</p><p><b>
30、; 數(shù)碼管</b></p><p><b> 2.1數(shù)碼管分類</b></p><p> 數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管; </p><p> 按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。
31、共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽極為低電平時(shí),相應(yīng)字段就
32、不亮。</p><p><b> 2.2數(shù)碼管結(jié)構(gòu)</b></p><p> led數(shù)碼管(LED Segment Displays)是由多個(gè)發(fā)光二極管封裝在一起組成“8”字型的器件,引線已在內(nèi)部連接完成,只需引出它們的各個(gè)筆劃,公共電極。led數(shù)碼管常用段數(shù)一般為7段有的另加一個(gè)小數(shù)點(diǎn),還有一種是類似于3位“+1”型。位數(shù)有半位,1,2,3,4,5,6,8,10
33、位等等....,led數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌愋偷臄?shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。圖2是共陰和共陽極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。顏色有紅,綠,藍(lán),黃等幾種。led數(shù)碼管廣泛用于儀表,時(shí)鐘,車站,家電等場(chǎng)合。選用時(shí)要注意產(chǎn)品尺寸顏色,功耗,亮度,波長(zhǎng)等。</p><p><
34、b> 2.3驅(qū)動(dòng)方式</b></p><p><b> 靜態(tài)顯示驅(qū)動(dòng)</b></p><p> 靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=
35、40根I/O端口來驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)呢:),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。 </p><p><b> 動(dòng)態(tài)顯示驅(qū)動(dòng)</b></p><p> 數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"
36、的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為
37、1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p><b> 排阻</b></p><p><b> 3.1排阻的作用 </b></p&
38、gt;<p> 內(nèi)存芯片下方均勻分布的“芝麻粒”,實(shí)際上是位于內(nèi)存顆粒和金手指之間的“排阻”。排阻,是一排電阻的簡(jiǎn)稱。我們知道,內(nèi)存在處理、傳輸數(shù)據(jù)時(shí)會(huì)產(chǎn)生大小不一的工作電流。而在內(nèi)存顆粒走線的必經(jīng)之處安裝一排電阻,則能夠幫助內(nèi)存起到穩(wěn)壓作用,讓內(nèi)存工作更穩(wěn)定。從而提升內(nèi)存的穩(wěn)定性,增強(qiáng)內(nèi)存使用壽命。內(nèi)存右邊角上的“小綠豆”,我們一般稱之為SPD。SPD是一存儲(chǔ)體,它存儲(chǔ)了廠商對(duì)內(nèi)存的詳細(xì)配置信息:如內(nèi)存的工作電壓,位寬
39、,操作時(shí)序等。每次開機(jī)后自檢時(shí),系統(tǒng)都會(huì)首先讀取內(nèi)存SPD中的相關(guān)信息,來自動(dòng)配置硬件資源,以避免出錯(cuò)。上拉、限流。和普通電阻一樣,相比而言簡(jiǎn)化了PCB的設(shè)計(jì)、安裝,減小空間,保證焊接質(zhì)量。</p><p><b> 3.2排阻引腳說明</b></p><p> 1與a 2與b 3與c 4 與d之間的電阻都是10歐,與其它的管腳沒有任何關(guān)系.就是一排電阻,做在了一
40、個(gè)原件上.</p><p> 有的還有一個(gè)公腳,就是為了方便使用,拿萬用表量一下就會(huì)發(fā)現(xiàn)所有腳對(duì)公共腳的阻值均是標(biāo)稱值,除公共腳外其它任意兩腳阻值是標(biāo)稱值的兩倍,很明顯任意兩腳通過公共腳腳串聯(lián)的嘛!用在有很多上下拉電阻的場(chǎng)合應(yīng)用特方便,比如并行通訊線上,還節(jié)省空間。</p><p><b> 晶振</b></p><p><b>
41、 4.1晶振構(gòu)成</b></p><p> 石英晶體振蕩器是利用石英晶體(二氧化硅的結(jié)晶體)的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片(簡(jiǎn)稱為晶片,它可以是正方形、矩形或圓形等),在它的兩個(gè)對(duì)應(yīng)面上涂敷銀層作為電極,在每個(gè)電極上各焊一根引線接到管腳 上,再加上封裝外殼就構(gòu)成了石英晶體諧振器,簡(jiǎn)稱為石英晶體或晶體、晶振;而在封裝內(nèi)部添加IC組成振蕩電路的晶
42、體元件稱為晶體振蕩器。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。</p><p><b> 4.2工作原理</b></p><p> 計(jì)算機(jī)都有個(gè)計(jì)時(shí)電路,盡管一般使用“時(shí)鐘”這個(gè)詞來表示這些設(shè)備,但它們實(shí)際上并不是通常意義的時(shí)鐘,把它們稱為計(jì)時(shí)器(timer)可能更恰當(dāng)一點(diǎn)。計(jì)算機(jī)的計(jì)時(shí)器通常是一個(gè)精密加工過的石英晶體,石英晶體在其張力限度內(nèi)以一
43、定的頻率振蕩,這種頻率取決于晶體本身如何切割及其受到張力的大小。有兩個(gè)寄存器與每個(gè)石英晶體相關(guān)聯(lián),一個(gè)計(jì)數(shù)器(counter)和一個(gè)保持寄存器(holdingregister)。石英晶體的每次振蕩使計(jì)數(shù)器減1。當(dāng)計(jì)數(shù)器減為0時(shí),產(chǎn)生一個(gè)中斷,計(jì)數(shù)器從保持計(jì)數(shù)器中重新裝入初始值。這種方法使得對(duì)一個(gè)計(jì)時(shí)器進(jìn)行編程,令其每秒產(chǎn)生60次中斷(或者以任何其它希望的頻率產(chǎn)生中斷)成為可能。每次中斷稱為一個(gè)時(shí)鐘嘀嗒(clocktick)。 </
44、p><p> 晶振在電氣上可以等效成一個(gè)電容和一個(gè)電阻并聯(lián)再串聯(lián)一個(gè)電容的二端網(wǎng)絡(luò),電工學(xué)上這個(gè)網(wǎng)絡(luò)有兩個(gè)諧振點(diǎn),以頻率的高低分其中較低的頻率為串聯(lián)諧振,較高的頻率為并聯(lián)諧振。由于晶體自身的特性致使這兩個(gè)頻率的距離相當(dāng)?shù)慕咏谶@個(gè)極窄的頻率范圍內(nèi),晶振等效為一個(gè)電感,所以只要晶振的兩端并聯(lián)上合適的電容它就會(huì)組成并聯(lián)諧振電路。這個(gè)并聯(lián)諧振電路加到一個(gè)負(fù)反饋電路中就可以構(gòu)成正弦波振蕩電路,由于晶振等效為電感的頻率范圍
45、很窄,所以即使其他元件的參數(shù)變化很大,這個(gè)振蕩器的頻率也不會(huì)有很大的變化。晶振有一個(gè)重要的參數(shù),那就是負(fù)載電容值,選擇與負(fù)載電容值相等的并聯(lián)電容,就可以得到晶振標(biāo)稱的諧振頻率。一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容,請(qǐng)注意一般IC的引腳都有等效輸入電容,這個(gè)不能忽略。一般的晶振的負(fù)載電容為15p或1
46、2.5p,如果再考慮元件引腳的等效輸入電容,則兩個(gè)22p的電容構(gòu)成晶振的振蕩電路就是比較好的選擇。</p><p><b> 4.3功能作用</b></p><p> 晶振在應(yīng)用具體起到的作用,微控制器的時(shí)鐘源可以分為兩類:基于機(jī)械諧振器件的時(shí)鐘源,如晶振、陶瓷諧振槽路;RC(電阻、電容)振蕩器。一種是皮爾斯振蕩器配置,適用于晶振和陶瓷諧振槽路。另一種為簡(jiǎn)單的分立
47、RC振蕩器?;诰д衽c陶瓷諧振槽路的振蕩器通常能提供非常高的初始精度和較低的溫度系數(shù)。RC振蕩器能夠快速啟動(dòng),成本也比較低,但通常在整個(gè)溫度和工作電源電壓范圍內(nèi)精度較差,會(huì)在標(biāo)稱輸出頻率的5%至50%范圍內(nèi)變化。但其性能受環(huán)境條件和電路元件選擇的影響。需認(rèn)真對(duì)待振蕩器電路的元件選擇和線路板布局。在使用時(shí),陶瓷諧振槽路和相應(yīng)的負(fù)載電容必須根據(jù)特定的邏輯系列進(jìn)行優(yōu)化。具有高Q值的晶振對(duì)放大器的選擇并不敏感,但在過驅(qū)動(dòng)時(shí)很容易產(chǎn)生頻率漂移(甚
48、至可能損壞)。影響振蕩器工作的環(huán)境因素有:電磁干擾(EMI)、機(jī)械震動(dòng)與沖擊、濕度和溫度。這些因素會(huì)增大輸出頻率的變化,增加不穩(wěn)定性,并且在有些情況下,還會(huì)造成振蕩器停振。上述大部分問題都可以通過使用振蕩器模塊避免。這些模塊自帶振蕩器、提供低阻方波輸出,并且能夠在一定條件下保證運(yùn)行。最常用的兩種類型是晶振模塊和集成RC振蕩器(硅振蕩器)。晶振模塊提供與分立晶振</p><p> 選擇振蕩器時(shí)還需要考慮功耗。分立
49、振蕩器的功耗主要由反饋放大器的電源電流以及電路內(nèi)部的電容值所決定。CMOS放大器功耗與工作頻率成正比,可以表示為功率耗散電容值。比如,HC04反相器門電路的功率耗散電容值是90pF。在4MHz、5V電源下工作時(shí),相當(dāng)于1.8mA的電源電流。再加上20pF的晶振負(fù)載電容,整個(gè)電源電流為2.2mA。陶瓷諧振槽路一般具有較大的負(fù)載電容,相應(yīng)地也需要更多的電流。相比之下,晶振模塊一般需要電源電流為10mA ~60mA。硅振蕩器的電源電流取決于其
50、類型與功能,范圍可以從低頻(固定)器件的幾個(gè)微安到可編程器件的幾個(gè)毫安。一種低功率的硅振蕩器,如MAX7375,工作在4MHz時(shí)只需不到2mA的電流。在特定的應(yīng)用場(chǎng)合優(yōu)化時(shí)鐘源需要綜合考慮以下一些因素:精度、成本、功耗以及環(huán)境需求。</p><p><b> 軟件結(jié)構(gòu)概述</b></p><p><b> 1顯示子程序</b></p&g
51、t;<p> 1.1顯示函數(shù) display()</p><p> void display()</p><p><b> {</b></p><p><b> uchar i;</b></p><p> for(i=0;i<8;i++)</p><
52、;p><b> {</b></p><p> P0=LED[i];</p><p> P2=wei[i];</p><p> delay_ms(2);</p><p><b> P2=0xff;</b></p><p><b> }</b
53、></p><p><b> }</b></p><p> 這次所用到的數(shù)碼管為8個(gè),分別顯示小時(shí)、分鐘、秒,所以這里用到了一個(gè)6容量的數(shù)組LED[6]來做數(shù)碼管顯示緩沖區(qū)。</p><p> 這次使用的是動(dòng)態(tài)掃描顯示,一次對(duì)六個(gè)數(shù)碼管都做掃描,每位數(shù)碼管的點(diǎn)亮?xí)r間為2ms,其中P0做數(shù)碼管的位驅(qū)動(dòng),P2位段驅(qū)動(dòng)。</p>
54、;<p> 1.2時(shí)鐘顯示處理函數(shù) disp_time()</p><p> void disp_time()</p><p><b> {</b></p><p> a=second%10;</p><p> b=second/10;</p><p> c=minute
55、%10;</p><p> d=minute/10;</p><p> e=hour%10;</p><p> f=hour/10;</p><p> LED[0]=duan[a];</p><p> LED[1]=duan[b];</p><p> LED[2]=duan[c];&
56、lt;/p><p> LED[3]=duan[d];</p><p> LED[4]=duan[e];</p><p> LED[5]=duan[f];</p><p><b> }</b></p><p> 其中a位秒的個(gè)位,b為秒的十位,c為分的個(gè)位,d為分的十位,e為小時(shí)的個(gè)位,f為小
57、時(shí)的十位。</p><p> LED[0]、LED[1]、LED[2]、LED[3]、LED[4]、LED[5]對(duì)應(yīng)得顯示秒的個(gè)位十位,分的個(gè)位十位,小時(shí)的個(gè)位十位。</p><p> 1.3秒表的顯示處理函數(shù) disp_miao()</p><p> void disp_miao()</p><p><b> {</
58、b></p><p><b> a=C%10;</b></p><p><b> b=C/10;</b></p><p><b> c=B%10;</b></p><p><b> d=B/10;</b></p><p&g
59、t;<b> e=A%10;</b></p><p><b> f=A/10;</b></p><p> LED[0]=duan[a];</p><p> LED[1]=duan[b];</p><p> LED[2]=duan[c];</p><p> LED[
60、3]=duan[d];</p><p> LED[4]=duan[e];</p><p> LED[5]=duan[f];</p><p><b> }</b></p><p> 其中C為秒表的百秒、千秒,B為秒表的十秒、秒,A為秒表的1/10秒、1/100秒。</p><p> LED
61、[0]、LED[1]、LED[2]、LED[3]、LED[4]、LED[5]對(duì)應(yīng)得顯示秒表的百秒、千秒,十秒、秒,1/10秒、1/100秒。</p><p> 2、鍵盤掃描子程序 key_scan()</p><p> 2.1 K1鍵的掃描</p><p><b> if(k1==0)</b></p><p>&l
62、t;b> {</b></p><p> delay_ms(10);</p><p><b> if(k1==0)</b></p><p><b> {</b></p><p> while(!k1); </p><p><b> TR0
63、=0; </b></p><p> set_flag=1; </p><p> k1_flag++;</p><p> if(k1_flag==4)k1_flag=1;</p><p><b> }</b></p><p> 當(dāng)K0有鍵按下是為0,則進(jìn)入IF函數(shù)里,首先程序延
64、時(shí)10MS防止抖動(dòng)造成誤操作,當(dāng)K1按下時(shí)為調(diào)時(shí)工作,即選擇小時(shí),分鐘,秒,調(diào)時(shí)中設(shè)置一個(gè)調(diào)時(shí)標(biāo)志位K1_FLAG,以便調(diào)時(shí)可以循環(huán)的選擇。</p><p> 2.2 K2鍵的掃描</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p>
65、delay_ms(10);</p><p> if(k2==0&choose_flag>=1)</p><p><b> {</b></p><p> while(!k2);</p><p> k2_flag++;</p><p> if(k2_flag==2)k2_fla
66、g=0;</p><p> TR1=k2_flag;</p><p><b> }</b></p><p> if(k2==0&set_flag==1)</p><p><b> {</b></p><p> while(!k2);</p>&
67、lt;p> switch (k1_flag)</p><p><b> {</b></p><p> case 1:hour++;if(hour==24)hour=0;break;</p><p> case 2:minute++;if(minute==60)minute=0;break;</p><p>
68、 case 3:second++;if(second==60)second=0;break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> K2鍵在秒表時(shí)為計(jì)數(shù)的開始與停止,在時(shí)鐘
69、里作為加一功能鍵,在區(qū)分是秒表還是時(shí)鐘方面,選擇了一個(gè)標(biāo)志位choose_flag來區(qū)分當(dāng)其大于1時(shí)就表示為秒表模式,當(dāng)其為0時(shí)表示為時(shí)鐘模式,choose_flag的值是根據(jù)切換鍵來決定的。</p><p> 當(dāng)進(jìn)入秒表時(shí),K2每按一下都會(huì)改變k2_flag的狀態(tài),k2_flag也決定著時(shí)鐘是停是走,當(dāng)進(jìn)入時(shí)鐘時(shí)由k1_flag的狀態(tài)決定哪一環(huán)節(jié)被加,而實(shí)現(xiàn)加的就是K2影響k2_flag的結(jié)果。</p&
70、gt;<p> 2.3 K3鍵的掃描</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> delay_ms(10);</p><p> if(k3==0&choose_flag>=1)</p>
71、<p><b> {</b></p><p> while(!k3);</p><p> H=0;L=0;M=0;</p><p><b> TR1=0;</b></p><p><b> }</b></p><p> if(k
72、3==0&set_flag==1)</p><p><b> {</b></p><p> while(!k3);</p><p> switch (k1_flag)</p><p><b> {</b></p><p> case 1:if(hour==0
73、)hour=24;hour--;break;</p><p> case 2:if(minute==0)minute=60;minute--;break;</p><p> case 3:if(second==0)second=60;second--;break;</p><p><b> }</b></p><p&
74、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> K3鍵的作用于K2鍵是相對(duì)應(yīng)的。</p><p> K3鍵在秒表時(shí)為計(jì)數(shù)的清零,在時(shí)鐘里作為減一功能鍵,在區(qū)分是秒表還是時(shí)鐘方面,選擇了一個(gè)標(biāo)志
75、位choose_flag來區(qū)分當(dāng)其大于1時(shí)就表示為秒表模式,當(dāng)其為0時(shí)表示為時(shí)鐘模式,choose_flag的值是根據(jù)切換鍵來決定的。</p><p> 當(dāng)進(jìn)入秒表時(shí),K3按一下會(huì)使得秒表的計(jì)數(shù)值被清零,當(dāng)進(jìn)入時(shí)鐘時(shí)由k1_flag的狀態(tài)決定哪一環(huán)節(jié)被加,而實(shí)現(xiàn)加的就是K2影響k2_flag的結(jié)果。</p><p> 2.4 K4鍵的掃描</p><p><
76、;b> if(k4==0)</b></p><p><b> {</b></p><p> delay_ms(10);</p><p> if(set_flag==0&k4==0) </p><p><b> {</b></p><p>
77、 while(!k4);</p><p> start_flag++;</p><p> if(start_flag==2) </p><p><b> {</b></p><p> TR1=1; </p><p> start_flag=0;<
78、;/p><p><b> } </b></p><p> choose_flag++;</p><p> if(choose_flag==3)</p><p><b> {</b></p><p><b> TR0=1;</b></p&g
79、t;<p> choose_flag=0;</p><p><b> }</b></p><p><b> }</b></p><p> if(k4==0&set_flag==1)</p><p><b> {</b></p>&l
80、t;p> while(!k4);</p><p> set_flag=0;</p><p> k1_flag=0;</p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b>
81、;</p><p> K4鍵的作用時(shí)時(shí)鐘、秒表間的切換,當(dāng)K4被按一下則進(jìn)入到秒表,進(jìn)入秒表模式是數(shù)碼管的全部?jī)?nèi)容被清空,等待著啟動(dòng),K4再被按一下則啟動(dòng)秒表,k4被按第三下時(shí)秒表又回到時(shí)鐘,如上是在沒有處在調(diào)節(jié)時(shí)間的條件下,當(dāng)時(shí)鐘正處在時(shí)間調(diào)節(jié)下時(shí)那K4的作用就是將其退到時(shí)鐘狀態(tài)</p><p><b> 3、中斷程序</b></p><p&
82、gt; 3.1 時(shí)鐘中斷程序</p><p> void timer0() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><
83、;b> t++;</b></p><p><b> if(t==20)</b></p><p><b> {</b></p><p><b> t=0;</b></p><p><b> second++;</b></p&
84、gt;<p> if(second==60)</p><p><b> {</b></p><p><b> minute++;</b></p><p><b> second=0;</b></p><p> if(minute==60)</p&g
85、t;<p><b> {</b></p><p><b> hour++;</b></p><p><b> minute=0;</b></p><p> if(hour==24)</p><p><b> {</b></p&
86、gt;<p><b> hour=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p
87、><p> 該中斷用的是定時(shí)器T0,沒50ms中斷一次,沒中斷20次秒加一,秒加到60后向分進(jìn)位,即秒清零,分加一,當(dāng)分加到60后向小時(shí)進(jìn)位,即秒分都清零小時(shí)加一。</p><p> 3.2 秒表中斷程序</p><p> void timer1() interrupt 3</p><p><b> {</b><
88、;/p><p> TH1=(65536-10000)/256;</p><p> TL1=(65536-10000)%256;</p><p><b> n++;</b></p><p><b> if(n==1)</b></p><p><b> {<
89、/b></p><p><b> n=0;</b></p><p><b> C++;</b></p><p> if(C==100)</p><p><b> {</b></p><p><b> C=0;</b>
90、</p><p><b> B++;</b></p><p> if(B==100)</p><p><b> {</b></p><p><b> B=0;</b></p><p><b> A++;</b></p
91、><p> if(A==100)</p><p><b> {</b></p><p><b> A=0;</b></p><p><b> }</b></p><p><b> }</b></p><p&
92、gt;<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 該中斷用到定時(shí)器T1,T1每計(jì)數(shù)10ms則產(chǎn)生一次中斷,秒表里是逢百進(jìn)位,進(jìn)位方式與前面相似。</p><p><b> 調(diào)試過程<
93、;/b></p><p><b> 3.1 時(shí)鐘</b></p><p><b> 3.2 時(shí)鐘調(diào)時(shí)</b></p><p><b> 3.3 秒表</b></p><p><b> 3.4 秒表計(jì)時(shí)</b></p><p
94、><b> 四、心得體會(huì)</b></p><p> 經(jīng)過一周的課程設(shè)計(jì),我收獲頗多,有深刻的心得體會(huì)。 實(shí)踐讓我們受益匪淺。首先是關(guān)于單片機(jī)方面的,為了順利完成程序的構(gòu)成,我們學(xué)了一些關(guān)于單片機(jī)系統(tǒng)開發(fā)的C語言知識(shí),最開始從已學(xué)過的C語言知識(shí)到最后的老師在課堂上補(bǔ)充的關(guān)于匯編的C語言,使我們得到了充分的鍛煉。其次,它讓我體會(huì)到了什么才是teamwork spirit。一如:兩個(gè)人的
95、分工、合作的經(jīng)驗(yàn)、團(tuán)隊(duì)意識(shí)的提升和協(xié)調(diào)能力等等,這些都會(huì)讓我們終身受益。 通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)電子線路單片機(jī)方面的知識(shí),因?yàn)檫@次我們不僅寫出了程序,而且還為寫出的程序作出了實(shí)物,在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查我終于找出了問題所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐才能出真知,實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),唯有通過親自動(dòng)手制作,才能令我們掌握的知識(shí)不再是一些紙
96、上談兵的東西。 在這次的課程設(shè)計(jì)中,我們遇到了很多困難,過程很艱難,但是我們都克服了,這是對(duì)我們自己的肯定。我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。我們也曾灰心,也曾茫然,也曾不知所措,從一開始的自信滿滿,到最后的緊張繁</p><p> 在這次程序設(shè)計(jì)中我們有許多值得思考的問題,首先、當(dāng)老師建議作出實(shí)物時(shí)我和另一個(gè)組員猶豫是否作出這個(gè)東西,因?yàn)橄胫抡娑嗪?jiǎn)單啊,但是看到身邊同學(xué)毫不猶豫的選擇作出實(shí)物來
97、時(shí),我們?yōu)槲覀兺硕笃浯蔚南敕☉M愧;其次、在畫板子時(shí)我們明顯的發(fā)現(xiàn)自己不知從何處下手,在實(shí)驗(yàn)室里呆了一天并且包了夜才漸漸的摸到門路,這時(shí)我們才發(fā)現(xiàn)這些看似很簡(jiǎn)單的東西都是需要許多功夫和辛勞的;最后、在程序方面雖然我們這學(xué)期學(xué)習(xí)的是匯編語言,但是發(fā)現(xiàn)自己用匯編實(shí)現(xiàn)老師要求的能力遠(yuǎn)遠(yuǎn)不過,于是轉(zhuǎn)向用C語言來解決,但是從這個(gè)方面來做我們組還是依賴了實(shí)驗(yàn)室的同學(xué)很多,我們先是學(xué)習(xí)他們的程序,消化吸收才有了我們的程序,在這里覺得我們的水平還是太差
98、,也非常感謝那些幫助過我們的同學(xué)。</p><p><b> 五、參考文獻(xiàn)</b></p><p> ?。?)胡漢才 單片機(jī)原理及其接口技術(shù)(第二版). 北京:清華大學(xué)出版社,2004.2</p><p> ?。?)徐安等 單片機(jī)原理及應(yīng)用. 北京:北京希望電子出版社,2003.2</p><p> ?。?)丁元杰
99、單片微機(jī)原理及應(yīng)用(第二版). 北京:機(jī)械工業(yè)出版社,1999.10</p><p> ?。?)李建忠 單片機(jī)原理及應(yīng)用. 西安:西安電子科技大學(xué)出版社,2002.2</p><p> ?。?)徐惠民 單片微型計(jì)算機(jī)原理、接口及應(yīng)用(第二版). 北京:北京郵電大學(xué)出版社,2000.10</p><p> (6)閆玉德 MCS-51單片機(jī)原理及應(yīng)用(C語言版). 北
100、京:機(jī)械工業(yè)出版社</p><p> (7)何橋等 單片機(jī)原理及應(yīng)用. 北京:中國(guó)鐵道出版社,2004.3</p><p> ?。?)李群芳 單片機(jī)原理、接口及應(yīng)用—嵌入式系統(tǒng)技術(shù)基礎(chǔ). 北京:清華大學(xué)出版社,2005.3</p><p><b> 六、硬件電路圖</b></p><p><b> 七、程
101、序清單</b></p><p> #include <reg52.h></p><p> #include <intrins.h></p><p> #define uint unsigned int </p><p> #define uchar unsigned char </p>
102、<p> sbit k1 = P1^0; //定義按鍵K</p><p> sbit k2 = P1^1;</p><p> sbit k3 = P1^2;</p><p> sbit k4 = P1^3;</p><p> unsigned char LED[8]={0x00};//數(shù)碼管顯示緩沖區(qū)</p>
103、<p> unsigned int t; //定時(shí)器0單位時(shí)間標(biāo)識(shí)值</p><p> int n; //計(jì)數(shù)器1單位時(shí)間標(biāo)志值</p><p> unsigned char a=0,b=0,c=0,d=0,e=0,f=0;//待顯示位置的形參</p><p> unsigned char hour=23; //定義小時(shí)變量并賦初值&l
104、t;/p><p> unsigned char minute=54;//定義分鐘變量并賦初值</p><p> unsigned char second=50;//定義秒變量并賦初值</p><p> unsigned char A=0; //百秒、千秒形參</p><p> unsigned char B=0; //十秒、秒形參
105、</p><p> unsigned char C=0; //1/10秒、1/100秒形參</p><p> unsigned char start_flag=0;//秒表開始計(jì)時(shí)標(biāo)志位,為2開始</p><p> unsigned char k1_flag=0; //調(diào)時(shí)對(duì)象選擇標(biāo)識(shí):hour,minute,second,循環(huán)調(diào)節(jié)</p&g
106、t;<p> unsigned char k2_flag=1; //秒表暫停標(biāo)識(shí),為0:暫停,為1:繼續(xù)</p><p> unsigned char set_flag=0; /時(shí)間設(shè)置標(biāo)志位,為0:正常走時(shí),為1:停止走時(shí)并進(jìn)入調(diào)時(shí)狀態(tài)</p><p> unsigned char choose_flag=0; //顯示模式選擇標(biāo)識(shí)。為0:時(shí)鐘模式,為1:秒表模式&l
107、t;/p><p> unsigned char wei[8]={0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef};</p><p> unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};</p><p> //<&
108、lt;<<<<<<<<<<<<<<<<<<<<<<<<<<<<函數(shù)申明>>>>>>>>>>>>>>>>>>>>>>>>>&
109、gt;>>>>>>>></p><p> void delay_ms(uint z); //ms延時(shí)函數(shù)申明</p><p> void display(); //緩沖區(qū)數(shù)值顯示函數(shù)申明</p><p> void disp_time(); //時(shí)鐘模式下顯示處理函數(shù)申明
110、</p><p> void system_init(); //初始化TMOD申明</p><p> void disp_miao(); //秒表模式下顯示處理函數(shù)申明</p><p> void key_scan(); //按鍵檢測(cè)、鍵值處理函數(shù)申明</p><p> void key_sc
111、an()</p><p><b> {</b></p><p><b> if(k1==0)</b></p><p><b> {</b></p><p> delay_ms(10); //去抖</p><p><b>
112、if(k1==0)</b></p><p><b> {</b></p><p> while(!k1); //等待按鍵釋放</p><p> TR0=0; //調(diào)時(shí)模式下停止走時(shí)</p><p> set_flag=1; //設(shè)置相應(yīng)標(biāo)志位</p>
113、<p> k1_flag++;</p><p> if(k1_flag==4)k1_flag=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> if(k4==0)</b></p>&
114、lt;p><b> {</b></p><p> delay_ms(10);</p><p> if(set_flag==0&k4==0) //進(jìn)入秒表模式</p><p><b> {</b></p><p> while(!k4);</p>&
115、lt;p> start_flag++;</p><p> if(start_flag==2) //進(jìn)入秒表模式下,全部清空,等待啟動(dòng)</p><p><b> {</b></p><p> TR1=1; //啟動(dòng)秒表</p><p> start_fla
116、g=0;</p><p><b> } </b></p><p> choose_flag++;</p><p> if(choose_flag==3)</p><p><b> {</b></p><p><b> TR0=1;</b>&
117、lt;/p><p> choose_flag=0;</p><p><b> }</b></p><p><b> }</b></p><p> if(k4==0&set_flag==1)</p><p><b> {</b></p&
118、gt;<p> while(!k4);</p><p> set_flag=0;</p><p> k1_flag=0;</p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }&l
119、t;/b></p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> delay_ms(10);</p><p> if(k2==0&choose_flag>=1)</p><p><b&g
120、t; {</b></p><p> while(!k2);</p><p> k2_flag++;</p><p> if(k2_flag==2)k2_flag=0;</p><p> TR1=k2_flag;</p><p><b> }</b></p>&
121、lt;p> if(k2==0&set_flag==1)</p><p><b> {</b></p><p> while(!k2);</p><p> switch (k1_flag)</p><p><b> {</b></p><p> cas
122、e 1:hour++;if(hour==24)hour=0;break;</p><p> case 2:minute++;if(minute==60)minute=0;break;</p><p> case 3:second++;if(second==60)second=0;break;</p><p><b> }</b><
123、/p><p><b> }</b></p><p><b> }</b></p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> delay_ms(10);</p&g
124、t;<p> if(k3==0&choose_flag>=1)</p><p><b> {</b></p><p> while(!k3);</p><p> H=0;L=0;M=0;</p><p><b> TR1=0;</b></p>&l
125、t;p><b> }</b></p><p> if(k3==0&set_flag==1)</p><p><b> {</b></p><p> while(!k3);</p><p> switch (k1_flag)</p><p><b&
126、gt; {</b></p><p> case 1:if(hour==0)hour=24;hour--;break;</p><p> case 2:if(minute==0)minute=60;minute--;break;</p><p> case 3:if(second==0)second=60;second--;break;</
127、p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void display()</p><
128、;p><b> {</b></p><p><b> uchar i;</b></p><p> for(i=0;i<6;i++)</p><p><b> {</b></p><p> P0=LED[i];</p><p> P
129、2=wei[i];</p><p> delay_ms(2);</p><p><b> P2=0xff;</b></p><p><b> }</b></p><p><b> }</b></p><p> void disp_time(
130、)</p><p><b> {</b></p><p> a=second%10;</p><p> b=second/10;</p><p> c=minute%10;</p><p> d=minute/10;</p><p> e=hour%10;<
131、;/p><p> f=hour/10;</p><p> LED[0]=duan[a];</p><p> LED[1]=duan[b];</p><p> LED[2]=duan[c];</p><p> LED[3]=duan[d];</p><p> LED[4]=duan[e];
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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í)鐘課程設(shè)計(jì)報(bào)告
- 單片機(jī)時(shí)鐘課程設(shè)計(jì)
- 單片機(jī)秒表電子時(shí)鐘課程設(shè)計(jì)
- 單片機(jī)時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)報(bào)告
- 單片機(jī)秒表設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告-秒表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告-秒表設(shè)計(jì)
- 單片機(jī)秒表設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 單片機(jī)秒表設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)電子秒表課程設(shè)計(jì)報(bào)告
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---秒表
- 單片機(jī)秒表課程設(shè)計(jì)
- 秒表(單片機(jī)課程設(shè)計(jì))
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)控制秒表系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
評(píng)論
0/150
提交評(píng)論