proteus仿真大作業(yè)-數字時鐘_第1頁
proteus仿真大作業(yè)-數字時鐘_第2頁
proteus仿真大作業(yè)-數字時鐘_第3頁
proteus仿真大作業(yè)-數字時鐘_第4頁
proteus仿真大作業(yè)-數字時鐘_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實 驗 報 告Proteus仿真大作業(yè)課題:數字時鐘實驗報告系部:電子工程系班級:xxxx姓名:xxx指導老師:xxx前 言數字電子鐘具有走時準確,一鐘多用等特點,在生活中已經得到廣泛的應用。另外數字鐘還具備秒表和鬧鐘的功能,且鬧鐘鈴聲可自選,使一款電子鐘具備了多媒體的色彩。單片機AT89C51在Proteus軟件中實現數字時鐘的定時、時間調整、鬧正設置等功能。具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)測控領域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有力地推動了各行業(yè)的技術改造和產品的更新換代,應用前景廣闊。時鐘電路在計算機系統(tǒng)中起著非常重要的作

2、用,是保證系統(tǒng)正常工作的基礎。在一個單片機應用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間。Protues軟件不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是目前世界上

3、唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,它也支持IAR、Keil和MPLAB等多種編譯器。本文主要介紹用單片機內部的定時/計數器來實現電子時鐘的方法,本設計由單片機AT89C51芯片和LED1602液晶顯示屏為核心,輔以必要的電路,構成了一個單片機電子時鐘。目錄 TOC o 1-3 h z u HYPERLINK l _Toc295595794 第一章 電子時鐘、單片機簡介 PAGEREF _Toc295595794 h 4 HY

4、PERLINK l _Toc295595795 1、電子時鐘工作原理 PAGEREF _Toc295595795 h 4 HYPERLINK l _Toc295595797 2、單片機簡介 PAGEREF _Toc295595797 h 4 HYPERLINK l _Toc295595798 第二章 數字時鐘電路設計 PAGEREF _Toc295595798 h 5 HYPERLINK l _Toc295595799 2.1 設計要求 PAGEREF _Toc295595799 h 5 HYPERLINK l _Toc295595800 2.2 數字電路模塊圖: PAGEREF _Toc29

5、5595800 h 6 HYPERLINK l _Toc295595801 PAGEREF _Toc295595801 h 6 HYPERLINK l _Toc295595802 2.2 模塊簡介: PAGEREF _Toc295595802 h 6 HYPERLINK l _Toc295595803 2.3 系統(tǒng)功能操作實現 PAGEREF _Toc295595803 h 7 HYPERLINK l _Toc295595804 2.4 方案設計元件清單 PAGEREF _Toc295595804 h 8 HYPERLINK l _Toc295595805 第三章 Protues仿真電路 PA

6、GEREF _Toc295595805 h 9 HYPERLINK l _Toc295595806 3.1 繪制數字時鐘電路Protues仿真原理圖: PAGEREF _Toc295595806 h 9 HYPERLINK l _Toc295595807 3.1.1 啟動ISIS 7 Professional軟件 PAGEREF _Toc295595807 h 9 HYPERLINK l _Toc295595808 3.1.2 仿真電路繪制 PAGEREF _Toc295595808 h 9 HYPERLINK l _Toc295595809 3.1.3 數字時鐘原理圖 PAGEREF _To

7、c295595809 h 10 HYPERLINK l _Toc295595810 3.1.4 電路檢測 PAGEREF _Toc295595810 h 11 HYPERLINK l _Toc295595811 3.2 軟件設計: PAGEREF _Toc295595811 h 12 HYPERLINK l _Toc295595812 3.2.1 運行keil軟件編寫程序 PAGEREF _Toc295595812 h 12 HYPERLINK l _Toc295595813 3.2.2 編譯、連接 PAGEREF _Toc295595813 h 12 HYPERLINK l _Toc2955

8、95814 3.2.3 將程序燒入單片機 PAGEREF _Toc295595814 h 13 HYPERLINK l _Toc295595815 、程序運行 PAGEREF _Toc295595815 h 13 HYPERLINK l _Toc295595816 附錄 PAGEREF _Toc295595816 h 14 HYPERLINK l _Toc295595817 程序: PAGEREF _Toc295595817 h 14 HYPERLINK l _Toc295595818 總結 PAGEREF _Toc295595818 h 24 HYPERLINK l _Toc29559581

