找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 42560|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的數(shù)字鐘設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111475 發(fā)表于 2016-3-30 21:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
The design of digital clock based on signal-chip computer


摘    要

基于單片機(jī)的定時(shí)和控制裝置在許多行業(yè)有著廣泛的應(yīng)用,而數(shù)字鐘是其中最基本的,也是最具有代表性的一個(gè)例子。

在基于單片機(jī)系統(tǒng)的數(shù)字鐘電路中,除了基本的單片機(jī)系統(tǒng)和外圍電路外,還需要外部的控制和顯示裝置。本電路主要以單片機(jī)AT89S52為核心而設(shè)計(jì)的,通過單片機(jī)對(duì)信息的分析與處理,控制外圍設(shè)備。系統(tǒng)由復(fù)位模塊、時(shí)鐘模塊、溫度模塊、音樂模塊、光識(shí)模塊及顯示模塊共六個(gè)模塊組成,后來在時(shí)鐘模塊的基礎(chǔ)上又加載了日歷、星期的模塊。

本設(shè)計(jì)以單片機(jī)AT89S52為切入點(diǎn),通過使用AT89S52的內(nèi)部的可編程定時(shí)器/計(jì)數(shù)器,結(jié)合對(duì)外接晶振的調(diào)節(jié)來確定一個(gè)合適的振蕩周期,從而確定出內(nèi)部的機(jī)器周期。再通過對(duì)內(nèi)部中斷程序的設(shè)置來設(shè)計(jì)出時(shí)鐘程序,即設(shè)計(jì)出了電子時(shí)鐘的核心。然后在核心電路的基礎(chǔ)上設(shè)計(jì)出了相應(yīng)的擴(kuò)展電路,使本設(shè)計(jì)更加實(shí)用。

 

關(guān)鍵詞:?jiǎn)纹瑱C(jī);數(shù)碼顯示;溫度傳感器


 

ABSTRACT

The timer equipment using micro controller unit is applied in many trades, the digital clock is the most fundamental example among them, and it is also a most typical example.

In digital clock circuit based micro controller unit system, there are the external controlling and display device besides the fundamental monolithic machine system and the outer-ring circuit. The key of the circuit in this design is AT89S52, using the micro control system to process information to control the outer-ring circuit. The system is made up of circuit, clock circuit, music circuit, temperature circuit, and shine circuit. Date and week modul is the external part.

This design focuses on monolithic integrated circuit AT89S52. Using AT89S52, which has the interior programmable timer/counter, the union foreign meets the crystal oscillator the adjustment to determine an appropriate duration of oscillation, thus determines theinterior the cycle of the system. And designing the internal interrupt procedure establishment to design the clock procedure, namely designed the core of electronic clock. Then design the expanded electric circuit to let this design more practical.

 

Key Words:Micro control unit; LED shows; Sensor of temperature


目    錄

1. 引言      1

2. 關(guān)于單片機(jī)      2

2.1單片機(jī)的發(fā)展      2

2.2 單片機(jī)的開發(fā)背景      4

2.2 單片機(jī)的開發(fā)背景      5

2.3 AT89S52單片機(jī)      6

2.3.1 AT89S52單片機(jī)引腳功能      7

2.3.2 AT89S52單片機(jī)硬件結(jié)構(gòu)的特點(diǎn)      8

2.3.3 AT89S52單片機(jī)的硬件原理      10

3. 方案設(shè)計(jì)與論證      12

4. 系統(tǒng)總體結(jié)構(gòu)框圖      13

5. 系統(tǒng)的硬件設(shè)計(jì)      14

5.1 顯示部分電路的設(shè)計(jì)      14

5.1.1 LED數(shù)碼顯示管的基本原理      14

5.1.2 數(shù)碼管顯示模塊分析      14

5.1.3 LED顯示電路      15

5.2 控制部分電路的設(shè)計(jì)      15

5.2.1 時(shí)鐘模塊      15

5.2.2 溫度模塊      16

5.2.3 音樂模塊      16

5.2.4 復(fù)位模塊      16

5.2.5 光識(shí)模塊      17

6. 系統(tǒng)的軟件設(shè)計(jì)      18

6.1 各模塊的程序設(shè)計(jì)      18

6.1.1 計(jì)時(shí)程序      18

6.1.2 定時(shí)鬧鐘程序      18

6.1.3 溫度程序      18

6.2 系統(tǒng)程序設(shè)計(jì)的總體框圖      19

7. 系統(tǒng)電路的制作與調(diào)試      20

7.1 電路硬件焊接制作      20

7.2 調(diào)試的主要方法      20

7.3 系統(tǒng)調(diào)試      20

7.3.1 硬件調(diào)試      20

7.3.2 軟件調(diào)試      20

7.3.3 聯(lián)機(jī)調(diào)試      21

7.3.4調(diào)試中遇到的問題及解決方法      21

結(jié)論      23

參考文獻(xiàn)      24

附錄1  數(shù)字鐘電路圖      26

附錄2  程序清單      27

附錄3  英文資料      59

附錄4  英文資料翻譯      69

致謝      77

1. 引言

20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。
  時(shí)間對(duì)人們來說總是那么寶貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)間。忘記了要做的事情,當(dāng)事情不是很重要的時(shí)候,這種遺忘無傷大雅。但是,一旦重要事情,一時(shí)的耽誤可能釀成大禍。例如,許多火災(zāi)都是由于人們一時(shí)忘記了關(guān)閉煤氣或是忘記充電時(shí)間。尤其在醫(yī)院,每次護(hù)士都會(huì)給病人作皮試,測(cè)試病人是否對(duì)藥物過敏。注射后,一般等待5分鐘,一旦超時(shí),所作的皮試試驗(yàn)就會(huì)無效。手表當(dāng)然是一個(gè)好的選擇,但是,隨著接受皮試的人數(shù)增加,到底是哪個(gè)人的皮試到時(shí)間卻難以判斷。所以,要制作一個(gè)定時(shí)系統(tǒng)。隨時(shí)提醒這些容易忘記時(shí)間的人。
  鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、定時(shí)啟閉電路、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非,F(xiàn)實(shí)的意義。

基于單片機(jī)的定時(shí)和控制裝置在許多行業(yè)有著廣泛的應(yīng)用,數(shù)字鐘作為其中最基本的一個(gè)應(yīng)用實(shí)例,具有結(jié)構(gòu)簡(jiǎn)單應(yīng)用廣泛的特點(diǎn)。數(shù)字鐘中使用了單片機(jī)中最為常用的輸入輸出設(shè)備按鍵開關(guān)和數(shù)碼管;數(shù)字鐘程序主要應(yīng)用單片機(jī)的定時(shí)器和中斷實(shí)現(xiàn)計(jì)時(shí)和顯示功能。當(dāng)今數(shù)字種作為一個(gè)單元電路被廣泛應(yīng)用于電子表、電子萬年歷等產(chǎn)品中,帶來廣泛的經(jīng)濟(jì)效益。

   目前的單片機(jī)產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低外,還要求其體積要小。現(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以80C51為核心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和Winbond系列單片機(jī)。所以C8051為核心的單片機(jī)占據(jù)了半壁江山。而Microchip公司的PIC精簡(jiǎn)指令集(RISC)也有著強(qiáng)勁的發(fā)展勢(shì)頭,HOLTEK公司近年的單片機(jī)產(chǎn)量與日俱增,與其低價(jià)質(zhì)優(yōu)的優(yōu)勢(shì),占據(jù)一定的市場(chǎng)分額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機(jī)。在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在某個(gè)單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ),相輔相成、共同發(fā)展的道路。單片機(jī)的可靠性及應(yīng)用水平越來越高和互聯(lián)網(wǎng)連接已是一種明顯的走向。單片機(jī)從功能上講可以說是萬用機(jī)。目前,單片機(jī)正朝著高性能和多品種方向發(fā)展,趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面發(fā)展。當(dāng)今,單片機(jī)廣泛地用于各種儀器儀表,使儀器儀表智能化,并可以提高測(cè)量的自動(dòng)化程度和精度,簡(jiǎn)化儀器儀表的硬件結(jié)構(gòu),提高其性能價(jià)格比。單片機(jī)也廣泛地用于各種實(shí)時(shí)控制系統(tǒng)中。例如,在工業(yè)測(cè)控、航空航天、尖端武器、機(jī)器人等各種實(shí)時(shí)控制系統(tǒng)中,都可以用單片機(jī)作為控制器。單片機(jī)的實(shí)時(shí)數(shù)據(jù)處理能力和控制功能,可使系統(tǒng)保持在最佳工作狀態(tài),提高系統(tǒng)的工作效率和產(chǎn)品質(zhì)量。自從單片機(jī)誕生以后,它就步入了人類生活,如洗衣機(jī)、電冰箱、電子玩具、收錄機(jī)等家用電器配上單片機(jī)后,提高了智能化程度,增加了功能,倍受人們喜愛。單片機(jī)將使人類生活更加方便、舒適、豐富多彩。單片機(jī)已成為計(jì)算機(jī)發(fā)展和應(yīng)用的一個(gè)重要方面。單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過軟件方法來實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。隨著半導(dǎo)體工藝技術(shù)的發(fā)展及系統(tǒng)設(shè)計(jì)水平的提高,單片機(jī)還會(huì)不斷產(chǎn)生新的變化和進(jìn)步。在不久的將來,最終單片機(jī)與微機(jī)系統(tǒng)之間的距離越來越小,甚至難以辨認(rèn)。

 
 


 

2.關(guān)于單片機(jī)

2.1單片機(jī)的發(fā)展

單片機(jī)自問世以來,性能不斷提高和完善,其資源又能滿足很多應(yīng)用場(chǎng)合的需要,加之單片機(jī)具有集成度高、功能強(qiáng)、速度快、體積小、功耗低、使用方便、價(jià)格低廉等特點(diǎn),因此,在工業(yè)控制、智能儀器儀表、數(shù)據(jù)采集和處理、通信系統(tǒng)、高級(jí)計(jì)算器、家用電器等領(lǐng)域的應(yīng)用日益廣泛,并且正在逐步取代現(xiàn)有的多片微機(jī)應(yīng)用系統(tǒng)。單片機(jī)的潛力越來越被人們所重視。特別是當(dāng)前用CMOS工藝制成的各種單片機(jī),由于功耗低,使用的溫度范圍大,抗干擾能力強(qiáng)、能滿足一些特殊要求的應(yīng)用場(chǎng)合,更加擴(kuò)大了單片機(jī)的應(yīng)用范圍,也進(jìn)一步促使單片機(jī)性能的發(fā)展。而現(xiàn)在單片機(jī)在液晶顯示上也有了很多的應(yīng)用。

隨著科技不斷進(jìn)步,各種顯示技術(shù)如雨后春筍般誕生,由于液晶顯示器(LCD)具有輕薄短小、低耗電量、無輻射危險(xiǎn),平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢(shì),在近年來價(jià)格不斷下跌的吸引下,逐漸取代CRT之主流地位,顯示器明日之星架勢(shì)十足。液晶顯示器件從初期的實(shí)驗(yàn)室到現(xiàn)在的生產(chǎn)廠家,已形成較大規(guī)模的生產(chǎn)能力,使液晶顯示形成了獨(dú)立的產(chǎn)業(yè)部門。而今,液晶顯示已經(jīng)應(yīng)用于人們生產(chǎn)、生活中的各個(gè)領(lǐng)域,人們時(shí)時(shí)處處都要與這一神奇而又普通的產(chǎn)品打交道。液晶顯示技術(shù)以它跨越多學(xué)科的工作原理,高技術(shù)、專業(yè)化的制造工藝使它披上了一層神秘的面紗,而它輕巧薄形的體態(tài),獨(dú)特而理想的性能以及廣泛的應(yīng)用價(jià)值,又使它充滿魅力,深深地吸引著人們。

在單片機(jī)技術(shù)日趨成熟的今天,其靈活的硬件電路的設(shè)計(jì)和軟件的設(shè)計(jì),讓單片機(jī)得到了廣泛的應(yīng)用,幾乎是從小的電子產(chǎn)品,到大的工業(yè)控制,單片機(jī)都起到了舉足輕重的作用。單片機(jī)小的系統(tǒng)結(jié)構(gòu)幾乎是所有具有可編程硬件的一個(gè)縮影,可謂是“麻雀雖小,肝膽俱全”,單片機(jī)的學(xué)習(xí)和研究是對(duì)微機(jī)系統(tǒng)學(xué)習(xí)和研究的簡(jiǎn)捷途徑。

在目前,用戶對(duì)單片機(jī)的需要越來越多,但是,要求也越來越高,因此,單片機(jī)也在不斷的發(fā)展和進(jìn)步。單片機(jī)的技術(shù)進(jìn)步主要反映在內(nèi)部結(jié)構(gòu)、功率消耗、外部電壓等級(jí)以及制造工藝上。在這幾方面,較為典型地說明了數(shù)字單片機(jī)的水平。下面分別就這三個(gè)方面說明單片機(jī)的技術(shù)進(jìn)步狀況。

(1)內(nèi)部結(jié)構(gòu)的進(jìn)步

單片機(jī)在內(nèi)部已集成了越來越多的部件,這些部件包括一般常用的電路,例如:定時(shí)器,比較器,A/轉(zhuǎn)換器,D /A轉(zhuǎn)換器,串行通信接口,Watchdog電路,LCD控制器等。
  有的單片機(jī)為了構(gòu)成控制網(wǎng)絡(luò)或形成局部網(wǎng),內(nèi)部含有局部網(wǎng)絡(luò)控制模塊CAN。例如,Infineon公司的C 505C,C515C,C167CR,C167CS-32FM,81C90;Motorola公司的68HC08AZ 系列等。特別是在單片機(jī)C167CS-32FM中,內(nèi)部還含有2個(gè)CAN。因此,這類單片機(jī)十分容易構(gòu)成網(wǎng)絡(luò)。特別是在控制,系統(tǒng)較為復(fù)雜時(shí),構(gòu)成一個(gè)控制網(wǎng)絡(luò)十分有用。
  為了能在變頻控制中方便使用單片機(jī),形成最具經(jīng)濟(jì)效益的嵌入式控制系統(tǒng)。有的單片機(jī)內(nèi)部設(shè)置了專門用于變頻控制的脈寬調(diào)制控制電路,這些單片機(jī)有Fujitsu公司的MB89850系列、MB89860系列;Motorola 公司的MC68HC08MR16、MR24等。在這些單片機(jī)中,脈寬調(diào)制電路有6個(gè)通道輸出,可產(chǎn)生三相脈寬調(diào)制交流電壓,并內(nèi)部含死區(qū)控制等功能。

(2)功耗、封裝及電源電壓的進(jìn)步
  現(xiàn)在新的單片機(jī)的功耗越來越小,特別是很多單片機(jī)都設(shè)置了多種工作方式,這些工作方式包括等待,暫停,睡眠,空閑,節(jié)電等工作方式。Philips公司的單片機(jī)P87LPC762是一個(gè)很典型的例子,在空閑時(shí),其功耗為1.5 mA,而在節(jié)電方式中,其功耗只有0.5mA。而在功耗上最令人驚嘆的是TI公司的單片機(jī)MSP430系列,它是一個(gè) 16位的系列,有超低功耗工作方式。它的低功耗方式有LPM1、LPM3、LPM4三種。當(dāng)電源為3V時(shí),如果工作于 LMP1方式,即使外圍電路處于活動(dòng),由于CPU不活動(dòng),振蕩器處于1~4MHz,這時(shí)功耗只有50?A。在LPM3 時(shí),振蕩器處于32kHz,這時(shí)功耗只有1.3?A。在LPM4時(shí),CPU、外圍及振蕩器32kHz都不活動(dòng),則功耗只有0.1?A。
  現(xiàn)在單片機(jī)的封裝水平已大大提高,隨著貼片工藝的出現(xiàn),單片機(jī)也大量采用了各種合符貼片工藝的封裝方式出現(xiàn),以大量減少體積。在這種形勢(shì)中,Microchip公司推出的8引腳的單片機(jī)特別引人注目。這是PIC12CXXX系列。它含有0.5~2K程序存儲(chǔ)器,25~128字節(jié)數(shù)據(jù)存儲(chǔ)器,6個(gè)I/O端口以及一個(gè)定時(shí)器,有的還含4道A/D ,完全可以滿足一些低檔系統(tǒng)的應(yīng)用。擴(kuò)大電源電壓范圍以及在較低電壓下仍然能工作是今天單片機(jī)發(fā)展的目標(biāo)之一。目前,一般單片機(jī)都可以在3.3~5.5V的條件下工作。而一些廠家,則生產(chǎn)出可以在2.2~6V的條件下工作的單片機(jī)。這些單片機(jī)有Fujitsu公司的MB89191~89195,MB89121~125A,MB89130系列等,應(yīng)該說該公司的F2MC-8L系列單片機(jī)絕大多數(shù)都滿足2.2~6V的工作電壓條件。而TI公司的MSP430X11X系列的工作電壓也是低達(dá)2.2V的。

