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