電子設計與仿真 課程設計報告書 - 用單片機AT89C51設計一個8位LED數碼顯示秒表,顯示時間為0S~9.9S。每秒自動加一。
- 設計一個“開始”按鍵,“復位”按鍵和一個“暫!卑存I。
- 接通電源后,從00.00開始計時一直到99.99再回到00.00結束或繼續循環。
4)采用proteus\protel軟件仿真電路,給出并分析仿真結果。 指導教師簽名: 2018年1月 日
|
二、指導教師評語:
指導教師簽名: 2018年1月 日
|
目錄 1、概述 2、課題方案設計 2.1系統設計目的 2.2 系統總體設計要求 2.3系統模塊結構論證 3、系統硬件設計 3.1總體設計 3.2單片機運行的最小系統 3.2.1 51單片機最小系統電路介紹 3.2.2單片機的振蕩電路與復位電路 3.3 數碼管介紹 4、軟硬件聯調及調試結果 4.1軟硬件調試中出現的問題及解決措施 5、結束語 參考文獻 附錄 附錄1:proteus仿真圖 附錄2:主要儀器與設備 附錄3:程序 1.概述 21世紀是一個電子技術和電子元件有更大發展的世紀。作為一個電子專業的大學生,我們不但要有扎實的基礎知識、課本知識,還應該有較強的動手能力,F實也要求我們既精通電子技術理論,更要掌握電子電路設計、實驗研究和調試技術。課程設計就是一個理論聯系實際的機會。
本次設計主要完成具備基本功能的電子秒表的理論設計,電子秒表是重要的記時工具,廣泛運用于各行各業中。作為一種測量工具,電子秒表相對其它一般的記時工具具有便捷、準確、可比性高等優點,不僅可以提高精確度,而且可以大大減輕操作人員的負擔,降低錯誤率。 在設計中應用到數碼管,數碼管主要用于樓體墻面,廣告招牌、高檔的DISCO、酒吧、夜總會、會所的門頭廣告牌等。特別適合應用于廣告牌背景、立交橋、河、湖護欄、建筑物輪廓等大型動感光帶之中,可產生彩虹般絢麗的效果。 用護欄管裝飾建筑物的輪廓,可以起到突出美彩亮化建筑物的效果。 2.課題方案設計 2.1系統設計目的 - 熟悉集成電路的引腳安排。
(2)掌握各芯片的邏輯功能及使用方法。
(3)了解秒表的組成及工作原理。
(5)熟悉秒表的設計與制作。
(6)熟練掌握仿真軟件的設計方法的流程。 2.2系統總體設計要求 1)用單片機AT89C51設計一個8位LED數碼顯示秒表,顯示時間為0S~9.9S。每秒自動加一。 2)設計一個“開始”按鍵,“復位”按鍵和一個“暫!卑存I。 3)接通電源后,從00.00開始計時一直到99.99再回到00.00結束或繼續循環。 4)采用proteus\protel軟件仿真電路,給出并分析仿真結果。 2.3系統模塊結構論證 1.單片機模塊選擇: 方案一:選用飛思卡爾單片機,飛思卡爾單片機功能強大,但是價格相對要高,而且對此不熟悉。 方案二:采用STC89系列單片機,其架構簡單,相對熟悉,價格便宜,對設計功能已經足夠,焊接也是比較容易。 因此,選擇方案二。 2.顯示模塊選擇: 方案一:采用8段發光二級管作為顯示模塊核心。 方案二:采用LCD液晶顯示器作為顯示模塊核心。 發光二級數碼管節能環保,顯示直觀。因此選擇方案一。 3.系統硬件設計 3.1總體設計 利用單片機定時器/計數器中斷設計秒表,從而實現秒的計時。用8段發光二級管來顯示秒表數據。增加一個清零按鈕,計時結束后可以清零。通過采用proteus仿真軟件來模擬實現。模擬利用AT89C51單片機、數碼管以及控件來控制秒表的計數以及計數的開啟/暫停/繼續與復位。數碼管用來顯示數據,一位數碼管顯示個位1~9,滿十進一后顯示十位的數碼管的數字加一,并且個位顯示清零重新從零計數。計秒數碼管采用兩位的數碼管,當計數超過范圍是所有數碼管全部清零重新計數。 軟硬件設計是設計中不可缺少的,為了滿足功能和指標的要求,資源分配如下: 晶振采用11.0592MZ的外部晶振頻率 內存分配: P0口與數碼管個位和十位數據輸入端相連,控制其段選信號,輸出1~9不同字型。 P3口的P3.1、P3.2分別與秒表個位和十位數碼管位選連接,控制秒表的計數以及計數的開啟/暫停/繼續與復位清零。 本設計包含有單片機最小系統、復位模塊、發光二級數碼管顯示模塊。 其中最小系統模塊由STC89C51、電阻、電容和晶振電路等主要硬件組成。 復位模塊由二極管、電阻和復位開關組成。 發光二級數碼管顯示模塊由四位八段數碼管組成。 3.2單片機運行最小系統 最小系統模塊由STC89C51、電阻、電容和晶振電路等主要硬件組成。 3.2.1 51單片機最小系統電路介紹 1. 51單片機最小系統復位電路的極性電容C1的大小直接影響單片機的復位時間,一般采用10~30uF,51單片機最小系統容值越大需要的復位時間越短。 2. 51單片機最小系統晶振Y1也可以采用11.0592MHz,在正常工作的情況下可以采用更高頻率的晶振,51單片機最小系統晶振的振蕩頻率直接影響單片機的處理速度,頻率越大處理速度越快。 3. 51單片機最小系統起振電容C2、C3一般采用15~33pF,并且電容離晶振越近越好,晶振離單片機越近越好 4.P0口為開漏輸出,作為輸出口時需加上拉電阻,阻值一般為10k。 設置為定時器模式時,加1計數器是對內部機器周期計數(1個機器周期等于12個振蕩周期,即計數頻率為晶振頻率的1/12)。計數值N乘以機器周期Tcy就是定時時間t。 標識符號 地址 寄存器名稱 P3 0B0H I/O口3寄存器 PCON 87H 電源控制及波特率選擇寄存器 SCON 98H 串行口控制寄存器 SBUF 99H 串行數據緩沖寄存器 TCON 88H 定時控制寄存器 TMOD 89H 定時器方式選擇寄存器 TL0 8AH 定時器0低8位 TH0 8CH 定時器0高8位 TL1 8BH 定時器1低8位 TH1 8DH 定時器1高8位 89C51管腳說明: VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。 P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口也可作為AT89C51的一些特殊功能口,如下表所示:
口管腳 備選功能
P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口)
P3.2 /INT0(外部中斷0)
P3.3 /INT1(外部中斷1)
P3.4 T0(記時器0外部輸入)
P3.5 T1(記時器1外部輸入)
P3.6 /WR(外部數據存儲器寫選通)
P3.7 /RD(外部數據存儲器讀選通)
P3口同時為閃爍編程和編程校驗接收一些控制信號。
RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。
PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。
XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。 3.2.2單片機的振蕩電路與復位電路 采用內部時鐘方式時,如圖所示。片內的高增益反相放大器通過XTAL1、XTAL2外接作為反饋元件的片外晶體振蕩器(呈感性)與電容組成的并聯諧振回路構成一個自激振蕩器,向內部時鐘電路提供振蕩時鐘。振蕩器的頻率主要取決于晶體的振蕩頻率,一般晶體可在1.2~12MHz之間任選,電容C1、C2可在5~30pF之間選擇,電容的大小對振蕩頻率有微小的影響,可起頻率微調作用。本電路選用的是內部振蕩器方式,。選用內部振蕩器比選用外部時鐘電路簡單并且易于實現。最重要的是此電路易于調試,而且精度高。 2. 復位電路 復位電路可分為上電復位和外部復位兩種方式。 通過某種方式,使單片機內各寄存器的值變為初始狀態的操作稱為復位。 MCS—51單片機在時鐘電路工作以后,在RST/VPD端持續給出2個機器周期的高電平就可以完成復位操作(一般復位正脈沖寬度大于10ms)。復位分為上電復位和外部復位兩種方式。 (a)上電復位電路 (b)上電/外部復位電路 上電復位是在單片機接通電源時,對單片機的復位。上電復位電路如圖(a)所示。在上電瞬間RST/VPD端與VCC電位相同,隨著電容上電壓的逐漸上升,RST/VPD端電位逐漸下降。上電復位所需的最短時間是振蕩器振蕩建立時間加2個機器周期。復位電路的阻容參數通常由實驗調整。圖(a)參考電路中,電路參數C取22uF,R取1Kq,可在RST/VPD端提供足夠的高電平脈沖,使單片機能夠可靠地上電自動復位。 圖(b)為既可進行上電自動復位,也可外部手動復位的電路示意圖,R1可取200q左右。當需要外部復位時,按下復位按鈕即可達到復位目的。 本文采用的是上電/外部復位電路,如圖(b)所示。上電/外部復位電路比上電復位電路在應用上更加直觀、方便、易于實現及切換。
振蕩器特性:
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
3.3 數碼管介紹
八段數碼管引腳圖數碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極管單元(多一個小數點顯示)數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp";按能顯示多少個“8”可分為1位、2位、4位等等數碼管; 發光二極管單元連接方式分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極COM接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相應字段就不亮。 4.軟硬件聯調及調試結果 4.1軟硬件調試結果中出現的問題及解決措施 1.在運行時發現我的秒表走的有點慢,五秒過去了只顯示到四,那就是程序的問題了,再反過來檢查程序,再經過一番計算,修改了一些延時參數,最終可以準確的以秒運行。 2.一開始做好實驗步驟后開始連線到最后結果顯示不出來,就開始一遍遍篩選出錯的地方發現有的地方線路接錯了,并且少了一個軟件。最后重新連了一遍,成功仿真了結果。 5.結束語 課程設計是培養學生綜合運用所學知識,發現,提出,分析和解決實際問題,鍛煉實踐能力的重要環節,是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學生來說掌握單片機的開發技術是十分重要的。 回顧起此次單片機課程設計,我仍感慨頗多,從理論到實踐,可以說是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機C語言掌握得不好……通過這次課程設計后,一定把以前所學過的知識重新溫故。 參考文獻[1] 穆蘭,單片微型計算機原理與接口技術[M].北京機械工業出版社 [2] 張毅剛,等.MSC-51單片機應用設計[M].哈爾濱工業大學出版社 [3] 蔣智勇,等.單片微型計算機原理與應用[M].沈陽遼寧科技出版社 附錄 附錄一:proteus仿真圖
附錄2:基于單片機的秒表設計元器件目錄表元件名稱 | 數量 | 備注 | AT89C51單片機 | 一塊 | 附底座 | 晶振 | 一塊 |
| 八段發光二級數碼管 | 一塊 |
| 按鈕開關 | 三個 |
| 極性電容 | 三支 |
| 電阻 | 一個、三個 |
| 發光二極管 | 一個 |
| 排阻 | 一個 |
|
- #include <reg52.h>
- code unsigned char
- tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67}; //共陰數碼管0-9
- code unsigned char
- tab1[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF}; //共陰數碼管0-9帶小數點
- sbit key1=P1^0; //開始、暫停
- sbit key2=P1^1; //清零
- static unsigned char ms,sec;
- static unsigned char Sec[8],Ms[8];
- static int i,j;
- void delay(unsigned int cnt)
- {
- while(--cnt);
- }
- void main()
- {
- unsigned char key3_flag=0, key4_flag=0;
- TMOD=0x01; //定時器0,10ms定時
- TH0=0xd8;
- TL0=0xf0;
- ET0=1;
- TR0=0;
-
- TMOD=0x10; //定時器1,用于動態掃描
- TH1=0xF8;
- TL0=0xf0;
- ET1=1;
- TR1=1;
- EA=1;
-
- sec=0; //初始化
- ms=0;
- P1=0xff;
- i=0;
- j=0;
- start:
- while(1)
- {
- //開始、暫停
- if(!key1) //判斷是否按下
- {
- delay(50); //去抖,延時50ms
- if(!key1)
- while(!key1) //等待按鍵釋放
- {;}
- TR0=!TR0;
- }
- //清零
-
- if(!key2)
- {
- delay(50);
- if(!key2)
- while(!key2)
- {;}
- TR0=0;
- ms=0;
- sec=0;
- for(i=0;i<8;i++)
- {
- Sec[i]=0;Ms[i]=0;
- }
- i=0;
- }
- }
- }
- /************************************/
- /* 定時中斷1 */
- /***********************************/
- void time1_isr(void) interrupt 3 using 0 //定時器1用來掃描
- {
- static unsigned char num;
- TH1=0xF8;
- TL1=0xf0;
- switch(num)
- {
- case 0:P2=0xfe;P0=tab[sec/10];break; //顯示秒十位
- case 1:P2=0xfd;P0=tab1[sec%10];break; //顯示秒個位
- case 2:P2=0xfb;P0=tab[ms/10];break; //顯示十位
- case 3:P2=0xf7;P0=tab1[ms%10];break; //顯示個位
- default:break;
- }
- num++;
- if(num==4)
- num=0;
- }
- /************************************/
- /* 定時中斷0 */
- /***********************************/
- void tim(void) interrupt 1 using 1
- {
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整的Word格式文檔51黑下載地址:
秒表.docx
(307.63 KB, 下載次數: 39)
2018-7-5 21:50 上傳
點擊文件名下載附件
秒表課設
|