(3)工藝上的進(jìn)步
  現(xiàn)在的單片機(jī)基本上采用CMOS技術(shù),但已經(jīng)大多數(shù)采用了0.6?m以上的光刻工藝,有個(gè)別的公司,如Motorola公司則已采用0.35?m甚至是0.25?m技術(shù)。這些技術(shù)的進(jìn)步大大地提高了單片機(jī)的內(nèi)部密度和可靠性。
單片機(jī)在目前的發(fā)展形勢(shì)下,可靠性及應(yīng)用越來越高的水平和互聯(lián)網(wǎng)連接已是一種明顯的走向。所集成的部件越來越多;NS(美國(guó)國(guó)家半導(dǎo)體)公司的單片機(jī)已把語音、圖象部件也集成到單片機(jī)中,也就是說,單片機(jī)的意義只是在于單片集成電路,而不在于其功能了;如果從功能上講它可以講是萬用機(jī)。原因是其內(nèi)部已集成上各種應(yīng)用電路。 功耗越來越低和模擬電路結(jié)合越來越多也將會(huì)成為單片機(jī)的一個(gè)發(fā)展的方向。隨著半導(dǎo)體工藝技術(shù)的發(fā)展及系統(tǒng)設(shè)計(jì)水平的提高,單片機(jī)還會(huì)不斷產(chǎn)生新的變化和進(jìn)步,最終人們可能發(fā)現(xiàn):?jiǎn)纹瑱C(jī)與微機(jī)系統(tǒng)之間的距離越來越小,甚至難以辨認(rèn)。

2.2 單片機(jī)的開發(fā)背景

現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來越多的場(chǎng)所需要用點(diǎn)陣圖形顯示器顯示漢字。液晶顯示器是人與機(jī)器溝通的重要界面,而且液晶顯示器也有如下特點(diǎn),開發(fā)出來會(huì)有很大的應(yīng)用空間。液晶顯示器目前發(fā)展最快,也已經(jīng)成為電子信息產(chǎn)業(yè)的支柱性產(chǎn)業(yè)之一,受到普遍關(guān)注與重視。那么液晶顯示器與傳統(tǒng)的顯示器相比,到底有什么新的特點(diǎn)呢?

⑴ 質(zhì)量高 由于液晶顯示器每一個(gè)點(diǎn)在收到信號(hào)后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高而且絕對(duì)不會(huì)閃爍,把眼睛疲勞降到最低。

⑵ 沒有電磁輻射 傳統(tǒng)顯示器的顯示材料是熒光粉,通過電子束撞擊熒光粉而顯示,電子束在打到熒光粉上的一剎那間會(huì)產(chǎn)生強(qiáng)大的電磁輻射,盡管目前有許多顯示器產(chǎn)品在處理輻射問題上進(jìn)行了比較有效的處理,盡可能地把輻射量降到最低,但要徹底消除是困難的。相對(duì)來說,液晶顯示器在防止輻射方面具有先天的優(yōu)勢(shì),因?yàn)樗揪筒淮嬖谳椛洹?/p>

⑶ 可視面積大 對(duì)于相同尺寸的顯示器來說,液晶顯示器的可視面積要更大一些。液晶顯示器的可視面積跟它的對(duì)角線尺寸相同。陰極射線管顯示器顯像管前面板四周有一英寸左右的邊框不能用于顯示。

⑷ 應(yīng)用范圍廣 最初的液晶顯示器由于無法顯示細(xì)膩的字符,通常應(yīng)用在電子表、計(jì)算器上。而隨后出現(xiàn)的DSTN和TFT則被廣泛制作成電腦中的液晶顯示設(shè)備,DSTN液晶顯示屏用于早期的筆記本電腦;TFT則既應(yīng)用在筆記本電腦上(現(xiàn)在大多數(shù)筆記本電腦都使用TFT顯示屏),又用于主流臺(tái)式顯示器上。

⑸ 畫面效果好 與傳統(tǒng)顯示器相比,液晶顯示器一開始就使用純平面的玻璃板,其顯示效果是平面直角的,讓人有一種耳目一新的感覺。而且液晶顯示器更容易在小面積屏幕上實(shí)現(xiàn)高分辨率。

⑹ 數(shù)字式接口 液晶顯示器都是數(shù)字式的,不像陰極射線管彩顯采用模擬接口。也就是說,使用液晶顯示器,顯卡再也不需要像往常那樣把數(shù)字信號(hào)轉(zhuǎn)化成模擬信號(hào)再行輸出了。理論上,這會(huì)使色彩和定位都更加準(zhǔn)確完美。

⑺ 體積小 傳統(tǒng)的陰極射線管顯示器,后面總是拖著一個(gè)笨重的射線管。液晶顯示器突破了這一限制,給人一種全新的感覺。傳統(tǒng)顯示器是通過電子槍發(fā)射電子束到屏幕,因而顯像管的管頸不能做得很短,當(dāng)屏幕增加時(shí)也必然增大整個(gè)顯示器的體積。而液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示目的,即使屏幕加大,它的體積也不會(huì)成正比的增加,而且在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。

⑻ 功率消耗小 傳統(tǒng)的顯示器內(nèi)部由許多電路組成,這些電路驅(qū)動(dòng)著陰極射線顯像管工作時(shí),需要消耗很大的功率,而且隨著體積的不斷增大,其內(nèi)部電路消耗的功率肯定也會(huì)隨之增大。相比而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC上,因而耗電量比傳統(tǒng)顯示器也要小得多。

2.2 單片機(jī)的開發(fā)背景

現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來越多的場(chǎng)所需要用點(diǎn)陣圖形顯示器顯示漢字。液晶顯示器是人與機(jī)器溝通的重要界面,而且液晶顯示器也有如下特點(diǎn),開發(fā)出來會(huì)有很大的應(yīng)用空間。液晶顯示器目前發(fā)展最快,也已經(jīng)成為電子信息產(chǎn)業(yè)的支柱性產(chǎn)業(yè)之一,受到普遍關(guān)注與重視。那么液晶顯示器與傳統(tǒng)的顯示器相比,到底有什么新的特點(diǎn)呢?

⑴ 質(zhì)量高 由于液晶顯示器每一個(gè)點(diǎn)在收到信號(hào)后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高而且絕對(duì)不會(huì)閃爍,把眼睛疲勞降到最低。

⑵ 沒有電磁輻射 傳統(tǒng)顯示器的顯示材料是熒光粉,通過電子束撞擊熒光粉而顯示,電子束在打到熒光粉上的一剎那間會(huì)產(chǎn)生強(qiáng)大的電磁輻射,盡管目前有許多顯示器產(chǎn)品在處理輻射問題上進(jìn)行了比較有效的處理,盡可能地把輻射量降到最低,但要徹底消除是困難的。相對(duì)來說,液晶顯示器在防止輻射方面具有先天的優(yōu)勢(shì),因?yàn)樗揪筒淮嬖谳椛洹?/p>

⑶ 可視面積大 對(duì)于相同尺寸的顯示器來說,液晶顯示器的可視面積要更大一些。液晶顯示器的可視面積跟它的對(duì)角線尺寸相同。陰極射線管顯示器顯像管前面板四周有一英寸左右的邊框不能用于顯示。

⑷ 應(yīng)用范圍廣 最初的液晶顯示器由于無法顯示細(xì)膩的字符,通常應(yīng)用在電子表、計(jì)算器上。而隨后出現(xiàn)的DSTN和TFT則被廣泛制作成電腦中的液晶顯示設(shè)備,DSTN液晶顯示屏用于早期的筆記本電腦;TFT則既應(yīng)用在筆記本電腦上(現(xiàn)在大多數(shù)筆記本電腦都使用TFT顯示屏),又用于主流臺(tái)式顯示器上。

⑸ 畫面效果好 與傳統(tǒng)顯示器相比,液晶顯示器一開始就使用純平面的玻璃板,其顯示效果是平面直角的,讓人有一種耳目一新的感覺。而且液晶顯示器更容易在小面積屏幕上實(shí)現(xiàn)高分辨率。

⑹ 數(shù)字式接口 液晶顯示器都是數(shù)字式的,不像陰極射線管彩顯采用模擬接口。也就是說,使用液晶顯示器,顯卡再也不需要像往常那樣把數(shù)字信號(hào)轉(zhuǎn)化成模擬信號(hào)再行輸出了。理論上,這會(huì)使色彩和定位都更加準(zhǔn)確完美。

⑺ 體積小 傳統(tǒng)的陰極射線管顯示器,后面總是拖著一個(gè)笨重的射線管。液晶顯示器突破了這一限制,給人一種全新的感覺。傳統(tǒng)顯示器是通過電子槍發(fā)射電子束到屏幕,因而顯像管的管頸不能做得很短,當(dāng)屏幕增加時(shí)也必然增大整個(gè)顯示器的體積。而液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示目的,即使屏幕加大,它的體積也不會(huì)成正比的增加,而且在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。

⑻ 功率消耗小 傳統(tǒng)的顯示器內(nèi)部由許多電路組成,這些電路驅(qū)動(dòng)著陰極射線顯像管工作時(shí),需要消耗很大的功率,而且隨著體積的不斷增大,其內(nèi)部電路消耗的功率肯定也會(huì)隨之增大。相比而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動(dòng)IC上,因而耗電量比傳統(tǒng)顯示器也要小得多。

2.3 AT89S52單片機(jī)

AT89S52 是一種低功耗、高性能CMOS8 位微控制器,具有8K 在系統(tǒng)可編程存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash 允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash ,使得AT89S52 為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52 具有以下標(biāo)準(zhǔn)功能:8k 字節(jié)Flash,256 字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6 向量2 級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2 種軟件可選擇節(jié)電模式?臻e模式下,CPU停止工作,允許RAM 、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM 內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。

圖2-1AT89S52的引腳

2.3.1 AT89S52單片機(jī)引腳功能

P0 口:P0 口是一個(gè)8 位漏極開路的雙向I/O 口。作為輸出口,每位能驅(qū)動(dòng)8 個(gè)TTL 邏輯電平。對(duì)P0 端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0 口也被作為低8 位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0 具有內(nèi)部上拉電阻。

P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0 和P1.2 分別作定時(shí)器/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash 編程和校驗(yàn)時(shí),P1 口接收低8 位地址字節(jié)。

P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲(chǔ)器或用16 位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR)時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8 位地址(如MOVX @RI )訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2 口輸出P2 鎖存器的內(nèi)容。

P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。

RST: 復(fù)位輸入。晶振工作時(shí),RST 腳持續(xù)2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。看門狗計(jì)時(shí)完成后,RST 腳輸出96 個(gè)晶振周期的高電平。特殊寄存器AUXR( 地址8EH) 上的DISRTO 位可以使此功能無效。DISRTO 默認(rèn)狀態(tài)下,復(fù)位高電平有效。

ALE/PROG:地址鎖存控制信號(hào)(ALE)是訪問外部程序存儲(chǔ)器時(shí),鎖存低8 位地址的輸出脈沖。在flash 編程時(shí),此引腳(PROG )也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE 脈沖將會(huì)跳過。如果需要,通過將地址為8EH 的SFR 的第0 位置“1”,ALE 操作將無效。這一位置“1”,ALE 僅在執(zhí)行MOVX 或MOVC 指令時(shí)有效。

PSEN: 外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89S52 從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN 在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN 將不被激活。

EA/VPP: 訪問外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H 到FFFFH 的外部程序存儲(chǔ)器讀取指令,EA 必須接GND。為了執(zhí)行內(nèi)部程序指令,EA 應(yīng)該接VCC。
在flash 編程期間,EA 也接收12 伏VPP 電壓。

2.3.2 AT89S52單片機(jī)硬件結(jié)構(gòu)的特點(diǎn)

MCS-51單片機(jī)硬件結(jié)構(gòu)有如下一些主要特點(diǎn):

① 內(nèi)部程序存儲(chǔ)器(ROM)和內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)容量

MCS-51單片機(jī)的內(nèi)部ROM和內(nèi)部RAM的容量如表-1所示:

 

表-1 MCS-51單片機(jī)存儲(chǔ)器容量

存儲(chǔ)器類型

單片機(jī)類型

掩模ROM

EPROM

RAM

MCS-51

51子系列

8031

/

/

128B

8051

4KB

/

128B

8751

/

4KB

128B

52子系列

8032

/

/

256B

8052

8KB

/

256B

② 輸入/輸出(I/O)口

    MCS-51單片機(jī)內(nèi)的I/O口的數(shù)量和種類較多且齊全,尤其是它有一個(gè)全雙工的串行口。該串口是利用兩根I/O口線構(gòu)成的,有四種工作方式,可通過編程選定,MCS-51有32根I/O口線,而MCS-48只有27根。

③ 外部程序存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器尋址空間

    MCS-51可對(duì)64KB的外部數(shù)據(jù)存儲(chǔ)器尋址且不受該系列中各種芯片型號(hào)的影響,而對(duì)程序存儲(chǔ)器是內(nèi)外總空間為64KB,故根據(jù)表-1不同的芯片型號(hào),MCS-51外部程序存儲(chǔ)器最大尋址范圍為64KB。

④ 中斷與堆棧

    MCS-51有5個(gè)中斷源(對(duì)8032/8052為6個(gè)),分為2個(gè)優(yōu)先級(jí),每個(gè)中斷源的優(yōu)先級(jí)是可編程的。它的堆棧位置也是可編程的,堆棧深度可達(dá)128字節(jié)。而MCS-48只有不分優(yōu)先級(jí)的2個(gè)中斷源,且堆棧設(shè)置在片內(nèi)RAM的16個(gè)字節(jié)的固定單元內(nèi)。

⑤ 定時(shí)/計(jì)數(shù)器與寄存器區(qū)

MCS-51子系列有2個(gè)16位定時(shí)/計(jì)數(shù)器,通過編程可以實(shí)現(xiàn)四種工作模式。MCS-52子系列則有3個(gè)16位定時(shí)/計(jì)數(shù)器。而MCS-48只有一個(gè)8位定時(shí)/計(jì)數(shù)器。MCS-51在內(nèi)部RAM中開設(shè)了四個(gè)通用工作寄存器區(qū),共32個(gè)通用寄存器,以適應(yīng)多種中斷或子程序嵌套的要求。而MCS-48的內(nèi)部RAM中只有兩個(gè)通用工作寄存器區(qū),每個(gè)寄存器區(qū)包含8個(gè)8位寄存器。

 


 

2.3.3 AT89S52單片機(jī)的硬件原理

                          

⑴ 如圖所示,圖為單片機(jī)的基本外圍電路。20管腳接地,40管腳接+5V電源,為單片機(jī)工作提供電源。18及19管腳接晶振,為單片機(jī)提供時(shí)鐘信號(hào),晶振為12MHz。晶振的振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率越高,單片機(jī)工作的速度也越高。對(duì)于液晶顯示電路的設(shè)計(jì),需要單片機(jī)有較高的工作效率,所以選擇比較高頻率的晶振,從而提高液晶屏幕的刷新速率,獲得更加連貫、流暢的圖像顯示。根據(jù)需要還可以加上復(fù)位電路,復(fù)位是單片機(jī)的初始化操作;蛘弋(dāng)單片機(jī)程序運(yùn)行出錯(cuò)導(dǎo)致死鎖狀態(tài)的時(shí)候,為擺脫困境,也需要按復(fù)位鍵以重新啟動(dòng)。

 

                    圖2-2 AT89S52單片機(jī)基本外圍電路

 

 

 

⑵ 如圖2-3所示,左邊為單片機(jī)模塊,右邊為液晶模塊。單片機(jī)的P0口與液晶模塊的8個(gè)數(shù)據(jù)端口相連,作為數(shù)據(jù)傳送端口。 P2.4、5、7、8與液晶模塊的片選CS1、CS2和R/W、D/I相連,作為控制字的寫入。液晶模塊的E端為使能端,由單片機(jī)的P2.3和P3.7、8三個(gè)口送信號(hào)至與非門驅(qū)動(dòng)液晶模塊,同時(shí)給使能端提供高低電平,控制液晶模塊工作。液晶模塊的VSS接地,VCC和V0接滑動(dòng)變阻器,VCC接正5V電源,通過滑動(dòng)變阻器分壓,從而為液晶模塊更好的工作提供電源,也作為液晶顯示屏的亮度控制端。此圖即為單片機(jī)控制液晶顯示的基本電路。其中的與非門組合可以用74LS00芯片,74LS00可以提供3個(gè)與非門。本設(shè)計(jì)電路成本低,元件比較普通,市場(chǎng)上可以輕易買到,為整個(gè)設(shè)計(jì)提供方便。電路簡(jiǎn)單易于焊接,調(diào)試中也能減少很多麻煩。

 

 


3. 方案設(shè)計(jì)與論證

  按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定設(shè)計(jì)系統(tǒng)由復(fù)位模塊、時(shí)鐘模塊、音樂模塊、光識(shí)模塊及顯示模塊共五個(gè)模塊組成,后來在時(shí)鐘模塊的基礎(chǔ)上又加載了日歷、星期的模塊,為了使本設(shè)計(jì)中的數(shù)字鐘的功能更加完善和強(qiáng)大,最后又將溫度顯示加入了設(shè)計(jì)方案中。

