課程設(shè)計--基于單片機(jī)的電子鐘的設(shè)計_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  基于單片機(jī)的電子鐘的設(shè)計</p><p><b>  學(xué) 院: </b></p><p><b>  班 級: </b></p><p>  姓 名: 學(xué) 號: </p><p><b>  小組成員:</b></p>

2、;<p>  姓 名: 學(xué) 號: </p><p><b>  指導(dǎo)老師: </b></p><p><b>  目 錄</b></p><p>  一、設(shè)計要求 …………………………………………2</p><p>  二、設(shè)計方案和論證 …………………………

3、………2</p><p> ?。ㄒ唬┛傇O(shè)計原理圖 ………………………………… 2</p><p> ?。ǘ┰O(shè)計方案的選擇 ………………………………2</p><p>  硬件部分 ………………………………………4</p><p>  軟件部分 ………………………………………8</p><p>  三、設(shè)計總結(jié)…

4、………………………………………26</p><p>  四、參考文獻(xiàn)…………………………………………26</p><p><b>  一、設(shè)計要求</b></p><p>  1、準(zhǔn)確計時,以數(shù)字形式顯示時、分、秒的時間。</p><p>  2、小時以24小時計時形式,分秒計時為60進(jìn)位。 </p>&l

5、t;p>  3、校正時間功能,即能隨意設(shè)定走時時間。</p><p>  4、設(shè)計5V直流電源,系統(tǒng)時鐘電路、復(fù)位電路。 </p><p><b>  二、設(shè)計方案和論證</b></p><p>  本次設(shè)計時鐘電路,使用了ATC89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡單且省去了很多復(fù)雜的線路,使得電路簡明易懂,使用鍵盤鍵上的按鍵來

6、調(diào)整時鐘的時、分、秒,用一揚(yáng)聲器來進(jìn)行定時提醒,同時使用匯編語言程序來控制整個時鐘顯示,使得編程變得更容易,這樣通過四個模塊:鍵盤、芯片、揚(yáng)聲器、LED顯示即可滿足設(shè)計要求。</p><p> ?。ㄒ唬?總設(shè)計原理框圖如下圖所示:</p><p> ?。ǘ┰O(shè)計方案的選擇</p><p><b>  1.計時方案</b></p>

7、<p>  方案1:采用實(shí)時時鐘芯片</p><p>  現(xiàn)在市場上有很多實(shí)時時鐘集成電路,如DS1287、DS12887、DS1302等。這些實(shí)時時鐘芯片具備年、月、日、時、分、秒計時功能和多點(diǎn)定時功能,計時數(shù)據(jù)的更新每秒自動進(jìn)行一次,不需要程序干預(yù)。因此,在工業(yè)實(shí)時測控系統(tǒng)中多采用這一類專用芯片來實(shí)現(xiàn)實(shí)時時鐘功能。</p><p>  方案2:使用單片機(jī)內(nèi)部的可編程定時器。&

8、lt;/p><p>  利用單片機(jī)內(nèi)部的定時計數(shù)器進(jìn)行中端定時,配合軟件延時實(shí)現(xiàn)時、分、秒的計時。該方案節(jié)省硬件成本,但程序設(shè)計較為復(fù)雜。</p><p><b>  2.顯示方案</b></p><p>  對于實(shí)時時鐘而言,顯示顯然是另一個重要的環(huán)節(jié)。通常LED顯示有兩種方式:動態(tài)顯示和靜態(tài)顯示。</p><p>  靜

9、態(tài)顯示的優(yōu)點(diǎn)是程序簡單、顯示亮度有保證、單片機(jī)CPU的開銷小,節(jié)約CPU的工作時間。但占有I/O口線多,每一個LED都要占有一個I/O口,硬件開銷大,電路復(fù)雜。需要幾個LED就必須占有幾個并行口,比較適用于LED數(shù)量較少的場合。當(dāng)然當(dāng)LED數(shù)量較多的時候,可以使用單片機(jī)的串行口通過移位寄存器的方式加以解決,但程序編寫比較麻煩。</p><p>  LED動態(tài)顯示硬件連接簡單,但動態(tài)掃描的顯示方式需要占有CPU較多