9、9 參考資料 PAGEREF _Toc295595819 h 25第一章 電子時鐘、單片機簡介1、電子時鐘工作原理電子時鐘是基于單片機的一種計時工具,采用延時程序產生一定的時間中斷,用于一秒的定義,通過計數方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的功能,是人民日常生活補課缺少的工具?,F在高精度的計時工具大多數都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術,因此走時精度高,穩(wěn)定性好,使用方便,不需要經常調試,數字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有年、月、時、分、

10、秒以及星期、溫度等顯示功能,還可以進行時和分的校對以及定時鬧鐘功能,片選的靈活性好。該電子時鐘由89C51,BUTTON,7SES六段數碼管等構成,采用晶振電路作為驅動電路,由延時程序和循環(huán)程序產生的一秒定時,達到時分秒的計時,六十秒為一分鐘,六十分鐘為一小時,滿二十四小時為一天。而電路中唯一的一個控制鍵卻擁有多種不同的功能,按下又松開,可以實現屏蔽數碼管顯示的功能,達到省電的目的;直接按下不松開,則可以通過按鍵實現分鐘的累加,每按一次分鐘加一;而連續(xù)兩次按下按鍵不放松,則可實現小時的調節(jié),同樣每按一次小時加一。2、單片機簡介1972年,美國Intel公司首先推出8位微處理器8008,并于19

11、76年9月率先推出MCS-48系列單片機。在這以后,8位單片機紛紛面市。例如,莫斯特克和仙童公司合作生產的3870系列,摩托羅拉公司生產的6801系列等。隨著集成電路工藝水平的提高,一些高性能的8位單片機相繼問世。例如,1978年摩托羅拉公司的MC6801系列及齊洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。這類單片機的尋址能力達64KB,片內ROM容量達4-8KB,片內除帶有并行IO口外,還有串行IO口,甚至還有AD轉化器功能。8位單片機由于功能強,被廣泛用于自動化裝置、智能儀器儀表、智能接口、過程控制、通信、家用電器等各個領域。單片機全稱為單片機微型計算機(Single C

12、hip Microsoftcomputer)。從應用領域來看,單片機主要用來控制,所以又稱為微控制器(Microcontroller Unit)或嵌入式控制器。單片機是將計算機的基本部件微型化并集成在一塊芯片上的微型AT89C51是一個低功耗,高性能CMOS 8位單片機,片內含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89C51

13、可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。綜上所訴,數字時鐘設計方案采用單片機機型:AT89C51;計時方案設計采用單片機內部計數/定時功能,利用軟件控制單片機實現數字時鐘時間設置功能;顯示方案中利用單片機并行I/O端口,實現LED動態(tài)顯示;第二章 數字時鐘電路設計2.1 設計要求 設計并制作出具有以下功能的數字鐘:(1)自動計時,由六位LED顯示器顯示時、分、秒(2)具備校準功能,可以設置當前時間。(3)具備定時啟鬧功能,可以設置啟鬧時間,啟鬧10s后自動關閉鬧鈴2.2 數字電路模塊圖:主程序函數LED顯示函數鍵盤檢測函數查鍵值函數鬧鐘設置函數時鐘設置函數鬧鐘判斷啟動函數定時器中斷函

14、數加1修改功能函數 2.2 模塊簡介:(1)主程序函數main:完成系統(tǒng)初始化,包括時鐘、鬧鈴初始參數及初始標志的設定;I/O端口、定時/計數器初始狀態(tài)的設定:更新顯示時間,循環(huán)掃描按鍵,根據案件分別進行鬧鈴和時鐘的設置管理。 (2)LED顯示函數dispiay:根據顯示單元首地址顯示時鐘(或鬧鈴)時間,實現6位LED的動態(tài)顯示功能。(3)鍵盤檢測函數keytest和查鍵值函數search:這兩個函數都屬于鍵盤掃描模塊,函數keytest判斷是否有按鍵輸入,函數search識別并返回行列式按鍵的鍵號。(4)時鐘設置函數ftion0:根據用戶按下0#鍵的次數,依次選擇設置時鐘的秒、分、時的修改標