首先以單片機(jī)AT89S52為入手點(diǎn),通過使用AT89S52的內(nèi)部的可編程定時(shí)器/計(jì)數(shù)器,結(jié)合對(duì)外接晶振的調(diào)節(jié)來確定一個(gè)合適的振蕩周期,從而確定出內(nèi)部的機(jī)器周期。再通過對(duì)內(nèi)部中斷程序的設(shè)置來設(shè)計(jì)出時(shí)鐘程序,即設(shè)計(jì)出了電子時(shí)鐘的核心。

根據(jù)題目的要求,我設(shè)計(jì)了以下方案:

設(shè)計(jì)中加載了年、月、日的設(shè)計(jì),剛開始時(shí)打算用18個(gè)共陽(yáng)數(shù)碼管,考慮到數(shù)碼管太多是畢會(huì)給硬件電路帶來麻煩,經(jīng)過考慮后,決定把年、月、日與時(shí)間設(shè)置到一組數(shù)碼管上來,即六個(gè)數(shù)碼管即能顯示時(shí)間又能顯示年、月、日,這樣一來就方便了硬件電路。

主控芯片使用51系列AT89S52單片機(jī),溫度模塊設(shè)計(jì)中,溫度元件采用AD590,利用AD590以及接口電路把溫度轉(zhuǎn)換成模擬電壓,經(jīng)由ADC0804轉(zhuǎn)換成數(shù)字信號(hào),然后經(jīng)AT89S52處理顯示溫度。但由于AD590價(jià)錢比較貴,且只能轉(zhuǎn)換成模擬電壓,這樣一來硬件就要增加更多的器件且又不經(jīng)濟(jì),經(jīng)查找發(fā)現(xiàn)18B20溫度傳感器價(jià)錢便宜且可以直接把溫度轉(zhuǎn)換成數(shù)字量測(cè)溫范圍為-55—125度,最大分辨率可達(dá)0.0625度,采用3線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn),所以我選擇了18B20溫度傳感器。

 在音樂模塊的設(shè)計(jì)中,我決定采用音樂芯片,這樣可以避免對(duì)鈴聲音樂的編程,即節(jié)省了時(shí)間,又減少了在程序中發(fā)生錯(cuò)誤的可能性。

 


 

4. 系統(tǒng)總體結(jié)構(gòu)框圖


 

 


圖4-1

 

在本設(shè)計(jì)中,以按鍵開關(guān)作為輸入裝置,LED七段數(shù)碼顯示管作為顯示裝置,因此,各按鍵開關(guān)的功能為:

S1鍵:P1.0口 時(shí)間調(diào)整 

S2鍵:P1.1口 日期調(diào)整 

S3健;  p1.2口 鬧鈴設(shè)置

S4健:  p1.3口 鬧鈴開關(guān)

5. 系統(tǒng)的硬件設(shè)計(jì)

電路是由控制部分和顯示部分兩大部分組成。利用單片機(jī)程序進(jìn)行控制,并通過數(shù)碼管進(jìn)行顯示。

5.1 顯示部分電路的設(shè)計(jì)

5.1.1 LED數(shù)碼顯示管的基本原理

用單片機(jī)驅(qū)動(dòng)LED數(shù)碼管有很多方法,按顯示方式分,有靜態(tài)顯示和動(dòng)態(tài)顯示,按譯碼方式可分為硬件譯碼和軟件譯碼。

靜態(tài)顯示是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將要顯示的數(shù)據(jù)送出后不再控制LED,直到下次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用CPU時(shí)間少。

動(dòng)態(tài)顯示要CPU時(shí)刻對(duì)顯示器件進(jìn)行刷新,顯示數(shù)據(jù)有閃爍感,占用CPU時(shí)間多。

這兩種顯示方式各有利弊:靜態(tài)顯示雖然數(shù)據(jù)顯示穩(wěn)定,占用很少的CPU時(shí)間,但每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動(dòng)電路,使用的電路硬件較多;動(dòng)態(tài)顯示雖然有閃爍感,占用的CPU時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。

動(dòng)態(tài)掃描顯示接口是單片機(jī)中應(yīng)用最廣泛的一種顯示方式。其接口電路是把所有LED顯示器的8個(gè)筆劃段A~D、DP的同名端連在一起,而每一個(gè)數(shù)碼管的公共端COM是各自獨(dú)立地受I/O線控制。CPU向字段輸出口送出字形碼時(shí),所有顯示器接受到相同的字形碼,但究竟是哪個(gè)顯示器亮,則取決于COM端,而這一端是由I/O控制的,可以自行決定何時(shí)顯示哪一位了。而所謂動(dòng)態(tài)掃描就是指我們采用分時(shí)的方法,輪流控制各個(gè)顯示器的COM端,是各個(gè)顯示器輪流點(diǎn)亮。

在輪流點(diǎn)亮掃描過程中,每位顯示器的點(diǎn)亮?xí)r間是極為短暫的,約1ms左右,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。

從上述的論述中,可以看出動(dòng)態(tài)顯示方案具備一定的實(shí)用性,也是目前單片機(jī)數(shù)碼管顯示中較為常用的一種顯示方法。所以,本設(shè)計(jì)也采用動(dòng)態(tài)顯示方案。

5.1.2 數(shù)碼管顯示模塊分析

電路先通過電源電路送出+5V電壓,單片機(jī)AT89S52通過74LS47和CD4515(4—16譯碼器)驅(qū)動(dòng)數(shù)碼管顯示數(shù)值, 顯示部分采用普通共陽(yáng)極數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電路。考慮到一次掃描12位數(shù)碼管顯示時(shí)會(huì)出現(xiàn)閃爍情況,設(shè)計(jì)時(shí)分兩排顯示,一排顯示時(shí)間和年月日,一排顯示星期和溫度,  共陽(yáng)極數(shù)碼管中8個(gè)發(fā)光

二極管的陽(yáng)極(二極管正端)連在一起。通常,公共陽(yáng)極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸入端為低電平時(shí),該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。采用動(dòng)態(tài)顯示方式,比較節(jié)省I/O口,硬件電路也較靜態(tài)顯示簡(jiǎn)單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時(shí),CPU要依次掃描,占用CPU較多時(shí)間。
 為了提供共陽(yáng)LED數(shù)碼管的驅(qū)動(dòng)電壓,用三極管9012作電源驅(qū)動(dòng)輸出。采用12MHz晶振,有利于提高秒計(jì)時(shí)的精確性。;

 

5.1.3 LED顯示電路

圖5-1

 

5.2 控制部分電路的設(shè)計(jì)

5.2.1 時(shí)鐘模塊

利用芯片內(nèi)部的振蕩器,然后在引腳XTAL1和引腳 XTAL2兩端接晶體諧振器,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部的時(shí)鐘電路,如圖外接晶振時(shí),C1和C2的值通常選擇30pF; C1、C2對(duì)頻率有微調(diào)作用,晶體諧振器的頻率12MHz。為了減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近。設(shè)置了12—24兩種顯示狀態(tài),調(diào)整計(jì)時(shí)的按鍵、設(shè)置定時(shí)的按鍵且定時(shí)設(shè)置了3次定時(shí)、還另加載了星期、年、月、日的調(diào)整及閏年的自動(dòng)調(diào)整。

5.2.2 溫度模塊

主要由18B20通過單片機(jī)AT89S52中的溫度程序不斷的檢測(cè)溫度來顯示溫度。

18B20溫度傳感器工作原理:DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9—12位的數(shù)字值讀數(shù)方式,DS18B20的性能特點(diǎn)如下:

   1、獨(dú)特的單線接口僅需要一個(gè)引腳進(jìn)行通信;

   2、多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;

   3、無須外部器件;

   4、可通過數(shù)據(jù)線供電,電壓范圍為3.0---5.5V;

   5、零待機(jī)功耗;

   6、溫度以9或12位數(shù)字量讀出;

   7、用戶可定義的非易失性溫度報(bào)警設(shè)置;

   8、報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;

   9、負(fù)電壓特性,電源極性接反是,溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。

5.2.3 音樂模塊

通過LM386N-1給揚(yáng)聲器信號(hào)來發(fā)出音樂,這個(gè)模塊主要是為時(shí)鐘定時(shí)到時(shí)發(fā)出音樂鬧鈴,而在軟件部分設(shè)置了可以一次設(shè)置3次定時(shí),每次定時(shí)到時(shí),音樂程序中編了6種音樂,它可以自動(dòng)選擇6種音樂中的任一音樂響1分鐘,如果中間不想讓鬧鈴響可以按一按鍵,鬧鈴就立刻停止。

5.2.4 復(fù)位模塊

單片機(jī)復(fù)位電路是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從該狀態(tài)開始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第一個(gè)單元取指令。無論是在單片機(jī)剛接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位。

    電路圖為:

圖5-2

 

5.2.5 光識(shí)模塊

同樣也是為定時(shí)服務(wù)的,只要定時(shí)到,組成心字的18只發(fā)光二極管就會(huì)按程序全亮全滅20次,如此循環(huán)。

    電路圖為:

 




圖5-3

6. 系統(tǒng)的軟件設(shè)計(jì)

6.1 各模塊的程序設(shè)計(jì)

6.1.1 計(jì)時(shí)程序

計(jì)時(shí)程序是實(shí)現(xiàn)電子時(shí)鐘的核心內(nèi)容,本程序用中斷time0來控制,計(jì)時(shí)顯示的單元從50h開始,50h=秒的個(gè)位,51h=秒的十位,52h=分的個(gè)位,53h=分的十位,54h=時(shí)的個(gè)位,55h=時(shí)的十位

org    000bh          

jmp    time0

mov    tmod,#00010001b              

mov    ie,#10001010b               

mov    ip,#00000010b

mov    th0,#(65536-2000)/256

mov    tl0,#low(65536-2000)

mov    4fh,#02;兩個(gè)中斷250次為1秒

6.1.2 定時(shí)鬧鐘程序

作用是判斷時(shí)間是否與設(shè)置的鬧鐘時(shí)間相等,如相等則開啟鬧鐘。

片機(jī)內(nèi)定時(shí)振鈴開關(guān)使用軟件開關(guān),即用標(biāo)志寄存器,且程序設(shè)置了3次定時(shí),可見要使電子時(shí)鐘定時(shí)打鈴,必須同時(shí)具備兩個(gè)條件,第一:定時(shí)振鈴開;第二:當(dāng)前定時(shí)項(xiàng)數(shù)不為0項(xiàng)。 因?yàn)橐闺娮訒r(shí)鐘定時(shí)打鈴,必須同時(shí)具備上述的兩個(gè)條件,所以在單片機(jī)執(zhí)行查詢定時(shí)各項(xiàng)的程序之前,主程序會(huì)首先查詢這兩個(gè)條件是否同時(shí)滿足,如果滿足的話,則進(jìn)行一輪查詢,所謂一輪查詢定時(shí),即將當(dāng)前時(shí)間與定時(shí)各項(xiàng)一一比較,看是否相符,如果查到某項(xiàng)相符,則調(diào)用音樂程序。每查完一項(xiàng),寄存器中的值會(huì)自動(dòng)減1(即為定時(shí)時(shí)間的項(xiàng)數(shù))。當(dāng)定時(shí)時(shí)間的項(xiàng)數(shù)值自動(dòng)減為0時(shí),則表示這一輪查詢定時(shí)時(shí)間完畢,只要條件允許(定時(shí)音樂開且定時(shí)項(xiàng)數(shù)不為0),有可以進(jìn)行一輪新的查詢定時(shí)時(shí)間。

定時(shí)1:33h=分,34h=時(shí),定時(shí)2:35h=分,36h=時(shí),定時(shí)3:37h=分,38h=時(shí),定時(shí)狀態(tài)=39h;定時(shí)顯示的單元從60h開始,60h=定時(shí)狀態(tài),61h=此時(shí);定時(shí)狀態(tài)的音樂種類,62h=分的個(gè)位,63h=分的十位;64h=時(shí)的個(gè)位,65h=時(shí)的十位

6.1.3 溫度程序

57h=溫度的十位,58h=溫度的個(gè)位,

6.2 系統(tǒng)程序設(shè)計(jì)的總體框圖


圖6-1

 

7. 系統(tǒng)電路的制作與調(diào)試

7.1 電路硬件焊接制作

電路硬件焊接是設(shè)計(jì)的重要內(nèi)容之一,其焊接工藝的好壞直接關(guān)系到系統(tǒng)的整體性能。本設(shè)計(jì)的樣品制作采用手工焊接,在焊接制作中應(yīng)遵守手工焊接的工藝流程和技術(shù)要求。

7.2 調(diào)試的主要方法

⑴ 測(cè)試單片機(jī)軟件功能的完善性。這是針對(duì)整個(gè)單片機(jī)系統(tǒng)功能的測(cè)試,測(cè)試軟件是否寫的正確完整。單片機(jī)是否能正常工作。

⑵ 上電、掉電測(cè)試。在使用中用戶必然會(huì)遇到上電和掉電的情況,可以進(jìn)行多次開關(guān)電源,測(cè)試單片機(jī)系統(tǒng)的可靠性。

⑶ 老化測(cè)試。測(cè)試長(zhǎng)時(shí)間工作情況下,單片機(jī)系統(tǒng)的可靠性。必要的話可以放置在高溫,高壓以及強(qiáng)電磁干擾的環(huán)境下測(cè)試。

⑷ D和EFT等測(cè)試?梢允褂酶鞣N干擾模擬器來測(cè)試單片機(jī)系統(tǒng)的可靠性。例如使用靜電模擬器測(cè)試單片機(jī)系統(tǒng)的抗靜電ESD能力;使用突波雜訊模擬器進(jìn)行快速脈沖抗干擾EFT測(cè)試等等。

⑸ 整個(gè)顯示系統(tǒng)的測(cè)試。這是針對(duì)整個(gè)單片機(jī)顯示系統(tǒng)功能的測(cè)試,單片機(jī)正常工作后,加上負(fù)載液晶整個(gè)系統(tǒng)共同測(cè)試。

⑹ 整個(gè)顯示系統(tǒng)的調(diào)試。編寫不同的程序?qū)懭雴纹瑱C(jī),用單片機(jī)控制液晶顯示不同的畫面,如字符、圖形。

7.3 系統(tǒng)調(diào)試

7.3.1 硬件調(diào)試

    靜態(tài)測(cè)試。在電路板制作好以后,先不要急著加電,首先進(jìn)行靜態(tài)測(cè)試。

  檢查線路:通過目測(cè)和使用萬用表,檢查線路連接的正確性,有無斷路和短路,無虛焊的存在等。

  核對(duì)元件:檢查元件是否安裝正確,有無損壞等。

7.3.2 軟件調(diào)試

本程序采用單片機(jī)匯編語言編寫,用wave 6000編譯器編程模擬調(diào)試。

7.3.3 聯(lián)機(jī)調(diào)試

在硬件無故障和軟件模塊調(diào)試完成的情況下,還要對(duì)系統(tǒng)進(jìn)行聯(lián)機(jī)調(diào)試。在系統(tǒng)調(diào)試時(shí),應(yīng)將全部硬件電路都接上,應(yīng)用程序模塊也都組合好,進(jìn)行全系統(tǒng)軟硬件調(diào)試。系統(tǒng)調(diào)試的任務(wù)是排除軟硬件中的殘留錯(cuò)誤。使整個(gè)系統(tǒng)能夠完成預(yù)定的工作任務(wù),達(dá)到要求的技術(shù)性能指標(biāo)。

系統(tǒng)聯(lián)機(jī)調(diào)試到能正確顯示時(shí)間、日期、12小時(shí)和24小時(shí)的轉(zhuǎn)換,并且鬧鈴功能正常,即鈴聲響起的同時(shí),擺成心型的18個(gè)二極管閃爍。

7.3.4調(diào)試中遇到的問題及解決方法

⑴ 調(diào)試中反復(fù)檢查,仍沒有錯(cuò)誤,這時(shí)候看是否要排除元器件失效了。造成這類錯(cuò)誤的原因有兩個(gè):一個(gè)是元器件買來時(shí)就已壞了;另一個(gè)是由于安裝錯(cuò)誤,造成器件燒壞?梢圆扇z查元器件與設(shè)計(jì)要求的型號(hào)、規(guī)格和安裝是否一致。在保證安裝無誤后,用替換方法排除錯(cuò)誤。

⑵ 還有可能是電源故障,所以排除電源故障這項(xiàng)必不可少。在通電前,一定要檢查電源電壓的幅值和極性,否則很容易造成集成塊損壞。加電后檢查各插件上引腳的電位,一般先檢查VCC與GND之間電位,若在5V~4.8V之間屬正常。若有高壓,聯(lián)機(jī)仿真器調(diào)試時(shí),將會(huì)損壞仿真器等,有時(shí)會(huì)使應(yīng)用系統(tǒng)中的集成塊發(fā)熱損壞。

 ⑶ 當(dāng)判斷單片機(jī)不工作時(shí)候,需要進(jìn)行聯(lián)機(jī)仿真調(diào)試。聯(lián)機(jī)仿真必須借助仿真開發(fā)裝置、示波器、萬用表等工具。這些工具是單片機(jī)開發(fā)的最基本工具。

  信號(hào)線是聯(lián)絡(luò)單片機(jī)和外部器件的紐帶,信號(hào)線連結(jié)錯(cuò)誤或時(shí)序不對(duì),都會(huì)造成對(duì)外圍電路讀寫錯(cuò)誤。單片機(jī)的信號(hào)線大體分為讀、寫信號(hào)線、片選信號(hào)線、時(shí)鐘信號(hào)線、外部程序存貯器讀選通信號(hào)(PSEN)、地址鎖存信號(hào)(ALE)、復(fù)位信號(hào)等幾類。這些信號(hào)大多屬于脈沖信號(hào),對(duì)于脈沖信號(hào)借助示波器(這里指通用示波器)用常規(guī)方法很難觀測(cè)到,必須采取一定措施才能觀測(cè)到。應(yīng)該利用軟件編程的方法來實(shí)現(xiàn)。例如對(duì)片選信號(hào),運(yùn)行下面的小程序就可以檢測(cè)出譯碼片選信號(hào)是否正常。