10、的時間,在單片機(jī)沒有太多實(shí)時測控任務(wù)的情況下可以采用。</p><p>  本系統(tǒng)需要采用6位LED數(shù)碼管來分別顯示時、分、秒,因數(shù)碼管個數(shù)較多,故本系統(tǒng)選擇動態(tài)顯示方式。</p><p><b> ?。ㄈ┯布糠?lt;/b></p><p>  1、STC89C51單片機(jī)介紹</p><p>  STC89C51單片機(jī)是

11、由深圳宏晶公司代理銷售的一款MCU,是由美國設(shè)計生產(chǎn)的一種低電壓、高性能CMOS 8位單片機(jī),片內(nèi)含8kbytes的可反復(fù)寫的FlashROM和128bytes的RAM,2個16位定時計數(shù)器[5]。 </p><p>  STC89C51單片機(jī)內(nèi)部主要包括累加器ACC(有時也簡稱為A)、程序狀態(tài)字PSW、地址指示器DPTR、只讀存儲器ROM、隨機(jī)存取存儲器RAM、寄存器、并行I/O接口P0~P3、定時器/計數(shù)器、

12、串行I/O接口以及定時控制邏輯電路等。這些部件通過內(nèi)部總線聯(lián)接起來,構(gòu)成一個完整的微型計算機(jī)。其管腳圖如圖所示。</p><p>  STC89C51單片機(jī)管腳結(jié)構(gòu)圖</p><p><b>  VCC:電源。</b></p><p><b>  GND:接地。</b></p><p>  P0口:

13、P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程 序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p>  P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1

14、后,被內(nèi)部上拉為高,可用作 輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p>  P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻 拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)

15、用于外部程序存儲器或16位地址外部數(shù)據(jù)存 儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器 的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p>  P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入

16、。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p>  P3口也可作為AT89C51的一些特殊功能口,如下表所示:</p><p><b>  口管腳 備選功能</b></p><p>  P3.0 RXD(串行輸入口)</p><p>  P3.1 TXD(串行輸出口)&l

17、t;/p><p>  P3.2 /INT0(外部中斷0)</p><p>  P3.3 /INT1(外部中斷1)</p><p>  P3.4 T0(記時器0外部輸入)</p><p>  P3.5 T1(記時器1外部輸入)</p><p>  P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)</p><p&g

18、t;  P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)</p><p>  P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。</p><p>  ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖

19、。在平時,ALE 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器 時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  PSEN:外部程序存

20、儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p>  EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時, /EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電

21、源(VPP)。</p><p>  2、上電按鈕復(fù)位電路</p><p>  本設(shè)計采用上電按鈕復(fù)位電路:首先經(jīng)過上電復(fù)位,當(dāng)按下按鍵時,RST直接與VCC相連,為高電平形成復(fù)位,同時電解電容被電路放電;按鍵松開時,VCC對電容充電,充電電流在電阻上,RST依然為高電平,仍然是復(fù)位,充電完成后,電容相當(dāng)于開路,RST為低電平,單片機(jī)芯片正常工作。其中電阻R2決定了電容充電的時間,R2越大則

22、充電時間長,復(fù)位信號從VCC回落到0V的時間也長。</p><p><b>  3、晶振電路</b></p><p>  本設(shè)計晶振電路采用12M的晶振。晶振的作用是給單片機(jī)正常工作提供穩(wěn)定的時鐘信號。單片機(jī)的晶振并不是只能用12M,只要不超過20M就行,在準(zhǔn)許的范圍內(nèi),晶振越大,單片機(jī)運(yùn)行越快,還有用12M的就是好算時間,因為一個機(jī)器周期為1/12時鐘周期,所以這樣

23、用12M的話,一個時鐘周期為12us,那么定時器計一次數(shù)就是1us了,電容范圍在20-40pF之間,這里連接的是30pF的電容。</p><p>  機(jī)器周期=10*晶振周期=12*系統(tǒng)時鐘周期</p><p><b>  4.下載端口</b></p><p>  設(shè)計用到的STC89C52單片機(jī)芯片的ISP下載線是通過單片機(jī)的TXD,RXD引