15、志位。加1修改功能函數將根據該標志位進行時鐘時間的設置修改。(5)鬧鈴設置函數ftion1:根據用戶按下:1#鍵的次數,依次選擇設置鬧鈴的分、時的修改標志位。加1修改功能函數將根據該標志位進行時鐘鬧鈴的設(6)加1修改功能函數cum:用戶按下2#鍵后,根據時鐘和鬧鈴設置函數設置的標志位將時鐘(或鬧鈴)相應的時、分、秒計數單元加1。(7)鬧鈴判斷啟動函數alarm:半段鬧鈴啟動時間到否,若時間到,則啟動鬧鈴,延時10s后自動關鬧鈴,并清除鬧鈴設置標志。(8)定時器中斷函數clock:定時修改時鐘參數中斷服務子程序。綜上各模塊功能,數字時鐘設計方案采用單片機機型:AT89C51;計時方案設計采用單

16、片機內部計數/定時功能,利用軟件控制單片機實現數字時鐘時間設置功能;顯示方案中利用單片機并行I/O端口,實現LED動態(tài)顯示;2.3 系統(tǒng)功能操作實現(1)鍵盤功能定義。系統(tǒng)采用4*3矩陣鍵盤。共計12個按鍵任務中使用了三個按鍵,0#、1#和2#鍵,其余按鍵為系統(tǒng)功能擴展預留。0#鍵:時鐘參數表修改功能選擇鍵。按一次修改秒,按二次修改分,按三次修改小時,按四次確認修改完畢。1#鍵:鬧鈴時間設置功能選擇鍵。按一次修改分,按兩次修改小時,按三次確認修改完成。2#鍵:增1功能鍵,每按一次該鍵,根據0#、1#鍵的選擇結果將相應單元內容加1。修改“小時”時,加到23后再加1“清零”;修改“分”時,加到59

17、后再加1“清零”。(2)顯示定義。6位LED從左到右依次顯示時、分、秒,采用24小時計時。(3)系統(tǒng)工作流程設計時間顯示:上電后,系統(tǒng)自動進入時鐘顯示,從00:00:00開始計時。時間調整:按下0#鍵,系統(tǒng)停止計時,進入時間設定狀態(tài),保持原有顯示。按一次修改秒表,按二次修改分,按三次修改小時,直至按四次確認修改完成,系統(tǒng)由設定后的時間開始計時顯示。鬧鈴設置/啟鬧/停鬧:按下1#鍵,數碼管顯示00:00:00,進入鬧鈴設置狀態(tài)。等待鍵入啟鬧時間,按一次設置分,按兩次設置小時,按三次確認設置完畢。將啟動定時啟鬧功能,并恢復時間顯示。當定時時間到,蜂鳴器鳴叫10s后停鬧。在鬧鈴設置過程中,系統(tǒng)繼續(xù)計

18、時。在時間調整和鬧鈴設置狀態(tài)下,均可以按2#鍵,采用增1方式修改相應的參數。2.4 方案設計元件清單元件名稱數量參數名稱所屬庫單片機1AT89C51AT89C51MCS8051按鈕12BUTTONACTIVE晶振112MHZCRYSTLEDEVICE電阻8RESDEVICE13電阻排110KRESPACK-8電解電容110uF/16VGENELECT10U16VCAPACITORS瓷片電容230pFCERAMIC33PCAPACITORS或非門1-71LS02DEVICE蜂鳴器1-BUZZERACTIVE第三章 Protues仿真電路3.1 繪制數字時鐘電路Protues仿真原理圖:3.1.1

19、 啟動ISIS 7 Professional軟件元件的加載:找到原件后雙擊原件即可完成加載原件。 仿真電路繪制放置元件調整原布局連線繪制總線放置網絡標號網絡標號放置如下圖所示。3.1.3 數字時鐘原理圖連線后最終數字時鐘電路原理圖如下 電路檢測電路連接完畢后,單擊運行按鈕(如下圖)檢測電路是否有誤, 如果電路如果無誤進行軟件檢測。3.2 軟件設計:3.2.1 運行keil軟件編寫程序3.2.2 編譯、連接 將程序燒入單片機3.2.4、程序運行附錄程序:/*數字鐘程序*/#pragma SMALL#include #include #define uchar unsigned charsbit