MAIN:MOVDPTR,#DPTR    ;將地址送入DPTR

MOVXA,@DPTR              ;將譯碼地址外RAM中的內(nèi)容送入

ACC NOP                    ;適當(dāng)延時(shí)

SJMP MAIN                  ;循環(huán)

  執(zhí)行程序后,就可以利用示波器觀察芯片的片選信號(hào)引出腳(用示波器掃描時(shí)間為1μs/每格檔),這時(shí)應(yīng)看到周期為數(shù)微秒的負(fù)脈沖波形,若看不到則說明譯碼信號(hào)有錯(cuò)誤。對(duì)于電平類信號(hào),觀測(cè)起來就比較容易。例如對(duì)復(fù)位信號(hào)觀測(cè)就可以直接利用示波器,當(dāng)按下復(fù)位鍵時(shí),可以看到單片機(jī)的復(fù)位引腳將變?yōu)楦唠娖;一旦松開,電平將變低。

總而言之,對(duì)于脈沖觸發(fā)類的信號(hào)我們要用軟件來配合,并要把程序編為死循環(huán),再利用示波器觀察;對(duì)于電平類觸發(fā)信號(hào),可以直接用示波器觀察。

 

結(jié)     論

    經(jīng)過調(diào)試,和多次改進(jìn),本設(shè)計(jì)達(dá)到了預(yù)期的效果。數(shù)字鐘可以正常顯示時(shí)間和日期,并且對(duì)每個(gè)月份的天數(shù)進(jìn)行了處理,特別是2月這個(gè)特殊月份,本設(shè)計(jì)可以自動(dòng)從2月28日直接過度到3月1日。而且,在本設(shè)計(jì)中,閏年和平年的2月,其天數(shù)可以被正常區(qū)分,從而達(dá)到了實(shí)用和人性化的效果。對(duì)溫度的顯示也比較正常,能夠正常反映出室溫情況。當(dāng)然,還可以根據(jù)需要,增加整點(diǎn)報(bào)時(shí)的功能,以使本設(shè)計(jì)更加完善。

    總之,本設(shè)計(jì)提供了一套行之有效的數(shù)字鐘的設(shè)計(jì)方案,并且成本較低,具有較高的實(shí)用性。

 

參考文獻(xiàn)

[1] 盧坤,奚大順電子設(shè)計(jì)技術(shù)[M].成都電子科技大學(xué)出版社,1997.P103-210

[2] 唐競(jìng)新.數(shù)字電子電路[M].第1版.北京:清華大學(xué)出版社,2003.P99-120

[3] 康華光.電子技術(shù)基礎(chǔ)[M].數(shù)字部分.第4版.北京:高等教育出版社,1998.

P47-79

[4] 電子工程手冊(cè)編委會(huì)等中外集成電路簡(jiǎn)明速查手冊(cè)[M]---TTL,CMOS.北京:電子工業(yè)出版社,1991.P245-340

[5] 楊長(zhǎng)春.論數(shù)字技術(shù)[J].《電子報(bào)》合訂本.第0113期.成都:四川科學(xué)技術(shù)出版社,2002.12.P13-30

[6] 彭國(guó)賢.數(shù)碼顯示 [M].北京:電子工業(yè)出版社,1993.P21-50

[7] 康華光主編,鄒壽彬副主編《電子技術(shù)基礎(chǔ)(數(shù)字技術(shù))》高等教育出版,2004.P129-180

[8] 康華光主編,陳大欽副主編《電子技術(shù)基礎(chǔ)(模擬技術(shù))》高等教育出版社,2003.P269-307

[9] 袁俊泉,孫敏琪,曹瑞編著 《數(shù)字系統(tǒng)設(shè)計(jì)及其應(yīng)用》[J].《數(shù)字電子》第9908期. 西安電子科技大學(xué)出版社,2002.P13-26

[10] 李光飛、樓然苗等 《單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)》北京航空航天大學(xué)出版社,2004.P5-37

[11] 余永權(quán).《ATMEL 系列Flash單片機(jī)原理及應(yīng)用》北京:電子工業(yè)出版社,1997年第一版,P88~121

[12] 沙占友. 《智能化集成溫度傳感器原理與應(yīng)用》北京:機(jī)械工業(yè)出版社,2002年第一版,P84~106

[13] 李廣弟,朱月秀,王秀山.《單片機(jī)基礎(chǔ)修訂版》北京:北京航空航天大學(xué)出版社,2001年第二版,P11~77

[14] 蔡明生.《電子設(shè)計(jì)》北京:高等教育出版社,2004年第一版,P48~101

[15] 孫安青.《AT89S51單片機(jī)實(shí)驗(yàn)及實(shí)踐教程》www.supermcu.com.P179~186

[16] 劉云,成后發(fā),尹波.《溫度無線傳輸技術(shù)的研究》電腦與信息技術(shù),2004年第 4期,P47~50

[17] 陳躍東.《DS18B20集成溫度傳感器原理及其應(yīng)用》 安徽機(jī)電學(xué)院學(xué)報(bào),2002年第4期,P34~38

[18] 劉楚浩. 《用單片機(jī)實(shí)現(xiàn)溫度遠(yuǎn)程顯示》單片機(jī)與嵌入式系統(tǒng)應(yīng)用.2002年第9期

[19] William Stallings.《Data and Computer Communications》.北京:高等教育出版社,2001年第一版

[20] CHEE-YEE CHONG,SRIKANTA  PKUMAR. 《Sensor Networks:Evolution》,Opportunities and Challenges[A]. PROCEEDINGS OF THE IEEE[C]. 2003,91(8):1247-1256.

[21]  Altera Corporation.2002. 《 Altera Digital Library.Altera》.P99-101

[22]  Xilinx Inc.2001.Data Book 2001.Xilinx.P31-54


附錄1  數(shù)字鐘電路圖


 

 

 

附錄2  程序清單

org 0000h

              jmp start

              org 000bh

              jmp time

              org 30h

start:       mov sp,#5fh              ;//       小時(shí)       分鐘       秒

              mov r1,#0              ;//       r2 r1   r5 r0   r3 r4

              mov r2,#0

              mov r7,#0

              mov r0,#0

              mov r6,#0

              mov r5,#0

              mov 20h,#31              ;//20h  日地址                                   日         月               年個(gè)位              年十位       年百位       年千位

              mov 21h,#10              ;//21h       月地址                                   20h              21h              22h                     23h         24h       25h

              mov 22h,#6              ;//年個(gè)位

              mov 23h,#0              ;//年十位

              mov 24h,#0              ;//年百位

              mov 25h,#2              ;/年千位

 

              mov 34h,#0              ;//鬧鈴1  秒個(gè)位                       時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov 35h,#0              ;//鬧鈴1  秒十位

              mov 36h,#1              ;//鬧鈴1  分個(gè)位                            39h              38h              37h              36h              35h              34h

              mov 37h,#0              ;//鬧鈴1  分十位

              mov 38h,#0              ;//鬧鈴1  時(shí)個(gè)位

              mov 39h,#0              ;//鬧鈴1  時(shí)十位                  時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

 

              mov 49h,#1              ;//鬧鈴2 分個(gè)位                     4ch       4bh         4ah       49h       48h       47h

              mov 4ah,#0              ;//鬧鈴2 分十位

              mov 4bh,#0              ;//鬧鈴2 時(shí)個(gè)位

              mov 4ch,#0              ;//鬧鈴2 時(shí)十位

 

 

                setb p1.5

 

              mov TMOD,#00000001b

              mov TH0,#3ch              ;//定時(shí)器初值

              mov TL0,#0b0h

              setb EA                            ;//開總中斷

              setb ET0                     ;//開定時(shí)器一的中斷

              mov p1,#0ffh

              setb TR0                     ;//定時(shí)器開始工作

k:              mov 12h,r0

 

              mov 13h,r1

 

              mov 14h,r2                     ; //       小時(shí)         分鐘          秒

                                          ;       //       r2 r1     r5 r0   r3 r4

              mov 15h,r5

                                            ;        // 14h 13h       15h 12h

loop:       mov r5,15h

              mov r2,14h

              mov r1,13h                     ;//地址中不是BCD碼而是要顯示的數(shù)字

              mov r0,12h

 

              mov a,r6                ; //R6中是秒脈沖個(gè)數(shù)

              mov b,#10

              div ab

              mov dptr,#tab1         ; //商存在a中

              movc a,@a+dptr

              mov r3,a

 

              mov a,b

              movc a,@a+dptr          ;//余數(shù)在b中

              mov r4,a

 

              mov dptr,#tab1

              mov a,r0

              movc a,@a+dptr       ;       //分 個(gè)位

              mov r0,a

 

              mov a,r5

              movc a,@a+dptr              ;//分 十位

              mov r5,a;                                                                 //       小時(shí)         分鐘          秒

                     ;                                                                        //       r2 r1     r5 r0   r3 r4

              mov a,r1 ;

              movc a,@a+dptr              ;//時(shí) 個(gè)位                              //   14h 13h         15h 12h

              mov r1,a

;                                                                                             //   18h 17h         19h 16h

              mov a,r2                     ;//時(shí) 十位

              movc a,@a+dptr;                                                          //此時(shí)地址中是要顯示數(shù)字的BCD碼

              mov r2,a

              mov 19h,r5

              mov 18h,r2

              mov 17h,r1

              mov 16h,r0

              mov 46h,r6

 

 

dsp:

              mov p2,r4

              mov p0,#70h                            ;//p0的高位接74LS138

              lcall delay

 

              mov p2,r3

              mov p0,#60h

              lcall delay

 

              mov p2,r0                            ;//       小時(shí)         分鐘          秒

              mov p0,#40h

              lcall delay                     ;       //       r2 r1     r5 r0   r3 r4

                                                        ;

              mov p2,r5

              mov p0,#30h

              lcall delay

 

              mov p2,r1

              mov p0,#10h

              lcall delay

 

 

              mov p2,r2

              mov p0,#00h

              lcall delay

 

              mov p0,#50h                            ;//在分與秒之間加  "一"

              mov p2,#3fh

              lcall delay

 

              mov p0,#20h                            ;//在分與秒之間加  "一"

              mov p2,#3fh

              lcall delay

              jnb p1.1,return1              ;//p1.1是年月日調(diào)整

              jnb p1.0,jie                     ;//p1.0是時(shí)間調(diào)整

              jnb p1.2,goto5                     ;//p1.2進(jìn)入鬧鈴

 

              mov p3,#0ffh

 

                call cheak2

                call cheak3

 

              call zcheak;                                          //2ah.0為0跳轉(zhuǎn),不去整點(diǎn)報(bào)時(shí)

                jb p1.5,out3

                call cheak

out3:           jb p1.6,out2

                call cheak1

 

out2:                 jmp loop

 

goto6:       mov p3,#150

              ljmp notice

goto5:       lcall  delay1                  ;// 跳往鬧鈴的按鍵防抖程序

              jnb p1.2,goto6

              ljmp loop

 

 

return5:mov P3,#190

              ljmp showdate

return1:lcall  delay1                  ;/;/ 跳往日期調(diào)整的按鍵防抖程序

              jnb p1.1,return5

              ljmp loop

 

return8:mov p3,#230

              ljmp dsp1

jie:       lcall delay1                 ;// 跳往時(shí)間調(diào)整的按鍵防抖程序

              jnb p1.0,return8

              ljmp loop

 

 

;//*************鬧鈴校對(duì)程序************************************************8

 

cheak:                mov a,46h

              cjne a,#0,out

              mov a,36h                            ;//鬧鈴1比對(duì),若成立就給P3口傳入#00h

              cjne a,12h,out

 

                                                        ; 時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov a,37h                            ;;39h              38h              37h              36h              35h              34h

              cjne a,15h,out

 

              mov a,38h

              cjne a,13h,out

 

              mov a,39h

              cjne a,14h,out

 

                mov a,36h                ;4dh存鬧鈴1后一分的 分個(gè)位

                inc a

                mov 4dh,a

              clr p1.7

                clr p0.0

out:       ret

 

cheak1:               mov a,46h

              cjne a,#0,out22

              mov a,49h                            ;//鬧鈴1比對(duì),若成立就給P3口傳入#00h

              cjne a,12h,out22

                                                        ; 時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov a,4ah                            ;;39h              38h              37h              36h              35h              34h

              cjne a,15h,out22                         ; 4ch              4bh              4ah              49h       48h       47h

 

              mov a,4bh

              cjne a,13h,out22

 

              mov a,4ch

              cjne a,14h,out22

                mov a,49h

                inc a

                mov 4eh,a

              clr p1.7

                clr p0.0

out22:                ret

;***************關(guān)鬧鈴報(bào)警******************************************************

;關(guān)鬧鈴一

cheak2:               mov a,46h

              cjne a,#0,out33

              mov a,4dh                            ;//鬧鈴1比對(duì),若成立就給P3口傳入#00h

              cjne a,12h,out33

                                                        ; 時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov a,37h                            ;;39h              38h              37h              36h              35h              34h

              cjne a,15h,out33                            ; 4ch              4bh              4ah              49h       48h       47h

 

              mov a,38h

              cjne a,13h,out33

 

              mov a,39h

              cjne a,14h,out33

              setb p1.7

                setb p0.0

out33:                ret

;關(guān)鬧鈴二

cheak3:               mov a,46h

              cjne a,#0,out44

              mov a,4eh                            ;//鬧鈴1比對(duì),若成立就給P3口傳入#00h

              cjne a,12h,out44

                                                        ; 時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov a,4ah                            ;;39h              38h              37h              36h              35h              34h

              cjne a,15h,out44                            ; 4ch              4bh              4ah              49h       48h       47h

 

              mov a,4bh

              cjne a,13h,out44

 

              mov a,4ch

              cjne a,14h,out44

              setb p1.7

                setb p1.6

out44:                ret

 

 

 

;********整點(diǎn)報(bào)時(shí)校對(duì)程序******************************************************************

 

 

                                                                 ;       小時(shí)         分鐘

zcheak:               mov a,46h

              cjne a,#0,out

              mov a,12h                                   ;   14h 13h         15h 12h

              cjne a,#0,out

              mov a,15h

              cjne a,#0,out

              mov a,14h                                      ;將原來存在13h,14h的小時(shí)轉(zhuǎn)為一個(gè)值存在a中

              mov b,#10

              mul ab

              add a,13h

 

 

              cjne a,#1,play1

              mov p3,#0

 

              jmp out1

play1:       cjne a,#2,play2

              mov p3,#10

 

              jmp out1

play2:              cjne a,#3,play3

              mov p3,#20

 

              jmp out1

play3:              cjne a,#4,play4

              mov p3,#30

 

              jmp out1

play4:              cjne a,#5,play5

              mov p3,#40

 

              jmp out1

 

play5:              cjne a,#6,play6

              mov p3,#50

 

              jmp out1

 

play6:              cjne a,#7,play7

              mov p3,#60

 

              jmp out1

play7:              cjne a,#8,play8

              mov p3,#70

 

              jmp out1

play8:              cjne a,#9,play9

              mov p3,#80

 

              jmp out1

play9:              cjne a,#10,play10

              mov p3,#90

 

              jmp out1

play10:              cjne a,#11,play11

              mov p3,#100

 

              jmp out1

play11:              cjne a,#12,play12

              mov p3,#110

 

              jmp out1

play12:              cjne a,#13,play13

              mov p3,#120

 

              jmp out1

play13:              cjne a,#14,play14

              mov p3,#130

 

              jmp out1

play14:              cjne a,#15,play15

              mov p3,#140

 

              jmp out1

play15:              cjne a,#16,play16

              mov p3,#150

 

              jmp out1

play16:              cjne a,#17,play17

              mov p3,#160

 

              jmp out1

play17:              cjne a,#18,play18

              mov p3,#170

 

              jmp out1

play18:              cjne a,#19,play19

              mov p3,#180

 

              jmp out1

 

play19:              cjne a,#20,play20

              mov p3,#190

 

              jmp out1

play20:              cjne a,#21,play21

              mov p3,#200

 

              jmp out1

play21:              cjne a,#22,play22

              mov p3,#210

 

              jmp out1

play22:              cjne a,#23,play23

              mov p3,#220

 

              jmp out1

play23:       cjne a,#24,out1

              mov p3,#230

 

 

out1:       ret

 

 

                                                                 ;鬧鈴調(diào)整