24、腳把程序燒進(jìn)去的。管腳TXD和RXD用于異步串行通信。其實(shí)STC89C52單片機(jī)的ISP下載線就是一個max232芯片連接STC和計算機(jī)的串行通信口。計算機(jī)把程序從九針串口送到max232芯片,電平轉(zhuǎn)換后送進(jìn)單片機(jī)的串行口,也就是TXD和RXD。然后單片機(jī)的串行模塊把數(shù)據(jù)送到程序區(qū)。</p><p><b>  5、顯示電路 </b></p><p>  就時鐘而言,

25、通??刹捎靡壕э@示或數(shù)碼管顯示。由于一般的段式液晶屏,需要專門的驅(qū)動電路,而且液晶顯示作為一種被動顯示,可視性相對較差;對于具有驅(qū)動電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般多采用并行接口,對微處理器的接口要求較高,占用資源多。另外,89C2051本身無專門的液晶驅(qū)動接口,因此,本時鐘采用數(shù)碼管顯示方式。數(shù)碼管作為一種主動顯示器件,具有亮度高、價格便宜等優(yōu)點(diǎn),而且市場上也有專門的時鐘顯示組合數(shù)碼管。</p>&l

26、t;p>  對于實(shí)時時鐘而言,顯示顯然是另一個重要的環(huán)節(jié)。通常LED顯示有兩種方式:動態(tài)顯示和靜態(tài)顯示。</p><p>  靜態(tài)顯示的優(yōu)點(diǎn)是程序簡單、顯示亮度有保證、單片機(jī)CPU的開銷小,節(jié)約CPU的工作時間。但占有I/O口線多,每一個LED都要占有一個I/O口,硬件開銷大,電路復(fù)雜。需要幾個LED就必須占有幾個并行口,比較適用于LED數(shù)量較少的場合。當(dāng)然當(dāng)LED數(shù)量較多的時候,可以使用單片機(jī)的串行口通過

27、移位寄存器的方式加以解決,但程序編寫比較麻煩。</p><p>  LED動態(tài)顯示硬件連接簡單,但動態(tài)掃描的顯示方式需要占有CPU較多的時間,在單片機(jī)沒有太多實(shí)時測控任務(wù)的情況下可以采用。</p><p>  本系統(tǒng)需要采用6位LED數(shù)碼管來分別顯示時、分、秒,因數(shù)碼管個數(shù)較多,故本系統(tǒng)選擇動態(tài)顯示方式。</p><p><b>  時鐘顯示校正電路<

28、;/b></p><p>  本設(shè)計利用按鍵開關(guān)來校正時鐘顯示的數(shù)字。當(dāng)按鈕按下時,將在相應(yīng)的端口輸入一個低電平,通過相應(yīng)的程序來改變時鐘顯示。其中S1按鍵開關(guān)用來選擇要修改的數(shù)字;S2按鍵用來增加所選數(shù)字的數(shù)值;S3按鍵用來減少所選數(shù)字的數(shù)值。</p><p><b>  7、蜂鳴器電路</b></p><p>  電路接法:三極管選定

29、PNP型,基極B連接5V電壓,發(fā)射極E連接一個1K左右的電阻后接I/O口,集電極C連接蜂鳴器后接地。單片機(jī)在復(fù)位后的個I/O口是高電平,此時三極管是截止的,編寫程序使選定的I/O為低電平,此時三極管導(dǎo)通,導(dǎo)通后蜂鳴器與電源正極連通,構(gòu)成一個工作回路,從而發(fā)出滴滴的響聲。其中電阻R1在電路里起分壓限流的作用,PNP三極管起到模擬開關(guān)的作用。</p><p><b>  8、外接電源電路</b>

30、</p><p>  外接電源電路用于連接外部5V電源與電子時鐘電路,通過自鎖開關(guān)控制電路的導(dǎo)通與斷開,當(dāng)開關(guān)閉合時,電路導(dǎo)通,外部電源給電路正常供電,電子時鐘正常工作。當(dāng)開關(guān)斷開時,電路停止工作。</p><p><b>  9、總電路原理圖</b></p><p><b> ?。ㄎ澹?軟件部分</b></p>

