1 任務(wù)和要求
1.1設(shè)計背景設(shè)計背景:
近年來隨著計算機在社會領(lǐng)域的發(fā)展, 單片機的應(yīng)用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月益更新。時間是日常生活、工業(yè)、醫(yī)學(xué)、環(huán)境保護、化工、石油等領(lǐng)域最常遇到的一個物理量。測量時間的基本方法是使用秒表直接測量。其中秒表的精度是人們最關(guān)心的,這就要求它的計時最小單位足夠小,顯示模塊的靈敏度足夠高。其中采用單片機進行控制的計時系統(tǒng)就是一個典型的例子,它為現(xiàn)代人工作、科研、生活提供更好的更方便的測量手法。單片機使得一切向著數(shù)字化控制、智能化控制方向發(fā)展。本篇論文討論了簡單的數(shù)字秒表的設(shè)計與制作 ,采用LED液晶模塊進行顯示。其中單片機通過定時器中斷的方式產(chǎn)生了10ms的最小計時單位,通過加一后判斷的方式依次進行處理,將每個單位進行十進制處理后進行顯示。
1.2設(shè)計目的和意義秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室及科研單位理想的計時儀器,它廣泛應(yīng)用于各種繼電器、電磁開關(guān)、控制器、延時器、定時器等的時間測試。
有關(guān)計時鐘表的發(fā)展歷史,大致可以分為三個演變階段。
一、從大型鐘向小型鐘演變。
二、從小型鐘向袋表過渡。
三、從袋表向腕表發(fā)展。
每一階段的發(fā)展都是和當(dāng)時的技術(shù)發(fā)明分不開的。
設(shè)計目的:
本課題是基于單片機的數(shù)字秒表系統(tǒng)設(shè)計。其利用單片機作為系統(tǒng)的主要控制器,通過單片機自身的定時計數(shù)器溢出標(biāo)志產(chǎn)生最小計時單元,經(jīng)過變量的累加和判斷后,將數(shù)據(jù)送入數(shù)碼顯示屏顯示。
(1)根據(jù)單片機課程所學(xué)內(nèi)容,結(jié)合其他相關(guān)課程知識,設(shè)計電子秒表,以加深對單片機知識的理解,鍛煉實踐動手能力,為以后的畢業(yè)設(shè)計和工作打下堅實基礎(chǔ)。
(2)熟悉匯編語言或C語言的程序設(shè)計方法,熟悉51系列單片機的使用。
(3)掌握單片機的內(nèi)部功能模塊的應(yīng)用,如定時器/計數(shù)器、中斷、I/O口、串行口通訊等功能。
(4)掌握單片機應(yīng)用系統(tǒng)的軟硬件設(shè)計過程、方法及實現(xiàn)。
1.3設(shè)計任務(wù)和要求(1)任務(wù):采用兩位LED數(shù)碼管和單片機定時/計數(shù)器設(shè)計一個秒表顯示電路,
(2)電子秒表性能要求
- 工作溫度范圍:-40℃-+50℃
- 顯示時間從0開始:,每隔1s顯示時間加1。
- 秒值到99后自動清0,依次循環(huán)顯示
- 外部擴展2位LED數(shù)碼管。
2 總體方案設(shè)計與選擇2.1 LED數(shù)碼管
LED數(shù)碼管結(jié)構(gòu)及工作原理
7段發(fā)光數(shù)碼管,簡稱LED。LED數(shù)碼管的顯示與應(yīng)用是非常普遍的,可用于顯示0-9的數(shù)字,也可以顯示A、B、C、D、E、F、H、L、P等字符。
(1)LED數(shù)碼管結(jié)構(gòu)
LED顯示器是由若干個發(fā)光二極管組成的,按“日”字排列成的數(shù)碼管,LED數(shù)碼顯示器有如下兩種連接方法,共陽極接法:把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極,使用時公共陽極接+5V,每個發(fā)光二極管的陰極通過電阻與輸入端相連。共陰極接法:把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時公共陰極接地。每個發(fā)光二極管的陽極通過電阻與輸入端相連。每段LED的筆畫分別稱為a、b、c、d、e、f、g,另有一段構(gòu)成小數(shù)點。一位LED數(shù)碼管的結(jié)構(gòu)如圖1所示。
(2)LED數(shù)碼管的工作原理
選用共陽極數(shù)碼管時,只要在某個發(fā)光二極管加上高電平,當(dāng)發(fā)光二極管導(dǎo)通時,相應(yīng)一個點或一個筆畫即被點亮。而選用共陰極數(shù)碼管時,要使某一端發(fā)光二極管發(fā)亮,則需加上低電平?刂撇煌M合的二極管導(dǎo)通,就能顯示出各種數(shù)字或字符。LED數(shù)碼管的使用與發(fā)光二極管類同,根據(jù)其材料不同,正向壓降一般為1.5到2V,額定電流為10MA,最大電流為40MA。靜態(tài)顯示時,取10MA為宜,動態(tài)掃描顯示時,可加大脈沖電流,但一般不超過40MA。
(a)8段數(shù)碼管外型 (b)共陽極數(shù)碼管 (c)共陰極數(shù)碼管
圖1 LED數(shù)碼管
2.2 單片機的選型本課題在選取單片機時充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗并根據(jù)自己的實際情況選擇了AT89C51。
AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
控制芯片的介紹
AT89C51是一種低功耗、高性能的片內(nèi)含有4KB快閃可編程/擦除只讀存儲器的8位CMOS微控制器,使用高密度、非易失存儲技術(shù)制造,并與80S52引腳和指令系統(tǒng)完全兼容。
主要性能:
1)與MCS-51微控制器產(chǎn)品系列兼容。
2)片內(nèi)有4KB可在線重復(fù)編程的快閃擦寫存儲器
3)存儲數(shù)據(jù)保存時間為10年
4)寬工作電壓范圍,VCC可為2.7V到6V
5)全靜態(tài)工作,可從0Hz至16MHz
6)程序存儲器具有3級加密保護
7)128*8位內(nèi)部RAB
8)32條可編程I/O線
9)兩個16位定時器/計數(shù)器
10)中斷結(jié)構(gòu)具有5個中斷源和2個優(yōu)先級
11)可編程全雙串行通道
12)空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內(nèi)容
AT89C51單片機采用40引腳的雙列直插封裝方式。
圖2為引腳排列圖,40條引腳說明如下
主電源引腳Vss和Vcc
① Vss接地
② Vcc正常操作時為+5伏電源
外接晶振引腳XTAL1和XTAL2
① XTAL1內(nèi)部振蕩電路反相放大器的輸入端是外接晶體的一個引腳。當(dāng)采用外部振蕩器時,此引腳接地。
② XTAL2內(nèi)部振蕩電路反相放大器的輸出端。是外接晶體的另一端。當(dāng)采用外部振蕩器時,此引腳接外部振蕩源。
輸入/輸出引腳P0.0 - P0.7P1.0 - P1.7P2.0 - P2.7P3.0 - P3.7。
① P0口P0.0 - P0.7是一個8位漏極開路型雙向I/O口在訪問外部存儲器時,它是分時傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅(qū)動八個LSTTL負(fù)載。
② P1口P1.0 - P1.7是一個帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。
③ P2口P2.0 - P2.7是一個帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。在訪問外部存儲器時,它輸出高8位地址。P2口可以驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。
④ P3口P3.0 - P3.7是一個帶有內(nèi)部提升電阻的8位準(zhǔn)雙向I/O口。能驅(qū)動(吸收或輸出電流)四個LSTTL負(fù)載。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
圖2.AT89C51單片機引腳圖
整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。
此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。
2.3系統(tǒng)選用元器件系統(tǒng)所用元器件清單
3 電路總原理框圖設(shè)計3.1電路設(shè)計在硬件上采用單片機的P2口,輸出個位、P0口,輸出十位,兩個I/O口經(jīng)限流電阻后將輸出數(shù)據(jù)送到兩個共陽極的LED數(shù)碼管。打開protues的ISIS,通過對象選擇器按鈕,從元件庫中選出如下元器件:AT89C51(單片機)、RES(電阻)、CAP(電容)、CAP-ELEC(電解電容)、BUTTON(按鈕開關(guān))、CRYSTAL(晶振)、RESPACK-8(上拉電阻)、RX8(限流排阻)、7SEG-COM-AN-GRN(綠色共陽數(shù)碼管),并置入對象選擇器窗口。然后將選擇的元器件、電源和地線放置在編輯窗口中。
3.2秒表的初始化①將I/O口P3全寫一,為秒表的控制輸入做好準(zhǔn)備;
②將數(shù)碼管全部置零,使其處于秒表計時的初始狀態(tài);
③將工作寄存器R0~R2以及30H初始化,留待后面的計時程序備用;
④將定時器0置于工作方式1,并為其裝入計時預(yù)置數(shù)D8FE(因為程序運行過程中占用的時間會導(dǎo)致一定誤差,此為經(jīng)實物測試之后的修正值),即將定時器定為每10ms溢出;
⑤開總中斷允許和定時器0中斷允許。初始化完成后,即進入之后的按鍵掃描程序。
3.3顯示電路的設(shè)計顯示部分由一個共陽極兩位數(shù)碼管構(gòu)成,如圖3。
顯示部分采用動態(tài)顯示。數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。動態(tài)顯示是利用人眼視覺暫留特性來實現(xiàn)顯示的。事實上,顯示器上任何時刻只有一個數(shù)碼管有顯示。由于各數(shù)碼管輪流顯示的時間間隔短、節(jié)奏快,人的眼睛反應(yīng)不過來,因此看到的是連續(xù)顯示的現(xiàn)象。為防止閃爍延時的時間在1ms左右,不能太長也不能太短。
圖3顯示部分示意圖
3.4 時鐘電路的設(shè)計對于時鐘它有兩方面的含義,一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時信號主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時時鐘即定時時間,是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大。
3.5 鍵盤部分的方案鍵盤控制采用獨立式按鍵,每個按鍵的一端均接地,另一端直接和P1口相連,在按鍵和P1口之間通過10K電阻與+5V電源相連。鍵盤通過檢測輸入線的電平狀態(tài)就可以很容易地判斷哪個鍵被按下了,這種方法操作速度高而且軟件結(jié)構(gòu)很簡單,比較適合按鍵較少或操作速度較高的場合,這種獨立式接口的應(yīng)用很普遍。
3.6計時程序定時器0計時至10ms,溢出,引發(fā)中斷,程序跳轉(zhuǎn)至定時器0中斷服務(wù)程序入口000BH處執(zhí)行。程序跳轉(zhuǎn)至中斷服務(wù)程序TIME0。由于秒表的最小計時單位是0.1s,即100ms,因此需加入軟件計時,使定時器0溢出10次之后才改變數(shù)碼管的顯示狀態(tài)。因此每來一次中斷就將30H中的數(shù)加1,若30H中的數(shù)沒有到10,則給定時器重新裝入預(yù)置數(shù),之后中斷返回并繼續(xù)等待中斷;到10了,才進入顯示程序,改變數(shù)碼管的顯示狀態(tài),執(zhí)行完畢之后中斷返回并繼續(xù)等待中斷。
4編程思路系統(tǒng)采用12MHz晶振,定時/計數(shù)器T0工作在模式一,定時時間為1s。利用查表編程結(jié)構(gòu),每隔1s送出兩位顯示值,首先送出當(dāng)前個位置,然后加1在判斷為10嗎?不為10將繼續(xù);否則十位加1,并判斷為10嗎?如此循環(huán),從而實現(xiàn)秒值的輸出,定時/計數(shù)器的計數(shù)值可選擇定時時間為50ms,再循環(huán)20次。確定定時器T0的初值為
X=M-計數(shù)值=65536-50000=15536=3CB0H
即TH0=3CH,TL0=B0H,又因采用方式1定時,故TMOD=01H。程序流程如圖4。
該實驗要求進行計時并在數(shù)碼管上顯示時間,則可利用proteus仿真軟件設(shè)計電路并仿真AT89C51。 使用AT89C51單片機作為核心控制部件,采用12M晶體振蕩器及微小電容構(gòu)成振蕩電路,用兩個四位一體共陽極或共陰極數(shù)碼顯示管作為顯示部分,構(gòu)成數(shù)字式秒表的主體結(jié)構(gòu)。
根據(jù)以上思路將所需元件備好,進行組合,使用protues仿真判斷是否可行,還要對顯示電路、計時電路、時鐘電路、鍵盤電路進行檢測,再比較單片機書中的內(nèi)容,檢查是否有誤,最后根據(jù)所需要求及內(nèi)容編寫匯編語言,靈活運用計數(shù)器與定時器的相關(guān)內(nèi)容,制定相應(yīng)的程序語言。
圖4程序流程圖
5源程序設(shè)計源程序:
ORG 0000H
AJMP MAIN
ORG O100H
MAIN: MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R2,#00H
MOV P0,#0C0H
SATRT: MOV R1,#00H
MOV DPTR,#TAB
DISP: MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
LCALL DEALY1S
TNC R1
CJNE R1,#10,DISP
MOV R1,#00H
INC R2
MOV A,R2
MOVC A,@A+DPTR
MOV P0,A
CJNE R2,#10,SATRT
MOV R2,#00H
MOV P0,#0C0H
LCALL SATRT
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H
DEALY1S:
MOV R3,#14H
SETB TR0
LP1: JBC TF0,LP2
SJMP LP1
LP2: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R3,LP1
RET
END
以上為匯編語言的源程序設(shè)計
6編譯與仿真6.1系統(tǒng)調(diào)試系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗證其正確性。軟硬件的適配情況以及是否達到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實用產(chǎn)品。
(1)硬件調(diào)試
硬件調(diào)試分單元電路調(diào)試和聯(lián)機調(diào)試,單元電路試驗在硬件電路設(shè)計時已經(jīng)進行,這里的調(diào)試只是將其制成印刷電路板后試驗電路是否正確,并排除一些加工工藝性錯誤,如錯線、開路、短路等。這種調(diào)試可單獨模擬進行,也可通過開發(fā)裝置由軟件配合進行,硬件聯(lián)機調(diào)試則必須在系統(tǒng)軟件的配合下進行。
本設(shè)計硬件是用proteus上的部件搭建而成的,在proteus的軟件中進行連線仿真模擬。
(2)軟件調(diào)試
由于本設(shè)計簡單,所以是在proteus軟件中直接導(dǎo)入AT89C51芯片運行并觀察結(jié)果,其中在proteus上對keil軟件進行聯(lián)調(diào),查錯時可以通過調(diào)試?yán)锩娴膯尾竭\行、進入子函數(shù)內(nèi)部和設(shè)置斷點分析。
6.2仿真與編譯將編寫的程序添加到protues自帶的編譯器中,對其進行編譯,生成hex文件。單機“運行”按鈕,啟動系統(tǒng)仿真,觀察仿真結(jié)果,仿真電路如圖5所示。此時電路顯示值為0-99s。
圖5總電路設(shè)計圖
7 結(jié)論本次報告主要從硬件方面說明設(shè)計的總體思路和設(shè)計的實現(xiàn)過程,預(yù)期的設(shè)計目的是,能夠?qū)崿F(xiàn)秒表的基本功能,正常計時0-99s。在設(shè)計過程中,曾經(jīng)遇到很多的障礙,設(shè)計圖經(jīng)過許多次的修改最后才定下來,但在調(diào)試的過程中又出現(xiàn)了問題,需要修改原理圖,比如硬件的布局,要作到使連接的線路最短,并沒有想象中的那么容易。
在設(shè)計中有好多問題都是因為理論知識不扎實,在有些管腳的置零置一上,概念的模糊,這使我明白要把所學(xué)到的理論轉(zhuǎn)化為實踐需要一段努力學(xué)習(xí)的過程,在做一個設(shè)計的過程中,一定要注意理論和實踐同步進行,光有理論知識還是遠(yuǎn)遠(yuǎn)不夠的,要用時間去檢驗理論,用理論指導(dǎo)實踐。
剛開始接到課程設(shè)計任務(wù),自己認(rèn)為挺簡單的,然而真正開始動手制作時才知道并不是那么簡單,從初期的資料收集以及原理圖的繪制,都受到了同學(xué)的幫助,大家一起研究探討解決了我不少問題,不得不說,科研成果的研究真的跟團隊合作有很大的關(guān)系。
最近幾年,科學(xué)發(fā)展很快,滲透在工農(nóng)業(yè)生產(chǎn)的許多領(lǐng)域。通過此次課程設(shè)計,我們有了更深的認(rèn)識,只有在設(shè)計制作的過程中不斷的學(xué)習(xí),才能有更新的進步.不論在什么地方,什么崗位我門都要以學(xué)為主.學(xué)以置用.才能把我們的工作做的更好。
東北石油大學(xué)課程設(shè)計成績評價表
| 嵌入式系統(tǒng)應(yīng)用訓(xùn)練 |
| |
| | | | | | | |
| | | | |
| | 按期圓滿的完成了規(guī)定的任務(wù),難易程度和工作量符合教學(xué)要求,工作努力,遵守紀(jì)律,出勤率高,工作作風(fēng)嚴(yán)謹(jǐn),善于與他人合作。 | |
|
| | 課程設(shè)計選題合理,計算過程簡練準(zhǔn)確,分析問題思路清晰,結(jié)構(gòu)嚴(yán)謹(jǐn),文理通順,撰寫規(guī)范,圖表完備正確。 | |
|
| | 工作中有創(chuàng)新意識,對前人工作有一些改進或有一定應(yīng)用價值。 | |
|
| | | |
|
|
|
|