notice:       mov dptr,#tab1

              mov a,34h

              movc a,@a+dptr                                          ;         時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov 45h,a

                                                                             ;         39h              38h              37h              36h              35h              34h

                                                                      ;BCD碼         40h              41h              42h              43h              44h              45h

              mov a,35h

              movc a,@a+dptr                                       ;   14h               13h              15h               12h

              mov 44h,a

 

              mov a,36h

              movc a,@a+dptr

              mov 43h,a

 

              mov a,37h

              movc a,@a+dptr

              mov 42h,a

 

              mov a,38h

              movc a,@a+dptr

              mov 41h,a

 

              mov a,39h

              movc a,@a+dptr

              mov 40h,a

 

              mov p2,45h

              mov p0,#70h                     ;顯示時(shí)間

              lcall delay

 

              mov p2,44h

              mov p0,#60h

              lcall delay

 

              mov p2,43h

              mov p0,#40h

              lcall delay

 

              mov p2,42h

              mov p0,#30h

              lcall delay                                                        ;         40h              41h              42h              43h              44h              45h

 

 

              mov p2,41h

              mov p0,#10h

              lcall delay

 

              mov p2,40h

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,#3fh

              lcall delay

 

              mov p0,#20h

              mov p2,#3fh

              lcall delay

              jnb p1.2,goto7       ; p1.2跳回

              jnb p1.1,addfen              ;p1.1分調(diào)整

              jnb p1.0,addshi          ;時(shí)調(diào)整

                jnb p1.3,light     ;開啟或關(guān)閉鬧鈴

              mov p3,#0ffh

              jmp notice

 

 

goto8:       mov p3,#170

              jmp notice1

goto7:       lcall delay1

              jnb p1.2,goto8

              ljmp notice

light:  lcall delay1

        lcall delay1

        cpl p1.5

        ljmp notice

 

addfen:       call delay1

              lcall delay1

              mov r5,37h                                            ;         39h              38h              37h              36h              35h              34h

              mov r2,39h

              mov r1,38h

              mov r0,36h

              inc r0                                            ;       小時(shí)         分鐘          秒

              cjne r0,#10,to                              ;       r2 r1     r5 r0   r3 r4

              mov r0,#0

              inc r5                                            ; 14h 13h       15h 12h

              cjne r5,#6,to

              mov r5,#0

              inc r1

              cjne r1,#10,tiao

              mov r1,#0

              inc r2

tiao:       cjne r2,#2,to

              cjne r1,#4,to

              mov r2,#0

              mov r1,#0

to:              mov 36h,r0

 

              mov 38h,r1

 

              mov 39h,r2

 

              mov 37h,r5

 

              ljmp notice

 

 

 

 

addshi:       call delay1

              lcall delay1

              mov r5,37h                                            ;         39h              38h              37h              36h              35h              34h

              mov r2,39h

              mov r1,38h

              mov r0,36h

              inc r1

              cjne r1,#10,tiao1

              mov r1,#0

              inc r2

tiao1:       cjne r2,#2,to1

              cjne r1,#4,to1

              mov r2,#0

              mov r1,#0

to1:       mov 36h,r0

 

              mov 38h,r1

 

              mov 39h,r2

 

              mov 37h,r5

 

              ljmp notice

 

                                     ;鬧鈴二設(shè)定

 

notice1:mov dptr,#tab1

              mov a,34h

              movc a,@a+dptr                                          ;         時(shí)十位       時(shí)個(gè)位       分十位       分個(gè)位       秒十位       秒個(gè)位

              mov 45h,a

                                                                             ;         39h              38h              37h              36h              35h              34h

                                                                             ;         4ch              4bh              4ah              49h       48h       47h

                                                                      ;BCD碼         40h              41h              42h              43h              44h              45h

              mov a,35h

              movc a,@a+dptr                                       ;   14h               13h              15h               12h

              mov 44h,a

 

              mov a,49h

              movc a,@a+dptr

              mov 43h,a

 

              mov a,4ah

              movc a,@a+dptr

              mov 42h,a

 

              mov a,4bh

              movc a,@a+dptr

              mov 41h,a

 

              mov a,4ch

              movc a,@a+dptr

              mov 40h,a

 

              mov p2,45h

              mov p0,#70h                     ;顯示時(shí)間

              lcall delay

 

              mov p2,44h

              mov p0,#60h

              lcall delay

 

              mov p2,43h

              mov p0,#40h

              lcall delay

 

              mov p2,42h

              mov p0,#30h

              lcall delay                                          ;         40h              41h              42h              43h              44h              45h

 

 

              mov p2,41h

              mov p0,#10h

              lcall delay

 

              mov p2,40h

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,#3fh

              lcall delay

 

              mov p0,#20h

              mov p2,#3fh

              lcall delay

              jnb p1.2,goto9       ; p1.2跳回

              jnb p1.1,addfen1              ;p1.1分調(diào)整

              jnb p1.0,addshi1          ;時(shí)調(diào)整

                jnb p1.3,light1

              mov p3,#0ffh

              jmp notice1

 

 

goto10:       mov p3,#240

              jmp loop

goto9:       lcall delay1

              jnb p1.2,goto10

              ljmp notice1

light1: lcall delay1

        lcall delay1

        cpl p1.6

        jmp notice1

 

addfen1:call delay1

              lcall delay1

              mov r5,4ah                                            ;         39h              38h              37h              36h              35h              34h

              mov r2,4ch                                      ;         4ch              4bh         4ah              49h       48h       47h

              mov r1,4bh

              mov r0,49h

              inc r0                                            ;       小時(shí)         分鐘          秒

              cjne r0,#10,to3                              ;       r2 r1     r5 r0   r3 r4

              mov r0,#0

              inc r5                                            ; 14h 13h       15h 12h

              cjne r5,#6,to3

              mov r5,#0

              inc r1

              cjne r1,#10,tiao3

              mov r1,#0

              inc r2

tiao3:       cjne r2,#2,to3

              cjne r1,#4,to3

              mov r2,#0

              mov r1,#0

to3:       mov 49h,r0

 

              mov 4bh,r1

 

              mov 4ch,r2

 

              mov 4ah,r5

 

              ljmp notice1

 

 

 

 

addshi1:call delay1

              lcall delay1

              mov r5,4ah                                            ;         39h              38h              37h              36h              35h              34h

              mov r2,4ch                                          ;              4ch              4bh         4ah              49h       48h       47h

              mov r1,4bh

              mov r0,49h

              inc r1

              cjne r1,#10,tiao4

              mov r1,#0

              inc r2

tiao4:       cjne r2,#2,to4

              cjne r1,#4,to4

              mov r2,#0

              mov r1,#0

to4:       mov 49h,r0

 

              mov 4bh,r1

 

              mov 4ch,r2

 

              mov 4ah,r5

 

              ljmp notice1

 

 

 

 

 

 

 

 

 

dsp1:

              mov r5,15h                         ;       小時(shí)         分鐘          秒

              mov r2,14h                        ;   14h 13h         15h 12h

              mov r1,13h

              mov r0,12h

 

;/*              mov a,r6 ;

;              mov b,#10

;              div ab

;              mov dptr,#tab1                     ;       r2 r1     r5 r0   r3 r4

;              movc a,@a+dptr

;              mov r3,a

  ;

;              mov a,b

;              movc a,@a+dptr

;              mov r4,a

;                               */

              mov dptr,#tab1

              mov a,r0

              movc a,@a+dptr              ;計(jì)算BCD碼

              mov r0,a

 

              mov a,r5

              movc a,@a+dptr

              mov r5,a

 

              mov a,r1

              movc a,@a+dptr

              mov r1,a

 

              mov a,r2

              movc a,@a+dptr

              mov r2,a

 

 

              mov p2,r4

              mov p0,#70h                     ;顯示時(shí)間

              lcall delay

 

              mov p2,r3

              mov p0,#60h

              lcall delay

 

              mov p2,r0

              mov p0,#40h

              lcall delay

 

              mov p2,r5

              mov p0,#30h

              lcall delay

 

 

              mov p2,r1

              mov p0,#10h

              lcall delay

 

              mov p2,r2

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,#3fh

              lcall delay

 

              mov p0,#20h

              mov p2,#3fh

              lcall delay

              lcall delay

              lcall delay

              lcall delay

              lcall delay

              jnb p1.0,return2       ; p1.0跳回

              jnb p1.1,fen       ;p1.1分調(diào)整

              jnb p1.2,shi

                jnb p1.3,mon

              mov p3,#0ffh

              ljmp dsp1

 

return9:mov p3,#240;

              jmp loop

return2:lcall delay1

              jnb p1.0,return9

              jmp dsp1

 

mon:            mov p3,#222

                call delay1

                jmp dsp1

 

fen:       call delay1

              lcall delay1

              mov r5,15h

              mov r2,14h

              mov r1,13h

              mov r0,12h

              inc r0                                            ;       小時(shí)         分鐘          秒

              cjne r0,#10,q                              ;       r2 r1     r5 r0   r3 r4

              mov r0,#0

              inc r5

              cjne r5,#6,q

              mov r5,#0

              inc r1

              cjne r1,#10,next2

              mov r1,#0

              inc r2

next2:       cjne r2,#2,q

              cjne r1,#4,q

              mov r2,#0

              mov r1,#0

q:              mov 12h,r0

 

              mov 13h,r1

 

              mov 14h,r2

 

              mov 15h,r5

 

              ljmp dsp1

shi:       call delay1

              lcall delay1

              mov r5,15h

              mov r2,14h                                      ;       小時(shí)         分鐘          秒

              mov r1,13h                                      ;       r2 r1     r5 r0   r3 r4

              mov r0,12h

              inc r1

              cjne r1,#10,next3

              mov r1,#0

              inc r2

next3:       cjne r2,#2,pq

              cjne r1,#4,pq

              mov r2,#0

              mov r1,#0

pq:              mov 12h,r0

 

              mov 13h,r1

 

              mov 14h,r2

 

              mov 15h,r5

 

              ljmp dsp1

 

 

showdate:mov a,20h              ; 日     月       年個(gè)位      年十位   年百位   年千位

              mov b,#10          ; 20h       21h              22h                     23h         24h       25h

              div ab

              mov dptr,#tab1

              movc a,@a+dptr

              mov 26h,a                ;轉(zhuǎn)化出來的BCD碼

              mov a,b                            ;                日個(gè)位              日十位

              movc a,@a+dptr              ;              27h              26h

              mov 27h,a

 

 

              mov a,21h

              mov b,#10

              div ab                              ;       月個(gè)位              月十位

              movc a,@a+dptr

              mov 28h,a                     ;              29h              28h

              mov a,b

              movc a,@a+dptr

              mov 29h,a

 

 

              mov a,22h

              movc a,@a+dptr                ;               年個(gè)位              年十位       年百位       年千位

              mov 30h,a                       ;              22h                     23h         24h       25h

                                                   ;BCD碼       30h                     31h         32h       33h

              mov a,23h

              movc a,@a+dptr

              mov 31h,a

 

              mov a,24h

              movc a,@a+dptr

              mov 32h,a

 

 

              mov a,25h

              movc a,@a+dptr

              mov 33h,a

              jnb p1.1,goto2

              jnb p1.2,goto4

              mov p3,#0ffh

 

dsp5:       mov p2,27h

              mov p0,#70h                     ;年月日的BCD碼

              lcall delay                 ;日個(gè)位              日十位       月個(gè)位              月十位        年個(gè)位              年十位       年百位       年千位

                                            ;27h              26h       29h              28h              30h                     31h         32h       33h

              mov p2,26h

              mov p0,#60h

              lcall delay

 

              mov p2,28h

              mov p0,#40h

              lcall delay

 

              mov p2,30h

              mov p0,#30h

              lcall delay

 

              mov p2,32h

              mov p0,#10h

              lcall delay

 

              mov p2,33h

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,29h

              lcall delay

 

              mov p0,#20h

              mov p2,31h

              lcall delay

 

              jmp showdate

 

goto3:       mov p3,#200

              jmp date                        ;跳轉(zhuǎn)到日期設(shè)置中

 

goto2:        lcall delay1

              jnb p1.1,goto3

               ljmp showdate

 

goto4:       lcall delay1

              jmp loop

 

 

 

 

 

 

date:       mov a,20h              ; 日         月               年個(gè)位              年十位       年百位       年千位

              mov b,#10          ; 20h       21h              22h                     23h         24h       25h

              div ab

              mov dptr,#tab1

              movc a,@a+dptr

              mov 26h,a                ;轉(zhuǎn)化出來的BCD碼

              mov a,b                            ;                日個(gè)位              日十位

              movc a,@a+dptr              ;              27h              26h

              mov 27h,a

 

 

              mov a,21h

              mov b,#10

              div ab                              ;       月個(gè)位              月十位

              movc a,@a+dptr

              mov 28h,a                     ;              29h              28h

              mov a,b

              movc a,@a+dptr

              mov 29h,a

 

 

              mov a,22h

              movc a,@a+dptr                ;               年個(gè)位              年十位       年百位       年千位

              mov 30h,a                       ;              22h                     23h         24h       25h

                                                   ;BCD碼       30h                     31h         32h       33h

              mov a,23h

              movc a,@a+dptr

              mov 31h,a

 

              mov a,24h

              movc a,@a+dptr

              mov 32h,a

 

 

              mov a,25h

              movc a,@a+dptr

              mov 33h,a

              jnb p1.1,return

              jnb p1.0,adddate

              jnb p1.2,decdate

              mov p3,#0ffh

dsp2:       mov p2,27h

              mov p0,#70h                     ;年月日的BCD碼

              lcall delay                 ;日個(gè)位              日十位       月個(gè)位              月十位        年個(gè)位              年十位       年百位       年千位

                                             ;27h              26h       29h              28h              30h                     31h         32h       33h

              mov p2,26h

              mov p0,#60h

              lcall delay

 

              mov p2,28h

              mov p0,#40h

              lcall delay

 

              mov p2,30h

              mov p0,#30h

              lcall delay

 

              mov p2,32h

              mov p0,#10h

              lcall delay

 

              mov p2,33h

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,29h

              lcall delay

 

              mov p0,#20h

              mov p2,31h

              lcall delay

 

              jmp date

adddate:lcall delay1

              lcall delay1                ;日加一

              inc 20h

              mov a,20h

              cjne a,#32,over

              mov 20h,#0

 

over:       ljmp date

 

decdate:lcall delay1              ;日減一

              lcall delay1

              dec 20h

              mov a,20h

              cjne a,#-1,over

              mov 20h,#31

              jmp over

 

 

 

return6:mov p3,#210

              jmp r                        ;跳轉(zhuǎn)到日

 

return:         lcall delay1

                mov p3,#230

              jnb p1.1,return6

               ljmp date

 

r:              mov a,20h

              mov b,#10                                   ;日                月               年個(gè)位              年十位       年百位       年千位

              div ab                                          ;20h              21h              22h                     23h         24h       25h

              mov dptr,#tab1

              movc a,@a+dptr

              mov 26h,a

              mov a,b

              movc a,@a+dptr

              mov 27h,a

 

 

              mov a,21h

              mov b,#10

              div ab

              movc a,@a+dptr

              mov 28h,a

              mov a,b

              movc a,@a+dptr

              mov 29h,a

 

 

              mov a,22h

              movc a,@a+dptr

              mov 30h,a

 

              mov a,23h

              movc a,@a+dptr

              mov 31h,a

 

              mov a,24h

              movc a,@a+dptr

              mov 32h,a

 

 

              mov a,25h

              movc a,@a+dptr

              mov 33h,a

              jnb p1.1,back1

              jnb p1.0,addri

              jnb p1.2,decri

              mov p3,#0ffh

dsp3:       mov p2,27h

              mov p0,#70h

              lcall delay

 

              mov p2,26h

              mov p0,#60h

              lcall delay

 

              mov p2,28h

              mov p0,#40h

              lcall delay

 

              mov p2,30h

              mov p0,#30h

              lcall delay

 

              mov p2,32h

              mov p0,#10h

              lcall delay

 

              mov p2,33h

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,29h

              lcall delay

 

              mov p0,#20h

              mov p2,31h

              lcall delay

 

              jmp r

addri:       lcall delay1

              lcall delay1

              inc 21h

              mov a,21h

              cjne a,#13,over1

              mov 21h,#1

 

over1:       ljmp r

 

decri:       lcall delay1

              lcall delay1

              dec 21h

              mov a,21h

              cjne a,#0,over1

              mov 21h,#12

              jmp over1

 

back:       mov P3,#220                     ;跳轉(zhuǎn)年調(diào)整,此倆個(gè)back 為按鍵防抖

              jmp nian

 

back1:        lcall delay1

              jnb p1.1,back

               ljmp dsp3

 

 

 