31、;<p>  根據(jù)上述電子時鐘的工作流程,軟件設(shè)計可分為以下幾個功能模塊:</p><p>  (1)主程序模塊。主程序主要用于系統(tǒng)初始化:設(shè)置計時緩沖區(qū)的位置及初值,設(shè)置8155的工作方式、定時器的工作方式和計數(shù)初值等參數(shù)。主程序流程如下圖所示。</p><p><b>  開始</b></p><p><b>  定

32、義堆棧區(qū)</b></p><p>  T0、數(shù)據(jù)緩沖區(qū)、標(biāo)志位初始化</p><p><b>  調(diào)用鍵盤掃描程序</b></p><p><b>  否</b></p><p>  是C/R鍵? </p><p><b>  是</b

33、></p><p>  地址指針指向計時緩沖區(qū)</p><p><b>  調(diào)用時間設(shè)置程序</b></p><p><b>  主程序流程圖</b></p><p>  (2)計時模塊。即定時器0中斷子程序,完成刷新計時緩沖區(qū)的功能。</p><p>  系統(tǒng)使用6M

34、Hz的晶振,假設(shè)定時器0工作在方式1,則定時器的最大定時時間為65.536ms,這個值遠(yuǎn)遠(yuǎn)小于1s。因此本系統(tǒng)采用定時器與軟件循環(huán)相結(jié)合的定時方法。設(shè)定時器0工作在方式1,每隔50ms溢出中斷一次,則循環(huán)中斷20次延時時間是1s,上述過程重復(fù)60次為1分,分計時60次為1小時,小時計時24次則時間重新回到00:00:00。</p><p>  因定時器0工作在方式1,則50ms定時對應(yīng)的定時器初值為:65536-

35、50ms/2us=40536=9E58H,即TH0=9EH,TH0=58H。</p><p>  但應(yīng)當(dāng)指出:CPU從響應(yīng)T0中斷到完成定時器初值重裝這段時間,定時器T0并不停止工作,而是繼續(xù)計數(shù)。因此,為了確保T0能準(zhǔn)確定時50ms,重裝的定時器初值必須加以修正,修正的定時器初值必須考慮到從原定時器初值中扣除計數(shù)器多計的脈沖個數(shù)。由于定時器計數(shù)脈沖的周期恰好和機(jī)器周期吻合,因此修正量等于CPU從響應(yīng)中斷到重裝完

36、TL0為止所用的機(jī)器周期數(shù)。CPU響應(yīng)中斷通常要3~8個機(jī)器周期。經(jīng)過測試,定時器0重裝的計數(shù)初值設(shè)為9E5FH~9E67H,可以滿足精度要求。另外,MCS-51單片機(jī)只有二進(jìn)制加法指令,而時間是按十進(jìn)制遞增,因此用加法指令后必須進(jìn)行二-十進(jìn)制轉(zhuǎn)換。</p><p>  計時模塊流程圖如下圖所示。</p><p><b>  保護(hù)現(xiàn)場</b></p>&

37、lt;p><b>  重裝定時器初值</b></p><p><b>  循環(huán)次數(shù)減1</b></p><p><b>  否</b></p><p><b>  滿20次?</b></p><p><b>  是</b><

38、;/p><p><b>  秒單元加1</b></p><p><b>  否</b></p><p><b>  60s到?</b></p><p><b>  是</b></p><p>  秒單元清0,分單元加1</p>

39、;<p><b>  否</b></p><p><b>  60分到?</b></p><p><b>  是</b></p><p>  分單元清0,時單元加1</p><p><b>  否</b></p><p&g

40、t;<b>  24小時到?</b></p><p><b>  是</b></p><p><b>  時單元清0</b></p><p><b>  恢復(fù)現(xiàn)場</b></p><p><b>  返回</b></p>