20、P2_7=P27; /定義蜂鳴器控制端口/*函數聲明*/void delay(uchar x);void display(uchar *p);uchar keyscan(); /掃描鍵盤有無鍵按下uchar search(); /按鍵識別void alarm(); /鬧鐘判斷啟動void ftion0(); /時鐘修改void ftion1(); /鬧鐘修改void cum(); /加1修改/*全局變量定義*/uchar clockbuf3=0,0,0;/存放時鐘時分秒的十進制數uchar bellbuf3=0,0,0;/存放鬧鐘時分秒的十進制數uchar msec1; /10ms中斷次數uc

21、har msec2; /1s循環(huán)次數uchar timdata,rtimdata;/時鐘和鬧鐘修改位置標志uchar count;/鬧鐘啟動后10s計時單元uchar *dis_p;/顯示緩沖區(qū)指針bit armbit;/鬧鐘標志,為0鬧鐘未設定,為1已設定bit rtimbit;/鬧鐘是否啟動標志,為1已啟動bit rhourbit;/鬧鐘小時修改標志,為1正在修改鬧鐘小時bit rminbit;/鬧鐘分修改標志,為1正在修改鬧鐘分bit hourbit;/時鐘小時修改標志,為1正在修改時鐘小時bit minbit; /時鐘分修改標志,為1正在修改時鐘分bit secbit;/時鐘秒修改標志

22、,為1正在修改時鐘秒/*主函數*/void main()uchar a;armbit=0; /清零鬧鐘標志位msec1=0; /設置10ms中斷次數初值msec2=0; /設置1s中斷次數初值timdata=0; /時鐘內容修改位置記憶單元清零rtimdata=0;/鬧鐘內容修改位置記憶單元清零count=0; /鬧鐘啟動后保持10s計時單元清零TMOD=0 x02; /定時器T0為工作方式2TL0=0 x06; /定時初始值為250usTH0=0 x06;EA=1; /中斷總允許位開啟ET0=1; /定時器0開中斷TR0=1; /啟動定時器T0dis_p=clockbuf;/將時鐘值所在地址

23、送入顯示指針while(1)a=keyscan(); /調用鍵盤掃描子程序if(a=0 x0f)display(dis_p);/無鍵輸入調用顯示程序if(armbit=1)alarm();/判斷鬧鐘設定否,若設定則調用鬧鐘啟動函數elsedisplay(dis_p);/調用顯示子函數作為延時去抖動a=keyscan();if(a!=0 x0f) /沒有抖動,表示有鍵按下a=search();/調用查鍵值子函數switch(a)case 0 x00:ftion0();break; /是時鐘參數修改功能鍵,調用時鐘設置子函數case 0 x01:ftion1();break; /是鬧鐘參數修改功能

24、鍵,調用鬧鐘設置子函數case 0 x02:cum();break; /是加1功能鍵,調用加1修改功能子函數default:break;void delay(uchar x)char j;while(x-)for(j=0;j123;j+);/*6位LED顯示函數*/void display(uchar *p)uchar buffer=0,0,0,0,0,0;uchar k,i,j,temp;uchar led=0 x3f,0 x06,0 x58,0 x4f,0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f;buffer0=p0/10;buffer1=p0%10;buff

25、er2=p1/10;buffer3=p1%10;buffer4=p2/10;buffer5=p2%10;for(k=0;k3;k+)temp=0 xfe;for(i=0;i6;i+)P1=0 xff; /關顯示j=bufferi;P1=ledj; /P1送斷碼P0=temp; /P0對應端口低電平選位temp=1;delay(5);/每一位顯示延時/*鍵盤掃描函數*/uchar keyscan()uchar c;P0=0 xf0;c=P2;c=c&0 x07; /按鍵行輸入為P2.0-P2.2,屏蔽無關位return(c);/*查鍵值函數*/uchar search()uchar a,b,c,