nian:       mov a,20h              ; 日         月               年個(gè)位              年十位       年百位       年千位

              mov b,#10          ; 20h       21h              22h                     23h         24h       25h

              div ab

              mov dptr,#tab1

              movc a,@a+dptr

              mov 26h,a                ;轉(zhuǎn)化出來的BCD碼

              mov a,b                            ;                日個(gè)位              日十位

              movc a,@a+dptr              ;              27h              26h

              mov 27h,a

 

 

              mov a,21h

              mov b,#10

              div ab                              ;       月個(gè)位              月十位

              movc a,@a+dptr

              mov 28h,a                     ;              29h              28h

              mov a,b

              movc a,@a+dptr

              mov 29h,a

 

 

              mov a,22h

              movc a,@a+dptr                ;               年個(gè)位              年十位       年百位       年千位

              mov 30h,a                       ;              22h                     23h         24h       25h

                                                   ;BCD碼       30h                     31h         32h       33h

              mov a,23h

              movc a,@a+dptr

              mov 31h,a

 

              mov a,24h

              movc a,@a+dptr

              mov 32h,a

 

 

              mov a,25h

              movc a,@a+dptr

              mov 33h,a

 

 

dsp4:       mov p2,27h

              mov p0,#70h                     ;年月日的BCD碼

              lcall delay                 ;日個(gè)位              日十位       月個(gè)位              月十位        年個(gè)位              年十位       年百位       年千位

                                             ;27h              26h       29h              28h              30h                     31h         32h       33h

              mov p2,26h

              mov p0,#60h

              lcall delay

 

              mov p2,28h

              mov p0,#40h

              lcall delay

 

              mov p2,30h

              mov p0,#30h

              lcall delay

 

              mov p2,32h

              mov p0,#10h

              lcall delay

 

              mov p2,33h

              mov p0,#00h

              lcall delay

 

              mov p0,#50h

              mov p2,29h

              lcall delay

 

              mov p0,#20h

              mov p2,31h

              lcall delay

 

              jnb p1.1,goto

              jnb p1.0,addnian

              jnb p1.2,decnian

              mov p3,0ffh

              jmp nian

addnian:lcall delay1

              lcall delay1                ;年個(gè)位              年十位       年百位       年千位

              inc 22h                            ;22h                     23h         24h       25h

              mov a,22h

              cjne a,#10,over4

              mov 22h,#0

              inc 23h

              mov a,23h

              cjne a,#10,over4

              mov 23h,#0

              inc 24h

              mov a,24h

              cjne a,#10,over4

              mov 24h,#0

              inc 25h

              mov a,25h

              cjne a,#10,over4

              mov 25h,#0

 

over4:       jmp nian

 

decnian:lcall delay1

              lcall delay1                ;年個(gè)位              年十位       年百位       年千位

              dec 22h                            ;22h                     23h         24h       25h

              mov a,22h

              cjne a,#-1,over4

              mov 22h,#0

              dec 23h

              mov a,23h

              cjne a,#-1,over4

              mov 23h,#0

              dec 24h

              mov a,24h

              cjne a,#-1,over4

              mov 24h,#0

              dec 25h

              mov a,25h

              cjne a,#-1,over4

              mov 25h,#0

              jmp over4

 

 

goto1:       mov p3,#240

              jmp loop                        ;跳轉(zhuǎn)到日

 

goto:       lcall delay1

              jnb p1.1,goto1

               ljmp nian

 

 

 

time:       mov r5,15h

              mov r2,14h                                   ;秒脈沖得到后,軟件計(jì)算時(shí)間

              mov r1,13h

              mov r0,12h

 

              inc r7

              mov a,r7

              cjne a,#20,T_ret

              inc r6

              cjne r6,#60,t

              mov r6,#0

              inc r0

              cjne r0,#10,t

              mov r0,#0

              inc r5

              cjne r5,#6,t

              mov r5,#0

              inc r1

              cjne r1,#10,next1

              mov r1,#0

              inc r2

next1:       cjne r2,#2,t

              cjne r1,#4,t

              mov r2,#0

              mov r1,#0

              inc 20h

                mov p3,#222

                call delay1

                mov a ,20h

                cjne a,#32,t

                mov 20h,#1

 

                inc 21h

                mov a,21h

                cjne a,#13,t

                mov 21h,#1

                inc 22h

 

 

 

 

 

;/*              cjne r1,#24,ask

;              mov r1,#0

;ask:       mov dptr,#tab1

;              mov a,r1

;              mov b,#10

;              div ab

;              movc a,@a+dptr

;              add a,r2

;              mov r2,a

;              mov a,b

;              movc a,@a+dptr

;              add a,r1

;              mov r1,a */

t:              mov r7,#0

T_ret:       mov TH0,#03ch

              mov TL0,#0b0h

              mov 12h,r0

 

              mov 13h,r1

                                                                      ;將算出來的時(shí)間賦回地址中

              mov 14h,r2                                          ;       小時(shí)         分鐘          秒

                                                                      ;       r2 r1     r5 r0   r3 r4

              mov 15h,r5

              reti

delay:                mov 10h,#4

d3:              mov 11h,#5

d4:              djnz 11h,d4

              djnz 10h,d3

              ret

 

delay1:       mov 10h,#0bfh

d1:              mov 11h,#0ffh

d2:              djnz 11h,d2

              djnz 10h,d1

              ret

tab1:       db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,00h,90h

 

               end

 

 

(3)控制附機(jī)的的程序

 

#include"reg52.h"

sbit warmer=P2^4;

sbit led_run=P2^0;

sbit k_power=P2^5;

sbit P3_0=P3^0 ;

sbit P3_2=P3^2 ;

sbit P3_3=P3^3 ;

sbit P3_4=P3^4 ;

sbit P3_5=P3^5 ;

sbit day=P2^7 ;

sbit ge=P3^7;

sbit shi=P3^6;

sbit DQ =P3^1;   //定義通信端口

 

int play()                            //語音芯片控制位

{

       P3_0=1;

       P3_2=0;

       P3_3=0;

       P3_4=0;

       P3_5=0;

       P3_3=1;

 

 

}

 

 

 

 

//延時(shí)函數(shù)

unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};

                    //0,    1,   2   3    4    5    6    7    8    9

void delay(unsigned int i)

{

     while(i--);

 

}

//初始化函數(shù)

Init_DS18B20(void)

{

 unsigned char x=0;

 DQ = 1;    //DQ復(fù)位

 delay(8);  //稍做延時(shí)

 DQ = 0;    //單片機(jī)將DQ拉低

 delay(80); //精確延時(shí) 大于 480us

 DQ = 1;    //拉高總線

 delay(14);

 x=DQ;      //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗

 delay(20);

}

//讀一個(gè)字節(jié)

ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

 {

  DQ = 0; // 給脈沖信號(hào)

  dat>>=1;

  DQ = 1; // 給脈沖信號(hào)

  if(DQ)

   dat|=0x80;

  delay(4);

 }

 return(dat);

}

//寫一個(gè)字節(jié)

WriteOneChar(unsigned char dat)

{

 unsigned char i=0;

 for (i=8; i>0; i--)

 {

  DQ = 0;

  DQ = dat&0x01;

  delay(5);

  DQ = 1;

  dat>>=1;

 }

delay(4);

}

//讀取溫度

ReadTemperature(void)

{

unsigned char a=0;

unsigned char b=0;

unsigned char t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作

WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換

Init_DS18B20();

WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作

WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度

a=ReadOneChar();   //讀取溫度值低位

b=ReadOneChar();   //讀取溫度值高位

a=a>>4;            //低位右移4位,舍棄小數(shù)部分

t=b<<4;            //高位左移4位,舍棄符號(hào)位

t=t|a;

return(t);

}

void display_tempmain(unsigned char i)             //主程序溫度顯示函數(shù)

{

  P2=tab[i/10];

  shi=0;

  ge=1;

  day=1;

  delay(500);

  P2=tab[i%10];

  shi=1;

  ge=0;

  day=1;

  delay(500);

 

}

void main(void)