41、<p><b>  計時模塊流程圖</b></p><p> ?。?)時間設(shè)置模塊。該模塊由鍵盤輸入相應(yīng)的數(shù)據(jù)來設(shè)置當(dāng)前時間。程序通過調(diào)用一個鍵盤設(shè)置子程序通過鍵盤掃描將鍵入的6位時間值送入顯示緩沖區(qū)。</p><p>  設(shè)置時間后,時鐘要從這個時間開始計時,而時分秒單元各占一個字節(jié),鍵盤占6個字節(jié)。因此程序中要調(diào)用一個合字子程序?qū)@示緩沖區(qū)中的6位BC

42、D碼合并為3位壓縮BCD碼,并送入計時緩沖區(qū),作為當(dāng)前計時起始時間。</p><p>  該程序同時要檢測輸入時間值的合法性,若鍵盤輸入的小時值大于23,分、秒值大于59,則不合法,將取消本次設(shè)置,清零重新開始計時。</p><p>  時間設(shè)置和鍵盤設(shè)置子程序的流程圖如下圖所示。</p><p><b>  保護(hù)現(xiàn)場</b></p>

43、;<p>  調(diào)用鍵盤設(shè)置子程序KETIN</p><p>  調(diào)用合字子程序COMB</p><p><b>  恢復(fù)現(xiàn)場</b></p><p><b>  返回</b></p><p><b>  時間設(shè)置流程圖</b></p><p&g

44、t;<b>  保護(hù)現(xiàn)場</b></p><p>  顯示緩沖區(qū)首地址送R0鍵盤輸入次數(shù)送R7</p><p>  調(diào)用鍵盤掃描程序KEYSCAN</p><p><b>  鍵號送@R0</b></p><p><b>  顯示緩沖區(qū)地址加1</b></p>&

45、lt;p><b>  循環(huán)次數(shù)減1</b></p><p><b>  否</b></p><p><b>  循環(huán)結(jié)束?</b></p><p><b>  是</b></p><p><b>  恢復(fù)現(xiàn)場</b></p

46、><p><b>  返回</b></p><p>  鍵盤設(shè)置子程序流程圖</p><p>  (4)顯示模塊。該模塊完成時分秒6位LED的動態(tài)顯示。因為顯示為6位,二計時是3個字節(jié)單元,為此,必須將3字節(jié)計時緩沖區(qū)中的時分秒壓縮BCD碼拆分為6字節(jié)BCD碼,并送入顯示緩沖區(qū)中。</p><p>  當(dāng)按下調(diào)整時間鍵后,在

47、6位設(shè)置完成之前,這6個LED應(yīng)該顯示鍵人的數(shù)據(jù),不顯示當(dāng)前的時間。為此,我們設(shè)置了一個計時顯示允許標(biāo)志位F0,在時間設(shè)置期間F0=1,不調(diào)用刷新顯示緩沖區(qū)的子程序。</p><p>  顯示程序流程圖如下圖所示。</p><p><b>  保護(hù)現(xiàn)場</b></p><p><b>  否</b></p>

48、<p><b>  允許顯示?</b></p><p><b>  調(diào)用拆字程序</b></p><p><b>  是</b></p><p><b>  動態(tài)掃描顯示</b></p><p><b>  返回</b>&l

49、t;/p><p><b>  顯示程序流程圖</b></p><p><b>  掃描鍵盤</b></p><p><b>  否</b></p><p>  調(diào)用顯示程序 有鍵按下?</p><p><b>  是<

50、;/b></p><p><b>  調(diào)用顯示程序</b></p><p><b>  否</b></p><p><b>  有鍵按下?</b></p><p><b>  是</b></p><p><b>  

51、求取鍵號</b></p><p><b>  返回</b></p><p><b>  鍵盤掃描程序流程圖</b></p><p><b>  程序:</b></p><p>  #include <reg52.h></p><p&g

52、t;  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, </p><p>  0x66,0x6d,0x7d,0x07, </p><p>  0x7f,0x6f,0x77,0x7c, </p><p>  0x39,0x5e,0x79,0x71,0x00}; </p><p>  uns

53、igned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7, </p><p>  0xef,0xdf,0xbf,0x7f}; </p><p>  unsigned char dispbuf[8]={0,0,16,0,0,16,0,0}; </p><p>  unsigned char dispbitcnt; </p>