26、d,e;c=0 xfe; /首列掃描字送變量ca=0; /首列號送awhile(1)P0=c; /列掃描字送P0口d=P2; /讀入P2口的行狀態(tài)if(d&0 x01=0)b=0;break; /第0行有鍵按下,第0行行首號送belse if(d&0 x02=0)b=4;break; /第1行有鍵按下,第1行行首號送belse if(d&0 x04=0)b=8;break; /第2行有鍵按下,第2行行首號送ba+; /掃描列號加1c=1; /修改列掃描字,掃描下一列e=a+b; /將行首號與列號相加,求鍵號dodisplay(dis_p);while(d=keyscan()!=0 x07);

27、/等待釋放按鍵return(e);/*鬧鐘判斷啟動函數*/void alarm()if(clockbuf0=bellbuf0)&(clockbuf1=bellbuf1)P2_7=0;rtimbit=1; /設置鬧鐘計時標志,時鐘將進行10s計時標志elseif(count=10) /判斷鬧鐘保持10s時間到否 count=0;/清除鬧鐘保持10s計時 P2_7=1;/清除鬧鐘 armbit=0; /清鬧鐘標志,否則鬧鐘設置將繼續(xù)有效 rtimbit=0;/*時鐘設置函數*/void ftion0()TR0=0; /關定時器rhourbit=0; /禁止鬧鐘時間參數修改,請鬧鐘修改標志rminb

28、it=0; dis_p=clockbuf; /將時鐘緩沖區(qū)首地址送顯示指針rtimdata=0; /清鬧鐘修改位置標志記錄timdata+; /將時鐘修改記錄值加1switch(timdata)case 0 x01:secbit=1;break;/記錄值為1,則將時鐘秒修改標志置1case 0 x02:secbit=0;minbit=0;break;/記錄值為2,則將時鐘分修改標志置1case 0 x03:minbit=0;hourbit=1;break;/記錄值3,則將時鐘時修改標志置1case 0 x04:timdata=0;hourbit=0;TR0=1;break;/按4次則清時鐘單元

29、修改位置 /記錄,定時器重新開啟default:break;/*鬧鐘設置函數*/void ftion1()secbit=0;/禁止時鐘時間修改minbit=0;hourbit=0;dis_p=bellbuf;/設置鬧鐘顯示標志timdata=0;/清時鐘修改位置標志記錄rtimdata+;/將鬧鐘修改記錄值加1switch(rtimdata)case 0 x01:rminbit=1;break;/記錄值為1,將鬧鐘分修改標志置1case 0 x02:rminbit=0;rhourbit=1;break; /記錄值為2,將時鐘分修改標志置1case 0 x03:rtimdata=0;rhourb

30、it=0;/按3次則清鬧鐘單元修改位置記錄armbit=1; /設置鬧鐘已設置標志位dis_p=clockbuf;/恢復時鐘顯示標志break;default:break;/*加1修改功能函數*/void cum()if(secbit=1) /時鐘秒修改標志為1,秒單元內容加1if(clockbuf2=59) clockbuf2=0;else clockbuf2+;else if(minbit=1)/時鐘分修改標志為1,分單元內容加1if(clockbuf1=59) clockbuf1=0;else clockbuf1+;else if(hourbit=1) /時鐘小時修改標志為1,小時單元內

31、容加1if(clockbuf0=23) clockbuf0=0;else clockbuf0+;else if(rtimbit=1) /鬧鐘分修改標志為1,分單元內容加1if(bellbuf1=59) bellbuf1=0;else bellbuf1+;else if(rhourbit=1) /鬧鐘小時修改標志為1,小時單元內容加1if(bellbuf0=23) bellbuf0=0;else bellbuf0+;/*定時器中斷函數*/void clock() interrupt 1EA=0; /關中斷if(msec1!=40)msec1+;elsemsec1=0; /到10ms否,不到則msec1加1if(msec2!=100)msec2+; /到1s否,不到則msec2加1elseif(rtimbit=1)count+;msec2=0;if(clockbuf2!=59)clockbuf2+

溫馨提示

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

評論

0/150

提交評論