{unsigned int temp;

 int play();

 unsigned int i,j=2;

while(1)                         //主循環(huán)

   { temp=ReadTemperature();

     display_tempmain(temp);

     P2=tab[j];

     shi=1;

     ge=1;

     day=0;

     if(P0==222){

 

                     j++;

                        if(j==8){

                                 j=1;

                        }

                        for(i=40000;i>0;i--);

                 }

     if(P0==0x00){

                        P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

 

                                                                  //語音地址         0          10       20       30       40       50       60       70       80       90 (十進(jìn)制)

                     P1=0x00;

                     play();

                                            //語音地址              100       110       120       130       140       150       160       170       180       190       200       210       220       230

              }

              if(P0==10){                                   //跳出              現(xiàn)在時(shí)刻

                  P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

 

                                                                             // 240                250

                     P1=10;

                     play();

              }

              if(P0==20){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

 

                     P1=20;

                     play();

              }

              if(P0==30){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=30 ;

                     play();

              }

              if(P0==40){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=40;

                     play();

              }

              if(P0==50){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=50;

                     play();

              }

              if(P0==60){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=60 ;

                     play();

              }

              if(P0==70){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=70  ;

                     play();

              }

              if(P0==80){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=80;

                     play();

              }

              if(P0==90){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=90 ;

                     play();

              }

              if(P0==100){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=100;

                     play();

              }

              if(P0==110){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=110;

                     play();

              }

              if(P0==120){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=120;

                     play();

              }

              if(P0==130){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=130;

                     play();

              }

              if(P0==140){

                     P1=250;

                     play();

 

                     for(i=60000;i>0;i--);

                     for(i=60000;i>0;i--);

                     P1=140 ;

                     play();

              }

              if(P0==150){

 

                     P1=150;

                     play();

              }

              if(P0==170){

 

                     P1=170 ;

                     play();

              }

              if(P0==190){

 

                     P1=190 ;

                     play();

              }

              if(P0==200){

 

                     P1=200;

                     play();

              }

              if(P0==210){

 

                     P1=210;

                     play();

              }

              if(P0==220){

 

                     P1=220;

                     play();

              }

              if(P0==230){

 

                     P1=230;

                     play();

              }

              if(P0==240){

                     P1=240;

                     play();

              }

 

      

附錄3  英文資料

Power Management Techniques and Calculation

Relevant Devices

This application note applies to the following devices: C8051F000, C8051F001, C8051F002, C8051F005, C8051F006, C8051F010, C8051F011, C8051F012, C8051F012, C8051F015, C8051F016, and C8051F017.

Introduction

This application note discusses power management techniques and methods of calculating power in a Cygnet C8051F00x and C8051F01x Sock. Many applications will have strict power requirements, and there are several methods of lowering the rate of power consumption without sacrificing performance. Calculating the predicted power use is important to characterize the system’s power supply requirements.

Key Points

• Supply voltage and system clock frequency strongly affect power consumption.

• Cygnet’s Sock’s feature power management modes: IDLE and STOP.

• Power use can be calculated as a function of system clock frequency, supply voltage, and enabled peripherals.

Power Saving Methods

CMOS digital logic device power consumption is affected by supply voltage and system clock (SYSCLK) frequency. These parameters can be adjusted to realize power savings, and are readily controlled by the designer. This section discusses these parameters and how they affect power usage.

Reducing System Clock Frequency

In CMOS digital logic devices, power consumption is directly proportional to system clock (SYSCLK) frequency: power=CV2ƒ, where C is CMOS load capacitance, V is supply voltage, and ƒ is SYSCLK frequency.

Equation 1.CMOS Power Equation

The system clock on the C8051Fxxx family of devices can be derived from an internal oscillator or an external source. External sources may be a CMOS clock, RC circuit, capacitor, or crystal oscillator. For information on configuring oscillators, see application note: “AN02 - Configuring the Internal and External Oscillators.” The internal oscillator can provide four SYSCLK frequencies: 2, 4, 8, and16 MHz. Many different frequencies can be achieved using the external oscillator.

To conserve power, a designer must decide what the fastest needed SYSCLK frequency and required accuracy is for a given application. A design may require a constant SYSCLK frequency during all device operations. In this case, the designer will choose the lowest possible frequency required, and use the oscillator configuration that consumes the least power. Typical applications include serial communications, and periodic sampling with an ADC that must be performed.

Some operations may require high speed operation, but only in short, intermittent intervals. This is sometimes referred to as “burst” operation. In the C8051Fxxx, the SYSCLK frequency can be changed at anytime. Thus, the device can operate at low frequency until a condition occurs that requires high frequency operation.

Two examples of alternating between SYSCLK sources are (1) an internal oscillator/external crystal configuration, and (2) an external crystal/RC oscillator configuration. If the device is used for occasional high speed data conversion, and a real-time clock is used for time-stamping the data, a combination internal oscillator and external crystal would be ideal. During sampling operations, the high speed internal oscillator would be used. When sampling is complete, the device could then use an external 32 kHz crystal to maintain the real-time clock. Once high speed operations are required again, the device switches to the internal oscillator as necessary (see Figure 1below). An example of this procedure is illustrated in application note “AN008 Implementing a Real-Time Clock”.

The crystal oscillator and internal oscillator may be operated simultaneously and each selected as the SYSCLK source in software as desired. To reduce supply current, the crystal may also be shutdown when using the internal oscillator. In this case, when switching from the internal to external oscillator the designer must consider the start-up delay when switching the SYSCLK source. The C8051F0xx devices have a flag that is set when the external clock signal is valid (XTLVLD bit in the OSCXCN register) to indicate the oscillator is running and stable. This flag is polled before switching to the external oscillator. Note that other operations can continue using the internal oscillator during the crystal start-up time.

Some applications require intermittent high speed and accuracy (e.g., ADC sampling and data processing), but have lower frequency and accuracy requirements at other times (e.g., waiting for sampling interval), a combination of an external oscillator and RC circuit can be useful. In this case, the external RC oscillator is used to derive the lower frequency SYSCLK source, and the crystal is used for high frequency operations. The RC circuit requires a connection to VDD (voltage source) to operate.

Because this connection could load the crystal oscillator circuit while the crystal is in operation, we connect the RC circuit to a general purpose port pin (see Figure 2 below). When the RC circuit is in use, the port pin connection is driven high (to VDD) by selecting its output mode to “push-pull” and writing a ‘1’ to the port latch. When the crystal oscillator is being used, the port pin is placed in a ‘hi- Z’ condition by configuring the output mode of the port to “open-drain” and writing a ‘1’ to the port latch. Note the RC circuit may take advantage of the existing capacitors used for the crystal oscillator.

The start-up of the RC-circuit oscillator is nearly instantaneous. However, there is a notable start-up time for the crystal. Therefore, switching from the RC oscillator to the external crystal oscillator using the following procedure:

1. Switch to the internal oscillator.

2. Configure the port pin used for the RC circuit voltage supply as open-drain and write a ‘1’ to the port pin (Hi-Z condition).

3. Start the crystal (Set the XFCN bits).

4. Wait for 1 ms.

5. Poll for the External Crystal Valid Bit (XTLVLD --> ‘1’).

6. Switch to the external oscillator.

Switch from the external crystal oscillator to the RC oscillator as follows:

1. Switch to the internal oscillator.

2. Shutdown the crystal (clear the XFCN bits).

3. Drive the voltage supply port pin high (to VDD) by putting the port pin in “push pull” mode and writing a ‘1’ to its port latch.

4. Switch back to the external oscillator.

 

 

 

 

 

 

 

 

Supply Voltage

The amount of current used in CMOS logic is directly proportional to the voltage of the power supply. The power consumed by CMOS logic is proportional the power supply voltage squared (See Equation 1). Thus, power consumption may be reduced by lowering the supply voltage to the device. The C8051Fxxx families of devices require a supply voltage of 2.7-3.6 Volts. Thus, to save power, it is recommended to use a 3.0 volt regulator instead of a 3.3 volt regulator for power savings.

CIP-51 Processor Power Management Modes

The C8051 processor has two modes which can be used for power management. These modes are IDLE and STOP.

IDLE Mode

In IDLE Mode, the CPU and FLASH memory are taken off-line. All peripherals external to the CPU remain active, including the internal clocks. The CPU exits IDLE Mode when an enabled interrupt or reset occurs. The CPU is placed in IDLE Mode by setting the Idle Mode Select Bit (PCON.0) to ‘1’.

When the IDLE Mode Select Bit is set to ‘1’, the CPU enters IDLE Mode once the instruction that sets the bit has executed. An asserted interrupt will clear the IDLE Mode Select Bit and the CPU will vector to service the interrupt. After a return from interrupt (RETI), the CPU will return to the next instruction following the one that had set the IDLE Mode Select Bit. If a reset occurs while in IDLE Mode, the normal reset sequence will occur and the CPU will begin executing code at memory location 0x0000.

As an example, the CPU can be placed in IDLE while waiting for a Timer 2 overflow to

Initiate a sample/conversion in the ADC. Once the conversion and sample processing is complete, the ADC end-of-conversion interrupt wakes the CPU from IDLE Mode and processes the sample. After the sample processing is complete, the CPU is placed back into IDLE Mode to save power while waiting for the next interrupt.

As another example, the CPU may wait in IDLE Mode to save power until an external

Interrupt signal is used to “wake up” the CPU as needed. Upon receiving an external interrupt, the CPU will exit IDLE Mode and vector to the corresponding interrupt vector (e.g., / INT0 or /INT1).

STOP Mode

The C8051 STOP Mode is used to shut down the CPU and oscillators. This will effectively shut down all digital peripherals as well. All analog peripherals must be shutdown by software prior to entering STOP Mode. The processor exits STOP Mode only by an internal or external reset. Thus, STOP Mode saves power by reducing the SYSCLK frequency to zero.

Note that the Missing Clock Detector will cause an internal reset (if enabled) that will terminate STOP Mode. Thus, the Missing Clock Detector should be disabled prior to entering STOP Mode if the CPU is to be in STOP Mode longer than the Missing Clock Detector timeout (100 μs).

The C8051 processor is placed in STOP Mode by setting the STOP Mode Select Bit (PCON.1) to ‘1’. Upon reset, the CPU performs the normal reset sequence and begins executing code at 0x0000. Any valid RESET source will exit STOP Mode. Sources of reset to exit STOP Mode are External Reset (/RST), Missing Clock Detector, Comparator 0, and the External ADC Convert Start (/CNVSTR).

As an example, the CPU may be placed in STOP Mode for a period to save power when no device operation is required. When the device is needed, Comparator 0 reset could be used to “wake up” the device.

Generally, a power conscious design will use the lowest voltage supply, lowest SYSCLK frequency, and will use Power Management Modes when possible to maximize power savings. Most of these can be implemented or controlled in software.

Calculating Power Consumption

There are two components of power consumption in Cygnet’s C8051F00x and C8051F01x family of devices: analog and digital. The analog component of power consumption is nearly constant for all SYSCLK frequencies. The digital component of power consumption changes considerably with SYSCLK frequency. The digital and analog components are added to determine the total power consumption.

The current use calculations presented in this application note apply to the C8051F00x and C8051F01x (‘F000, 01, 02, 03, 05, 06, 10, 11, 12, 15, and 16) family of Cygnet devices.

The data sheet section, “Global DC Electrical Characteristics” contains various supply current values for different device conditions. The current values are separated into digital (at three example frequencies) and analog components. The analog numbers presented are values with all analog peripherals active. Supply current values for each analog peripheral can be found in the data sheet section for the peripheral.

For convenience, the Global DC Electrical Characteristics for the C8051F00x and C8051F01x family of devices are presented in the table below.

Internal vs. External Oscillator

Besides using lower SYSCLK frequencies, the designer can realize power savings by making smart SYSCLK source choices. The internal oscillator will typically consume 200μA of current supplied from the digital power supply. The current used to drive an external oscillator can vary. The drive current (supplied from the analog power supply) for an external source, such as a crystal, is set in software by configuring the XFCN bits in the External Oscillator Control Register (OSCXCN). Thus, at higher drive currents the user may save power by using the internal oscillator. However, at the lowest XFCN setting the external oscillator will use less than 1μA which is less current than used by the internal oscillator. Some typical measured current values are listed below. These measurements may vary from device to device. This drive level is kept as low as possible

To minimize power consumption, but must be high enough to start the external oscillator. The following table lists the current vs. External Oscillator Frequency Control Bit settings.

Digital Peripherals

For rough calculations, a good rule of thumb is to assume a 1mA/MHz of operating current (digital) + 1mA if the analog components (ADC, comparators, DAC, VREF, etc.) are enabled. This rule of thumb assumes a 3.6 V supply voltage. A lower supply voltage will reduce power consumption. At 2.7 V, the rule of thumb is 0.5mA/MHz (in NORMAL mode). The rules of thumb for rough calculations are presented in the table below:

Analog Peripherals

The individual supply current values for each analog peripheral are posted in the data sheet section for that component (typically near the end of the section). It is recommended to disable all peripherals not in use to save power. For convenience, the C8051F00x and C8051F10x analog peripherals supply current values are listed below:

Calculating Total Current

When the required SYSCLK frequency, supply voltage, and peripherals have been determined, the total supply current can be estimated. To calculate the total supply current, the analog peripheral current use (found by adding the currents of each of the enabled analog peripherals) is added to the digital current use (calculated for a given frequency, power mode, and supply voltage). If all of the analog peripherals are enabled, analog current use is about 1mA.

Example Calculations

The following are examples of supply current calculations. Each application may use different power modes, SYSCLK frequencies, and peripherals at different times. Thus, power management specifications may require several different supply current calculations. The digital component and analog components of current use are found separately, and then added together for the total.

Example 1

The C8051F000 device is being used in a system with VDD=3.6 V. An ADC is sampling parameters and processing the sample for an output to one DAC. Because of the sampling and processing requirements of the application, SYSCLK frequency is 16 MHz using the internal oscillator.

Analog Components

Peripheral Supply Current (μ A)

ADC 450

VREF (internal) 50

Internal Oscan. 200

One DAC 110

VDD monitor 15

Total Analog 825

Digital Component

In NORMAL Mode @ 16 MHz;

1mA/M Hz * 16 MHz = 16mA

Total

825μA (analog) + 16mA (digital)= 16.8mA

Example 2

Assume we are still estimating the supply current in the same application in Example 1. If the sample processing is a burst operation (i.e., intermittent need for sampling and conversions), we may choose to place the CIP-51 in IDLE Mode to allow a Timer to wake-up the CIP-51 after a specified interval. In this case, the average supply current can be calculated in order to estimate power requirements. The device will switch between NORMAL Mode (for sampling and data conversion) and IDLE Mode (between sample processing operations). The switch between IDLE and NORMAL Modes (and supply current values) will happen in a cycle with a period equal to the sampling rate. (See Figure 3 below). This will allow us to calculate average supply current, after we calculate the supply current in IDLE Mode.

Analog Component

Analog peripherals are disabled during the IDLE Mode period between sample processing and output. Thus, analog current consumption is just:

VDD monitor = 15μA.

Digital Component

In IDLE Mode @ 16 MHz;

0.65mA/MHz * 16 MHz = 10.4mA

Total

The analog component would be considered negligible in most applications, thus, the total is just the digital component:

50μA (analog) + 10.4mA (digital) = 10.4mA

Now that we have calculated IDLE Mode supply current and NORMAL Mode supply current (in Example 1), we must calculate the time we spend in each mode to find the average current the device will use.

Assuming the ADC is in low-power tracking mode and at the maximum SAR conversion

Clock of 2 MHz (ADC set for SAR clock = SYSCLK/8), and we desire a 10 kHz sampling rate. The period of the power cycle in Figure 3 is 1/10,000 (sample rate) = 100μs.

The time in NORMAL Mode will be the ADC tracking/conversion time, and the time to store the value in memory. In low-power tracking mode, it will take 3 SAR clocks for tracking, and 16 SAR clocks for conversion. 19 SAR clocks at 2 MHz will take 9.5μs. To store the number will take to system clock cycles, or 0.125μs. To enter NORMAL Mode, a move instruction is executed, taking 3 SYSCLK cycles which takes 0.188μs. Thus, the total time in NORMAL Mode is 9.5 μs+0.125 μs+0.188μs = 9.8μs.

Because the ADC sample period is 100μs, the time we may be in IDLE Mode during the power cycle is 100μs - 9.8μs (time in NORMAL Mode) = 90.2μs. By integrating the area under the curve in Figure 3 for one period (100μs), and dividing that number by the period, the average supply current is 11mA.

 

 

 

 

 

 

 

 

Example 3

If the oscillator frequency were lowered while in IDLE Mode (in Example 2) to 32 kHz using an external crystal for additional power savings, the current use would be:

The external oscillator control bits will be set to XFCN = 000. This uses 0.6μA of analog current. (0.65mA *.032 MHz) + 0.6μA = 21μA

This is a dramatic difference from Example 2’s IDLE Mode at 16 MHz, by simply reducing oscillator frequency.

Continuing with the average supply current calculation in Example 2 (with 6 extra SYSCLK cycles in NORMAL Mode to lower the frequency), the average supply current would be 1.7mA!

Example 4

In this application, the C8051F000 is being used to sample a parameter using the ADC and store samples in memory, with high accuracy timing of samples required. For more accurate timing, the SYSCLK is derived from an external 18.432 MHz crystal oscillator. To save power, the designer has decided to use a supply voltage of 3.0 V. Timer 2 is used to time the ADC sampling intervals.

Digital Component

In NORMAL Mode @ 18.432 MHz;

0.8mA/MHz * 18.432 MHz = 14.7mA

Total Current Use

3.4mA (analog)+14.7mA (digital)= 18.1mA

Example 4 in IDLE Mode

Placing the application in IDLE Mode with the ADC disabled during intervals that sampling is not required (no CIP-51 operations are needed; digital peripherals continue to operate) will save power if the sampling operation is a burst operation. In IDLE Mode, the digital current consumption is only 0.6mA/MHz, with no ADC, thus the current consumption at 18.432 MHz =11.1 miscalculating the average supply current for one sample period (similarly to Example 2, assuming a 10 kHz sampling rate and low-power tracking mode), the average current is estimated to be 11.9mA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附錄4  英文資料翻譯

電源管理技術(shù)及計(jì)算

本設(shè)計(jì)應(yīng)用于下列器件

C8051F000、C8051F001、C8051F002、C8051F005、C8051F006、C8051F010、C8051F011、C8051F012、C8051F015、C8051F016、C8051F017

1 引言

本應(yīng)用筆記討論電源管理技術(shù)及計(jì)算C8051F00x和C8051F01x Sock中的功率消耗的方法。很多應(yīng)用系統(tǒng)對(duì)功耗有嚴(yán)格的要求,也存在幾種不以犧牲性能為代價(jià)的降低功耗的方法,計(jì)算預(yù)計(jì)功耗對(duì)于說明系統(tǒng)的供電要求是很重要的 。

2 關(guān)鍵點(diǎn)

供電電壓和系統(tǒng)時(shí)鐘頻率對(duì)功率消耗有很大影響 。

Cygnet的Sock有兩種電源管理方式等待和停止。

功率消耗可以作為系統(tǒng)時(shí)鐘電源電壓和被允許的外設(shè)的函數(shù)來計(jì)算。

3 降低功耗的方法

CMOS數(shù)字邏輯器件的功耗受供電電壓和系統(tǒng)時(shí)鐘(SYSCLK)頻率的影響。可以通過調(diào)整這些參數(shù)來降低功耗,設(shè)計(jì)者也很容易控制這些參數(shù)。本節(jié)討論這些參數(shù)及它們對(duì)功率消耗的影響 。

4 降低系統(tǒng)時(shí)鐘頻率

在CMOS數(shù)字邏輯器件中,功耗與系統(tǒng)時(shí)鐘(SYSCLK)頻率成正比:

功耗 = CV2f

其中C是CMOS的負(fù)載電容,V是電源電壓,f是SYSCLK的頻率 。

C8051Fxxx系列器件的系統(tǒng)時(shí)鐘可以來自內(nèi)部振蕩器或一個(gè)外部時(shí)鐘源。外部源可以是一個(gè)CMOS時(shí)鐘、RC電路、電容或晶體振蕩器。有關(guān)振蕩器配置方面的信息見應(yīng)用筆記–“ 配置內(nèi)部和外部振蕩器”。內(nèi)部振蕩器可提供四個(gè)時(shí)鐘頻率2、4、8 和16 MHz。很多不同的頻率可以通過使用外部振蕩器得到,為了節(jié)省功耗設(shè)計(jì)者必須知道給定應(yīng)用所需要的最高SYSCLK頻率和精度。一個(gè)設(shè)計(jì)可能需要一個(gè)在器件全部工作時(shí)間內(nèi)保持不變的SYSCLK頻率。在這種情況下,設(shè)計(jì)者將選擇滿足要求的最低頻率,采用消耗最低功率的振蕩器配置。典型的應(yīng)用包括串行通信和必須用ADC完成的周期性采樣。

某些操作可能要求高速度,但只是在很短的、斷續(xù)的時(shí)間間隔內(nèi)。這種情況在某些時(shí)候被稱為“猝發(fā)”操作。在C8051Fxxx中,SYSCLK頻率可在任何時(shí)刻改變,因此器件平時(shí)可工作在較低的頻率,直到某個(gè)需要高速操作的條件發(fā)生。

切換系統(tǒng)時(shí)鐘源的兩個(gè)例子是(1)內(nèi)部振蕩器/外部晶體配置,(2)外部晶體/RC振蕩器配置。如果器件偶爾進(jìn)行高速數(shù)據(jù)轉(zhuǎn)換,并使用一個(gè)實(shí)時(shí)時(shí)鐘為數(shù)據(jù)提供時(shí)間戳,則一個(gè)內(nèi)部振蕩器和外部晶體的組合將是最理想的。在采樣操作期間應(yīng)使用高速內(nèi)部振蕩器。采樣結(jié)束后,使用一個(gè)外部32kHz晶體以維持實(shí)時(shí)時(shí)鐘。一旦重新需要高速操作,器件將切換到內(nèi)部振蕩器(見圖1)。在應(yīng)用筆記“ 實(shí)現(xiàn)一個(gè)實(shí)時(shí)時(shí)鐘”中給出了這種操作過程的一個(gè)例子。

圖1. 內(nèi)部振蕩器和外部晶體源配置

晶體振蕩器和內(nèi)部振蕩器可以同時(shí)工作,每一個(gè)都可以根據(jù)需要被選為系統(tǒng)時(shí)鐘源。為了減小電源電流,在使用內(nèi)部振蕩器時(shí)可停止晶體振蕩器。在這種情況下,當(dāng)從內(nèi)部切換到外部振蕩器時(shí),設(shè)計(jì)者必須考慮切換系統(tǒng)時(shí)鐘源時(shí)的起動(dòng)延遲。C8051F0xx器件有一個(gè)指示外部時(shí)鐘信號(hào)有效的標(biāo)志位(OSCXCN寄存器中的XTLVLD位),該標(biāo)志在外部振蕩器穩(wěn)定運(yùn)行時(shí)置位。在切換到外部振蕩器之前應(yīng)查詢?cè)摌?biāo)志。注意:在外部晶體起動(dòng)期間,其它操作可繼續(xù)使用內(nèi)部振蕩器。

某些應(yīng)用需要間歇的高速度和高精度(例如ADC采樣和數(shù)據(jù)處理),但在其它時(shí)間可允許低速度和低精度(例如等待采樣時(shí)),這時(shí)可以用到外部振蕩器和RC電路的組合。在這種情況下,外部RC振蕩器用于產(chǎn)生低頻SYSCLK源,而晶體用于高頻率操作。RC電路需要接到VDD(電壓源)才能工作。由于在晶體處于工作狀態(tài)時(shí),這種連接可能加載晶體振蕩器電路,我們將RC電路接到一個(gè)通用端口引腳(見圖2),當(dāng)使用RC電路時(shí),與之連接的端口引腳被驅(qū)動(dòng)到高電平(到VDD),這可以通過選擇端口為“推挽”輸出方式并向端口鎖存器寫“1”來實(shí)現(xiàn)。當(dāng)使用晶體振蕩器時(shí),端口引腳被置于“高阻”狀態(tài),這是通過設(shè)置端口為“漏極開路”輸出方式,并向端口鎖存器寫“1”來實(shí)現(xiàn)的。注意:RC電路可以利用晶體振蕩器電路中已有的電容 。

RC電路振蕩器的起動(dòng)幾乎是瞬間完成的,然而晶體振蕩器的起動(dòng)時(shí)間是比較可觀的。因此從RC振蕩器切換到外部晶體振蕩器時(shí)要經(jīng)過下列過程 :

a. 切換到內(nèi)部振蕩器 。

   b. 將作為RC電路電源的端口引腳設(shè)置為漏極開路并向該端口引腳寫“1”(高阻狀態(tài))。

c. 起動(dòng)晶體(設(shè)置XFCN位)。

d. 等待1ms 。

e. 查詢外部晶體有效位(XTLVLD --> ‘1’ )。

f. 切換到外部振蕩器。

從外部晶體振蕩器切換到RC振蕩器的步驟如下

a. 切換到內(nèi)部振蕩器。

b. 關(guān)閉晶體振蕩器(清除XFCN位)。

c. 驅(qū)動(dòng)電源端口引腳到高電平(到VDD),通過選擇端口為“推挽”輸出方式并向端口鎖存器寫“1”來實(shí)現(xiàn) 。

d. 切換到外部振蕩器。

圖2. 外部RC和晶體振蕩器配置

5 電源電壓

CMOS邏輯電路中的電流與電源電壓成正比。CMOS邏輯電路的功耗與電源電壓的平方成正比(見方程1)。因此降低器件的供電電壓可以減小功耗,C8051Fxxx系列器件所要求的電源電壓為2.7-3.6V。為了減小功耗,建議使用3.0V的穩(wěn)壓器而不采用3.3V的穩(wěn)壓器 。

CIP51處理器電源管理方式

C8051處理器有兩種電源管理方式。這兩種方式為等待方式和停機(jī)方式 。

6 等待方式

在等待方式下,CPU和FLASH存儲(chǔ)器停止工作。所有外設(shè)都處于工作狀態(tài),包括內(nèi)部時(shí)鐘。在有中斷(被允許的中斷)產(chǎn)生或發(fā)生系統(tǒng)復(fù)位時(shí)CPU退出等待方式。可通過將等待方式選擇位(PCON.0)設(shè)置為‘1’使CPU進(jìn)入等待狀態(tài) 。