54、<p>  unsigned char second; </p><p>  unsigned char minite; </p><p>  unsigned char hour; </p><p>  unsigned int tcnt; </p><p>  unsigned char mstcnt; </p>

55、<p>  unsigned char i,j; </p><p>  sbit P3_0=P3^0;</p><p>  sbit P3_1=P3^1;</p><p>  sbit P3_2=P3^2;</p><p>  void main(void) </p><p><b>  { &

56、lt;/b></p><p><b>  P2=0X00;</b></p><p>  TMOD=0x02; </p><p>  TH0=0x06; </p><p>  TL0=0x06; </p><p><b>  TR0=1; </b></p>

57、<p><b>  ET0=1; </b></p><p><b>  EA=1; </b></p><p><b>  while(1) </b></p><p><b>  { </b></p><p>  if(P3_0==0) </

58、p><p><b>  { </b></p><p>  for(i=5;i!=0;i--) </p><p>  for(j=248;j!=0;j--); </p><p>  if(P3_0==0) </p><p><b>  { </b></p><p

59、>  second++; </p><p>  if(second==60) </p><p><b>  { </b></p><p><b>  econd=0; </b></p><p><b>  } </b></p><p>  disp

60、buf[0]=second%10 ; </p><p>  dispbuf[1]=second/10; </p><p>  while(P3_0==0); </p><p><b>  } </b></p><p><b>  } </b></p><p>  if(P3_

61、1==0) </p><p><b>  { </b></p><p>  for(i=5;i!=0;i--) </p><p>  for(j=248;j!=0;j--); </p><p>  if(P3_1==0) </p><p><b>  { </b></p

62、><p>  minite++; </p><p>  if(minite==60) </p><p><b>  { </b></p><p>  minite=0; </p><p><b>  } </b></p><p>  dispbuf[3]=

63、minite%10 ; </p><p>  dispbuf[4]=minite/10; </p><p>  while(P3_1==0); </p><p><b>  } </b></p><p><b>  } </b></p><p>  if(P3_2==0) &

64、lt;/p><p><b>  { </b></p><p>  for(i=5;i!=0;i--) </p><p>  for(j=248;j!=0;j--); </p><p>  if(P3_2==0) </p><p><b>  { </b></p>&

65、lt;p><b>  hour++; </b></p><p>  if(hour==24) </p><p><b>  { </b></p><p><b>  hour=0; </b></p><p><b>  } </b></p>

66、;<p>  dispbuf[6]=hour%10 ; </p><p>  dispbuf[7]=hour/10; </p><p>  while(P3_2==0); </p><p><b>  } </b></p><p><b>  } </b></p><

67、;p><b>  } </b></p><p><b>  } </b></p><p>  void t0(void) interrupt 1 using 0 </p><p><b>  { </b></p><p>  mstcnt++; </p>&

68、lt;p>  if(mstcnt==8) </p><p><b>  { </b></p><p>  mstcnt=0; </p><p>  P0=dispcode[dispbuf[dispbitcnt]]; </p><p>  P2=dispbitcode[dispbitcnt]; </p>

69、<p>  dispbitcnt++; </p><p>  if(dispbitcnt==8) </p><p><b>  { </b></p><p>  dispbitcnt=0; </p><p><b>  } </b></p><p><b&g

70、t;  } </b></p><p><b>  tcnt++; </b></p><p>  if(tcnt==4000) </p><p><b>  { </b></p><p><b>  tcnt=0; </b></p><p> 

71、 second++; </p><p>  if(second==60) </p><p><b>  { </b></p><p>  second=0; </p><p>  minite++; </p><p>  if(minite==60) </p><p>&l

72、t;b>  { </b></p><p>  minite=0; </p><p><b>  hour++; </b></p><p>  if(hour==24) </p><p><b>  { </b></p><p><b>  hour

73、=0; </b></p><p><b>  } </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  dispbuf[0]=second%10 ; </p><p>  dispb

74、uf[1]=second/10; </p><p>  dispbuf[3]=minite%10 ; </p><p>  dispbuf[4]=minite/10; </p><p>  dispbuf[6]=hour%10 ; </p><p>  dispbuf[7]=hour/10; </p><p><

75、b>  } </b></p><p><b>  }</b></p><p><b>  設(shè)計總結(jié)</b></p><p>  做了兩周的課程設(shè)計,有很多的心得體會,有關(guān)于單片機(jī)的,也有關(guān)于模電數(shù)電等基礎(chǔ)科目的。</p><p>  因為單片機(jī)已經(jīng)很久沒復(fù)習(xí),剛拿到題目,不知道從哪

76、入手,后來通過對書本的回顧,加深了對單片機(jī)的記憶。有些知識會遷移和聯(lián)系模電數(shù)電。課堂教學(xué)考慮到大多數(shù)同學(xué)的需求,主要強(qiáng)調(diào)“基本”——基本知識、基本理論、基本方法、基本技能。而這次設(shè)計正是為我們提供了一個深入學(xué)習(xí)、探索的機(jī)會,成為課堂教學(xué)的有益補(bǔ)充。我們正面臨就業(yè)問題,這次課設(shè)給了我們一個機(jī)會去試驗。</p><p>  單片機(jī)理論的學(xué)習(xí)是為課程的設(shè)計作準(zhǔn)備的,但有時學(xué)習(xí)的理論也解決不了實(shí)踐中的問題。實(shí)踐中獲得的知

77、識能讓我對單片機(jī)的知識有更好的認(rèn)識和理解。雖然這次的課程設(shè)計我參考了一些文獻(xiàn)資料,沒有做到創(chuàng)新,但在對程序的讀寫過程中我明白了許多。這次課程設(shè)計的最大收獲是只有把理論用到實(shí)踐中我們才能真正掌握好所學(xué)知識。</p><p><b>  四、收獲及體會</b></p><p>  單片機(jī)是我所學(xué)專業(yè)的主要課程之一,因此我認(rèn)為單片機(jī)課程設(shè)計是十分必要而且十分重要的。盡管剛剛

78、拿到課程設(shè)計題目時有點(diǎn)迷惘,不知道如何著手,但通過上網(wǎng)和圖書館查閱相關(guān)資料,自己認(rèn)真鉆研以及虛心詢問同學(xué),終于解決了一個又一個的困難和障礙,成功完成了任務(wù)。</p><p>  通過本次的單片機(jī)課程設(shè)計,不僅大大地豐富了我的理論知識,而且在實(shí)踐過程中更令我學(xué)會了堅持、耐心和努力。此次單片機(jī)課程設(shè)計需要運(yùn)用到許多之前所學(xué)過的知識,令我認(rèn)識到自己以前學(xué)習(xí)的一些不足之處,例如對以前所學(xué)知識的理解不夠深刻,掌握得不夠牢固

79、,運(yùn)用不夠靈活。這讓我懂得了認(rèn)真學(xué)習(xí)的重要性,以及要孜孜不倦地鉆研所學(xué)過的知識,做得融會貫通,不能一覽而過,不求甚解。在邊學(xué)習(xí)邊動手的過程中,我對電子時鐘的構(gòu)造以及原理有了進(jìn)一步的了解,同時也加深和鞏固了我對單片機(jī)匯編語言的認(rèn)識。除此之外,由于是第一次做單片機(jī),因此在此次課程設(shè)計的過程中,無論是電路繪制還是匯編語言編寫都難免遇到了不少困難和障礙,例如匯編語言編寫出錯、電路元件無從入手等。在面對困難和障礙時,我慶幸自己沒有退縮和逃避,而是

80、通過各種方法,迎難而上,以堅持、耐心和努力勇敢無畏地面對困難,克服困難,解決困難。讓我發(fā)現(xiàn)問題、分析問題、解決問題以及動手實(shí)踐的能力都有了很大的提高,并了解到理論知識與實(shí)踐相結(jié)合的重要意義。</p><p>  從這次的課程設(shè)計中,我們真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的練習(xí)的過程中才能提高。本次課程設(shè)計盡管時間不長,但從中所獲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論