|
本帖最后由 snow_f 于 2017-12-14 16:14 編輯
一個(gè)課程設(shè)計(jì),兩位秒表,用的AT89C51,附件有仿真,原理,源碼還有用Protel DXP畫的一部分。
0.png (14.05 KB, 下載次數(shù): 111)
下載附件
2017-12-14 15:58 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.jpg (72.49 KB, 下載次數(shù): 107)
下載附件
2017-12-14 16:04 上傳
秒表設(shè)計(jì)
摘 要: 本設(shè)計(jì)以 AT89C51 單片機(jī)為主控模塊,利用 C 語言編寫兩位數(shù)碼管循環(huán)掃描動(dòng)態(tài)顯示的專用程序來實(shí)現(xiàn)兩位數(shù)碼管動(dòng)態(tài)顯示系統(tǒng),系統(tǒng)主要由按鍵模塊、復(fù)位模塊、外部時(shí)鐘電路模塊、數(shù)碼管顯示模塊構(gòu)成。按鍵電路通過兩個(gè)獨(dú)立的開關(guān)控制數(shù)碼管計(jì)數(shù)的開始、停止和復(fù)位。復(fù)位電路由電容與按鍵的并聯(lián)來實(shí)現(xiàn)。時(shí)鐘通過外部 12M 的晶振來控制。兩位數(shù)碼管顯示由兩個(gè)共陽極的三極管進(jìn)行驅(qū)動(dòng)。 將 C 語言編寫的兩位數(shù)碼管動(dòng)態(tài)顯示程序?qū)懭雴纹瑱C(jī)來控制 P0 口,使數(shù)碼管相應(yīng)段點(diǎn)亮,同時(shí)利用人眼視覺暫留的特性和數(shù)碼管的余輝效應(yīng),在掃描頻率足夠高時(shí),人眼無法感覺數(shù)碼管的變化,從而實(shí)現(xiàn)數(shù)碼的動(dòng)態(tài)顯示。
目錄
1 設(shè)計(jì)背景 ........................................................................................................ 1
2 硬件系統(tǒng)設(shè)計(jì)方案........................................................................................ 1
2.1 硬件電路方案........................................................................................ 1
3 硬件電路設(shè)計(jì) ................................................................................................ 2
3.1 單片機(jī)選型............................................................................................ 2
3.2 按鍵電路................................................................................................ 4
3.3 復(fù)位及振蕩電路.................................................................................... 4
3.4 顯示電路的選擇.................................................................................... 5
3.41 共陽極數(shù)碼管的顯示方法............................................................. 5
3.3.2 共陽極數(shù)碼管的驅(qū)動(dòng)設(shè)計(jì)............................................................ 5
3.4 連接方式.............................................................................................. 6
4 軟件設(shè)計(jì) ....................................................................................................... 7
4.1 匯編程序................................................................................................ 7
4.2 C 語言程序............................................................................................. 8
5 系統(tǒng)仿真結(jié)果 ............................................................................................. 12
6 致謝 .................................................................................錯(cuò)誤!未定義書簽。
參考文獻(xiàn) .............................................................................錯(cuò)誤!未定義書簽。
1 設(shè)計(jì)背景
目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能 IC 卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。
2 硬件系統(tǒng)設(shè)計(jì)方案
2.1 硬件電路方案
硬件原理框圖如下:
0.jpg (16.08 KB, 下載次數(shù): 104)
下載附件
2017-12-14 15:59 上傳
圖 2-1 硬件組成框圖
該電路的工作原理:?jiǎn)纹瑱C(jī)從穩(wěn)壓電路中獲得穩(wěn)定的+5V 電壓,接到+5V
端,提供穩(wěn)定的電壓; 單片機(jī)口通過電阻接到顯示電路的端口上; 單片機(jī)接復(fù)位
按鍵電路
復(fù)位電路
單片機(jī) 顯示電路
時(shí)鐘電路
電路,實(shí)現(xiàn)電路的復(fù)位; 以及單片機(jī)需要接晶振電路;整個(gè)電路實(shí)現(xiàn)循環(huán)動(dòng)態(tài)顯
示數(shù)字 00~99.
3 硬件電路設(shè)計(jì)
3.1 單片機(jī)選型
MCS51 是指由美國 INTEL 公司生產(chǎn)的一系列單片機(jī)的總稱,這一系列單片機(jī)包括了很多品種,如 8031, 8051, 8751, 8032, 8052, 8752 等,其中 8051是最早最典型的產(chǎn)品,該系列其它單片機(jī)都是在 8051 的基礎(chǔ)上進(jìn)行功能的增、減、改變而來的,所以人們習(xí)慣于用 8051 來稱呼 MCS51 系列單片機(jī),而 8051是目前在我國最流行的單片機(jī),所以很多場(chǎng)合會(huì)看到 8051 的名稱。本課題中用到的芯片就是 AT 系列中的 AT89C51 單片機(jī)芯片。AT89C51 是一個(gè)低電壓,高性能 CMOS 8 位單片機(jī),片內(nèi)含 4k bytes 的可反復(fù)擦寫的 Flash 只讀程序存儲(chǔ)器和 128 bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用 ATMEL 公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn) MCS-51 指令系統(tǒng),內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的 AT89C51 提供了高性價(jià)比的解決方案。AT89C51 具有 PDIP、 PQFP/TQFP 及 PLCC 等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。它是一個(gè)低功耗高性能單片機(jī), 40 個(gè)引腳, 32 個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含 2 個(gè)外中斷口, 2 個(gè) 16 位可編程定時(shí)計(jì)數(shù)器,2 個(gè)全雙工串行通信口, AT89C51 可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和 Flash 存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash 存儲(chǔ)器可有效地降低開發(fā)成本。
如圖所示,圖 3-1 為 AT89C51 單片機(jī)基本構(gòu)造,其基本性能介紹如下:
圖 3-1 AT89C51 引腳圖
AT89C51 本身內(nèi)含 40 個(gè)引腳, 32 個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含 2 個(gè)外中端口, 2 個(gè) 16 位可編程定時(shí)計(jì)數(shù)器,2 個(gè)全雙工串行通信口,AT89C51 可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和 Flash 存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的 Flash 存儲(chǔ)器可有效地降低開發(fā)成本。
3.2 按鍵電路
圖 3-2 按鍵電路
按鍵 S1 和按鍵 S2 是控制位,分別接單片機(jī)的 P3.4 和 P3.7I/O 口。當(dāng)按下
按鍵 S1 時(shí)數(shù)碼管計(jì)數(shù)開始,再次按下 S1 時(shí)數(shù)碼管停止計(jì)數(shù)并停留下當(dāng)前結(jié)果;
當(dāng)按下按鍵 S2 時(shí)清空數(shù)碼管顯示結(jié)果,重新計(jì)數(shù)。
3.3 復(fù)位及振蕩電路
圖 3-3 復(fù)位電路和振蕩電路
單片機(jī)復(fù)位是使 CPU 和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀
態(tài),并從這個(gè)狀態(tài)開始工作,在復(fù)位期間(即 RST 為高電平期間), P0 口為高組態(tài), P1-P3 口輸出高電平;外部程序存儲(chǔ)器讀選通信號(hào) PSEN 無效。地址鎖存信號(hào) ALE 也為高電平。根據(jù)實(shí)際情況選擇如圖 3-3 所示的復(fù)位電路。該電路在最簡(jiǎn)單的復(fù)位電路下增加了手動(dòng)復(fù)位按鍵,在接通電源瞬間,電容 C1 和 C2取 3pF。 加手動(dòng)復(fù)位按鍵是為了避免死機(jī)時(shí)無法可靠復(fù)位。AT89C51 引腳 XTAL1 和 XTAL2 與晶體振蕩器及電容 C1、 C2 按圖 3-3 所示方式連接。晶振、電容 C1/C2 及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,電容 C1、 C2 取值 30pF。 復(fù)位電路用電容與按鍵的并聯(lián)來實(shí)現(xiàn),將它們并在一起,一端接高電平,另一端接地,從而實(shí)現(xiàn)高電平復(fù)位的功能。
3.4 顯示電路的選擇
秒表設(shè)計(jì)顯示電路可以考慮數(shù)碼管或 LCD 屏,由于秒表只要求顯示數(shù)字,
因此對(duì)顯示要求較為簡(jiǎn)單, 如果選用 LCD 則較為復(fù)雜, 數(shù)碼管足以滿足要求。
3.41 共陽極數(shù)碼管的顯示方法
LED 數(shù)碼管是單片機(jī)控制系統(tǒng)中最常見的顯示器件之一,一般用來顯示處理結(jié)果或輸入輸出信號(hào)的狀態(tài)。數(shù)碼管顯示是一個(gè)系統(tǒng)工程中必不可少的人機(jī)交互環(huán)節(jié),因此關(guān)于數(shù)碼管的驅(qū)動(dòng)也就是系統(tǒng)工程中的一個(gè)重要的環(huán)節(jié)。數(shù)碼管的驅(qū)動(dòng)分為動(dòng)態(tài)驅(qū)動(dòng)和靜態(tài)驅(qū)動(dòng)兩種。所謂靜態(tài)驅(qū)動(dòng),就是指無論多少位 LED 數(shù)碼管,同時(shí)處于顯示狀態(tài)。動(dòng)態(tài)顯示驅(qū)動(dòng)是指無論在任何時(shí)刻只有一個(gè) LED 數(shù)碼管處于顯示狀態(tài),及單片機(jī)采用“掃描”方式控制各個(gè)數(shù)碼管輪流顯示。
3.3.2 共陽極數(shù)碼管的驅(qū)動(dòng)設(shè)計(jì)
將數(shù)碼管每個(gè) LED 燈對(duì)應(yīng)單片機(jī)的一個(gè) I/O 口。通過單片機(jī)的 P 口來控制LED 燈的亮和滅。 I/O 口之間互相獨(dú)立,需要用 I/O 口直接控制 LED。動(dòng)態(tài)顯示將數(shù)碼管的每個(gè)引腳一對(duì)一連接在一起接單片機(jī)的數(shù)據(jù),而將各個(gè)數(shù)碼管的公共端單獨(dú)送至單片機(jī)的 I/O 口進(jìn)行片選。此外,在此基礎(chǔ)上,用單片機(jī)與 74LS04
反向器來驅(qū)動(dòng)數(shù)碼管,從而實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示。
圖 3-4 數(shù)碼管顯示電路
如圖 3-3 所示,兩位數(shù)碼管分別由兩個(gè) PNP 型三極管驅(qū)動(dòng),三極管的基極通過限流電阻接在單片機(jī) P1.0、 P1.1,其中 P1.0 控制數(shù)碼管的個(gè)位, P1.1 控制數(shù)碼管的十位。數(shù)碼管各段除小數(shù)點(diǎn)段外其余七段(a-g)通過限流電阻接在單片機(jī) P0 口(P0.0-P0.6),兩位數(shù)碼管顯示由單片機(jī)內(nèi)部程序控制相應(yīng)接口為低電平,從而實(shí)現(xiàn)從 00—99 動(dòng)態(tài)循環(huán)顯示。例如:十位和個(gè)位顯示原理相同,謹(jǐn)以個(gè)位說明。當(dāng)個(gè)位數(shù)碼管顯示 5 時(shí), 5 在程序中查表對(duì)應(yīng)的十六進(jìn)制數(shù)為 92H,對(duì)應(yīng)二進(jìn)制為 10010010B,其中 P0.7、 P0.4、 P0.1 為高電平, DP、 e、 b 段熄滅,P0.6、 P0.5、 P0.3、 P0.2、 P0.0 為低電平, g、 f、 d、 c、 a 段點(diǎn)亮,則此時(shí)數(shù)碼管上顯示數(shù)字 5。
3.4 連接方式
單片機(jī)采用 P2 口的 I/O 來控制數(shù)碼管的各個(gè)引腳。復(fù)位鍵接到引腳 9 上,數(shù)碼管的位選通過三極管和電阻分別與單片機(jī)的引腳 1 和 39 相連,晶振與單片機(jī)的引腳 18 和 19 連接,高電平與 40 引腳連接供電, 20 引腳直接接地。
0.jpg (36.34 KB, 下載次數(shù): 100)
下載附件
2017-12-14 15:59 上傳
圖 3-5 硬件設(shè)計(jì)圖
4 軟件設(shè)計(jì)
4.1 匯編程序
匯編語言的優(yōu)點(diǎn)是可以表達(dá)非常底層的東西
l.可以直接存取寄存器和 I/O
2.編寫的代碼可以非常精確的被執(zhí)行
3.可以編寫出比一般編譯系統(tǒng)高效的代碼
4.可以作為不同語言或不同標(biāo)準(zhǔn)的接口缺點(diǎn)在于匯編語言是一個(gè)比較低級(jí)的語言
1.非常冗長(zhǎng)單調(diào),在 DOS 下編程時(shí)就可以體會(huì)到
2.易出 BUG,且調(diào)試?yán)щy
3.代碼不易維護(hù)
4.兼容性不好,與硬件關(guān)系非常緊密
8 / 14
與 C 語言相比沒有 C 語言簡(jiǎn)單易用,且 C 語言的可讀性更高,因此此程序選
用 C 語言編程。
4.2 C 語言程序
采用 C 語言用編寫了兩位數(shù)碼管循環(huán)掃描動(dòng)態(tài)顯示的專用程序。通過軟件的控制使兩位數(shù)碼管能從 00 計(jì)數(shù)到 99,再回到 00,依次進(jìn)行循環(huán)。若在計(jì)數(shù)期間有復(fù)位高電平出現(xiàn)時(shí),便重新從 00 開始計(jì)數(shù)。并有電源開關(guān)控制讓電路是否工作,且有指示燈指示電源是否正常。
程序流程圖如下:
0.jpg (15.67 KB, 下載次數(shù): 103)
下載附件
2017-12-14 16:00 上傳
圖 4-1 程序流程圖
程序如下:
5 系統(tǒng)仿真結(jié)果
經(jīng)過對(duì)不同方案的分析、比較、取舍,然后進(jìn)行原理圖的設(shè)計(jì)與仿真, 再經(jīng)過軟件的調(diào)試等環(huán)節(jié)的操作,最終實(shí)現(xiàn)了讓數(shù)碼管在單片機(jī)的控制下循環(huán)顯示兩位數(shù) 00-99。并且在正常的計(jì)數(shù)過程中,若按下復(fù)位鍵后, 計(jì)數(shù)又重新從 00 開始計(jì)數(shù), 終現(xiàn)實(shí)的結(jié)果與預(yù)想的結(jié)果一致。
0.jpg (48.32 KB, 下載次數(shù): 111)
下載附件
2017-12-14 16:01 上傳
圖 5-2 仿真結(jié)果圖
單片機(jī)源程序如下:
- //制作:機(jī)械工程學(xué)院*****機(jī)械設(shè)計(jì)制造及其自動(dòng)化專業(yè)//
- //作者:*****//
- //學(xué)號(hào):************//
- //設(shè)計(jì)內(nèi)容:基于51單片機(jī)控制的數(shù)碼管顯示0~99的秒表//
- //********************我是分割線********************//
- //借口配置說明//
- /*
- 開始按鍵位P2.0
- 復(fù)位按鍵P2.1
- */
- /*
- 數(shù)碼管位選驅(qū)動(dòng)端口位P1.0和P2.0
- */
- //以下是程序正文//
- #include <reg52.h>
- #define uchar unsigned char //宏定義
- #define uint unsigned int
- /*引腳定義*/
- sbit START=P2^0; //開始、停止鍵 低電平有效
- sbit RST=P2^1; //復(fù)位鍵
- /*定義全局變量*/
- uint time; //時(shí)間變量
- /*數(shù)碼管字模,對(duì)應(yīng) 0-9*/
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f};
- /*延時(shí)函數(shù)*/
- void Delay(uint ms) //毫秒級(jí)延時(shí)函數(shù)
- {
- uint i, j;
- for(i =ms; i>0; i--)
- for(j =110; j>0; j--);
- }
- /*中斷*/
- void time0() interrupt 1
- {
- uchar tt;
- TH0 = 0x4c; //晶振11.0592Mhz
- TL0 = 0x00;
- tt++;
- if(tt == 20)
- {
- time++;
- if(time==99) //到99后在從00開始
- time = 0;
- tt = 0;
- }
- }
- /*顯示函數(shù)*/
- void Display(uchar sum)
- {
- uchar shi, ge;
- P0 = 0x00; //消影
- P1 = 0x00;
- shi = table[sum/10];
- P0 = shi;
- P1 = 0xfd;
- Delay(5);
- P0 = 0x00; //消影
- P1 = 0x00;
- ge = table[sum%10];
- P0 = ge;
- P1 = 0xfe;
- Delay(5);
- }
- /*按鍵掃描*/
- void keyscan()
- {
- if(START==0) //開始、停止
- {
- Delay(10); //消抖
- if(START==0)
- {
- TR0 =!TR0;
- while(!START) Display(time);
- }
- }
- if(RST==0) //復(fù)位
- {
- Delay(10); //消抖
- if(RST==0)
- {
- time=0;
- TR0=0;
- while(!RST)Display(time);
- }
- }
- }
- //主函數(shù)
- void main()
- {
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
秒表設(shè)計(jì).zip
(1.34 MB, 下載次數(shù): 429)
2017-12-14 13:43 上傳
點(diǎn)擊文件名下載附件
源碼 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|