當(dāng)?shù)却绞竭x擇位被置‘1’時(shí),一旦設(shè)置該位的那條指令執(zhí)行完,CPU立即進(jìn)入等待狀態(tài)。有中斷發(fā)生后,等待方式選擇位將被清除,CPU將轉(zhuǎn)入中斷服務(wù)程序。從中斷返回后(RETI),CPU將進(jìn)入設(shè)置等待方式選擇位那條指令的下一條指令。如果在等待方式下有復(fù)位條件產(chǎn)生,將產(chǎn)生正常的復(fù)位過程,CPU將從存儲(chǔ)器地址0x0000開始執(zhí)行程序 。

例如,CPU被置于等待方式,等待定時(shí)器2溢出后啟動(dòng)一次A/D轉(zhuǎn)換。一旦轉(zhuǎn)換過程結(jié)束,ADC轉(zhuǎn)換結(jié)束中斷將CPU從等待狀態(tài)喚醒,開始處理采樣值。在樣本處理過程結(jié)束后,CPU又重新被置于等待方式以節(jié)省功耗,同時(shí)等待下一次中斷 。

另一個(gè)例子,CPU平時(shí)處于等待方式以節(jié)省功耗,在需要時(shí)用一個(gè)外部中斷信號(hào)將其“喚醒”。在收到外部中斷時(shí),CPU將退出等待方式并轉(zhuǎn)到相應(yīng)的中斷服務(wù)向量(例如/INT0或/INT1)。

7 停機(jī)方式

C8051的停機(jī)方式用于停止CPU和振蕩器。這將使所有數(shù)字外設(shè)都停止工作。在進(jìn)入停機(jī)方式前必須用軟件將所有的模擬外設(shè)關(guān)閉,只有內(nèi)部或外部復(fù)位可以使處理器退出停機(jī)方式。實(shí)際上停機(jī)方式節(jié)省功耗是靠將SYSCLK頻率降低到0 。

注意:時(shí)鐘丟失檢測(cè)器會(huì)產(chǎn)生一個(gè)內(nèi)部復(fù)位(如果被允許),這個(gè)內(nèi)部復(fù)位將結(jié)束停機(jī)方式。因此如果要使CPU處于停機(jī)狀態(tài)的時(shí)間大于時(shí)鐘丟失檢測(cè)器的超時(shí)時(shí)間(100 μs),則在進(jìn)入停機(jī)方式之前應(yīng)禁止時(shí)鐘丟失檢測(cè)器。

通過將停機(jī)方式選擇位置‘1’使C8051處理器處于停機(jī)方式。在復(fù)位時(shí),CPU完成正常的復(fù)位過程并從0x0000地址開始執(zhí)行程序,任何有效的復(fù)位源都可以使CPU退出停機(jī)方式。能使CPU退出停機(jī)方式的復(fù)位源是:外部復(fù)位(/RST)、時(shí)鐘丟失檢測(cè)器、比較器0、外部ADC轉(zhuǎn)換啟動(dòng)信號(hào)(/CNVSTR)。

例如,CPU在不需要工作的一段時(shí)間內(nèi)可以被置于停機(jī)方式以節(jié)省功耗,在需要工作時(shí)用用比較器0復(fù)位信號(hào)將其“喚醒”。

一般來說,一個(gè)低功耗的設(shè)計(jì)應(yīng)采用最低的電源電壓、最低的SYSCLK頻率,并盡可能地使用電源管理方式,以最大限度地節(jié)省功耗。這些條件中的大多數(shù)都可以用軟件實(shí)現(xiàn)或控制 。

8 功耗計(jì)算

在Cygnet 的C8051F00x和C8051F01x系列器件中消耗功率的兩大部件是:模擬部件和數(shù)字部件。模擬部件的功耗對(duì)于所有的SYSCLK頻率來說幾乎是不變的;數(shù)字部件的功耗隨著SYSCLK頻率的不同而有較大的變化。模擬部件和數(shù)字部件的功耗加在一起構(gòu)成器件的總功耗 。

本應(yīng)用筆記中所介紹的器件消耗電流的計(jì)算方法適用于C8051F00x和C8051F01x(F000、01、02、05、06、10、11、12、15和16系列器件 )。

數(shù)據(jù)手冊(cè)中“總體直流電氣特性”一節(jié)中給出了不同條件下器件的供電電流值。電流值被分為數(shù)字部件(在三種示例頻率下)和模擬部件兩部分。所給出的模擬電流值是所有模擬外設(shè)都工作時(shí)的數(shù)值。每個(gè)模擬外設(shè)的供電電流可以在數(shù)據(jù)手冊(cè)中與外設(shè)相關(guān)的章節(jié)中查到 。

9 內(nèi)部和外部振蕩器比較

除了使用較低的SYSCLK頻率之外,設(shè)計(jì)者還可以通過合理地選擇時(shí)鐘源達(dá)到減小功耗的目的。內(nèi)部振蕩器消耗數(shù)字電源電流的典型值為200 μA,用于驅(qū)動(dòng)外部振蕩器的電流是變化的。對(duì)于一個(gè)外部振蕩源(例如一個(gè)晶體),驅(qū)動(dòng)電流(由模擬電源提供)用軟件通過配置外部振蕩器控制寄存器(OSCXCN)的XFCN位來設(shè)置。在驅(qū)動(dòng)電流較大時(shí),用戶可以使用內(nèi)部振蕩器以節(jié)省功耗,但是在最低的XFCN設(shè)置下,外部振蕩器使用不到1μA的電流,小于內(nèi)部振蕩器所使用的電流。下面列出了幾個(gè)典型測(cè)量電流值。這些測(cè)量值對(duì)于不同的器件可能不一樣。驅(qū)動(dòng)電平應(yīng)保持最低以節(jié)省功耗,但又應(yīng)足夠高以使外部振蕩器能夠起振。下表列出了電流與外部振蕩器頻率控制位設(shè)置的關(guān)系。

10 數(shù)字外設(shè)

對(duì)于粗略的計(jì)算,一個(gè)經(jīng)驗(yàn)公式是假設(shè)1mA/MHz的工作電流+1mA,如果模擬部件(ADC、比較器、DAC、VREF等被允許)。這個(gè)經(jīng)驗(yàn)公式假定使用3.6V的電源電壓。較低的電源電壓將使功耗降低。在2.7V經(jīng)驗(yàn)公式為 0.5mA/MHz(在正常方式)。下表列出了用于估算電源電流的經(jīng)驗(yàn)數(shù)據(jù) 。

數(shù)字電流消耗典型值

電源方式

VDD=2.7V

VDD=3.6V

正常

0.5mA/MHz

1.0mA/MHz

等待

0.33mA/MHz

0.65mA/MHz

 

注意:數(shù)字電源電流與使用多少個(gè)數(shù)字外設(shè)無關(guān) ,電源電流與SYSCLK的頻率及電源  電壓成正比。

11 模擬外設(shè)

每個(gè)模擬外設(shè)的供電電流值都在數(shù)據(jù)表中關(guān)于這個(gè)外設(shè)的部分給出(通常在該部分的最后)。建議禁止所有不用的外設(shè)部件以降低功耗。為方便起見,將C8051F00x和C8051F01x模擬外設(shè)的供電電流值列于下表:

C8051F0xx模擬外設(shè)供電電流

 

模擬外設(shè)

典型電流值μA

VDD監(jiān)視器

總處于允許狀態(tài)

8VDD=2.7V

15VDD=3.6V

ADC

450

VREF內(nèi)部

50帶隙基準(zhǔn)和驅(qū)動(dòng)器

溫度傳感器

10

比較器

1.5每個(gè)

DAC

110每個(gè)

內(nèi)部振蕩器

使用數(shù)字電源

200

 

注意:模擬功耗與SYSCLK頻率相對(duì)無關(guān)。

12 總電流計(jì)算

當(dāng)所需要的SYSCLK頻率、電源電壓及外設(shè)部件都已經(jīng)確定后,可以估算總的電源電流。所使用的模擬外設(shè)電流(將每個(gè)被允許的模擬外設(shè)的電流加在一起)加上所使用的數(shù)字電流(在給定頻率、電源方式和電源電壓下計(jì)算)就得到總的電源電流。如果所有的模擬外設(shè)都被允許,則所用模擬電流大約為1mA 。

13 計(jì)算舉例

下面是電源電流計(jì)算的幾個(gè)例子。每個(gè)應(yīng)用在不同的時(shí)間,可以使用不同的電源方式、SYSCLK頻率和外設(shè)部件。因此,功率管理指標(biāo)需要幾種不同的電源電流計(jì)算。數(shù)字部件和模擬部件所使用的電流分別計(jì)算然后加到一起得到總電流 。

例1

在一個(gè)VDD=3.6V的系統(tǒng)中使用C8051F000器件。ADC對(duì)一個(gè)參數(shù)采樣,將樣本處理后經(jīng)DAC輸出。由于在該應(yīng)用中需要進(jìn)行采樣和處理,選擇內(nèi)部振蕩器提供16MHz的SYSCLK頻率 。

模擬部件:

外設(shè)

供電電流μA

ADC

450

VREF內(nèi)部

50

內(nèi)部振蕩器

200

一個(gè)DAC

110

VDD監(jiān)視器

15

總模擬電流

825

 

 

 

數(shù)字部件:在正常方式工作頻率為16 MHz;1mA/MHz * 16 MHz = 16mA

總電流:825μA(模擬)+ 16mA(數(shù)字)= 16.8mA

例2

假設(shè)我們?nèi)匀还浪憷?中同一個(gè)應(yīng)用的電源電流。如果采樣處理是一個(gè)猝發(fā)操作(即間歇性地需要采樣和轉(zhuǎn)換),我們可以選擇平時(shí)將CIP-51置于等待方式,經(jīng)過一個(gè)規(guī)定的時(shí)間間隔后,再用一個(gè)定時(shí)器將其“喚醒”。在這種情況下,可以通過計(jì)算平均電流來估算功率需求。器件將在正常方式(用于采樣和數(shù)據(jù)轉(zhuǎn)換)和等待方式(在兩個(gè)采樣處理操作之間)之間切換。在正常方式和等待方式之間切換的周期等于采樣速率。這就允許我們?cè)谟?jì)算了等待方式的電源電流之后計(jì)算平均電源電流。

模擬部件:

在兩次采樣處理和輸出之間,器件處于等待方式,模擬外設(shè)被禁止。這種情況下模擬電流消耗為 :

VDD監(jiān)視器 = 15μA

數(shù)字部件:

在等待方式,工作頻率為16 MHz

0.65mA/MHz * 16 MHz = 10.4mA

總電流

在大多數(shù)應(yīng)用中,模擬部件的功耗可以被忽略,這樣一來總電流就是數(shù)字部件的電流 :

50 μA(模擬)+ 10.4mA(數(shù)字)= 10.4mA

注意,我們已經(jīng)計(jì)算了等待方式下的電源電流和正常方式下的電源電流(在例1中)。我們還必須計(jì)算在每種方式下所消耗的時(shí)間,以計(jì)算所用器件的平均電流 。

假設(shè)ADC工作在低功耗跟蹤方式,使用最大的2MHz SAR轉(zhuǎn)換時(shí)鐘(ADC設(shè)置為:SAR時(shí)鐘 = SYSCLK/8),我們需要10kHz的采樣速率。圖3中的電源周期為 1/10,000(采樣速率)= 100 μs 。

處在正常方式下的時(shí)間是ADC跟蹤/轉(zhuǎn)換時(shí)間和將樣本保存到存儲(chǔ)器的時(shí)間。在低功耗跟蹤方式,需要3個(gè)SAR時(shí)鐘用于跟蹤和16個(gè)SAR時(shí)鐘用于轉(zhuǎn)換。這19個(gè)SAR時(shí)鐘在頻率為2MHz時(shí)需要9.5 μs。存儲(chǔ)采樣值需要兩個(gè)系統(tǒng)時(shí)鐘周期即0.125 μs。為了進(jìn)入正常方式,要執(zhí)行一條mov指令,需三個(gè)SYSCLK周期,即0.188μs。這樣在正常方式下的總時(shí)間為 9.5 μs + 0.125 μs+ 0.188 μs = 9.8 μs 。

因?yàn)锳DC的采樣周期是100 μs,所以在電源周期中等待方式所占的時(shí)間為 100 μs – 9.8 μs(正常方式下的時(shí)間)= 90.2 μs。對(duì)圖3曲線下方的區(qū)域在一個(gè)周期(100 μs)內(nèi)積分,然后除以周期值,得到平均電源電流為 11 mA 。16.8mA\10.4mA等待方式采樣周期時(shí)間數(shù)據(jù)采樣和轉(zhuǎn)換正常方式電流。

例3

如果在器件處于等待方式(在例2中)時(shí)使用一個(gè)外部振蕩器,使振蕩器的頻率降低到32kHz,可以進(jìn)一步降低功耗。這時(shí)所用的電流是:

將外部振蕩器控制位設(shè)置為XFCN = 000。這樣將使用0.6 μA的模擬電流 。

(0.65mA * 0.032MHz) + 0.6 μA = 21 μA

這與例2中16MHz下的等待方式有驚人的差別,只是通過簡(jiǎn)單地降低振蕩器頻率。

繼續(xù)進(jìn)行列2中(在正常方式有6個(gè)附加的SYSCLK周期用于降低振蕩器頻率)的平均電流計(jì)算得到的平均電流為1.7mA 。

例4

在這個(gè)應(yīng)用中,用C8051F000的ADC對(duì)一個(gè)參數(shù)采樣并將采樣值保存到存儲(chǔ)器中,需要對(duì)采樣精確定時(shí)。為了滿足更精確的定時(shí)要求,SYSCLK由一個(gè)外部18.432 MHz晶體振蕩器提供。為了節(jié)省功耗,設(shè)計(jì)者決定使用3.0V的電源電壓。定時(shí)器2用于對(duì)ADC采樣間隔定時(shí) 。

模擬部件:

外設(shè)

供電電流μA

ADC

450

外部振蕩器驅(qū)動(dòng)器 XFCN=111

2900

VDD監(jiān)視器

15

總模擬電流

3361

數(shù)字部件:

在正常方式,工作頻率為18.432MHz;0.8mA/MHz * 18.432 MHz = 14.7mA

總電流:3.4mA模擬+ 14.7mA數(shù)字= 18.1mA

例4 在等待方式時(shí)的電流

如果采樣操作是猝發(fā)式的在不需要采樣的時(shí)間段內(nèi)將器件置于等待方式并禁止ADC不需CIP-51操作數(shù)字外設(shè)繼續(xù)工作將節(jié)省功耗在等待方式所消耗的數(shù)字電流僅為0.6mA/MHz如果沒有ADC轉(zhuǎn)換在18.432 MHz下電流消耗= 11.1mA

計(jì)算一個(gè)采樣周期內(nèi)的平均電源電流與例2類似假設(shè)10 kHz的采樣頻率和低功耗跟蹤方式平均電流的估算值為 11.9mA.

 

致   謝

設(shè)計(jì)是我們的大學(xué)學(xué)習(xí)生活的最后一項(xiàng)學(xué)習(xí)任務(wù),是對(duì)我們大學(xué)四年學(xué)習(xí)的綜合考核。為期兩個(gè)多月的設(shè)計(jì)過程中,我不僅較為系統(tǒng)的復(fù)習(xí)了以前學(xué)的知識(shí),而且又學(xué)習(xí)了許多新知識(shí),使我的知識(shí)更加系統(tǒng)化,更加完善。同時(shí),也提高了獨(dú)立分析問題、解決問題的能力。相信設(shè)計(jì)一定會(huì)為我們?cè)诓痪玫膶硖ど瞎ぷ鲘徫淮蛳铝肆己玫膶?shí)踐基礎(chǔ)。

本次設(shè)計(jì)能夠順利地完成,首先要感謝我的指導(dǎo)老師王錦教授。王教授嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,深厚的學(xué)術(shù)造詣以及忘我的工作精神給我留下了深刻的印象。王教授的嚴(yán)格要求和孜孜不倦的教導(dǎo)是我完成這次設(shè)計(jì)的重要保證,她給予了我很大的幫助和支持,在課題研究期間,王教授提供了很多指導(dǎo)性的意見,對(duì)存在的問題給予細(xì)心的分析并提出許多寶貴的意見,使我受益匪淺;同時(shí)為我們提供了良好的設(shè)計(jì)場(chǎng)所和試驗(yàn)條件。在此謹(jǐn)向?qū)煴硎局孕牡母兄x!當(dāng)然,我也要感謝給予我?guī)椭椭С值呐笥褌,感謝在編程和電路調(diào)試過程中給我提供幫助的王博同學(xué),感謝電子工程系的老師為我們做設(shè)計(jì)提供的各方面的幫助!

同時(shí),我要感謝我的母!旖蚬こ處煼秾W(xué)院。大學(xué)四年,這里留下了我們?cè)S多美好的回憶。特別是在我即將踏上工作崗位的同時(shí),給了我這樣一個(gè)鍛煉、學(xué)習(xí)的機(jī)會(huì),使我加深了對(duì)以前知識(shí)的理解,拓寬了知識(shí)面,也提高了我對(duì)所學(xué)知識(shí)的綜合的應(yīng)用能力。我忠心地祝愿母校的未來更美好!

 

 

 

 
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表